Blog

Alkalmazott kriptográfia – TrueCrypt II.

2009.02.21. 10:35:46, Földes Ádám Máté

Ez a bejegyzés egy hosszabbra tervezett, kriptográfiai témájú sorozat hatodik darabja. A bejegyzésekben nem bocsátkozom komoly elméleti fejtegetésekbe – csak a privátszféra védelme iránt érdeklődő laikus vagy szakmabeli számára potenciálisan érdekes dolgokat szeretném kifejteni. A sorozat előző darabja itt olvasható: http://pet-portal.eu/blog/2009_02_07_Alkalmazott_kriptografia_8211_TrueCrypt/ 

A TrueCrypt (TC) működését taglaló írásomat a benne használt algoritmusok, valamint az újabb verziókhoz adott szolgáltatások ismertetésével folytatom. (Az előző blogbejegyzésemhez születtek olyan kommentárok, melyek a felhasznált kriptográfiai algoritmusok jellegének fontosságát firtatták – ezért határoztam úgy, hogy ezekről is hosszabban szólok.)

Igen gyakran, és egyáltalán nem légbőlkapottan elhangzó állítás, hogy az Egyesült Államokban kifejlesztett kriptográfiai algoritmusokhoz kötelezően tartozik egy "tolvajkulcs", mert így könnyebb azokat legálisan "kivinni" az országból. Éppen ezért van a TC-ben három "kriptográfiai építőkocka" implementálva: az AES-256, a Serpent és a Twofish.

Az első az amerikai Nemzetbiztonsági Ügynökség (NSA) által elfogadott algoritmus, mely a viszonylag rövid 56 bites kulcs miatt ma már – hatalmas erőforrásokkal, de – törhetőnek tekinthető DES-t váltotta le. Bár elődjével ellentétben viszonylag kevés misztikum övezi belső mechanizmusait, és voltaképp egy nemzetközi verseny bírájaként döntött az NSA úgy, hogy a Rijndael algoritmust fogják majd AES-nek nevezni, tartják magukat azok az elméletek, melyek szerint az AES is tartalmaz egy hátsó ajtót az NSA számára (mindezt annak ellenére, hogy az algoritmust nem amerikaiak, hanem belgák tervezték). Mindent egybevetve azonban az AES a mai kriptográfia egyik igen fontos algoritmusa.

A Serpent szintén az "AES-titulus" várományosa volt – a legjobb öt közé jutott a pályázaton. Az angol, norvég és izraeli tervezők áldozatot hoztak a sebesség rovására, a biztonság javára. (Valószínűleg ez is közrejátszott abban, hogy ma nem ezt az algoritmust hívjuk AES-nek.) A tripla DES-nél azonban továbbra is jobban teljesít mind biztonság, mind sebesség tekintetében.

A Twofish, mely szintén a legjobb öt között volt, amerikai (ám "civil") fejlesztés. Referencia-forráskóddal és sok egyéb információval egyetemben letölthető Bruce Schneier, neves amerikai kriptográfus honlapjáról. Gyorsaságát és biztonságát tekintve a kriptanalízis mai állása szerint felveszi a versenyt a Rijndaellel.

A TC tehát mindhárom algoritmust képes a rejtjelezéshez felhasználni: a program írói bíznak abban, hogy még igen komoly kriptanalitikai előrelépések (illetve az esetleges álkulcsok nyilvánosságra hozása) esetén is biztonságos marad a háromból legalább az egyik. Logikusan felmerülő igény, hogy az abszolút biztonság eléréséhez mindhármat egyszerre (pontosabban egymás után) fel tudjuk használni, hogy még két algoritmus sikeres megtámadása esetén is csak zagyva adathalmaz legyen a támadó "jutalma". A TC erre is lehetőséget ad: a készítők ezt a funkciót kaszkád rejtjelezésnek nevezik. Voltaképp tehát saját magunknak "legózhatjuk össze" a titkosítási láncot – minden attól függ, hogy a sebesség vagy a biztonság a legfontosabb szempont.

Az előző blogbejegyzésem végén tett ígéretemhez és a kommentárok közt megjelentekhez egyaránt kapcsolódik a TC legfrissebb verzióinak egyik legfontosabb újítása: az intelligens kártyák (smart card) támogatása. Egy ún. hardver token (melyet voltaképp egy USB-csatlakozós "olvasóval" integrált intelligens kártyaként kell elképzelni) segítségével teszteltem ezt a TC-szolgáltatást, és alapvetően pozitívak a tapasztalataim.

Voltaképp arról van szó, hogy a TC egy egyszerű, már előzőleg elkészített illetve kiválasztott kulcsállományt tölt a kártyára, majd megjelöli, hogy csak a kártyához tartozó PIN-kód megadásával lehessen az állományt leolvasni. Tekintve, hogy egy ilyen kártya ritkán tartalmaz 128 kilobájtosnál nagyobb háttértárat, nem lehet akármekkora a kulcsfájl – érdemes a TC-vel generáltatni egyet.

 

Munkára fogott smartcard-kulcsállomány

 

A megoldással kapcsolatban – bár a gyakorlatban is teszteltem egy próbakonténeren, és rendben működött – pár kritikus megjegyzést tennék. Az egyik, hogy ha saját magunk generálunk kulcsfájlt, akkor az addig nincsen biztonságban, amíg át nem töltöttük a kártyára és le nem töröltük (biztonságosan, nyomok nélkül) merevlemezünkről – jó lenne, ha a kártyát meg tudná kérni a program egy fájl generálására, tekintve, hogy a legtöbb smartcard rendelkezik ilyen funkcióval.

A másik, hogy ez a fajta használat ellentmond az intelligens kártyák "valódi" felhasználásának, jelesül, hogy a kulcs sose hagyja el a kártyát, és a kártya végzi a rejtjelezést illetve annak visszafordítását. Mindazonáltal ez kisebb probléma, mert kevés olyan támadótípus létezik, aki ellen ez plusz védelmet nyújtana (hiszen ha már feloldottuk a konténer titkosítását, egy háttérben futó program lemásolhatja a rejtjelezett tartalmat – akkor pedig nem vagyunk sokkal előrébb azzal, hogy a kulcsot a kártyában tartjuk), valamint a használható kriptográfiai algoritmusok körét leszűkítené a kártya által támogatottakra. (A nálam levő token például AES-t sem támogat, csak tripla DES-t.)

A harmadik probléma, hogy a rendszertöltés előtti hitelesítéssel nem kompatibilis a megoldás. Ez azonban egyáltalán nem TC-hiányosság, mert az intelligens kártyák gyártói szeretik zárt forráskód alatt kiadni a meghajtóprogramjaikat. Erre az egyetlen megoldás a nyílt forráskódú, harmadik fél által fejlesztett API-k használata lenne – félő azonban, hogy ekkor már nem férne el a rendszertöltő 512 bájton...

A végére hagytam az előző bejegyzés kommentárjai közt felbukkant jogos aggodalom tárgyalását, mely szerint sosem lehetünk biztosak benne, hogy egy kártyába nem tett hátsó ajtót a gyártó – az intelligens kártyák természetszerűleg zárt implementációk, és nem tudunk saját magunk meggyőződni működésük "tisztaságáról". Ha ilyen irányú félelmeink vannak, akkor továbbra is kell jelszót vagy plusz kulcsfájlokat használnunk TC konténerünk titkosításához (a kártyával együtt). Mindezek ellenére úgy gondolom, hogy az intelligens kártyák használatának támogatása egy nagyon fontos hiánypótló újítás a TC-ben, és ha van rá lehetőség (és persze nem utolsó sorban támogatott hardverünk), érdemes használni.

Hozzászólások

Összesen 1 hozzászólás látható.

2010.01.25.

Varga László [ e-mail ] 2010.01.25. 21:27:54
Elgondolkodtató.Minndazonáltal a forráskódok úgyhiszem nyilvános.
És ellenőrizhető.

A hozzászóláshoz be kell jelentkezni!

© PET Portál és Blog, 2008-2010 | Impresszum | Adatvédelmi nyilatkozat