Az SSL bemutatása
Az SSL (Secure Socket Layer; Biztonsági Alréteg) egy protokoll réteg, amely a hálózati (Network layer) és az alkalmazási rétegek (Application layer) között van. Mint neve is sugallja, az SSL mindenféle forgalom titkosítására használható - LDAP, POP, IMAP és legfõképp HTTP.
Íme egy végletekig leegyszerûsített ábra az SSL-el kapcsolatban álló rétegekrõl.
+-------------------------------------------+ | LDAP | HTTP | POP | IMAP | +-------------------------------------------+ | SSL | +-------------------------------------------+ | Hálózati réteg (Network Layer) | +-------------------------------------------+ |
Az SSL-ben használt titkosító algoritmusok
Háromféle titkosítási technológiát használnak az SSL-ben: "nyilvános-titkos kulcs" (Public-Private Key), "szimmetrikus kulcs" (Symmetric Key), és "digitális aláírás" (Digital Signature).
"Nyilvános-titkos kulcs" titkosítás - SSL kapcsolat indítása: Ebben az algoritmusban a titkosítás és a visszafejtés nyilvános-titkos kulcspárral történik. A webszerveré a titkos kulcs, a nyilvános kulcsot pedig a tanúsítványban küldi el a kliensnek.
-
A kliens kéri a HTTPS-t használó Web szervertõl a tartalmat.
-
A web szerver válaszol egy Digitális Tanúsítvánnyal (Digital Certificate), amiben benne van a szerver nyilvános kulcsa.
-
A kliens ellenõrzi, hogy lejárt-e a tanúsítvány.
-
Ezután a kliens ellenõrzi, hogy a tanúsítvány hatóság (Certificate Authority; továbbiakban CA), amely aláírta a tanúsítványt, megbízott hatóság-e a böngészõ listáján. Ez a magyarázata annak, miért van szükségünk egy megbízott CA-tól kapott tanúsítványra.
-
A kliens ellenõrzi, hogy a webszerver teljes domain neve (Fully Qualified Domain Name) megegyezik-e a tanúsítványon lévõ közönséges névvel (Common Name).
-
Ha minden megfelelõ, létrejön az SSL kapcsolat.
Megjegyzés: |
---|
Bármi, amit titkos kulccsal titkosítottak, kizárólag a nyilvános kulccsal fejthetõ vissza. Ennek megfelelõen, bármilyen nyilvános kulccsal titkosított dolog, kizárólag a titkos kulccsal fejthetõ vissza. Elterjedt az a tévhit, miszerint kizárólag nyilvános kulccsal lehet titkosítani és titkos kulccsal visszafejteni. Ez nem így van. Bármelyik kulcs használható titkosításra és visszafejtésre egyaránt (ha annak párját használják visszafejtésre és titkosításra - dacas). Végül is, ha az egyik kulcsot használták titkosításra, a másikat kell használni a visszafejtésre stb. Egy üzenet nem titkosítható és visszafejthetõ kizárólag a nyilvános kulcs használatával. A titkos kulccsal történõ titkosítás és a nyilvános kulccsal történõ visszafejtés biztosíték a címzetteknek arról, hogy a küldeményt a küldõ (a titkos kulcs tulajdonosa) adta fel (mivel a titkos kulcs használatához szükséges jelmondatot csak Õ ismeri - dacas). A nyilvános kulccsal történõ titkosítás és titkos kulccsal visszafejtés biztosítja azt, hogy a küldeményt csak a meghatározott címzett (a titkos kulcs tulajdonosa) képes visszafejteni. |
Szimmetrikus titkosítás - az adatok tulajdonképpeni átvitele: Miután az SSL kapcsolat létrejött, szimmetrikus titkosítást használ az adatok titkosítására, kevesebb CPU ciklust felhasználva (tehát kevésbé erõforrásigényes - a lektor). Szimmetrikus titkosításkor az adat ugyanazzal a kulccsal titkosítható és visszafejthetõ. A szimmetrikus titkosítás kulcsa a kapcsolat indításakor kerül átadásra, a nyilvános-titkos kulcspárral történõ titkosítás alatt.
Üzenet ellenõrzés A szerver kivonatot készít az üzenetrõl valamilyen algoritmus szerint, mint például HMAC, SHA, MD5, majd ezek alapján ellenõrzi az adatok sértetlenségét.
A hitelesség és sértetlenség ellenõrzése
Titkosítási folyamat
Feladó Címzett titkos kulcsa nyilvános kulcsa ,-. ,-. ( ).......... ( ).......... `-' ''''|'|'|| `-' ''''''''|| | | | | | | .-----------. | | .-----------. | .-----------. | | V | |Titkosított| V |Titkosított| |Sima szöveg|-------->| szöveg |-------->| szöveg | | |1. lépés | 1 |2. lépés | 2 |\ `-----------' | `-----------' `----------' \ __ | | \ [_' | | 5. lépés\ | |3. lépés | __ --|-- | | _.--' | V | _..-'' / \ .----------. | _..-'' Címzett | SHA 1 | V .---------._..-'' | Üzenet |-------->|Digitális| | kivonat | 4. lépés| aláírás | _ `----------' `---------' _ (_) _____ ____ ____ ____ _ _ ____ _| |_ _ ___ ____ | ___ | _ \ / ___)/ ___) | | | _ (_ _) |/ _ \| _ \ | ____| | | ( (___| | | |_| | |_| || |_| | |_| | | | | |_____)_| |_|\____)_| \__ | __/ \__)_|\___/|_| |_| (____/|_| |
-
1. lépés: az eredeti "sima szöveg" titkosítása a feladó titkos kulcsának használatával, ennek eredménye a "titkosított szöveg 1". Ez biztosítja a feladó hitelességét.
-
2. lépés: a "titkosított szöveg 1" titkosítása a címzett nyilvános kulcsával, ennek eredménye a "titkosított szöveg 2". Ez biztosítja a címzett hitelességét (értsd: csak a címzett tudja visszafejteni a szöveget a saját titkos kulcsával).
-
3. lépés: az SHA1 üzenet kivonat (ellenõrzõ összeg - dacas) készítése a "sima szöveg" alapján.
-
4. lépés: SHA1 üzenet kivonat titkosítása a feladó titkos kulcsával, ennek eredménye a "sima szöveg" digitális aláírása. Ezt a digitális aláírást a címzett felhasználhatja az üzenet sértetlenségének és a feladó hitelességének ellenõrzésére.
-
5. lépés: a "digitális aláírás" és a "titkosított szöveg 2" elküldése a címzettnek.
Visszafejtési folyamat
Címzett Feladó titkos kulcsa nyilvános kulcsa ,-. ,-. ( ).......... ( ).......... `-' ''''''''|| `-' '''''''||| | | | | | | .-----------. | .-----------. | | .-----------. .----#1----. |Titkosított| V |Titkosított| V | | | | SHA 1 | | szöveg |------->| szöveg |--------->|Sima szöveg|------->| Üzenet | | 2 |1. lépés| 1 |2. lépés| | |3. lépés| kivonat | `-----------' `-----------' | `-----------' `----------' | || | ||5. lépés | || | || .---------. | .----------. |Digitális| V | SHA 1 | | aláírás |---------------------->| Üzenet | _ `---------' 4. lépés _ | kivonat | | | _ (_) `----#2----' __| |_____ ____ ____ _ _ ____ _| |_ _ ___ ____ / _ | ___ |/ ___)/ ___) | | | _ (_ _) |/ _ \| _ \ ( (_| | ____( (___| | | |_| | |_| || |_| | |_| | | | | \____|_____)\____)_| \__ | __/ \__)_|\___/|_| |_| (____/|_| |
-
1. lépés: a "titkosított szöveg 2" visszafejtése a címzett titkos kulcsának használatával, ennek eredménye a "titkosított szöveg 1".
-
2. lépés: a "titkosított szöveg 1" visszafejtése a feladó nyilvános kulcsának használatával, ennek eredménye a "sima szöveg".
-
3. lépés: SHA1 üzenet kivonat (ellenõrzõ összeg - dacas) elkészítése, az elõzõ 2 lépés eredményeként kapott "sima szöveg" alapján.
-
4. lépés: a "digitális aláírás" visszafejtése a feladó nyilvános kulcsának használatával, ennek eredménye az "SHA1 üzenet kivonat".
-
5. lépés: az "SHA üzenet kivonat #1" és "SHA üzenet kivonat #2" összehasonlítása. Amennyiben a kettõ egyezik, úgy az üzenet nem módosult az átvitel alatt, így az eredeti "sima szöveg" sértetlen.
Tanúsítványok "üzemi" használatra
"Üzemi" használathoz szükségünk lesz egy tanúsítványra valamely Certificate Authority-tól (tanúsítvány hatóság) (ezentúl CA). A CA-k a tanúsítványt áruba bocsátók, akik egy megbízható CA listán vannak a felhasználó böngészõ kliensében. Mint azt az algoritmus titkosítás részben említettem, ha a CA nincs a megbízott hatóságok listáján, a felhasználó figyelmeztetõ üzenetet kap, amikor megpróbál kapcsolódni egy biztosított/biztonságos helyhez.