Aký je rozdiel medzi protokolmi SSL, TLS a HTTPS?

Mám zmätok v pojmoch v tejto oblasti. Čo je to SSL, TLS a HTTPS? Aké sú medzi nimi rozdiely?

Riešenie

TLS je nový názov pre protokol SSL. Konkrétne, protokol SSL sa dostal do verzie 3.0; TLS 1.0 je "SSL 3.1". V súčasnosti definované verzie TLS zahŕňajú TLS 1.1 a 1.2. Každá nová verzia pridáva niekoľko funkcií a upravuje niektoré vnútorné detaily. Niekedy hovoríme "SSL/TLS".

HTTPS je HTTP v rámci SSL/TLS. SSL (TLS) vytvára zabezpečený obojsmerný tunel pre ľubovoľné binárne údaje medzi dvoma hostiteľmi. HTTP je protokol na odosielanie požiadaviek a prijímanie odpovedí, pričom každá požiadavka a odpoveď pozostáva z podrobných hlavičiek a (prípadne) určitého obsahu. Protokol HTTP je určený na prevádzku cez obojsmerný tunel pre ľubovoľné binárne údaje; ak je tento tunel spojením SSL/TLS, potom sa celok nazýva "HTTPS".

Na vysvetlenie skratiek:

  • SSL" znamená "Secure Sockets Layer". Tento názov vymysleli vynálezcovia prvých verzií protokolu, spoločnosť Netscape (neskôr spoločnosť kúpila AOL).
  • "TLS" znamená "Transport Layer Security". Názov bol zmenený, aby sa predišlo akýmkoľvek právnym problémom so spoločnosťou Netscape a aby protokol mohol byť "otvorený a slobodný" (a uverejnený ako RFC). Naznačuje tiež myšlienku, že protokol funguje cez akýkoľvek obojsmerný tok bajtov, nielen cez internetové zásuvky.
  • "HTTPS" má znamenať "HyperText Transfer Protocol Secure", čo je gramaticky nesprávne. Nikto, okrem smrteľne unudených pedantov, nikdy nepoužíva preklad; "HTTPS" je lepšie považovať za "HTTP s S, ktoré znamená SSL". Rovnakým spôsobom vznikli aj iné skratky protokolov, napr. SMTPS, IMAPS, FTPS... Všetky sú holým protokolom, ktorý sa "zabezpečil" tým, že sa spustil v rámci nejakého SSL/TLS.
Komentáre (8)

Protokoly SSL a TLS sú protokoly, ktorých cieľom je zabezpečiť súkromie a integritu údajov medzi dvoma stranami (pozri RFC 2246) a ktoré sú navrhnuté na prevádzku cez spoľahlivý komunikačný protokol (zvyčajne TCP). Hoci špecifikácia TLS nehovorí o soketoch, návrh SSL/TLS bol urobený tak, aby ich aplikácie mohli používať takmer ako tradičné sokety TCP, napríklad SSLSocket v Jave rozširuje Socket (sú tu však malé rozdiely z hľadiska použiteľnosti). HTTPS je HTTP cez SSL/TLS, kde sa najprv vytvorí spojenie SSL/TLS a potom sa cez toto spojenie SSL/TLS vymieňajú bežné údaje HTTP. To, či sa na tento účel použije protokol SSL alebo TLS, závisí od konfigurácie vášho prehliadača a servera (zvyčajne existuje možnosť povoliť protokoly SSLv2, SSLv3 alebo TLS 1.x). Podrobnosti o tom, ako protokoly HTTP a SSL/TLS tvoria protokol HTTPS, nájdete v dokumente RFC 2818. Pokiaľ ide o rozdiel medzi SSL a TLS, možno vás zaujmú tieto dve odpovede, ktoré som napísal na podobné otázky na StackOverflow a ServerFault:

  • Rozdiel medzi SSL & TLS [Stackoverflow].
  • Aké sú presné rozdiely na úrovni protokolu medzi SSL a TLS? [Serverfault]

    TLSv1.0 by ste mohli považovať za SSLv3.1 (v skutočnosti sa to'deje v rámci vymieňaných záznamov). Je'len jednoduchšie porovnať TLSv1.0 s TLSv1.1 a TLSv1.2, pretože všetky boli upravené v rámci IETF a majú viac-menej rovnakú štruktúru. SSLv3 je upravovaná inou inštitúciou (Netscape), je to trochu ťažšie, takže zistiť rozdiely.

    Tu je niekoľko rozdielov, ale pochybujem, že ich dokážem vymenovať všetky:

    • V správe ClientHello (prvá správa odoslaná klientom, ktorou sa iniciuje handshake) je verzia {3,0} pre SSLv3, {3,1} pre TLSv1.0 a {3,2} pre TLSv1.1.
    • ClientKeyExchange sa líši.
    • MAC/HMAC sa líši (TLS používa HMAC, zatiaľ čo SSL používa skoršiu verziu HMAC).
    • Odvodenie kľúča sa líši.
    • Klient môže posielať aplikačné údaje hneď po odoslaní správy SSL/TLS Finished v SSLv3. V TLSv1 musí počkať na správu Finished od servera.
    • Zoznam súborov šifier sa líši (a niektoré z nich boli premenované z SSL* na TLS*, pričom sa zachovalo rovnaké identifikačné číslo).
    • Rozdiely sú aj v súvislosti s novým rozšírením opätovného vyjednávania. Vo všeobecnosti platí, že čím vyššia verzia alebo SSL/TLS, tým je bezpečnejšia, za predpokladu, že si správne vyberiete aj sady šifier (vyššie verzie TLS ponúkajú aj používanie sád šifier, ktoré sa považujú za lepšie). (SSLv2 sa považuje za nezabezpečenú.) Okrem toho SSL nespadá do pôsobnosti IETF. Napríklad oprava TLS renegotiation musela byť dodatočne upravená pre SSLv3 (hoci zásobníky SSL/TLS museli byť aj tak aktualizované). Možno vás bude zaujímať aj táto odpoveď:
  • Čo sa deje na drôte, keď sa vytvorí spojenie TLS/LDAP alebo TLS/HTTP?[Stackoverflow]. Všimnite si, že niektorí ľudia oponujú SSL a TLS ako rozdiel medzi "SSL/TLS pri pripojení" a "upgradom na TLS" (po nejakej konverzácii pomocou aplikačného protokolu). Napriek tomu, že niektoré z týchto odpovedí majú relatívne vysoký počet hlasov, je to nesprávne. Tento omyl sa šíri tým, že niektoré aplikácie, ako napríklad Microsoft Outlook, ponúkajú dve možnosti konfigurácie s názvom "SSL" a "TLS" pre konfiguráciu SMTP/IMAP, hoci v skutočnosti znamenajú "SSL/TLS pri pripojení" a "upgrade na TLS". (To isté platí aj pre knižnicu JavaMail, myslím.) RFC, ktoré hovoria o STARTTLS, boli napísané v čase, keď TLS už bolo oficiálnym RFC, preto'sa v nich hovorí len o upgrade na TLS. V praxi to znamená, že ak upravíte konfiguráciu poštového klienta a prinútite ho používať SSLv3 namiesto TLS (čo by som vo všeobecnosti neodporúčal), stále je pravdepodobné, že bude schopný prejsť na SSL/TLS pomocou STARTTLS s pripojením SSLv3, jednoducho preto, že ide skôr o režim prevádzky ako o verziu SSL/TLS a/alebo šifrovacích sád. Existuje aj variant HTTP, pri ktorom sa prechod na protokol SSL/TLS uskutočňuje v rámci protokolu HTTP (podobne ako STARTTLS v LDAP/SMTP). Je to opísané v RFC 2817. Pokiaľ viem, takmer nikdy sa nepoužíva (a nepoužíva sa ani https:// v prehliadačoch). Hlavnou relevantnou časťou tohto RFC je časť o CONNECT pre HTTP proxy servery (používajú ju HTTP proxy servery na sprostredkovanie HTTPS spojení).
Komentáre (4)

SSL VS TLS

Pojmy SSL a TLS sa často používajú zameniteľne alebo v spojení (TLS/SSL), ale v skutočnosti je jeden predchodcom druhého - SSL 3.0 slúžil ako základ pre TLS 1.0, ktorý sa preto niekedy označuje ako SSL 3.1.

Čo je bezpečnejšie SSL alebo TLS

Z hľadiska bezpečnosti sa oba považujú za rovnako zabezpečené

Hlavný rozdiel spočíva v tom, že zatiaľ čo spojenia SSL sa začínajú zabezpečením a priamo prechádzajú na zabezpečenú komunikáciu, spojenia TLS sa najprv začínajú nezabezpečeným "hello" na server a na zabezpečenú komunikáciu sa prejde až po úspešnom handshake medzi klientom a serverom. Ak sa z akéhokoľvek dôvodu nepodarí uskutočniť TLS handshake, spojenie sa nikdy nevytvorí.

(SSL a TLS verzus HTTP)

Protokol HTTP sa používa na vyžiadanie a prijímanie údajov a protokol https, v ktorom 's' nie je nič iné ako zabezpečený protokol SSL, vďaka ktorému je činnosť vyžiadania a prijímania protokolu http šifrovaná, takže žiadny útočník sprostredkovateľ nemôže ľahko získať údaje.

Ak sa pri protokole HTTP nepoužíva protokol SSL ani TLS

potom je vaše spojenie s webovým serverom nešifrované, všetky údaje budú odoslané v otvorenom texte, ktorýkoľvek útočník môže tieto údaje získať a zobraziť.

takže by ste mali použiť protokol SSL alebo TLS

obidve sú rovnaké, ale TLS je rozšíriteľnejšie a dúfam, že v budúcnosti bude mať väčšiu podporu a TLS je spätne kompatibilné.

Komentáre (3)