8.8. Az elektronikus levelek biztonsága

Amikor egy e-levelet egy távoli helyre küldünk, akkor az általában egy tucat közbülső gépen megy keresztül. Mindegyik elolvashatja és tárolhatja a levelet későbbi felhasználás céljából. A gyakorlatban személyiségi jog nem létezik annak ellenére, hogy sokan azt hiszik, hogy igenis létezik. Akárhogy is van, sokan szeretnék azt, hogy képesek legyenek olyan e-levelet küldeni, amelyet csak a szándékolt címzett tud elolvasni, és senki más nem: sem a főnökük, de még a hatóság sem. Ez a vágy sok embert arra ösztönöz, hogy biztonságos e-levél előállítása érdekében használja a korábban megvizsgált titkosító módszereket. A következő szakaszokban a PGP nevű, széles körben használt, biztonságos e-levél rendszert fogjuk tanulmányozni, valamint röviden megemlítünk még egy másik rendszert is, az S/MIME-t. A biztonságos e-levelezésről további információval Kaufman és mások [2002], valamint Schneier [1995] szolgálnak.

8.8.1. PGP – elég jól biztosított személyiségi jog

Első példánk, a PGP (Pretty Good Privacy elég jól biztosított személyiségi jog) tulajdonképpen egyetlen személy, név szerint Phil Zimmermann agyának szüleménye [Zimmermann, 1995a, 1995b]. Zimmermann a személyiségi jogok szószólója. Mottója: „Ha a személyiségi jogok védelmét törvénytelenné teszik, akkor csak a törvényen kívülieknek lesznek személyiségi jogaik”. Az 1991-ben kiadott PGP egy komplett e-levél biztonsági csomag, mely biztosítja a személyiségi jogok védelmét, a hitelességvizsgálatot, a digitális aláírásokat és a tömörítést is egyben, méghozzá mindezt egyszerűen használható módon. Ezenfelül az egész csomag – a forráskódokat is beleértve – szabadon terjeszthető az interneten. A rendszert ma már széles körben használják, köszönhetően a minőségének, az árának (nulla), és annak, hogy UNIX, Linux, Windows és Mac OS platformokon is könnyen elérhető.

A PGP a titkosításhoz az IDEA (International Data Encryption Algorithmnemzetközi adatkódoló algoritmus) nevű blokk-kódolót használja, ami 128 bites kulcsokkal dolgozik. Az algoritmust Svájcban fejlesztették ki abban az időben, amikor a DES-re már rossz szemmel néztek, de az AES-et még nem dolgozták ki. Az IDEA az elgondolását tekintve hasonlít a DES-hez és az AES-hez: több, egymást követő körben keveri össze a biteket; a keverőfüggvények részletei viszont különböznek a DES-nél és az AES-nél használtaktól. A kulcskezelés RSA-t, a sértetlenségvédelem pedig MD5-öt használ – ezeket a témákat már korábban tárgyaltuk.

A PGP már a meglétének első napja óta a viták középpontjában áll [Levy, 1993]. Zimmermann-nak eszébe sem jutott megakadályozni az embereket abban, hogy felrakják a PGP-t az internetre, ahonnan világszerte bárki elérheti azt, ezért az amerikai kormány kijelentette, hogy Zimmermann megsértette a hadianyagok kiviteléről szóló törvényt. A kormány 5 éven át folytatta Zimmermann ellen a vizsgálatot, amivel végül is felhagyott, feltehetően két okból. Először is, Zimmermann nem saját maga rakta fel a PGP-t az internetre, ezért az ügyvédje azt állította, hogy ő nem vitt ki semmit (és ezek után nincs nagy jelentősége annak a kérdésnek, hogy vajon egy weboldal megalkotása kivitelnek minősül-e egyáltalán). Másodszor, a kormány végül eljutott addig a felismerésig, hogy a per megnyeréséhez arról kellene meggyőznie az esküdtszéket, hogy egy letölthető, személyiségijog-védő programot tartalmazó weboldal azon fegyverkereskedelmi törvény hatálya alá esik, mely a tankok, tengeralattjárók, katonai repülőgépek, nukleáris fegyverek és ehhez hasonló hadianyagok kivitelét tiltja. A kormány dolgát a sajtó évekig tartó negatív propagandája sem könnyítette meg.

Kis kitérőként megjegyezzük, hogy a kiviteli szabályok valóban finoman szólva is bizarrak. A kormány illegális kivitelnek tartotta azt, hogy Zimmermann felrakott egy kódot a weboldalára, és ezért öt éven át zaklatta őt. Másfelől viszont, ha valaki a C nyelven íródott teljes PGP-forráskódot kiadná könyv formájában (jó nagy betűkkel szedve, és minden oldalon egy ellenőrző összeggel, hogy könnyen be lehessen olvasni lapolvasóval), majd exportálná a könyvet, akkor az ellen semmi kifogása se lenne a kormánynak, mert a könyvek nem számítanak hadianyagnak. A kard erősebb, mint a toll, legalábbis Uncle Sam számára.

A PGP mindemellett a szabadalmak megsértésének problémájába is belekeveredett. Az RSA Security Inc., az RSA szabadalmának birtokosa azt állította, hogy a PGP a szabadalmat sértő módon használja az RSA-t, de ez a vita a 2.6-os változat megjelenésével elült. A PGP ráadásul az IDEA révén egy másik szabadalmaztatott titkosító algoritmust is használ, először ez okozott gondokat.

Mivel a PGP forráskódja nyílt, különböző magánszemélyek és csoportosulások is módosították már, így számos új verzió jött létre. Ezek közül egyesek a hadianyagtörvény megkerülését szolgálták, mások a szabadalmaztatott algoritmusok használatának elkerülését célozták meg, és megint mások zárt forráskódú, kereskedelmi terméket akartak csinálni a PGP-ből. A hadianyagtörvényt ugyan mára már egy kicsit liberalizálták (különben az AES-et használó termékeket nem lehetett volna kivinni az USA-ból), és az RSA szabadalma is lejárt 2000 szeptemberében, ezen problémák mégis azt hagyták örökségül, hogy ma különböző nevek alatt számos inkompatibilis PGP-verzió van forgalomban. Az alábbi tárgyalás a klasszikus PGP-re szorítkozik, mely a legrégebbi és legegyszerűbb változat. Az RFC 2440 egy másik népszerű változatot, az Open PGP-t írja le. Egy további változat a GNU Privacy Guard.

A PGP szándékosan használ meglevő kriptográfiai algoritmusokat ahelyett, hogy újakat találna ki. Főleg olyan algoritmusokra alapoz, amelyek a legalaposabb próbákat is kiállták már, és tervezésüket nem irányította vagy befolyásolta egyetlen kormányhivatal sem, hogy megpróbálja gyengíteni őket. Ez nagy előnyt jelent azok szemében, akik hajlamosak bizalmatlanul tekinteni a kormányra.

A PGP támogatja a szövegtömörítést, a titkosítást és a digitális aláírásokat, valamint átfogó kulcskezelési szolgáltatásokat is nyújt, de furcsa módon e-levél szolgáltatásokat nem. Inkább egyfajta előfeldolgozónak tekinthető, mely a nyílt szöveget veszi bemenetnek, és base64-alapú kódolt szöveget állít elő kimenetként. Ezt a kimenetet aztán természetesen már el lehet küldeni e-levélben. Egyes PGP-megvalósítások utolsó lépésként meg is hívják a felhasználói ügynököt, hogy ténylegesen elküldjék az üzenetet.

A PGP működését a 8.44. ábra segítségével tanulmányozhatjuk. Itt Aliz biztonságosan szeretne elküldeni Bobnak egy aláírt, szöveges üzenetet, P-t. Aliznak és Bobnak is van egyéni és nyilvános RSA-kulcsa . Tegyük fel, hogy mindketten ismerik egymás nyilvános kulcsát! A kulcsok kezelésének módjára később térünk ki.

8.44. ábra - Üzenetküldés PGP-vel

kepek/08-44.png


Aliz azzal kezdi, hogy meghívja a számítógépén levő PGP programot. A PGP először legyártja a P hash-értékét az MD5 segítségével, majd kódolja az eredményt Aliz titkos RSA-kulcsával, -val. Mikor Bob megkapja az üzenetet, visszakódolhatja a hash-értéket Aliz nyilvános kulcsával, és ellenőrizheti, hogy az megfelelő-e. Ha netalán valaki más (például Trudy) ebben a stádiumban meg is tudná szerezni a hash-értéket, és visszakódolná Aliz nyilvános kulcsával, az MD5 ereje akkor is biztosítaná, hogy kivitelezhetetlen legyen egy másik ugyanilyen hash-értékű levél generálása.

Ezután egyetlen üzenetbe, P1-be, egymás után belekerül a kódolt hash-érték és az eredeti üzenet, majd a ZIP-program, amely a Ziv–Lempel-eljárást használja [Ziv és Lempel, 1977], tömöríti ezt. Nevezzük e lépés kimenetét P1.Z-nek.

A PGP ezután egy véletlen karakterlánc begépelését kéri Aliztól. Mind a tartalom, mind a beírás sebességének figyelembevételével elkészül egy 128 bites IDEA-üzenetkulcs, (amit a PGP-irodalom viszonykulcsnak nevez, de ez valójában egy névhiba, hiszen itt nincs szó viszonyról). Ezután megtörténik a P1.Z visszacsatolásos kódolása, -mel és az IDEA-val. Továbbá is titkosításra kerül Bob nyilvános kulcsával, -vel. Ezután ennek a két komponensnek az egymás után fűzése (konkatenálása) és base64 kódolása következik, ahogyan azt a MIME-ről szóló részben láttuk. Az eredmény ezután csak betűket, számokat és a +, / és = szimbólumokat tartalmazza, tehát beletehető egy RFC 822-es formájú üzenet szövegrészébe, és várhatóan módosítás nélkül megérkezik.

Mikor Bob megkapja az üzenetet, visszakódolja a base64 kódot, és visszakódolja az IDEA-kulcsot is titkos RSA-kulcsával. A kulcs segítségével visszakódolja az üzenetet P1.Z alakba. A tömörítés kicsomagolása után Bob elkülöníti a szöveget a kódolt hash-értéktől, majd visszakódolja a hash-értéket Aliz nyilvános kulcsával. Ha a hash-érték megegyezik azzal, amit saját kezűleg számolt ki az MD5-tel, akkor tudja, hogy ez a helyes P üzenet, és tudja, hogy Aliztól jött.

Érdemes megjegyezni, hogy az RSA itt csak két helyen kell: a 128 bites MD5 hash-érték kódolásánál és a 128 bites IDEA-kulcs kódolásánál. Az RSA ugyan lassú, de itt nem nagy mennyiségű adatot, hanem csak 256 bitet kell kódolnia. Továbbá, mind a 256 bit szerfelett véletlen, így Trudy részéről már az is kemény munkát igényel, hogy megállapítsa egy tippelt kulcsról, hogy helyes-e. A kódolás nagy része IDEA-val megy, ami nagyságrendekkel gyorsabb az RSA-nál. A PGP tehát biztonságot, tömörítést és digitális aláírást biztosít, és mindezt sokkal hatékonyabban, mint a 8.19. ábrán látható séma.

A PGP három RSA-kulcshosszúságot támogat. A felhasználótól függ, hogy kiválassza a legmegfelelőbbet. A hosszúságok a következők:

  1. Mindennapi (348 bit): sok pénzzel rendelkezők feltörhetik.

  2. Kereskedelmi (512 bit): a hárombetűs szervezetek esetleg fel tudják törni.

  3. Katonasági (1024 bit): senki a világon nem töri fel.

  4. Földön kívüli (2048 bit): semmilyen más bolygóról érkezett lények sem törhetik fel.

Mivel az RSA csak két rövid számítás erejéig kell, mindenkinek érdemes minden esetben földön kívüli erősségű kulcsokat használnia.

A 8.45. ábra egy klasszikus PGP-üzenet formátumát mutatja. Emellett számos más formátum is használatban van. Az üzenet három részből áll, melyek az IDEA-kulcsot, az aláírást, illetve magát az üzenet törzsét tartalmazzák. A kulcsos rész nem csak egy kulcsot, hanem egy kulcsazonosítót is tartalmaz, mivel a felhasználóknak több nyilvános kulcsuk is lehet.

8.45. ábra - Egy PGP-üzenet

kepek/08-45.png


Az aláírás rész tartalmaz egy fejrészt, amellyel most nem foglalkozunk. A fejrészt egy időbélyeg, a küldő nyilvános kulcsának azonosítója, ami a hash-aláírás visszakódolására használható, némi típusinformáció a használt algoritmusokról (hogy lehetővé tegye az MD6 és az RSA2 használatát, ha feltalálják őket) és a kódolt hash-érték követi.

Az üzenetrész is tartalmaz egy fejrészt, valamint tartalmazza az alapértelmezett fájlnevet, ha a fogadó a fájlt lemezre írja, egy üzenet-létrehozási időbélyeget és végül az üzenetet magát.

A kulcskarbantartásra nagy figyelmet szenteltek a PGP-ben, mivel ez minden biztonsági rendszer Achilles-sarka. Minden felhasználó két helyi adatbázist tart fent: az egyéni kulcskarikát és a nyilvános kulcskarikát. Az egyéni kulcskarika (private key ring) egy vagy több titkos-nyilvános kulcspárt tartalmaz. A több kulcs megengedésének oka az, hogy a felhasználónak lehetősége legyen a titkos kulcsait időnként, vagy ha veszélyeztetve érzi magát, lecserélni anélkül, hogy érvénytelenítené az éppen előkészületben vagy küldés alatt álló leveleit. Minden párhoz tartozik egy azonosító, így a feladó megadhatja a címzettnek, hogy melyik nyilvános kulcsot használta. Az üzenetazonosítók a nyilvános kulcs alsó 64 helyi értéken levő bitekből állnak. A felhasználók felelősek az azonosítókból származó konfliktusok elkerüléséért. A lemezen levő titkos kulcsok egy speciális (tetszőleges hosszúságú) jelszóval vannak titkosítva, hogy védettek legyenek a hátbatámadásoktól.

A nyilvános kulcskarika (public key ring) a felhasználó levelezőpartnereinek nyilvános kulcsait tárolja. Ezek az üzenetekhez tartozó üzenetkulcsok visszakódolásához szükségesek. A nyilvános kulcskarika minden bejegyzése tartalmazza nemcsak a nyilvános kulcsot, hanem a hozzá tartozó 64 bites azonosítót és egy jelzést arra nézve, hogy a felhasználó mennyire bízik meg a kulcsban.

A következő problémáról van itt szó. Tegyük fel, hogy a nyilvános kulcsok egy szabad elérésű adatbázisban vannak nyilvántartva. Egy módja annak, hogy Trudy el tudja olvasni Bob titkos e-leveleit az, hogy betör az adatbázisba, és kicseréli valamire Bob nyilvános kulcsát. Miután Aliz később elhozza Bob állítólagos titkos kulcsát, Trudy véghezvihet egy élőlánctámadást.

Az ilyen támadások megelőzésére, vagy legalábbis a következményeik minimalizálására, Aliznak tudnia kell, hogy mennyire bízhat meg a nyilvános kulcskarikájában levő „Bob kulcsának” nevezett dologban. Ha tudja, hogy Bob személyesen adta azt oda egy lemezen, akkor a megbízhatósági értéket a legmagasabbra állíthatja. A nyilvános kulcsok kezelésének ez a decentralizált, felhasználó által vezérelt megközelítése különbözteti meg a PGP-t a központosított PKI sémáktól.

Az emberek ettől függetlenül időnként mégis egy megbízható kulcsszervertől szerzik be a nyilvános kulcsokat. Az X.509 szabványosítását követően emiatt a PGP is támogatni kezdte az ilyen tanúsítványokat a hagyományos nyilvános kulcskarika eljárás mellett. A PGP összes jelenlegi változata támogatja az X.509-et.

8.8.2. S/MIME

Az IETF vállalkozása az e-levelek biztonságának terén az S/MIME (Secure/MIME biztonságos MIME), melyet a 2632-től 2643-ig számozott RFC-k írnak le. Ez hitelesítést, sértetlenséget, titkosságot és letagadhatatlanságot biztosít, mindezt meglehetősen rugalmas módon, többféle kriptográfiai algoritmus alkalmazásával. A névből adódóan nem meglepő az a tény, hogy az S/MIME jól illeszkedik a MIME-höz, és mindenfajta üzenet védelmét lehetővé teszi. Definiáltak különféle új MIME-fejrészeket, például a digitális aláírások tárolására.

Az S/MIME-nek nincs olyan merev tanúsítvány-hierarchiája, mely egyetlen gyökérből indulna ki, amely korábban az egyik olyan politikai probléma volt, ami az egyik korábbi rendszer, a PEM (Privacy Enhanced Mail) végzete lett. A felhasználóknak ehelyett több bizalmi horgonyuk lehet. Amíg egy tanúsítványt vissza lehet követni valamilyen bizalmi horgonyig, addig a felhasználó bízik benne, így az érvényesnek tekinthető. Az S/MIME az eddig vizsgált szabványos algoritmusokat és protokollokat használja, ezért részletesebben most nem tárgyaljuk. Aki többre kíváncsi, tanulmányozza az RFC-ket.