SSL

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2019. december 13-án felülvizsgált verziótól ; az ellenőrzések 35 szerkesztést igényelnek .

Az SSL ( Eng.  Secure Sockets Layer  – a biztonságos socket szintje ) egy titkosítási protokoll , amely biztonságosabb kapcsolatot feltételez. Aszimmetrikus kriptográfiát használ a cserekulcsok hitelesítésére, szimmetrikus titkosítást a bizalmasság megőrzésére, üzenet-hitelesítési kódokat az üzenetek integritására. A protokollt széles körben használták azonnali üzenetküldésre és IP-alapú hangátvitelre ( Voice over IP  VoIP ) olyan alkalmazásokban, mint az e- mail , internetes fax stb. 2014-ben az Egyesült Államok kormánya a protokoll jelenlegi verziójának sebezhetőségéről számolt be [1] . Az SSL-t el kell hagyni a TLS helyett (lásd: CVE-2014-3566).  

Az SSL-t eredetileg a Netscape Communications fejlesztette ki, hogy hozzáadja a HTTPS protokollt Netscape Navigator webböngészőjéhez . Ezt követően az SSL 3.0 protokoll alapján kidolgozták és elfogadták az RFC szabványt , amely a TLS nevet kapta .

Leírás

Az SSL protokoll biztonságos kommunikációt biztosít a következő két elemen keresztül:

Az SSL aszimmetrikus kriptográfiát használ a cserekulcsok hitelesítésére, szimmetrikus titkosítót a bizalmasság megőrzésére, valamint üzenethitelesítési kódokat az üzenetek integritásának biztosítására.

Az SSL protokoll egy "biztonságos csatornát" biztosít, amelynek három fő tulajdonsága van:

  1. A csatorna privát. A titkosítást minden üzenetnél alkalmazzák egy egyszerű párbeszéd után, amely a titkos kulcs meghatározására szolgál.
  2. A csatorna hitelesítve van. A párbeszédpanel szerveroldala mindig hitelesítésre kerül, míg a kliens oldal opcionálisan megteszi ezt.
  3. A csatorna megbízható. Az üzenettovábbítás magában foglalja az integritás ellenőrzését.

Az SSL előnye, hogy független az alkalmazási protokolltól. Az alkalmazásprotokollok ( HTTP , FTP , TELNET , stb.) teljesen transzparens módon működhetnek az SSL protokollon felül, vagyis az SSL képes egyeztetni a titkosítási algoritmust és a session kulcsot, és hitelesíteni a szervert, mielőtt az alkalmazás megkapja vagy továbbítja a az üzenet első bájtja.

Történelem és fejlődés

SSL 1.0, 2.0 és 3.0

Az SSL protokollt eredetileg a Netscape Communications fejlesztette ki . Az 1.0-s verzió soha nem került nyilvánosságra. A 2.0-s verzió 1995 februárjában jelent meg, de sok olyan biztonsági hibát tartalmazott, amelyek az SSL 3.0-s verziójának kifejlesztéséhez vezettek [2] . Az 1996-ban kiadott SSL 3.0-s verzió volt az alapja a TLS 1.0, az Internet Engineering Task Force ( IETF ) protokollszabvány létrehozásának, amelyet először az RFC 2246-ban határoztak meg 1999 januárjában. A Visa , a Master Card , az American Express és sok más szervezet rendelkezik engedéllyel az SSL protokoll kereskedelmi célú internetes használatára. Így az SSL a projektnek megfelelően bővíthető, hogy támogassa az előre és visszafelé kompatibilitást és a kapcsolatok közötti egyeztetést egy peer-to-peer hálózatban. 2011 márciusától az RFC 6176 szerint a TLS kliensek nem használhatják az SSL 2.0 protokollt, amikor kapcsolatot kérnek a szerverrel, és a szervereknek el kell utasítaniuk az ilyen kéréseket.

TLS 1.0

A TLS 1.0-t először az RFC 2246 -ban határozták meg 1999 januárjában az SSL 3.0 frissítéseként. Amint az RFC kijelenti, "a protokoll és az SSL 3.0 közötti különbségek nem kritikusak, de jelentősek a TLS 1.0 és az SSL 3.0 közötti inkompatibilitások megjelenése szempontjából." A TLS 1.0 tartalmaz olyan eszközöket, amelyekkel a TLS–SSL 3.0 kapcsolat megvalósítása gyengítené a biztonságot.

TLS 1.1

A TLS 1.1-et 2006 áprilisában vezették be az RFC 4346 -ban [3] . Ez a TLS 1.0-s verziójának frissítése volt. Jelentős változások ebben a verzióban:

TLS 1.2

A TLS 1.2-t 2008 augusztusában jelentették be az RFC 5246 -ban. A TLS 1.1 korábban javasolt verzióján alapul.

TLS 1.3

A TLS 1.3 szabványt 2018 augusztusában ismerték el az RFC 8446 szabványban.

Hogyan működik

Az SSL többrétegű környezetet használ az információcsere biztonságának biztosítására. A kommunikáció bizalmas jellege annak köszönhető, hogy a biztonságos kapcsolat csak a megcélzott felhasználók számára nyitott.

Réteges környezet

Az SSL protokoll két protokoll között helyezkedik el: a kliensprogram által használt protokoll (HTTP, FTP, LDAP, TELNET stb.) és a TCP/IP szállítási protokoll között. Az SSL úgy védi az adatokat, hogy szűrőként működik mindkét oldalon, és továbbítja azokat a szállítási rétegnek [4] [5] .

A protokoll működése két szintre osztható:

  1. Handshake Protocol Layer
  2. Rögzítési protokoll réteg

Az első réteg viszont három alprotokollból áll:

  1. Kézfogás protokoll
  2. Cipher Spec Protocol
  3. Riasztási protokoll

A kapcsolati kézfogási protokoll a munkamenetadatok egyeztetésére szolgál az ügyfél és a szerver között. A munkamenet adatai a következőket tartalmazzák:

A kapcsolati handshake protokoll egy adatcsere-láncot hoz létre, amely megkezdi a felek hitelesítését, és megegyezik a titkosításban, a kivonatolásban és a tömörítésben. A következő lépés a résztvevők hitelesítése, amelyet szintén a kapcsolatmegerősítő protokoll hajt végre.

A titkosítási paraméter-módosítási protokoll a kulcsadatok (kulcsanyag) megváltoztatására szolgál – ez a titkosítási kulcsok létrehozásához használt információ. A protokoll csak egy üzenetből áll, amelyben a szerver azt mondja, hogy a küldő módosítani akarja a kulcskészletet.

A figyelmeztető protokoll egy üzenetet tartalmaz, amely állapotváltozást vagy esetleges hibát jelez a feleknek. Jellemzően figyelmeztetést küldünk, ha a kapcsolat megszakad, és érvénytelen üzenet érkezik, az üzenet nem dekódolható, vagy a felhasználó megszakítja a műveletet.

Digitális tanúsítványok

Az SSL protokoll tanúsítványokat használ annak ellenőrzésére, hogy a nyilvános kulcs a valódi tulajdonosához tartozik-e. Az SSL-tanúsítvány beszerzésének módjai:

  1. Használjon CA által kiadott tanúsítványt
  2. Használjon önaláírt tanúsítványt
  3. Használjon „üres” tanúsítványt

Önaláírt tanúsítvány - a felhasználó által létrehozott tanúsítvány - ebben az esetben a tanúsítvány kibocsátója megegyezik a tanúsítvány tulajdonosával. Az „üres” tanúsítvány egy olyan fiktív információt tartalmazó tanúsítvány, amelyet ideiglenes jelleggel használnak az SSL beállításához és működésének ellenőrzéséhez egy adott környezetben.

Az SSL - tanúsítványok között vannak tartományellenőrzött tanúsítványok és kiterjesztett érvényesítési tanúsítványok .  Ez utóbbi egy domain nevet egy valós személyhez vagy entitáshoz társít.

Az aktuális munkamenet kulcsának levezetésének mechanizmusai SSL/TLS-ben

4 fő kulcsgeneráló algoritmus létezik: RSA , Fixed Diffie-Hellman, Efemer Diffie-Hellman, Anonymous Diffie-Hellman

rsa

Ha egy privát RSA-kulcs „elveszett”, az azt megkapó kriptoanalitikus lehetőséget kap az összes rögzített múltbeli és jövőbeli üzenet visszafejtésére. A kulcscsere megvalósítása az RSA-ban egyirányú: a kézfogási szakaszban létrejövő szimmetrikus kulcs létrehozásához szükséges összes információ elküldésre kerül a szervernek és a szerver nyilvános kulcsával titkosítva. A privát kulcs felfedése lehetővé teszi ennek a munkamenetnek a szimmetrikus kulcsának kiderítését.

Diffie-Hellman

A Fixed Diffie-Hellman mechanizmus állandó nyilvános kulcsot használ, amely a szervertanúsítványban van regisztrálva. Ez azt is jelenti, hogy minden új kapcsolatnál az ügyfél megadja a kulcs részét. A kulcscsere után egy új szimmetrikus kulcs jön létre az aktuális munkamenet információcseréjéhez. A szerver privát kulcsának felfedésével a kriptoanalizátor visszafejtheti a korábban rögzített üzeneteket, valamint az összes jövőbeli üzenetet. Ezt maga a mechanizmus teszi lehetővé. Mivel a kriptoanalitikus ismeri a szerver privát kulcsát, képes lesz kideríteni az egyes munkamenetek szimmetrikus kulcsát, és még az sem segít, hogy a kulcsgenerálási mechanizmus kétirányú.
Az Anonymous Diffie-Hellman mechanizmus nem garantálja a magánélet védelmét, mivel az adatokat titkosítatlanul továbbítják.
Az egyetlen lehetőség, amely garantálja a múltbeli és jövőbeli üzenetek biztonságát, az Efemer Diffie-Hellman . Az előzőekben tárgyalt módszerekhez képest az a különbség, hogy minden új kapcsolatnál egyszeri kulcsot generál a szerver és a kliens. Így még ha a kriptoanalitikus megkapja is az aktuális privát kulcsot, csak az aktuális munkamenetet tudja visszafejteni, a korábbi vagy jövőbeli munkameneteket azonban nem.

A titkosítás jellemzői

Az adatok titkosításának két fő módja van: szimmetrikus titkosítás (megosztott titkos kulcs) és aszimmetrikus titkosítás (nyilvános/privát kulcspár).

Az SSL aszimmetrikus és szimmetrikus titkosítást is használ.

Az aszimmetrikus titkosítás lényege, hogy egy kulcspárt használnak. Az egyik kulcsot nyilvánosnak nevezik (általában magában a tulajdonos tanúsítványában teszik közzé), a második kulcsot pedig privátnak nevezik - titokban tartják. Mindkét kulcsot párban használjuk: a nyilvános kulcsot az adatok titkosítására, a privát kulcsot pedig a visszafejtésre használjuk. Ez a kapcsolat két fontos dolgot tesz lehetővé.

  1. Bármely felhasználó megszerezheti a nyilvános kulcsot, és felhasználhatja olyan adatok titkosítására, amelyeket csak az a felhasználó tud visszafejteni, akinek a titkos kulcsa van.
  2. Ha a kulcspár tulajdonosa a privát kulcsával "titkosítja" (aláírja) az adatokat, akkor mindenki megbizonyosodhat arról, hogy az adatokat a magánkulcs tulajdonosa küldte, és azt harmadik fél nem változtatta meg. Ez a digitális aláírás alapja .

Az RSA  az egyik legszélesebb körben használt aszimmetrikus titkosítási algoritmus.

A szimmetrikus titkosításnál ugyanazt a kulcsot használják az adatok titkosításához és visszafejtéséhez. Ha a felek titkosított üzeneteket szeretnének biztonságos módon cserélni, akkor mindkét félnek azonos szimmetrikus kulcsokkal kell rendelkeznie. Ezt a típusú titkosítást nagy mennyiségű adat esetén használják (mivel a szimmetrikus titkosítás gyorsabb). Az általánosan használt algoritmusok a DES , 3-DES , RC2 , RC4 és AES .

Az SSL protokoll nyilvános kulcsú titkosítást használ a kliens és a szerver kölcsönös hitelesítésére (digitális aláírás technológiával), valamint munkamenetkulcs generálására, amelyet viszont a gyorsabb szimmetrikus kriptográfiai algoritmusok használnak nagy mennyiségű adat titkosítására. .

Hashing

A hash érték egy üzenetazonosító, mérete kisebb, mint az eredeti üzenet mérete. A leghíresebb hash algoritmusok az MD5 (Message Digest 5), amely 128 bites hash értéket állít elő, az SHA-1 (Secure Hash Algorithm), amely 160 bites hash értéket állít elő, az SHA-2 és az SHA-3 . A kivonatoló algoritmus eredménye egy olyan érték, amely az adatátvitel integritásának ellenőrzésére szolgál.

Felvételi szint

A rögzítési réteg szintű protokoll titkosított adatokat fogad a kliens programtól és továbbítja a szállítási rétegnek. A rögzítési protokoll felveszi az adatokat, blokkokra bontja, és titkosítja (dekódolja) az adatokat. Ugyanakkor aktívan felhasználják azokat az információkat, amelyekről az adatok visszaigazolása során megállapodtak.

Az SSL protokoll lehetővé teszi a szimmetrikus kulcsú titkosítást akár blokk- , akár adatfolyam-titkosítással . A gyakorlatban gyakran használják a blokk-rejtjeleket. A blokk-rejtjel működési elve az, hogy egy egyszerű szövegblokkot leképeznek ugyanabba a titkosított szöveg blokkra. Ez a rejtjel egy 2128 sort tartalmazó táblázatként ábrázolható , minden sor egy egyszerű szöveges M blokkot és a megfelelő C rejtjelezett szövegblokkot tartalmaz . Minden kulcshoz létezik hasonló táblázat.

A titkosítás ábrázolható függvényként

C = E ( Kulcs , M ), ahol M  az eredeti adat, Kulcs  a titkosítási kulcs, C  a titkosított adat.

A blokkok általában kicsik (általában 16 bájt), így felmerül a kérdés: hogyan lehet titkosítani egy hosszú üzenetet?
Az ilyen titkosítás első módját ECB (Electronic Codebook) vagy egyszerű helyettesítési módnak nevezik. Lényege, hogy az eredeti üzenetet blokkokra bontjuk (ugyanarra a 16 bájtra), és mindegyik blokkot külön titkosítjuk. Ezt a módot azonban ritkán használják a forrásszöveg statisztikai jellemzőinek megőrzésének problémája miatt: a titkosítás után 2 azonos egyszerű szövegblokkból két azonos titkosított szövegblokk lesz.
A probléma megoldására egy második módot fejlesztettek ki - CBC (Cipher-block láncolás). Ebben az esetben minden új rejtjelezett szöveg blokk XOR-re kerül az előző titkosítási eredménnyel. Az első blokk XOR-re van írva valamilyen inicializálási vektorral (Initialization Vector, IV). Azonban a fenti elméletek mindegyike egyetlen nagy objektumra van kifejlesztve, míg az SSL-nek, mint kriptográfiai protokollnak, egy sor csomagot kell titkosítania. Ilyen helyzetben a CBC alkalmazásának két módja van:

  1. Minden üzenetet külön objektumként kezel, és minden alkalommal új inicializálási vektort generál
  2. Az összes üzenetet egyetlen nagy objektumként kezelje, és tartsa közöttük a CBC módot. Ebben az esetben az előző üzenet utolsó titkosítási blokkja (n-1) lesz az n üzenet inicializálási vektora.

Alkalmazás

Alkalmazások tervezésekor az SSL minden más alkalmazási rétegbeli protokoll, például a HTTP , FTP , SMTP , NNTP és XMPP "alatt" valósul meg , így "átláthatóvá" válik a használata. Korábban az SSL-t elsősorban megbízható szállítási protokollokkal, például a TCP-vel ( Transmission Control Protocol ) használták. Mindazonáltal olyan datagram-átviteli protokollokkal is implementálták, mint a User Datagram Protocol (UDP) és a Datagram Control Protocol (DCCP), amelyek használatát szabványosították, így született meg a Datagram Transport Layer Security (DTLS) kifejezés.

Weboldalak

Az SSL protokoll gyakori használata a HTTPS (Hypertext Transfer Protocol Secure) protokoll kialakulásához vezetett, amely támogatja a titkosítást. A HTTPS protokollon keresztül továbbított adatok az SSL vagy TLS kriptográfiai protokollba „csomagolva” vannak , ezáltal biztosítva ezen adatok védelmét. Ezt a védelmi módszert széles körben használják a webes világban olyan alkalmazásoknál, ahol fontos a kapcsolat biztonsága, például fizetési rendszerekben. A HTTP - vel ellentétben a HTTPS alapértelmezés szerint a 443 -as TCP -portot használja.

Weboldal támogatása a protokollhoz [6]
Protokoll verzió Biztonság Weboldal támogatás
SSL 2.0 Nem 4,9%
SSL 3.0 Nem 16,6%
TLS 1.0 Lehet 94,7%
TLS 1.1 Igen 82,6%
TLS 1.2 85,5%

Böngészők

2017 elejétől az összes nagyobb SSL/TLS-t támogató webböngésző a következő:

SSL/TLS-t támogató böngészők
Böngésző Platformok TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3
Króm 1-21 Android, iOS, Linux, Mac OS X, Windows (XP, Vista, 7, 8) Igen Nem Nem Nem
Króm 29-53 Android, iOS, Linux, Mac OS X, Windows (XP, Vista, 7, 8, 10) igen [7] igen [7] igen [8] Nem
Chrome 58+ Android, iOS, Linux, Mac OS X, Windows (XP, Vista, 7, 8, 10) Igen Igen Igen Igen
Firefox 1-27 Linux, Mac OS X, Windows (XP, Vista, 7, 8) igen [9] Nem [10] Nem [11] Nem
Firefox 27-53 Linux, Mac OS X, Windows (XP, Vista, 7, 8) Igen Igen Igen Nem
Firefox 54+ Linux, Mac OS X, Windows (XP, Vista, 7, 8) Igen Igen Igen Igen
IE6 Windows (XP) Igen Nem Nem Nem
IE 7-8 _ Windows (XP, Vista) Igen Nem Nem Nem
IE 8-9 _ Windows 7 Igen Igen Igen Nem
IE9 Windows Vista Igen Nem Nem Nem
IE 10+ Windows (7, 8) Igen Igen Igen Nem
Edge 12-15 Windows 10 Igen Igen Igen Nem
Opera 5-7 Linux, Mac OS X, Windows igen [12] Nem Nem Nem
Opera 8-9 Linux, Mac OS X, Windows Igen igen [13] Nem Nem
Opera 10+ Linux, Mac OS X, Windows Igen Igen Igen Nem
Opera 44+ Linux, Mac OS X, Windows Igen Igen Igen Igen
Safari 4 Mac OS X, Windows (XP, Vista, 7), iOS 4.0 Igen Nem Nem Nem
Safari 5 Mac OS X, Windows (XP, Vista, 7) Igen Nem Nem Nem
Safari 7-10 iOS 5.0- Igen Igen Igen Nem

Műszaki adatok:

Használat és megvalósítás

Kezdetben az SSL-alapú virtuális magánhálózatokat ( VPN ) az IPsec VPN - en alapuló kiegészítő és alternatív távoli hozzáférési technológiaként fejlesztették ki . Azonban olyan tényezők, mint a kellő megbízhatóság és az alacsony költség vonzóvá tették ezt a technológiát a VPN-szervezetek számára. Az SSL-t széles körben használják az e-mailekben is.

Az SSL leggyakoribb megvalósítása az OpenSSL nyílt forráskódú kriptográfiai csomag , amely az Eric Young által írt SSLeay -en alapul. Az OpenSSL legújabb verziója támogatja az SSLv3-at. A csomag különféle tanúsítványok létrehozására és kezelésére szolgál . Tartalmaz egy könyvtárat is az SSL-támogatáshoz különböző programok által. A könyvtárat például a közös Apache HTTP- kiszolgáló SSL-modulja használja .

SSL Record Protocol Specification

SSL rekord fejléc formátum

Az SSL-ben lévő összes adatot rekordok (rekordok) formájában küldik el - olyan objektumok, amelyek egy fejlécből és bizonyos mennyiségű adatból állnak. Minden rekord fejléc 2 vagy 3 bájt hosszúságú kódot tartalmaz. Ha a rekordhossz kód első bájtjában a legjelentősebb bit 1, akkor a rekordnak nincs kitöltése, és a fejléc teljes hossza 2 bájt, ellenkező esetben a rekord tartalmaz kitöltést és a teljes fejléc hossza 3 bájt. Hosszú (3 bájt) fejléc esetén az első bájt második legjelentősebb bitje különleges jelentéssel bír. Ha egyenlő 0-val - a rekord információs, ha egyenlő 1-gyel - a rekord biztonsági menekülés. A rekordhossz kód nem tartalmazza a fejléc bájtok számát. Egy 2 bájtos fejléc hosszát a következőképpen számítjuk ki:

RECORDHOSSZ = ((byte[0] & 0x7F) << 8) | bájt[1];

Itt a bájt[0] az első vett bájt, az [1] pedig a második fogadott bájt.
3 bájtos fejléc esetén a rekord hossza a következőképpen kerül kiszámításra:

RECORD-LENGTH = ((byte[0] & 0x3F) <<8) | bájt[1];
IS-ESCAPE = (byte[0] & 0x40) !=0;
PADDING = bájt[2];

A PADDING érték adja meg a feladó által az eredeti rekordhoz hozzáadott bájtok számát. A kitöltési adatok arra szolgálnak, hogy a rekord hossza többszöröse legyen a titkosítási blokk méretének. A feladó a megadott adatok után hozzáadja a PADDING -et, majd az egészet titkosítja, mivel ennek a tömbnek a hossza többszöröse a használt titkosítás blokkméretének. Mivel a továbbított adatok mennyisége ismert, az üzenet fejléce a PADDING mennyiségének figyelembevételével alakítható ki . Az üzenet címzettje visszafejti a teljes adatmezőt, és megkapja az eredeti információt, majd kiszámítja a RECORD-LENGTH valódi értékét , miközben a PADDING eltávolításra kerül az "adat" mezőből.

SSL információs rögzítési formátum

Az SSL rekord adatrész 3 összetevőből áll:

  1. MAC-ADATOK[MAC-SIZE]
  2. AKTUÁLIS ADATOK[N]
  3. PADDING-ADATOK[PADDING]

MAC-DATA  - üzenet hitelesítő kód
MAC-SIZE - a hash összeg  kiszámításához használt algoritmus funkciója
ACTUAL-DATA  - ténylegesen továbbított adat vagy üzenet adatmező
PADDING-DATA  - PADDING adatok (blokk titkosítással)

MAC-ADATOK = HASH [ TITKOS , AKTUÁLIS ADATOK , PADDING-ADATOK , SORSZÁM ]

Itt először a SECRET kerül átadásra a hash függvénynek, ezt követi az ACTUAL-DATA és a PADDING-DATA , majd a SEQUENCE-NUMBER  , egy sorszám.
A SECRET értéke attól függ, hogy ki küldi az üzenetet. Ha az ügyfél ezt teszi, akkor a SECRET egyenlő a CLIENT-WRITE-KEY értékkel . Ha az ügyfél megkapja az üzenetet, a SECRET egyenlő a CLIENT-READ-KEY értékkel .
A sorszám egy 32 bites kód, amely 4 bájtban kerül átadásra a hash függvénynek a magastól az alacsonyig terjedő hálózati sorrendben. A sorszám a szerver vagy kliens számlálója. Minden átviteli irányhoz egy pár számlálót használnak - a küldő és a címzett számára; minden üzenet elküldésekor a számláló 1-gyel növekszik.
Az üzenet fogadója a várt sorszám értéket használja a MAC elküldéséhez (a hash típusát a CIPHER-CHOICE paraméter határozza meg ). A számított MAC-DATA értéknek meg kell egyeznie a továbbított értékkel. Ha az összehasonlítás sikertelen, az üzenet sérültnek minősül, ami hibát eredményez, ami a kapcsolat megszakadásához vezet.
Az utolsó egyezés-ellenőrzés blokkrejtjel használata esetén történik. Az üzenetben lévő adatmennyiségnek ( RECORD-LENGTH ) a titkosítási blokk méretének többszörösének kell lennie. Ha ez a feltétel nem teljesül, az üzenet sérültnek minősül, ami megszakad.

2 bájtos fejléc esetén a maximális üzenethossz 32767 bájt, 3 bájtos fejléc esetén 16383 bájt. Az SSL-beszélgetési protokoll üzeneteinek egyetlen SSL-protokoll-rekordnak kell megfelelniük, az alkalmazásprotokoll-üzenetek pedig több SSL-rekordot is elfoglalhatnak.

SSL Conversation Protocol

Az SSL beszélgetési protokoll 2 fő fázist tartalmaz.

1. fázis

Az első fázis egy bizalmas kommunikációs csatorna létrehozására szolgál.
Ez a fázis inicializálja a kapcsolatot, amikor mindkét partner "hello" üzenetet vált. A kliens CLIENT-HELLO üzenetet küld . A szerver megkapja ezt az üzenetet, feldolgozza, és visszaküldi a SERVER-HELLO üzenetet .
Ezen a ponton a kiszolgáló és az ügyfél is elegendő információval rendelkezik ahhoz, hogy tudja, szükség van-e új főkulcsra. Ha nincs szükség a kulcsra, a szerver és a kliens a 2. fázisba lép.
Amikor új főkulcsot kell létrehozni , a szerver SERVER-HELLO üzenete már elegendő adatot tartalmaz ahhoz, hogy az ügyfél mesterkulcsot generáljon . Ezek az adatok magukban foglalják a kiszolgáló aláírt tanúsítványát, az alaprejtjelek listáját és a kapcsolatazonosítót (a kiszolgáló által generált véletlen szám, amelyet a munkamenet során használnak). Miután az ügyfél generált egy mesterkulcsot , elküldi a kiszolgálónak egy CLIENT-MASTER-KEY üzenetet, vagy egy hibaüzenetet, ha az ügyfél és a szerver nem tudnak megegyezni az alaptitkosításban.
A mesterkulcs meghatározása után a szerver SERVER-VERIFY üzenetet küld a kliensnek , amely hitelesíti a szervert.

2. fázis

A 2. fázist hitelesítési fázisnak nevezzük. Mivel a szerver már az első fázisban hitelesítve van, a kliens hitelesítése a második fázisban történik meg. A szerver kérést küld a kliensnek, és ha a kliens rendelkezik a szükséges információkkal, pozitív választ, ha nem, hibaüzenetet küld. Amikor az egyik partner hitelesített egy másikat, az kész üzenetet küld . Ügyfél esetén a CLIENT-FINISHED üzenet a CONNECTION-ID titkosított formáját tartalmazza, amelyet a szervernek ellenőriznie kell. Ha az ellenőrzés sikertelen volt, a szerver ERROR üzenetet küld .
Amikor az egyik partner küldött egy kész üzenetet , addig el kell fogadnia az üzeneteket, amíg meg nem kapja a kész üzenetet a másik partnertől, és csak akkor fejeződik be az SSL beszélgetési protokoll , amikor mindkét partner elküldte és fogadta a kész üzenetet. Ettől a pillanattól kezdve az alkalmazási protokoll működésbe lép.

Generic Messaging Protocol

Az alábbiakban bemutatunk néhány lehetőséget az SSL beszélgetési protokollon belüli üzenetváltásra. A kliens C , a szerver S. A "{smth}key" azt jelenti, hogy a "smth" egy kulccsal van titkosítva.

Munkamenetazonosító hiányában
ügyfél-üdv C®S: kihívás, cipher_specs
szerver-üdv S® C: kapcsolatazonosító,szerver-tanúsítvány,titkosítási_specifikációk
kliens-főkulcs C®S: {master_key}server_public_key
ügyfél-befejezés C®S: {connection-id}client_write_key
szerver-ellenőrzés S® C: {challenge}szerver_írási_kulcs
szerver-befejezés S® C: {new_session_id}server_write_key
A kliens és a szerver találta a munkamenet-azonosítót
ügyfél-üdv C®S: kihívás, session_id, cipher_specs
szerver-üdv S® C: kapcsolatazonosító, session_id_hit
ügyfél-befejezés C®S: {connection-id}client_write_key
szerver-ellenőrzés S® C: {challenge}szerver_írási_kulcs
szerver-befejezés S® C: {session_id}server_write_key
Munkamenetazonosító és ügyfélhitelesítés használt
ügyfél-üdv C®S: kihívás, session_id, cipher_specs
szerver-üdv S® C: kapcsolatazonosító, session_id_hit
ügyfél-befejezés C®S: {connection-id}client_write_key
szerver-ellenőrzés S® C: {challenge}szerver_írási_kulcs
Kérelem-tanúsítvány S® C: {auth_type ,challenge'}server_write_key
ügyfél-tanúsítvány C®S: {cert_type,client_cert,response_data}client_write_key
szerver-befejezés S® C: {new_session_id}server_write_key

Hitelesítés és kulcscsere

Az SSL 3 típusú hitelesítést támogat:

  • mindkét fél hitelesítése (kliens - szerver),
  • szerver hitelesítés nem hitelesített klienssel,
  • teljes anonimitás.

Ha a kiszolgáló hitelesített, akkor annak hitelesítési üzenetében meg kell adni a megfelelő hitelesítési láncot, amely egy elfogadható CA-hoz vezet. Egyszerűen fogalmazva, a hitelesített szervernek érvényes tanúsítványt kell adnia az ügyfélnek. Mindegyik fél felelős annak ellenőrzéséért, hogy a másik fél tanúsítványa még nem járt-e le vagy nem vonták vissza. Amikor a szerver hitelesít, a csatorna ellenáll (biztonságos) a webszerver és a böngésző közötti adatelfogási kísérletnek, de a teljesen névtelen munkamenet eredendően sebezhető az ilyen támadásokkal szemben. Az anonim szerver nem tudja hitelesíteni a klienst. A kulcscsere folyamatának fő célja egy kliens titkos (pre_master_secret) létrehozása, amelyet csak a kliens és a szerver ismer. A titok (pre_master_secret) a megosztott titok (master_secret) létrehozására szolgál. A megosztott titokra azért van szükség, hogy üzenetet hozzon létre a tanúsítvány, a titkosítási kulcsok, a MAC (üzenet hitelesítési kód) titkának és a kész üzenet ellenőrzéséhez. A kész üzenet elküldésével a felek jelzik, hogy ismerik a helyes titkot (pre_master_secret).

Névtelen kulcscsere

Teljesen anonim munkamenet hozható létre az RSA vagy Diffie-Hellman algoritmus használatával a cserekulcsok generálására. RSA használata esetén a kliens a titkot (pre_master_secret) titkosítja a nem hitelesített szerver nyilvános kulcsával. Az ügyfél megtanulja a nyilvános kulcsot a szerver kulcscsere üzenetéből. Az eredményt kulcscsere üzenetben küldi el az ügyfél. Mivel az elfogó nem ismeri a szerver privát kulcsát, nem tudja visszafejteni a titkot (pre_master_secret). A Diffie-Hellman algoritmus használatakor a szerver nyilvános paramétereit a kiszolgáló kulcscsere-üzenete tartalmazza, és kulcscsere üzenetben küldi el a kliensnek. Az elfogó, amely nem ismeri a privát értékeket, nem fogja tudni megtalálni a titkot (pre_master_secret).

Hitelesítés és kulcscsere RSA segítségével

Ebben az esetben a kulcscsere és a szerver hitelesítés kombinálható. A nyilvános kulcsot a szerver tanúsítványa is tartalmazhatja, vagy ideiglenes RSA -kulcs is használható , amelyet a kiszolgáló kulcscsere üzenetében küld el. Ideiglenes RSA-kulcs használatakor a csereüzeneteket a kiszolgáló RSA- vagy DSS-tanúsítványa írja alá (???). Az aláírás tartalmazza a Client_Hello.random üzenet aktuális értékét, így a régi aláírások és a régi ideiglenes kulcsok nem ismételhetők meg. A szerver az ideiglenes RSA-kulcsot csak egyszer használhatja munkamenet létrehozásához. A kiszolgáló tanúsítványának ellenőrzése után az ügyfél titkosítja a titkot (pre_master_secret) a kiszolgáló nyilvános kulcsával. A titkos (pre_master_secret) sikeres dekódolása után egy "befejezett" üzenet generálódik, ezzel demonstrálva a szerver felé, hogy ismeri a szerver tanúsítványának megfelelő privát kulcsot.

Ha az RSA-t kulcscserére használják, az ügyféltanúsítvány-ellenőrző üzenetet használják az ügyfél hitelesítésére. A kliens aláírja a master_secret és az összes megelőző handshake protokoll üzenetből számított értéket. Ezek a kézfogási üzenetek egy szervertanúsítványt tartalmaznak, amely megegyezik a kiszolgáló aláírásával egy Server_Hello.random üzenettel, amely megegyezik az aktuális kézfogási üzenet aláírásával (???).

Hitelesítés és kulcscsere Diffie-Hellman segítségével

Ebben az esetben a szerver támogathat egy paraméter-specifikus Diffie-Hellman algoritmust is, vagy használhatja a kiszolgáló kulcscsere-üzeneteit DSS- vagy RSA-tanúsítvánnyal aláírt ideiglenes paraméterek küldésére. Az ideiglenes paraméterek kivonatolása hello.random üzenettel történik aláírás előtt, hogy a támadó ne ismételje meg a régi paramétereket. Az ügyfél mindkét esetben ellenőrizheti a tanúsítványt vagy az aláírást, hogy megbizonyosodjon arról, hogy a paraméterek a szerverhez tartoznak.

Ha az ügyfél rendelkezik olyan tanúsítvánnyal, amely tartalmazza a Diffie-Hellman algoritmus paramétereit , akkor a tanúsítvány tartalmazza a kulcscsere befejezéséhez szükséges információkat is. Ebben az esetben a kliensnek és a szervernek ugyanazokat a Diffie-Hellman eredményeket (pre_master_secret) kell generálnia minden alkalommal, amikor kapcsolatot létesítenek. Annak elkerülése érdekében, hogy a titkot (pre_master_secret) a szükségesnél hosszabb ideig tárolja a számítógép memóriájában, a titkot a lehető leggyorsabban át kell alakítani megosztott titokká (master_secret). A kulcscsere működéséhez az ügyfélbeállításoknak kompatibilisnek kell lenniük a szerver által támogatottakkal.

Rögzítési protokoll

A Record Layer protokoll egy réteges protokoll. Az üzenetek minden szinten tartalmaznak hossz-, leírás- és érvényességi mezőket. Az írási protokoll fogadja a továbbítandó üzeneteket, feldarabolja az adatokat kezelhető blokkokra, intelligensen tömöríti az adatokat egy MAC (üzenet hitelesítési kód) segítségével, titkosítja és továbbítja az eredményt. Visszafejti a kapott adatokat, ellenőrzi, kicsomagolja, összegyűjti és a kliens magasabb szintjeire szállítja.

Négy rögzítési protokoll létezik:

  1. Kézfogás protokoll;
  2. Riasztási protokoll;
  3. A titkosítás megváltoztatásának specifikációs protokollja;
  4. Alkalmazási protokoll (alkalmazási adatprotokoll);

Ha egy SSL-megvalósítás olyan bejegyzéstípust kap, amelyet nem ismer, akkor azt a bejegyzést a rendszer egyszerűen figyelmen kívül hagyja. Minden, az SSL-lel együtt használható protokollt alaposan át kell gondolni, mivel meg kell küzdenie az ellene irányuló támadásokkal. Vegye figyelembe, hogy a rekord típusa és hossza miatt a protokollt nem védi titkosítás. Ügyelni kell a forgalom minimalizálására.

Handshake protokoll

Az SSL-kliens és a szerver megállapodnak abban, hogy kézfogási eljárással hoznak létre kapcsolatot. A kézfogás során a kliens és a szerver megállapodnak a kapcsolat biztosításához használt különféle paraméterekben:

  1. A kliens elküldi a szervernek az ügyfél SSL verziószámát, a támogatott titkosítási és tömörítési algoritmusokat, a munkamenet-specifikus adatokat és egyéb információkat, amelyekre a szervernek szüksége van az ügyféllel SSL használatával történő kommunikációhoz.
  2. A szerver elküldi a kliensnek a szerver SSL verziószámát, a tömörítési és titkosítási algoritmust (a kliens által korábban küldöttek közül választva), a munkamenet-specifikus adatokat és egyéb információkat, amelyekre az ügyfélnek szüksége van a szerverrel SSL-en keresztül történő kommunikációhoz. A szerver saját tanúsítványt is küld, amihez kliens hitelesítés szükséges. A hitelesítés után a szerver ügyféltanúsítványt kér.
  3. A kliens a szerver által átadott információkat használja fel a hitelesítéshez. Ha a szerver nem ellenőrizhető, a felhasználó figyelmeztetést kap, hogy probléma van, és a kapcsolat titkosítása és hitelesítése nem hozható létre. Ha a szerver sikeresen teljesítette a tesztet, akkor a kliens továbblép a következő lépésre.
  4. A kliens a handshake eljárásból eddig beérkezett összes adat felhasználásával (a szerverrel együttműködve) munkamenet előre megosztott titkot hoz létre, a szervertől használt titkosítástól függően, azt a szerver nyilvános kulcsával (a szervertől kapott) titkosítja. a 2. lépésben elküldött tanúsítvány), majd elküldi a szervernek.
  5. Ha a kiszolgáló ügyfélhitelesítést kért (opcionális kézfogási lépés), az ügyfél egy másik adatot is aláír, amely egyedi az adott kézfogáshoz, és az ügyfél és a kiszolgáló számára is ismert. Ebben az esetben a kliens az összes aláírt adatot és a kliens saját tanúsítványát elküldi a szervernek az előre titkosított titkokkal együtt.
  6. A szerver megpróbálja hitelesíteni a klienst. Ha az ügyfél nem tud hitelesíteni, a munkamenet véget ér. Ha a kliens sikeresen hitelesíthető, a szerver a privát kulcsával dekódolja az előtitkot, majd egy sor lépésen (amelyen a kliens is keresztülmegy) létrehozza a főtitkot.
  7. Mind a kliens, mind a kiszolgáló a titkot használja a munkamenetkulcsok létrehozására, amelyek szimmetrikus kulcsok az SSL-munkamenet során kicserélt információk titkosításához és visszafejtéséhez. Sértetlenség-ellenőrzés történik (azaz az adatok bármely változásának észlelése az elküldés és az SSL-kapcsolaton való fogadás között).
  8. A kliens üzenetet küld a szervernek, amelyben tájékoztatja, hogy a klienstől érkező jövőbeni üzenetek a munkamenet kulccsal lesznek titkosítva. Ezután külön, titkosított üzenetet küld, hogy a kézfogási rész véget ért.
  9. Végül a szerver üzenetet küld a kliensnek, amelyben tájékoztatja, hogy a szerver jövőbeli üzenetei a munkamenetkulccsal lesznek titkosítva. Ezután külön, titkosított üzenetet küld, hogy a kézfogási rész véget ért.

Ezzel befejeződik a kézfogás, és megkezdődik a biztonságos kapcsolat, amelyet a kulcsadatok segítségével titkosítanak és visszafejtenek. Ha a fentiek bármelyike ​​sikertelen, akkor az SSL-kézfogás meghiúsult, és a kapcsolat nem jön létre.

Protokoll a titkosítási paraméterek megváltoztatásához

Létezik egy titkosítási paraméter-módosítási protokoll, amely jelzi a titkosítási módba való átállást. A protokoll egyetlen üzenetet tartalmaz, amely titkosítva és tömörítve van az aktuálisan létrehozott kapcsolaton. Az üzenet csak egy 1 értékű bitből áll.

struct { enum { change_cipher_spec ( 1 ), ( 255 ) } type ; } ChangeCipherSpec ;

A kliens és a kiszolgáló titkosítás-módosítási üzenetet küld, hogy értesítse a fogadó felet, hogy a következő írások az újonnan egyeztetett CipherSpec-nek és kulcsoknak megfelelően védettek lesznek. Az üzenet elfogadása azt eredményezi, hogy a vevő utasítja az írási réteget, hogy azonnal másolja át a függőben lévő olvasási állapotot az aktuális olvasási állapotba. Közvetlenül az üzenet elküldése után a feladónak utasítania kell az írási réteget, hogy változtassa meg a visszaírási módot az aktuális írási módra. A rejtjelváltási üzenet a kézfogás során, a biztonsági paraméterek átvitele után, de a "kész" üzenet elküldése előtt kerül elküldésre.

Riasztási protokoll

Az írási SSL protokoll által támogatott érvényesítési típusok egyike a riasztási protokoll. A riasztási üzenet közvetíti az üzenetben felmerült nehézségeket és a riasztás leírását. A kritikus szintű riasztási üzenet azonnal megszakítja a kapcsolatot. Ebben az esetben a munkamenetnek megfelelő egyéb kapcsolatok folytatódhatnak, de a munkamenet azonosítót érvényteleníteni kell. Más üzenetekhez hasonlóan a riasztási üzenetet is titkosítják és tömörítik, amint az aktuális kapcsolati állapot megjelenik.

Alkalmazási protokoll

Az adatalkalmazási üzenet rekord szinten működik. A kapcsolat aktuális állapota alapján töredezett, tömörített és titkosított. Az üzenetek átlátszónak minősülnek a rekordréteg számára.

Biztonság

SSL 2.0

Számos támadást lehet végrehajtani az SSL protokoll ellen. Az SSL azonban ellenáll ezeknek a támadásoknak, feltéve, hogy a felhasználó csak megbízható szervereket használ az információk feldolgozásához. Az SSL 2.0 bizonyos helyzetekben sebezhető [23] :

  1. Az üzenetek hitelesítésére és titkosítására azonos kriptográfiai kulcsokat használnak;
  2. Az SSL 2.0 gyenge MAC-kialakítással rendelkezik, amely MD5 hash függvényt használ titkos előtaggal, így sebezhető a támadásokkal szemben;
  3. Az SSL 2.0 nem rendelkezik a handshake protokoll védelmével, ami azt jelenti, hogy a köztes támadások észrevétlenek maradhatnak;
  4. Az SSL 2.0 zárt TCP-kapcsolatot használ az adatok végének jelzésére. Ez azt jelenti, hogy a következő támadás lehetséges: a támadó egyszerűen meghamisítja a TCP FIN-t, így a címzett üzenet nélkül hagyja az adatátvitel végét (ezt a hibát az SSL 3.0 javította);
  5. Az SSL 2.0 egyetlen szervizpultot és egy rögzített tartományt feltételez, ami ellentétes a webszerverek szabványos megosztott hosting funkciójával.

Az SSL 2.0 alapértelmezés szerint le van tiltva az Internet Explorer 7 [24] , Mozilla Firefox 2 [25] , Opera 9.5 [26] és Safari böngészőkkel kezdődő böngészőkben .

SSL 3.0

2014. október 14-én a POODLE (Padding Oracle On Downgraded Legacy Encryption) nevű CVE-2014-3566 biztonsági rést azonosítottak. Ez a biztonsági rés lehetővé teszi a támadó számára, hogy Man-in-the-Middle támadást hajtson végre egy SSL 3.0-val titkosított kapcsolaton. A POODLE sebezhetőség a protokoll sérülékenysége, és nem egyik megvalósításában, így minden SSL v3-mal titkosított kapcsolatot érint.

Az SSL 3.0-nak más gyengeségei is vannak. Például a beállítandó főkulcs fele teljes mértékben az MD5 hash függvényétől függ, amely nem ütközésálló, ezért nem tekinthető biztonságosnak [27] .

Lehetséges támadások típusai

Szótártámadás

Ezt a fajta támadást akkor hajtják végre, ha a támadónak fogalma van arról, hogy milyen típusú üzeneteket küldenek.
A kriptoanalitikus létrehozhat egy adatbázist, amelyben a kulcsok titkosított, egyszerű szöveges karakterláncok. A létrehozott adatbázis alapján meghatározhatja az adott adatblokknak megfelelő munkamenet-kulcsot.

Általában az ilyen támadások lehetségesek SSL esetén. Az SSL azonban nagy munkamenetkulcsok használatával próbálja felvenni ezeket a támadásokat – a kliens az exportkorlátozások által megengedettnél hosszabb kulcsot generál, amelynek egy része tiszta szövegben kerül elküldésre a szervernek, a többi pedig a titkos résszel kombinálva. egy kellően hosszú kulcs (például 128 bit, ahogy azt az RC4 megköveteli). Az egyszerű szöveges támadások blokkolásának módja az, hogy elfogadhatatlanul megnöveljük a szükséges szövegmennyiséget. A munkamenetkulcs hosszához hozzáadott minden bit megduplázza a szótár méretét. A 128 bites munkamenetkulcs használatával a szótár mérete messze meghaladja a modern technikai lehetőségeket (a megoldáshoz számos olyan atomra lenne szükség, amely nem található meg az egész univerzumban). Egy másik módja annak, hogy az SSL ellensúlyozza ezt a támadást, a lehető legnagyobb kulcshosszúság használata (nem export esetben). Ennek az a következménye, hogy a legegyszerűbb és legolcsóbb támadási módszer a kulcs frontális támadása, de egy 128 bites kulcs esetében a felfedés költsége végtelennek tekinthető.

Reflection Attack

A támadó rögzíti a kommunikációs munkamenetet a szerver és az ügyfél között. Később a kliens rögzített üzeneteinek lejátszásával megpróbál kapcsolatot létesíteni a szerverrel. Az SSL azonban egy speciális egyedi kapcsolatazonosítóval (IC) visszaveri ezt a támadást. Természetesen elméletileg egy harmadik fél nem tudja megjósolni az IS-t, mert az véletlenszerű eseményeken alapul. Egy nagy erőforrással rendelkező támadó azonban nagyszámú munkamenetet naplózhat, és megpróbálhatja felvenni a "helyes" munkamenetet a szerver által a Server_Hello üzenetben küldött hiba alapján . De az SSL nonces -ek legalább 128 bitesek, ami azt jelenti, hogy a támadónak 264 nonces -t kell írnia ahhoz, hogy 50%-os esélye legyen a találgatásra. De a 2 64 elég nagy szám ahhoz, hogy értelmetlenné tegye ezeket a támadásokat.

Handshake protokoll támadás

A támadó megpróbálhatja úgy befolyásolni a kézfogáscserét, hogy a felek eltérő titkosítási algoritmusokat válasszanak, és ne az általuk általában választottakat. Mivel sok implementáció támogatja az exportált titkosítást, és néhányan még a 0-titkosítást vagy a MAC-t is, ezek a támadások nagy érdeklődésre tartanak számot.

Egy ilyen támadáshoz a támadónak gyorsan meg kell hamisítania egy vagy több kézfogási üzenetet. Ha ez megtörténik, a kliens és a szerver különböző hash-értékeket számít ki a kézfogási üzenethez. Ennek eredményeként a felek nem fogadják el egymástól a „ kész ” üzeneteket . A titok ismerete nélkül a támadó nem tudja kijavítani a kész üzenetet , így a támadás észlelhető.

SSL kapcsolatok feltörése az adatközponton belül

Az SSL-protokollokkal védett információk tömeges feltörésének leghírhedtebb incidensét az FBI-ügynökök hajtották végre Carnivore és NarusInsight rendszerekkel, ami az Electronic Frontier Foundation emberi jogi szervezet nevében indított perhez vezetett az AT&T ellen, amely ezeket a komplexumokat kriptográfiai feltörés céljából telepítette. védett információ.

Az eset miatt az Egyesült Államokban felháborodott nagy közfelháborodás és a Képviselőház Alkotmányos Bizottsága szintjén folyó vizsgálat ellenére nem történt az SSL-protokoll technológiai feltörése az FBI ügynökei által . Magába az adatközpontba telepítették a Carnivore-t és a NarusInsight-ot , ahol a távoli kliensekkel SSL-kapcsolatokat folytató szerverek voltak. A NarusInsight teljesen visszanyerte a titkosított információkat úgy, hogy nem az SSL-kapcsolatra figyelt, hanem magán az adatközponton belüli alkalmazásszerverek közötti belső forgalomra, miután az SSL-en keresztül kapott adatokat maga a szerver dekódolta, és megkapta azokat külső felhasználóktól.

Ez az incidens azonban megmutatta, hogy az SSL nem lehet megbízható eszköz az interneten található szerveradatok kriptográfiai védelmére, mivel a speciális szolgáltatások olyan lehallgató rendszereket telepíthetnek az adatközpontba, mint a NarusInsight vagy a SORM-2 [28] . Bármilyen típusú kriptográfiát, amely azt jelenti, hogy a rejtjelkulcsok az adatközpontban lévő fogadó szerveren vannak, automatikusan feltörnek a titkosszolgálati szippantásokkal úgy, hogy azokat magába a címzettbe fecskendezik be. Továbbá az adatok teljes rekonstrukciója a jelenleg szabályozott eljárásoknak és jogalkotási aktusoknak, például a „ Patriot Act ”-nek megfelelően. Ezen túlmenően ezek a jogalkotási aktusok az adatközpont-tulajdonosok vádemeléséig megtiltják a titkosszolgálati szippantók eltávolítását a fogadó szerverek belső részéből. Ha ezekkel a rendszerekkel működik, az SSL csak két felhasználó közötti kapcsolatot tud biztosítani az interneten, nem pedig egy külső webhelyhez fűződő SSL-kapcsolatot.

BEAST attack

2011. szeptember 23-án Duong és Giuliano Rizzo thaiföldi kutatók egy Java kisalkalmazás segítségével bemutatták a Beast ("Browser Exploit Against SSL/TLS") elnevezésű "elképzelés bizonyítékát", amely a TLS 1.0 sebezhetőségére utal [29] [30] . Korábban ezt a sebezhetőséget, amelyet eredetileg Phillip Rogaway [31] fedezett fel 2002-ben, gyakorlatilag senki sem tudta kimutatni. A TLS 1.1 biztonsági rést 2006-ban jelentették.
A támadás több feltételezésen alapul, de mint kiderült, ezek megvalósíthatóak. Először is, a kriptoanalitikusnak képesnek kell lennie a böngésző által továbbított forgalom lehallgatására . Másodszor, valahogyan rá kell kényszeríteni a felhasználót, hogy ugyanazon a biztonságos kommunikációs csatornán keresztül továbbítsa az adatokat . Létesítsünk biztonságos kapcsolatot Bob ( B ) és Alice ( A ) számítógépei között. Tegyük fel, hogy a hozzánk érkezett üzenet i-edik blokkja titkos információkat (például jelszót) tartalmaz.

C i = E ( Kulcs , M i x vagy C i-1 ), ahol C i a titkosított blokk, M i  a titkos szöveg

Tegyük fel, hogy az  A jelszó P . Ellenőrizhetjük, hogy a feltételezésünk helyes-e:

Így sikerült elfogni az inicializálási vektort, ami a következő üzenet első blokkjának titkosítására szolgál, de ez egyben az előző üzenet utolsó blokkja is (titkosított formában) - IV . Elfogtuk a C i-1- et is . Ezen adatok felhasználásával üzenetet alkotunk, így az első blokk egyenlő lesz a következővel:

M 1 = C i-1 xor IV xor P

Ha a kriptoanalitikus ugyanazon a biztonságos csatornán tudja továbbítani az üzenetet, akkor az új üzenet első blokkja így fog kinézni:

C 1 = E ( Kulcs , M 1 xor IV ) = E ( Kulcs , ( C i-1 xor IV xor P ) xor P ) xor IV ) = E ( Kulcs , ( C i-1 xor P )) = C i

Kiderül, hogy ha P = M , akkor az új C 1 üzenet első titkosított blokkja egyenlő lesz a korábban elfogott C i -vel .

A gyakorlatban egy probléma adódik: az M blokk  16 bájt hosszú, még ha két bájt kivételével az összeset ismerjük, a többi kitalálásához 2 15 próbálkozásra van szükség. Mi van, ha nem tudunk semmit?
Ebből az a következtetés vonható le, hogy ez a gyakorlat akkor működhet, ha a kriptoanalitikusnak korlátozott számú feltételezése van M értékéről , vagy inkább ennek a blokknak a tartalmáról. A következő feltételezés az, hogy a kriptoanalitikus szabályozhatja az adatok helyét a blokkban, például tudva, hogy a jelszó n karakter hosszú. Ennek ismeretében a kriptoanalitikus úgy rendezi el a jelszót, hogy az első blokkba csak 1 karakter kerüljön, a következőbe pedig a maradék (n-1) - vagyis az első 15 bájt ismert adatot tartalmaz. És 1 karakter kitalálásához egy támadónak legrosszabb esetben 256 kísérletre van szüksége.

A sebezhetőséget jóval korábban ismerték, de a segédprogram fejlesztői az elsők, akiknek sikerült minden feltételt megvalósítaniuk ehhez a támadáshoz. Ugyanis:

  1. A kriptoanalizátor képes meghallgatni a megtámadott számítógép böngészője által kezdeményezett hálózati kapcsolatokat
  2. A kriptoanalitikusnak lehetősége van ügynököt juttatni az áldozat böngészőjébe
  3. Az ügynöknek lehetősége van tetszőleges HTTPS-kérések küldésére

Itt található azoknak a különféle technológiáknak és böngészőbővítményeknek a listája, amelyek ügynökinjektálást hajthatnak végre az áldozat böngészőjében: Javascript XMLHttpRequest API, HTML5 WebSocket API, Flash URLRequest API, Java Applet URLConnection API és Silverlight WebClient API.

RC4 attack

2013-ban Szingapúrban konferenciát tartottak, ahol Dan Bernstein professzor bemutatta az SSL/TLS protokollok feltörésére szolgáló új technikát az RC4 titkosítással, amelyet 2011-ben javasoltak a BEAST elleni védekezésként. Az RC4-ben talált sebezhetőség az üzenetet kódoló bitfolyam véletlenszerűségének hiányával kapcsolatos. Miután ugyanazt az üzenetet sokszor átvezettük rajta, elegendő számú ismétlődő minta került elő az eredeti szöveg visszaállításához. Egy támadáshoz hatalmas mennyiségű adatot kell átvinni a titkosításon. A bemutatott megvalósításban a hackelés akár 32 órát is igénybe vett, de nem volt kizárva a folyamat optimalizálásának lehetősége sem. De ezt a támadást nehéz megvalósítani a gyakorlatban. Az alkotók azt állítják, hogy 256 rejtjelezett szövegre van szükség a 256 -ból 80 bájt helyreállításához .

Rejtjelek feltárása

Mint tudják, az SSL különféle kriptográfiai paraméterektől függ. RSA nyilvános kulcsú titkosítás szükséges a kulcsátvitelhez és a szerver/kliens hitelesítéshez. Rejtjelként azonban különféle kriptográfiai algoritmusokat használnak. Így, ha sikeres támadást hajtanak végre ezen algoritmusok ellen, akkor az SSL többé nem tekinthető biztonságosnak. Bizonyos kommunikációs munkamenetek elleni támadás a munkamenet rögzítésével történik, majd idővel kiválasztják a munkamenet-kulcsot vagy az RSA-kulcsot.

Man-in-the-middle támadás

Más néven MitM (Man-in-the-Middle) támadás. Ez három fél részvételével jár: a szerver, az ügyfél és a támadó között. Ebben a helyzetben a támadó elfoghat minden üzenetet, amely mindkét irányban következik, és lecserélheti azokat. Úgy tűnik, hogy a támadó a kiszolgáló az ügyfél számára, az ügyfél pedig a szerver számára. Diffie-Hellman kulcscsere esetén ez a támadás hatékony, mivel a kapott információ sértetlensége és forrása nem ellenőrizhető. Ilyen támadás azonban nem lehetséges az SSL protokoll használatával [32] , mivel a hitelesítő hatóság [33] által hitelesített tanúsítványok segítségével hitelesítik a forrást (általában a szervert) .

A támadás akkor lesz sikeres, ha:

  • A szervernek nincs aláírt tanúsítványa.
  • Az ügyfél nem ellenőrzi a kiszolgáló tanúsítványát.
  • A felhasználó figyelmen kívül hagyja azt az üzenetet, hogy a tanúsítványt nem írta alá a CA, vagy azt az üzenetet, hogy a tanúsítvány nem egyezik a gyorsítótárban lévővel [34] .

Ez a fajta támadás a Microsoft Forefront TMG tűzfalat vagy a Blue Coat Proxy SG proxyszervert használó nagy szervezeteknél fordul elő . Ebben az esetben a „behatoló” a szervezet hálózatának szélén helyezkedik el, és lecseréli az eredeti tanúsítványt a sajátjára. Ez a támadás annak köszönhető, hogy magát a proxykiszolgálót megbízható hitelesítési hatóságként (vagy gyökérként, vagy a vállalati gyökér utódjaként) lehet megadni. Általában egy ilyen megvalósítási eljárás átlátható a felhasználó számára a vállalati felhasználók Active Directory környezetben végzett munkája miatt. Ez az eszköz használható mind a továbbított információk ellenőrzésére, mind a biztonságos HTTPS-kapcsolaton keresztül továbbított személyes adatok ellopására.

A legvitatottabb kérdés az, hogy a felhasználó tisztában van-e az adatelfogás lehetőségével, hiszen gyökértanúsítvány-csere esetén nem jelennek meg biztonsági üzenetek, és a felhasználó elvárja a továbbított adatok bizalmas kezelését.

Ezen túlmenően, ha a Forefront TMG-t SSL-proxyként használja, lehetőség van egy második MitM-támadásra az internetes oldalon, mivel az eredeti tanúsítvány nem kerül át a felhasználóhoz, és a Forefront TMG beállítható úgy, hogy elfogadja, majd lecserélje önmagát. -aláírt vagy visszavont tanúsítványok. Az ilyen támadások elleni védelem érdekében teljesen meg kell tiltani az olyan webszerverekkel való munkát, amelyek tanúsítványai hibákat tartalmaznak, ami minden bizonnyal ahhoz vezet, hogy sok webhelyen nem lehet HTTPS protokollal dolgozni.

A Blue Coat Proxy SG védett a második MitM támadás ellen: a rendszer lehetővé teszi a házirend konfigurálását úgy, hogy egy nem megbízható webszerver-tanúsítvány esetén a rendszer egy olyan tanúsítványt is adjon ki, amelyet nem egy megbízható lánc, hanem egy ideiglenes ön ír alá. - írt alá egyet.

THC-SSL-DOS

2011. október 24-én a The Hacker's Choice (THC) kiadta a THC-SSL-DOS segédprogramot, amellyel DoS támadásokat lehet végrehajtani SSL szervereken. Ez a segédprogram az SSL újratárgyalási funkciójában található biztonsági rést használja ki, amelyet eredetileg az SSL biztonságosabbá tételére terveztek. Az újraérvényesítés lehetővé teszi a szerver számára, hogy új privát kulcsot hozzon létre egy meglévő SSL-kapcsolaton keresztül. Ez a funkció alapértelmezés szerint engedélyezve van a legtöbb szerveren. A biztonságos kapcsolat létrehozása, valamint az SSL újraellenőrzés végrehajtása többszörösen több erőforrást igényel a szerver oldalon, mint a kliens oldalon, vagyis ha a kliens sok SSL újraérvényesítési kérelmet küld, az lemeríti a szerver rendszer erőforrásait.

A THC egyik résztvevője szerint a sikeres támadáshoz olyan laptopra van szükség, amelyre telepítve van a segédprogram, és internet-hozzáférésre van szükség. A program nyilvánosságra került, mert pár hónapja megjelent a hálózaton. A fejlesztők szerint támadás akkor is végrehajtható, ha a szerver nem támogatja az újraérvényesítési funkciót, bár ehhez módosítani kell a támadási módot. Ebben az esetben sok TCP-kapcsolat jön létre az új SSL-kézfogáshoz, de több botra van szükség a hatékony támadáshoz.
Védekezésképpen egyes szoftverfejlesztők speciális szabályok felállítását javasolják egy olyan ügyféllel való kapcsolat megszakításához, amely másodpercenként többször hajt végre újraérvényesítési műveletet.

SSLstrip

2009-ben egy Black Hat konferencián Washington DC-ben Moxie Marlinspike, egy független hacker bemutatott egy új eszközt , az SSLstrip-et, amely fontos információkat tud kinyerni azáltal, hogy elhiteti a felhasználókkal, hogy biztonságos oldalon vannak, miközben nem. Ezt úgy érhetjük el, hogy a normál SSL-biztonságú oldalakat nem biztonságos megfelelőikké alakítjuk, megtévesztve a szervert és a klienst is. A segédprogram azért működik, mert sok SSL-védelmet használó webhely nem biztonságos kezdőlappal rendelkezik. Csak azokat a részeket titkosítják, ahol fontos információkat továbbítanak. És amikor a felhasználó az engedélyezési oldalra kattint, a segédprogram lecseréli a webhely válaszát a https http-re cserélésével. Az SSLstrip a következő technikákat használja: egyrészt egy proxyszervert telepítenek a helyi hálózatra, amely érvényes tanúsítvánnyal rendelkezik - innentől a felhasználó továbbra is https-t lát a címsorban, másodszor egy technikát használnak hosszú URL -ek létrehozására , amelyek hamis '/ ' a címsorban – ez azért szükséges, hogy elkerüljük a böngészők karakterkonverzióját. A rendszer működésének bizonyítására Moxxi SSLstrip-et futtatott a Tor hálózatot kiszolgáló szerveren , és 24 óra alatt 254 jelszót halászott ki a Yahoo , a Gmail , a Ticketmaster, a PayPal és a LinkedIn felhasználóitól .

Hibakezelés az SSL-protokollban

Az SSL protokollban a hibakezelés nagyon egyszerű. Ha hibát észlel, az, aki felfedezte, üzenetet küld a partnerének. A végzetes hibák megkövetelik, hogy a szerver és a kliens bezárja a kapcsolatot [35] . Az SSL protokoll a következő hibákat határozza meg:

  1. Unsupported_Certificate_Type_Error : Ez a hiba akkor fordul elő, ha az ügyfél/szerver nem támogatott tanúsítványtípust kap. A hiba helyreállítható (csak kliens hitelesítés).
  2. No_Cipher_Error : Hiba akkor fordul elő, ha a szerver nem talál olyan kulcsméretet vagy titkosítást, amelyet az ügyfél is támogat. A hiba helyrehozhatatlan.
  3. Bad_Certificate_Error : Ez a hiba akkor fordul elő, ha a fogadó fél rossznak ítéli a tanúsítványt. Ez azt jelenti, hogy vagy a tanúsítvány aláírása hibás, vagy az értéke hibás. A hiba helyreállítható (csak kliens hitelesítés).
  4. No_Certificate_Error : Ha a rendszer egy Request_Certificate üzenetet küld, akkor előfordulhat, hogy ezt a hibát azért küldi el, mert az ügyfél nem rendelkezik tanúsítvánnyal. Javítjuk a hibát.

SSL-ben használt algoritmusok

Lásd még

Jegyzetek

  1. US-CERT. TA14-290A: SSL 3.0 Protocol Vulnerability and POODLE Attack  (angol) (2014. október). Az eredetiből archiválva: 2014. november 6.
  2. AZ SSL  PROTOKOLL . Netscape Corporation. Letöltve: 2013. május 20. Az eredetiből archiválva : 1997. június 14.
  3. Dierks, T. és E. Rescorla. A Transport Layer Security (TLS) protokoll 1.1 -es verziója , RFC 4346  . Hozzáférés dátuma: 2013. május 9. Az eredetiből archiválva : 2012. február 9..
  4. Az SSL/TLS titkosítás áttekintése Microsoft TechNet . Frissítve 2003. július 31-én.
  5. SSL/TLS részletesen Microsoft TechNet . Frissítve 2003. július 31-én.
  6. SSL Pulse (lefelé irányuló kapcsolat) . Letöltve: 2017. április 27. Az eredetiből archiválva : 2017. május 15. 
  7. ↑ 1 2 SSL/TLS áttekintése  (angol)  (lefelé irányuló kapcsolat) (2008. augusztus 6.). Letöltve: 2013. május 9. Az eredetiből archiválva : 2013. július 3.
  8. 90392. probléma: Nincs TLS 1.2 (SHA-2) támogatás  ( 2013. június 27.). Letöltve: 2015. július 15. Az eredetiből archiválva : 2013. augusztus 3..
  9. Biztonság a Firefox 2-ben  (angol)  (lefelé hivatkozás) (2008. augusztus 6.). Letöltve: 2013. május 9. Az eredetiből archiválva : 2012. július 23.
  10. 733647. hiba – A TLS 1.1 (RFC 4346) implementálása a Gecko (Firefox, Thunderbird) alkalmazásban, alapértelmezés szerint  ( 2012. március 6.). Letöltve: 2013. május 9. Az eredetiből archiválva : 2013. május 30.
  11. 480514-es hiba – A TLS 1.2 (RFC 5246) támogatásának megvalósítása  ( 2010. március 17.). Letöltve: 2013. május 9. Az eredetiből archiválva : 2013. május 31..
  12. "Changelog for Opera 5.x for Windows" archiválva 2014. október 19-én a Wayback Machine -en az Opera.com webhelyen
  13. "Changelog for Opera [8] Beta 2 for Windows" archiválva 2005. november 23-án a Wayback Machine -en az Opera.com oldalon
  14. Microsoft. Secure Channel  (angol) (2012. szeptember 5.). Letöltve: 2013. május 9. Az eredetiből archiválva : 2013. április 17..
  15. Microsoft. MS-TLSP A. függelék  (angol) (2009. február 27.). Letöltve: 2013. május 9. Az eredetiből archiválva : 2013. április 17..
  16. Yngve Nysæter Pettersen. Újdonság az Opera Presto 2.2-ben: TLS 1.2 támogatás  ( 2009. február 25.). Letöltve: 2013. május 9. Az eredetiből archiválva : 2013. április 17..
  17. "Changelog for Opera 9.0 for Windows" archiválva 2006. augusztus 31-én a Wayback Machine -en az Opera.com oldalon
  18. Adrian, Dimcev. Általános böngészők/könyvtárak/szerverek és a kapcsolódó rejtjelkészletek  implementálva . TLS Cipher Suites Project . Letöltve: 2013. május 9. Az eredetiből archiválva : 2013. április 17..
  19. Apple. Jellemzők  (angol) (2009. június 10.). Letöltve: 2013. május 9. Az eredetiből archiválva : 2013. április 17..
  20. Apple. Műszaki megjegyzés TN2287 – iOS 5 és TLS 1.2 együttműködési problémák  ( 2011. október 14.). Letöltve: 2013. május 9. Az eredetiből archiválva : 2010. szeptember 8..
  21. Liebowitz, Matt. Az Apple hatalmas szoftverbiztonsági javításokat ad ki  . NBCNews.com (2011. október 13.). Letöltve: 2013. május 9. Az eredetiből archiválva : 2013. április 17..
  22. MWR Info Security. Kalandok iOS UIWebviews segítségével  ( 2012. április 16.). Letöltve: 2013. május 9. Az eredetiből archiválva : 2013. április 17.. , "HTTPS (SSL/TLS)" szakasz
  23. Joris Claessens, Valentin Dem, Danny De Cock, Bart Preneel, Joos Vandewalle. A mai online elektronikus banki rendszerek biztonságáról  (Eng.) 253–265 (2002). Letöltve: 2013. május 11. Az eredetiből archiválva : 2015. október 17..
  24. Lawrence Eric. IEBlog : Az Internet Explorer 7 Beta 2 közelgő HTTPS-fejlesztései  . MSDN blogok (2007. november 25.). Letöltve: 2013. május 11. Az eredetiből archiválva : 2013. április 17..
  25. Mozilla Corporation . Bugzilla@Mozilla - 236933 -as hiba - Az SSL2 és más gyenge titkosítások letiltása  . Letöltve: 2013. május 11. Az eredetiből archiválva : 2017. február 14.
  26. "Opera 9.5 for Windows Changelog" Archivált 2009. június 26-án a Wayback Machine -nél az Opera.com webhelyen : "Letiltott SSL v2 és gyenge titkosítások."
  27. Nemzeti Szabványügyi és Technológiai Intézet. Végrehajtási útmutató a FIPS PUB 140-2 és a kriptográfiai modul érvényesítési programjához  ( 2010. december). Letöltve: 2013. május 11. Az eredetiből archiválva : 2013. április 17..
  28. Igor Savchuk. SORM, bébi. 1. rész. A modern titkosítási eszközök lehetőségei  // „BIT. Business&Information Technologies»  : Folyóirat. - M . : LLC "Kiadó" Polozhevets and Partners ", 2014. - Kiadás. 1 , 34. sz . — ISSN 2313-8718 . Archiválva : 2020. október 28.
  29. Dan Goodin. A hackerek feltörik a több millió webhely által használt SSL-titkosítást  (angolul) (2011. szeptember 19.). Letöltve: 2013. május 11. Az eredetiből archiválva : 2013. április 17..
  30. Y Combinator megjegyzései a kérdéshez  ( 2011. szeptember 20.). Letöltve: 2013. május 11. Az eredetiből archiválva : 2013. április 17..
  31. A CBC titkosítócsomagok biztonsága SSL/TLS-ben: Problémák és ellenintézkedések  ( 2004. május 20.). Letöltve: 2013. május 11. Az eredetiből archiválva : 2012. június 30.
  32. Eric Rescorla. A TLS újratárgyalási  támadás megértése . Képzett találgatás (2009. november 5.). Letöltve: 2013. május 11. Az eredetiből archiválva : 2013. április 28..
  33. Simon Josephson. Megjelent a GnuTLS 2.10.0  . A GnuTLS kiadási megjegyzései (2010. június 25.). Letöltve: 2013. május 11. Az eredetiből archiválva : 2013. április 28..
  34. Adrian Dimcev. Véletlenszerű SSL/TLS 101 – SSL/TLS-verziók visszaállítása és  böngészők . Véletlenszerű SSL/TLS 101 . Letöltve: 2013. május 11. Az eredetiből archiválva : 2013. április 28..
  35. Kaspar Brand. Névalapú SSL virtuális gazdagépek: a probléma megoldása  ( 2007. április 18.). Letöltve: 2013. május 20. Az eredetiből archiválva : 2012. augusztus 3..
  36. Christopher Allen, Tim Dierks. SSL Protokoll – Fordítás – 1.0-s verzió . Certicom . Semenov Yu. A. Letöltve: 2013. május 20. Az eredetiből archiválva : 2012. július 11..
  37. Wagner Dávid. Az SSL 3.0 protokoll  elemzése . Kaliforniai Egyetem. Letöltve: 2013. május 24. Az eredetiből archiválva : 2014. október 31..

Irodalom

Könyvek
  • Pouyan Sepehrdad. Új torzítások felfedezése és kiaknázása az RC4-ben. — 1-st. - Springer Berlin Heidelberg, 2011. - T. 1. - S. 24. - 91 p. - ISBN 978-3-642-19573-0 .
  • Joris Classens. Számítógépes biztonság és ipari kriptográfia. — 3-t. - Leuven-Heverlee, Belgium, 2002. - T. 1. - S. 253-265. — 287 p. — ISBN 0167-4048.
  • John Viega. Hálózatbiztonság OpenSSL-lel. — 1-st. - O'Reilly Media, USA, 2002. június 15. - 1. kötet - 386 oldal p. - ISBN 978-0596002701 .
  • Eric Rescorla. SSL és TLS: Biztonságos rendszerek tervezése és építése. — 1-st. - Addison-Wesley Professional, 2000. október 27. - 1. kötet - 528 oldal p. — ISBN 978-0201615982 .
  • István Tamás. SSL és TLS alapok: A web biztonsága. — 1-st. - Wiley, 2000. február 11. - T. 1. - 224 oldal p. — ISBN 978-0471383543 .
Cikkek
  • SSL/TLS protokollok leírása // 3. - CRYPTO-PRO LLC., 2002. - 49. o.
  • Semenov Yu.A. SSL protokoll. Biztonságos csatlakozó szint. - 2000. - 1. sz .
  • E. Rescorla. A Transport Layer Security (TLS) protokoll 1.2-es verziója // 1-st. - RTFM, Inc., 2008. augusztus - 1. sz . – 101. o.
  • P. Karlton. A Secure Sockets Layer (SSL) protokoll 3.0 verziója // 1-st. - RTFM, Inc., 2011. augusztus - 1. sz . — 67. o.
  • T. Dierks. A Secure Sockets Layer (SSL) // 1-st. - RTFM, Inc., 2008. augusztus - 1. sz . — 207. o.

Linkek