Transport Layer Security
Transport Layer Security (TLS) i njegov sada već zastarjeli prethodnik, Secure Sockets Layer (SSL[1]) kriptografski su protokoli dizajnirani da osiguraju sigurnost komunikacije preko računarskih mreža.[2] Nekoliko verzija protokola se naširoko koriste na servisima kao što su web, e-mail, instant poruke, i IP telefonija (VoIP). Web-sajtovi mogu koristiti TLS da bi osigurali komunikaciju između svojih servera i internet-preglednika .
TLS protokol ima za cilj pružanje privatnosti i integriteta podataka između dvije ili više računarskih aplikacija.[2] Kada je neka komunikacija osigurana TLS-om, naprimjer između klijenta (internet preglednik) i servera (npr. Wikipedia.rog), onda bi trebala imati neka od sljedećih svojstava:
- Veza je privatna (ili sigurna) jer se simetrična kriptografija koristi za enkripciju prenesenih podataka. Ključevi za enkripciju se stvaraju jedinstveno za svaku vezu i temelje se na zajedničkoj tajni koja je dogovorena na početku sesije (tzv. TLS handshake - rukovanje). Server i klijent uspostavljaju vezu i određuju koji algoritam enkripcije i kriptografske ključeve će koristiti prije prijenosa prvog bajta podataka. Pregovaranje te zajedničke tajne je sigurno sa obje strane, i nemoguće je saznati od strane napadača. Nijedan napadač ne može mijenjati komunikaciju u toku dogovaranja komunikacije bez da bude detektovano).
- Identitet strana koje komuniciraju može se autentifikovati pomoću kriptografije javnog ključa . Ova provjera autentifikacije može se učiniti neobaveznim, ali se obično zahtijeva za barem jednu od strana (obično server).
- Veza je pouzdana jer svaka prenesena poruka uključuje provjeru integriteta poruke pomoću koda za provjeru autentičnosti poruke kako bi se spriječilo neotkriveno gubljenje ili promjenu podataka tokom prijenosa.[2]
TLS je predloženi Internet Engineering Task Force (IETF) standard, prvi put definiran 1999. godine, a trenutna verziju TLS 1.3 je definirao IETF RFC 8446
TLS i SSL se ne uklapaju u bilo koji od OSI slojeva ili TCP/IP modela.[3][4] Kako TLS samo osigurava neki transportni protokol (kao što je TCP) može se smatrati da se pokreće preko transportnog sloja. Također, pruža enkripciju za neke više slojeve što bi obično trebala biti funkcija prezentacijskog sloja. Većina aplikacija ipak koristi TLS kao da je transportni sloj,[3][4] ali posao uspostavljanja i upravljanjem konekcije je u rukama aplikacije.[5]
Digitalni certifikati
urediDigitalni certifikat potvrđuje vlasništvo nad javnim ključem od strane imenovanog subjekta certifikata. Ovo omogućava drugimada se oslone na potpise ili na tvrdnje koje je napravio privatni ključ koji odgovara certifikovanom javnom ključu.
Organi za izdavanje certifikata
urediTLS se obično oslanja na skup autoriziranih certifikacijskih autoriteta treće strane kako bi utvrdio autentičnost certifikata.
Prema Netcraftu, koji prati aktivne TLS certifikate, vodeći autoritet za certifikate (CA, Certificate authority) bio je Symantec koji trenutno čini nešto manje od trećine svih sertifikata i 44% važećih certifikata koje koristi 1 milion najprometnijih web stranica.
Algoritam
urediRazmjena ključeva
urediPrije nego što klijent i server mogu početi razmjenjivati informacije zaštićene TLS-om, pro moraju sigurno razmjeniti i dogovoriti ključ za enkripciju i šifru za korištenje kod enkripcije podataka. Među metodama koje se koriste za razmjeni i sporazum ključa su: javni i privatni ključevi generirani sa RSA (označeni kao TLS_RSA u TLS protokolu rukovanja), Diffie – Hellman (TLS_DH), efemerni Diffie – Hellman (TLS_DHE), eliptička krivulja Diffie – Hellman ( TLS_ECDH), efemerna eliptička krivulja Diffie – Hellman (TLS_ECDHE), anonimni Diffie – Hellman (TLS_DH_anon),[2] unaprijed podijeljeni ključ (TLS_PSK) [6] i Secure Remote Password (TLS_SRP).[7]
Integritet podataka
urediMessage authentication code (MAC, prevedeno Kod za autentifikaciju poruke) se koristi za integritet podataka. HMAC se koristi za CBC način rada blokovskih šifara i šifri potoka. AEAD se koristi za autentifikovano šifriranje kao što je GCM način i CCM mod .
Protokol | Objavljeno | Status |
---|---|---|
SSL 1.0 | Neobjavljen | |
SSL 2.0 | 1995 | Zastario u 2011. (RFC 6176) |
SSL 3.0 | 1996 | Zastario u 2015 (RFC 7568) |
TLS 1.0 | 1999 | Planirano odbacivanje 2020. godine [8] |
TLS 1.1 | 2006 | Planirano odbacivanje 2020. godine [8] |
TLS 1.2 | 2008 | |
TLS 1.3 | 2018 |
Primjena i usvajanje
urediU dizajnu aplikacija, TLS se obično implementira na protokolima transportnog sloja, tako da su svi podaci enkriptovani na protokolima kao što su HTTP, FTP, SMTP, NNTP i XMPP .
Historijski gledano, TLS je se primatno koristio za pouzdane protokole, kao što je Transmission Control Protocol (TCP). Međutim, on je implementiran i na protokolima kao što su UDP i DCCP.
Web stranice
urediPrimarna upotreba TLS-a je da osigura World Wide Web promet između web sajta i korisničkog internet preglednika koji je enkodiran HTTP protokolom. Kada se TLS koristi, taj protokol je onda HTTPS.[9] Dodatak slova S je za englesku riječ secure, što znači siguran.
Verzija
protokola |
Podrška
web-sajtova[10] |
Sigurnost[10][11] |
---|---|---|
SSL 2.0 | 1.6% | Nesiguran |
SSL 3.0 | 6.7% | Nesiguran |
TLS 1.0 | 65.0% | Zavisi od vrste šifriranja |
TLS 1.1 | 75.1% | Zavisi od vrste šifriranja |
TLS 1.2 | 96.0% | Zavisi od vrste šifriranja |
TLS 1.3 | 18.4% | Siguran |
Internet preglednici
urediNajnovije verzije svih glavnih web pretraživača podržavaju TLS verzije 1.0, 1.1 i 1.2 i omogućeni su odmah po instalaciji. Jedini koji ima probleme sa novim sigurnosnim standardima je Internet Explorer koji bi trebao biti u potpunosti zamijenjen sa Microsoft Edgeom.
Biblioteke
urediVećina SSL i TLS programskih biblioteka su besplatni i izdani kao otvoreni kod. Najkorišteniji je OpenSSL.
- BoringSSL, fork OpenSSL za Chrome/Chromium i Android kao i druge Google aplikacije.
- Botan, kriptografska biblioteka licencirana BSD-om napisana na C++.
- cryptlib: prenosiva kriptografska biblioteka otvorenog koda (uključuje TLS/SSL implementaciju)
- Delphi programeri mogu koristiti biblioteku Indy koja koristi OpenSSL ili ICS koji sada podržava TLS 1.3.
- GnuTLS: besplatna implementacija (LGPL licenca)
- Java Secure Socket Extension : Java implementacija uključena u Java Runtime Environment podržava TLS 1.1 i 1.2 počevši od Java 7. (TLS 1.1/1.2 je po defaultu bio onemogućen za klijenta na Java 7, ali su bili omogućeni u siječnju 2017.[12] ) Java 11 podržava TLS 1.3.[13]
- LibreSSL: fork OpenSSL-a od strane OpenBSD projekta.
- MatrixSSL: dualna licencirana implementacija
- mbed TLS (prethodno PolarSSL): Mala SSL implementacija biblioteke za ugrađene uređaje dizajnirane za jednostavnu upotrebu
- Network Security Services: FIPS 140 validirana otvorena biblioteka
- OpenSSL: besplatna implementacija (BSD licenca sa nekim proširenjima)
- SChannel : implementacija SSL-a i TLS-a Microsoft Windows kao dio paketa.
- Secure Transport: implementacija SSL-a i TLS-a koji se koriste u OS X i iOS-u kao dio njihovih paketa.
- wolfSSL (prethodno CyaSSL): Ugrađena SSL / TLS biblioteka sa snažnim fokusom na brzinu i veličinu.
Reference
uredi- ^ R. Barnes; M. Thomson; A. Pironti; A. Langley (juni 2015). "Deprecating Secure Sockets Layer Version 3.0". Arhivirano s originala, 28. 3. 2018.
- ^ a b c d T. Dierks; E. Rescorla (august 2008). "The Transport Layer Security (TLS) Protocol, Version 1.2". Arhivirano s originala, 24. 12. 2017.
- ^ a b Hooper, Howard (2012). CCNP Security VPN 642-648 Official Cert Guide (2 izd.). Cisco Press. str. 22. ISBN 9780132966382.
- ^ a b Spott, Andrew; Leek, Tom; et al. "What layer is TLS?". Information Security Stack Exchange.
- ^ T. Dierks, E. Rescorla (august 2008). "Introduction", The Transport Layer Security (TLS) Protocol Version 1.2. sec. 1. RFC 5246, https://tools.ietf.org/html/rfc5246#section-1.
- ^ P. Eronen, Ed. "Pre-Shared Key Ciphersuites for Transport Layer Security (TLS)". Internet Engineering Task Force. RFC 4279. Arhivirano s originala, 5. 9. 2013. Pristupljeno 9. 9. 2013.
- ^ D. Taylor, Ed. "Using the Secure Remote Password (SRP) Protocol for TLS Authentication". Internet Engineering Task Force. RFC 5054. Arhivirano s originala, 7. 12. 2014. Pristupljeno 21. 12. 2014.
- ^ a b Bright, Peter (17. 10. 2018). "Apple, Google, Microsoft, and Mozilla come together to end TLS 1.0". Pristupljeno 17. 10. 2018.
- ^ "Http vs https". Arhivirano s originala, 12. 2. 2015. Pristupljeno 12. 2. 2015.
- ^ a b As of August 3, 2019. "SSL Pulse: Survey of the SSL Implementation of the Most Popular Websites". Qualys. Pristupljeno 1. 9. 2019.
- ^ ivanr. "RC4 in TLS is Broken: Now What?". Qualsys Security Labs. Arhivirano s originala, 27. 8. 2013. Pristupljeno 30. 7. 2013.
- ^ Oracle. "7093640: Enable client-side TLS 1.2 by default". Pristupljeno 30. 8. 2018.
- ^ Oracle. "JEP 332: Transport Layer Security (TLS) 1.3". Pristupljeno 30. 8. 2018.
Dalje čitanje
uredi- Eric Rescorla (2001). SSL and TLS: Designing and Building Secure Systems. United States: Addison-Wesley Pub Co. ISBN 978-0-201-61598-2.
- Stephen A. Thomas (2000). SSL and TLS essentials securing the Web. New York: Wiley. ISBN 978-0-471-38354-3.
- Bard, Gregory (2006). "A Challenging But Feasible Blockwise-Adaptive Chosen-Plaintext Attack on SSL". International Association for Cryptologic Research (136). Pristupljeno 23. 9. 2011.
- Canvel, Brice. "Password Interception in a SSL/TLS Channel". Arhivirano s originala, 20. 4. 2016. Pristupljeno 20. 4. 2007.
- IETF Multiple Authors. "RFC of change for TLS Renegotiation". Pristupljeno 11. 12. 2009.
- Creating VPNs with IPsec and SSL/TLS Linux Journal article by Rami Rosen
- Polk, Tim; McKay, Kerry; Chokhani, Santosh (april 2014). "Guidelines for the Selection, Configuration, and Use of Transport Layer Security (TLS) Implementations" (PDF). National Institute of Standards and Technology. Arhivirano s originala (PDF), 8. 5. 2014. Pristupljeno 7. 5. 2014.
- Abdou, AbdelRahman; van Oorschot, Paul (august 2017). "Server Location Verification (SLV) and Server Location Pinning: Augmenting TLS Authentication". Transactions on Privacy and Security. ACM.
Vanjski linkovi
urediSpecifikacije
- Netolerancija TLS verzija
- Ostalo
- OWASP
- Razgovor o SSL/TLS koji pokušava objasniti stvari u terminima koje ljudi mogu razumjeti. Arhivirano 6. 7. 2015. na Wayback Machine
- SSL: Foundation for Web Security Arhivirano 11. 4. 2015. na Wayback Machine
- TLS Ranegotiation Vulnerability - IETF alati
- Trustworthy Internet Movement- SSL Pulse - Pregled TLS / SSL implementacije najpopularnijih web stranica
- Kako generisati CSR za SSL Arhivirano 7. 6. 2019. na Wayback Machine
- Kako funkcionira TLS Handshake u pregledniku