<<< Már a háromévesek is!?Decentralizált Internet? >>>

Néhány napja jelent meg Bruce Schneier és Paul Hoffman frissítése az RFC 4270-hez. Az RFC 4270 egy "informational RFC". (Az ún. "standards track" RFC-k szabvány-jellegű dokumentumok, míg az "informational RFC"-kben csak gondolatokat tesznek közzé. A PKI világában standards track RFC pl. a tanúsítványok és CRL-ek formátumát is rögzítő RFC 5280, míg informational RFC például a tanúsítványlánc-építésről szóló RFC 4158.)

A kriptográfiai hash függvények két tulajdonsággal kell, hogy rendelkezzenek:

  • Őskép ellenállóság (preimage resistance): Egy hash érték alapján nagyon nehéz legyen következtetni a hash függvény bemenetére.
  • Ütközés ellenállóság (collision resistance): Legyen nagyon nehéz (szinte lehetetlen) két olyan különböző üzenetet találni, amelyeknek azonos a lenyomata.

Az MD5 elleni, valamint SHA-1 elleni ma ismert támadások az ütközés-ellenállóságot, nem pedig az őskép-ellenállóságot érintik. Schneier és Hoffman arra hívják fel a figyelmet, hogy a legtöbb protokoll csak a hash függvények őskép-ellenállóságát használja ki, így e protokollokat a támadások nem érintik. A digitális aláírást használó protokollok (beleértve a PKI tanúsítványokat használó protokollokat is) kivételt jelentenek, mert ott az ütközés-ellenállóság (is) kritikus. A dokumentum 3. fejezete áttekinti, hogy milyen jellegű internetes protokollokban használnak hash függvényeket, és azt állítja, hogy ezeknek viszonylag kis részét érintik a közelmúltban megjelent, hash függvények elleni támadások.

Az MD5 ütközés-ellenállósága ellen gyakorlatban kivitelezhető támadások is vannak. A cikk hivatkozza a Flame-MD5 esetet, ahol a támadó - egy igazi támadó, igazi éles támadás során - kriptográfiai támadással, MD5 ütközés segítségével hamisított code-signing tanúsítványt. Az SHA-1 esetén még nincsen ismert ütközés, és a cikk hivatkozza a néhány hete megjelent eredményt, miszerint egy ideig még nem is várható. (Szemben a 2005-ös várakozásokkal.)

A szerzők szerint a legtöbb protokollban továbbra is használható az MD5 és az SHA-1, a digitális aláírásra és tanúsítványokra épülő protokollokban pedig bizonyos kiegészítő intézkedéseket/feltételeket kell használni. Az SHA-2 hash függvény család egyértelmű előrelépést jelent, a közelmúltban kiválasztott SHA-3 hash függvényt pedig leginkább csak biztonsági tartaléknak tekintik.

Jelentős változás az RFC 4270-hez képest, hogy ezúttal a szerzők egyértelműen azt mondják, át kell térni az SHA-2-re. (Az RFC 4270 kibocsátásakor a szerzők eltérő véleményt képviseltek, elsősorban az áttéréssel kapcsolatos nehézségek és az SHA-2 támogatottsága miatt.)


Nem mindenben értek egyet a Schneier és Hoffman által leírtakkal, de természetesen nem a kriptográfiai állításaikkal vitatkozom. Elfogadom azt az érvet is, hogy nincsenek rossz kriptográfiai algoritmusok, csak nem mindegyik alkalmas minden célra, de a helyzet ennél összetettebb. Csakhogy ma nemcsak kriptográfusok használnak kriptográfiai algoritmusokat. Sokkal könnyebb azt mondani egy programozónak, hogy "használj SHA-2-t, ahol csak tudsz, és szólj, ha valahol nem lehet", mint azt mondani, hogy "vizsgáld meg, hogy az adott esetben mekkora a hangsúly a hash függvény ütközés-ellenállóságán, és ez alapján határozd meg, hogy elég-e az SHA-1 vagy SHA-2-re van-e szükség". Egy PKI rendszerben nagyon sok hash függvény jelenik meg, időnként biztonság-kritikus helyzetben vannak, időnként nem, és időnként nehéz megítélni a kérdést. Ha nem kerül semmibe, talán jobb, ha a laikus nem gondolkozik, hanem túlbiztosít, mert utólag néha már nagyon nehéz orvosolni ha valahol mégis gyenge algoritmust választott.

Az algoritmusváltás nehéz feladat, és ha széles körben kell kommunikálni bonyolult műszaki problémákról, akkor az egyszerű, "négy láb jó, két láb rossz" ökölszabályok sokkal könnyebben, hatékonyabban kommunikálhatóak.

Az viszont igaz, hogy míg az elektronikus aláírás alkalmazásokat célszerű átállítani SHA-2-re, addig valóban értelmetlen a más területen működő, meglévő alkalmazásokban ész nélkül cserélni le minden hash függvényt mindenütt. Például ha egy rendszer az ügyfelek jelszavainak az MD5 lenyomatát - md5($jelszo) - tárolja, akkor - mivel az MD5 továbbra is őskép-ellenálló - nem biztos, hogy az SHA-2-re történő átállás a legfontosabb. (Sokkal-sokkal fontosabb, hogy pl. a rendszer salt-tal ellátva tárolja a jelszó-lenyomatokat. Az ezzel kapcsolatos legjobb gyakorlatokról pl. itt lehet olvasni.)

Hozzátenném, hogy az markánsan különbözik egymástól az EU-s és az amerikai elektronikus aláírás szabályozás. A hatályos EU-s szabályozás (és várhatóan az elkövetkező is) már-már fetisizálja a minősített aláírásokat, és pl. a magyar jogrendszerben megjelenő, "ha egy dokumentumon minősített elektronikus aláírás van, akkor vélelmezni kell, hogy..." tudomásom szerint teljesen idegenek az amerikai/angolszász jogrendtől. Így nem csoda, hogy a tengerentúlon kevésbé tartják rázósnak az aláíráskor használt lenyomatok kérdését.

 

 

 
Ez az én személyes honlapom, amit itt írok, az az én saját, személyes véleményem, nem feltétlenül egyezik a munkahelyem véleményével. A blogomban szereplő tartalom a Creative Commons CC BY licenc szerint (azaz a szerző és a forrás megnevezésével) szabadon felhasználható.