PKI mindenkinek, ingyenesen és közérthetően: nyilvános kulcsú
titkosítási architektúra megvalósítása a DPG-ben


Simon Géza+, Molnár István+, Marx Dániel*

+Drótposta Kft., *Budapesti Műszaki Egyetem

{simon, molnar @mail.drotposta.hu, marx @acm.org}


Kulcsszavak: DPG, DrótPostaGalamb, kriptográfia, PKI, SSL, S/MIME, CA


Összefoglaló:

A DPG (DrótPostaGalamb) a Drótposta Kft. által 1997. óta működtetett ingyenes email szolgáltatás. A rendszer elemei – a Windows-on futó kliens program, a UNIX rendszeren működő szerver program és a közöttük lévő kommunikációs protokoll – saját fejlesztésűek.


Ebben a rendszerben az 1999-es évben kifejlesztésre és bevezetésre került három olyan új – a magyar nyelvű email programok körében egyedül álló – kriptográfiai szolgáltatás, amely a rendszert felruházza a jelenleg praktikusan elérhető legmagasabb fokú biztonsági megoldásokkal, és mindemellett biztosítja a létező rendszerekkel az együttműködést. Megvalósítottuk a kliens és a szerver által is azonosított SSL (Secure Socket Layer) csatornán történő párbeszédet. Programunkba integráltuk az S/MIME (Secure MIME) digitális hitelesítési és titkosítási eljárást. Létrehoztuk a Drótposta Certificate Authority-t, Magyarország jelenleg – valószínűleg – legnagyobb ügyfélkörű nyilvános CA-ját, felhasználóink email címének tanúsítására.


Előadásunkban bemutatjuk az általunk megvalósított PKI-t (nyilvános kulcsú infrastruktúrát), majd a részletekre térve röviden ismertetjük az SSL és az S/MIME működését. Megmutatjuk, hogy az OpenSSL programcsomag segítségével hogyan hoztuk létre rendszerünket. Ismertetjük a Drótposta Certificate Authority felépítését, biztonsági szintjét. Beszámolunk a rendszer működtetése során szerzett tapasztalatainkról, és az így létrejött biztonságos rendszer várható és tervezett jövőbeni felhasználási módjairól.

1.   A DPG rendszer

A DrótPostaGalamb (DPG) email szolgáltató rendszer, amely az internetre kapcsolt központi szerver számítógépekből, a hozzájuk kapcsolódó kliens programokból és a kliensek belépését biztosító országos modemes behívó rendszerből, illetve az internethez csatlakozó hálózatból áll. A szerver rendszert több gép alkotja, amelyek között a szolgáltatás funkciói vannak elosztva, és a felhasználók igényeinek zökkenőmentes és gyors kiszolgálásáról is ez az elosztott rendszer gondoskodik. A szerveren futó funkciókat a DrótPosta fejlesztette. A kliens programok szintén a DrótPosta által fejlesztett speciális email kliensek. Specialitásuk a könnyű és egyszerű használhatóságot, intuitív, grafikus felhasználói felületet és a levelek olvasásakor és írásakor megjelenő reklámokat és a reklámozási módszert jelenti.

A DPG rendszer felépítése

A DrótPostaGalamb rendszer működését biztonsággal és titkosítással kapcsolatosan két fő szempontból vizsgálhatjuk. Az első szempont a kliens és a szerver közötti SSL kommunikáció, amelyet a 2. fejezet ír le. A második szempont az S/MIME levelezési képesség, amelyet a 3. fejezet mutat be. Ezt a képességet tovább bonthatjuk a kliensben végrehajtott funkciókra: kulcspár generálás, kulcstanúsítvány kérelem (certificate request) generálás, levél hitelesítés (digital signature) és hitelesség ellenörzése, titkosítás (encryption) és dekódolás, tanúsítványok (certificate) és hitelesítők (signer) nyilvántartása valamint a központi rendszer részét képező hitelesítő hatóság (certificate authority) működése.





2.   A kliens és a szerver közötti kommunikáció

A DrótPostaGalamb rendszer SSL (Secure Socket Layer) protokollt használ a kliens és a szerver közötti kommunikáció során. Ez a protokoll hitelesítési és titkosítási szolgáltatásokat nyújt számunkra; a cél az, hogy a kliens program megbizonyosodhasson, hogy tényleg a szerverrel vette fel a kapcsolatot, a szerver program megbizonyosodhasson, hogy egy általunk hitelesített kliens program próbál vele kommunikálni, illetve, hogy lehallgatással és módosítással szemben védve legyen a kommunikáció. További előny, hogy így a nem titkosított levelek is védve vannak a kliens-szerver szakaszon. Noha a biztonságos csatornát a kliens programok és a szerver között alakítjuk ki és nem kell együttműködni külső rendszerekkel, mégis célszerű volt szabványos eszközök használata.

Megvalósításunkban mindkét fél részére szükséges az authentikáció, tehát rendszerünkben a szerver is és a kliens is igazolja magát tanúsítványa SSL protokoll szerinti elküldésével. A kapcsolatot a kliens csak a DPG szerver sikeres azonosítása után hozza létre. A szerver a kliens tanúsítványát néhány egyszerű mintaillesztő vizsgálat után az adatbázisban tárolt értékekkel hasonlítja össze. Megoldásunk a kliensekhez csak verziónként ad ki tanúsítványt, azaz nem minden egyes kliens programnak van egyedi tanúsítványa, hanem csak a különböző verzióknak. Ez a megoldás elegendő biztonságot és azonosíthatóságot nyújt, mert – a már így titkosított csatornán – minden kliensünket egyedi azonosítóval és hozzá tartozó titkos jelsorozattal – amelyet csak a kliens és a szerver programok ismernek – látunk el. A kliensek tehát tanúsítványukkal, azonosítójukkal és a hozzá tartozó kódsorozattal léphetnek csak be a rendszerbe.

Azért választottuk ezt a megoldást, mert jelentősen csökkenti az adminisztrációs ráfordításokat, gyorsítja az új kliensek regisztrálását és használat közben a belépésüket. Az így elért biztonsági szint garantálja rendszerünk megbízható működését.

SSL tömörítése

Az SSL protokoll – lévén egy flexibilis keretprotokoll – lehetőséget biztosít arra, hogy a kliens-szerver kommunikáció valamilyen mindkét fél által támogatott tömörítési algoritmus segítségével az átviteli csatornán minél gyorsabban haladjon át. Jelen esetben – mivel a felhasználóink döntő többsége telefonos hálózaton át veszi igénybe szolgáltatásunkat – alapvető fontosságú volt ezen kapcsolatok sebességének növelése. Erre kiváló lehetőséget biztosít az OpenSSL megvalósítás a Z Library-re épülő tömörítési eljárása. A kapcsolat felépítése során szerver rendszerünk – terheléstől függően – felajánlhatja a kliens programok számára a tömörített átvitel lehetőségét. Kliens programjaink élnek ezzel a funkcióval.

Méréseink szerint nagyobb, szöveges, illetve jól tömöríthető csatolt állományokat tartalmazó levelek átvitelekor jelentős (1,5-2-szeres) sebességnövekedés érhető el ezzel a módszerrel. Természetesen a rendszer finomhangolása ajánlott, ami jelenti a Windows TCP/IP szintű, a modemek tömörítési beállításainak és az általunk megvalósított tömörítési eljárás számítógéptől, telefonvonaltól függő beállítását.

3.   S/MIME levelezés

Egy megbízható levelezési szolgáltatásokat nyújtó rendszernek képesnek kell lennie levelek hitelesítésére és titkosítására, illetve a hitelesítés ellenőrzésére és a titkosítás dekódolására. Ha célunk az, hogy ezeket a szolgáltatásokat más rendszerekkel együttműködve is tudjuk nyújtani, akkor szabványos megoldásokat kell alkalmazni. Az Internet alapú levelezésben két szabvány terjedt el: a PGP és az SMIME. Választásunk az SMIME-ra (Secure MIME) esett, egyrészt, mert a piacvezető Internet alapú levelezőprogramok is ezt támogatják, másrészt, mert az SMIME centralizált kulcshitelesítési architektúrája jobban illeszkedik céljainkhoz, a felhasználók igényeihez és a hamarosan elkészülő magyarországi törvényekhez, mint a PGP elosztott, bizalmi hálón alapuló megoldása.

Kulcstanúsítók szerepe

Ha hiteles és titkos kommunikációt akarunk folytatni, akkor mindenképpen szükségünk van valamilyen biztos számítási alapra, amelyben megbízunk és hitelességét nem kérdőjelezzük meg. Az SMIME rendszer esetében ez egy tanúsítványkiadó (certificate authority – CA) kulcstanúsítványa, ami a kliens programba be van építve. Ezen tanúsítvány segítségével ellenőrzi programunk a hitelesített levelek tényleges hitelességét, azaz a feladó kulcstanúsítványának egy megbízható harmadik fél által történő igazoltságát.

Megvalósításunkban létrehoztuk a DPCA kulcshitelesítőt, amely megfelel ezen elvárásoknak.

Nyilvános és titkos kulcs létrehozása

Minden felhasználónak kötelező generálni egy kulcspárt, amelynek a nyilvános felét rögtön el is küldi a kulcshitelesítő központba, ahol a DPCA rendszer – ha a különböző ellenőrzések sikeresek voltak – hitelesíti azt és a felhasználó rendelkezésére bocsátja. Miután megérkezik a tanúsítvány, a felhasználó küldhet hitelesített levelet.

Titkosított levelet olyan címzettnek lehet küldeni, akinek a tanúsítványa megvan, vagyis küldött már hitelesített levelet számunkra, vagy valamilyen „telefonkönyvben” megtaláltuk kulcstanúsítványát. Kliens programunk ezt úgy támogatja, hogy a számunkra hitelesített levelet küldők drótposta címét és ezzel együtt aláírt nyilvános kulcsukat, azaz kulcstanúsítványukat eltárolja címjegyzékünkben, így levél írásakor ez az információ rendelkezésünkre áll, tehát leveleinket tudjuk titkosítani a címzett nyilvános kulcsával.

Tervezzük egy LDAP alapú nyilvános címtár létrehozását is, amely lehetővé teszi, hogy kereshessünk a DrótPosta rendszer felhasználói között, és azonnal titkos levelezést kezdeményezhessünk bármelyikükkel.





Hitelesítés

Az aláírt levelek ellenőrzéséhez szükségünk van olyan legfelső szintű CA tanúsítványokra, melyekben megbízunk. Ezeket a szerver küldi a kliens programnak a létrehozott biztonságos csatornán. Annak az aláírásnak a hitelességét tudjuk ellenőrizni, amely kulcsának a hitelességét ellenőrizni tudjuk egy megbízható CA-ból induló hitelesítési láncon keresztül. Kliens programunk támogatja az egy és többszintű láncok kezelését is.

Kompatibilitás

A felhasználónak lehetősége van a kulcsok szabványos (PKCS #12) formátumú elmentésére és más forrásból származó kulcsok betöltésére. Mivel egy felhasználó több kliens programban is levelezhet, ezért kulcsok mozgatására szükség lehet. A felhasználó elfogadhat megbízhatónak egy aláírt levélben érkező ismeretlen CA tanúsítványt is.

OpenSSL

A titkosítási szolgáltatásokat az OpenSSL könyvtár felhasználásával valósítottuk meg, aminek a forrása szabadon hozzáférhető és felhasználható. A hitelesített, illetve aláírt levelek PKCS7 objektumként jelennek meg. A fejlesztés időpontjában az OpenSSL könyvtár PKCS7 támogatása még nem teljesen kiforrt, kísérleti állapotú volt, de már elegendőnek bizonyult a szükséges funkciók megvalósítására. Az objektumokat ASN.1 DER konverzióval történő bináris formára alakítás után MIME formátumú levéllé kell alakítani. Az így elkészült levél már elküldhető és letölthető a szokásos SMTP és POP3 protokollok segítségével.

A kliens mindig a szerverrel veszi fel a kapcsolatot, és kommunikációjuk során a levéltovábbításon kívül egyéb tevékenységeket is folytatnak (felhasználó adminisztráció, információs fájlok frissítése stb.). Ebbe a protokollba van beágyazva az SMTP és a POP3 is. A kommunikációs csatorna védelme e szint alatt helyezkedik el, ehhez a programban használt hálózati funkciókat le kellett cserélni az SSL réteg megfelelő szolgáltatásaira. Az alsó réteghatáron történő illesztésnél az SSL könyvtárat rá kell venni, hogy a Windows által nyújtott hálózati funkciókat használja. Ennek megvalósításában nagy segítséget nyújt az OpenSSL absztrakt I/O rendszere.


PKCS7

SMIME

SMTP

POP3

DPG

SSL

Winsock

TCP/IP


4.   DPCA tanúsítványkiadó

A DrótPostaGalamb rendszer hitelesítési is titkosítási funkcióinak biztosításához szükséges egy olyan független, megbízható és önmagában is hiteles hatóság, amely képes igazolni egy adott nyilvános kulcs hitelességét, azaz gazdája és a kulcs közötti hiteles összerendelést. Ez a hatóság rendszerünkben a DPCA, azaz a DrótPosta Certificate Authority. Ez a hatóság valójában egy hatóság csoport, aki áll a DPCASERV szerver és kliens hitelesítő hatóságból, a DPCA1 drótposta felhasználókat hitelesítő hatóságból és a DPCA2 hatóságból, aki azon felhasználóinkat hitelesíti, akik személyes megjelenésükkel igazolták drótpostacímük és adataik valamint személyük összetartozóságát.

Ahhoz, hogy rendszerünket el tudjuk indítani létrehoztuk ezeket a hatóságokat, mint önmagukat igazoló legfelső szintű hatóságokat (root CA).

DPCA1

A DPCA1 az a kulcshitelesítő, aki automatikusan adja ki felhasználóinknak a hitelesített tanúsítványokat. Természetesen ezek a tanúsítványok csak azt igazolják, hogy az adott email címet a DrótPostaGalamb rendszerből hozták létre. Ezek a tanúsítványok arra nem alkalmasak, hogy felhasználóink személyi azonosságát igazolják, de arra megfelelőek, hogy mindenki megismerkedjen a hiteles és titkosított levelezés lehetőségeivel, és igénye esetén továbblépjen egy biztonságosabb szint felé.

A tesztelési szakasz lezárása után szükségesnek éreztük, hogy felhasználóink rendszerünkből kifelé irányuló leveleit is hitelesnek ismerjék el az SMIME-ot támogató programok, mint például a Netscape Messenger és az Outlook Express. Erre két lehetőség kínálkozott: vagy a levelező partnereket kérjük meg, hogy töltsék le a DPCA1 kulcstanúsítványát, és ebben bízzanak meg, vagy beépíttetjük ezekbe a programokba a DPCA1 tanúsítványát. A beépítésnek és hitelességünk növelésének kínálkozott egy módja, amely Magyarország egyik nyilvános CA-jával (NetLock Kft.) történő együttműködésünk során valósult meg. A DPCA1-et nem mint legfelső szintű CA-t használjuk, hanem a NetLock Kft C típusú tanúsítványkiadója igazolja hitelességét. Ez a tanúsító bekerült, illetve bekerül a fent említett programok hitelesítő-listájára, így a DPCA1 által hitelesített levelek is automatikusan hitelessé válnak ezekben a programokban, ezzel biztosítva, hogy felhasználóink ugyanolyan egyszerűen levelezhessenek megbízható, titkos formában a nem-Drótpostás partnereikkel, mint azt rendszerünkön belül megszokhatták.


5.   Köszönetnyilvánítás

A DPG rendszer létrehozása köszönhető Maros Péter ötletadónknak, szellemi és anyagi támogatónknak, valamint az OMFB IKTA és a KHVM támogatásának. A működést, az internet kapcsolatot és az országos elérhetőséget köszönjük az Elender Rt.-nek. Köszönettel tartozunk annak a több száz lelkes felhasználónknak, akik résztvettek és résztvesznek a DPG rendszer béta tesztelésében és véleményükkel, javaslataikkal, igényeikkel jelentősen hozzájárultak a program fejlődéséhez. Köszönet illeti a Drótposta Kft. munkatársait kitartó és lelkes munkájukért. Köszönjük családtagjainknak, barátainknak azt a megértést és támogatást, amit a rendszer fejlesztése és üzemeltetése során tanúsítottak.

Referenciák