Transport Layer Security

S Wikipedije, slobodne enciklopedije

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[uredi | uredi izvor]

Primjer veb-sajta sa digitalnim certifikatom

Digitalni 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[uredi | uredi izvor]

TLS 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[uredi | uredi izvor]

Razmjena ključeva[uredi | uredi izvor]

Prije 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[uredi | uredi izvor]

Message 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 .

SSL i TLS protokoli
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[uredi | uredi izvor]

U 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[uredi | uredi izvor]

Primarna 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.

Podrška protokola na web-sajtovima u svijetu
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[uredi | uredi izvor]

Najnovije 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[uredi | uredi izvor]

Već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 | uredi izvor]

  1. ^ R. Barnes; M. Thomson; A. Pironti; A. Langley (juni 2015). "Deprecating Secure Sockets Layer Version 3.0". Arhivirano s originala, 28. 3. 2018.
  2. ^ 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.
  3. ^ a b Hooper, Howard (2012). CCNP Security VPN 642-648 Official Cert Guide (2 izd.). Cisco Press. str. 22. ISBN 9780132966382.
  4. ^ a b Spott, Andrew; Leek, Tom; et al. "What layer is TLS?". Information Security Stack Exchange.
  5. ^ 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. 
  6. ^ 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.
  7. ^ 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.
  8. ^ a b Bright, Peter (17. 10. 2018). "Apple, Google, Microsoft, and Mozilla come together to end TLS 1.0". Pristupljeno 17. 10. 2018.
  9. ^ "Http vs https". Arhivirano s originala, 12. 2. 2015. Pristupljeno 12. 2. 2015.
  10. ^ a b As of August 3, 2019. "SSL Pulse: Survey of the SSL Implementation of the Most Popular Websites". Qualys. Pristupljeno 1. 9. 2019.
  11. ^ ivanr. "RC4 in TLS is Broken: Now What?". Qualsys Security Labs. Arhivirano s originala, 27. 8. 2013. Pristupljeno 30. 7. 2013.
  12. ^ Oracle. "7093640: Enable client-side TLS 1.2 by default". Pristupljeno 30. 8. 2018.
  13. ^ Oracle. "JEP 332: Transport Layer Security (TLS) 1.3". Pristupljeno 30. 8. 2018.

Dalje čitanje[uredi | uredi izvor]

Vanjski linkovi[uredi | uredi izvor]

Specifikacije

Netolerancija TLS verzija
Ostalo