Gyenge kulcs a kriptográfiában – definíció, kockázatok és megelőzés
Gyenge kulcs a kriptográfiában: definíció, kockázatok és megelőzés — ismerje meg, hogyan azonosíthatók a gyenge kulcsok, milyen veszélyt jelentenek és hogyan előzhető meg a visszaélés.
A kriptográfiában a gyenge kulcs olyan kulcs, amely egy adott rejtjelezővel együtt használva a rejtjelezőt valamilyen nemkívánatos módon viselkedik, és megkönnyíti a rejtjelezett szöveg feltörését (feltörését).
A gyenge kulcsok általában a teljes kulcstér nagyon kis hányadát teszik ki, ami azt jelenti, hogy ha valaki véletlenszerű kulcsot generál egy üzenet titkosításához, akkor a gyenge kulcsok ritkán okoznak biztonsági problémát. Ugyanakkor jó tervezésnek számít, ha egy rejtjelezőnek nincsenek gyenge kulcsai ("minőségi rejtjelező"). A gyenge kulcsokat nem tartalmazó rejtjelezésről azt mondják, hogy lapos vagy lineáris kulcstérrel rendelkezik.
Példák és típusok
Néhány ismert példa és jelenség, ahol gyenge kulcsok előfordulhatnak:
- Szimbólikus algoritmusoknál: A DES klasszikus példája — léteznek konkrét úgynevezett gyenge és félig gyenge (semi-weak) kulcsok, amelyek speciális viselkedést okoznak, ezért kerülendők.
- Privát kulcs gyengeségek aszimmetrikus rendszereknél: RSA esetén gyenge, ha a kulcsprímok túl kicsik, ismétlődnek vagy közös tényezőt használnak más kulcsokkal. Elliptikus görbéknél gyenge kulcsot eredményezhet a rosszul kiválasztott görbe vagy a nem megfelelő véletlenszerűség az aláírásnál (pl. ECDSA-nál azonos nonce-ok).
- Alacsony entropia: ha a kulcs-generálás forrása gyenge (pl. determinisztikus, gyenge véletlenszám-generátor, felhasználói jelszavakból közvetlenül származtatott kulcsok), akkor a kulcsok könnyen kitalálhatók.
Okok
- Poor véletlenszám-generátorok (nem kriptográfiailag biztonságos RNG-k).
- Rossz implementációk, amelyek nem ellenőrzik a kulcspár érvényességét vagy hibás paramétereket használnak.
- Rövid kulcsméret vagy elavult algoritmusok alkalmazása.
- Jelszavakból gyártott kulcsok gyenge KDF nélkül (só és iterációk hiánya).
Kockázatok
A gyenge kulcsok következményei súlyosak lehetnek:
- Gyorsabb kulcsrekonstrukció: támadó kevesebb munkával találhat rá a kulcsra.
- Üzenetdekódolás, aláírás hamisítása vagy a kommunikáció lehallgatása.
- Identitáslopás, jogosultságok jogosulatlan megszerzése.
- Bizalmas adatok és hosszú távú titkok kompromittálódása — különösen veszélyes, ha ugyanazt a gyenge kulcsot több helyen használják.
Megelőzés és jó gyakorlatok
- Használjon jól ismert, korszerű algoritmusokat és elegendő kulcshosszakat (pl. az aktuális ajánlások szerinti AES-256, RSA/ECC kulcsméretek).
- Mindig kriptográfiailag biztonságos véletlenszám-generátort (CSPRNG) alkalmazzon a kulcsok előállításához; lehetőség szerint hardveres véletlenségforrást (TRNG) vagy jól auditált könyvtárakat használjon.
- Jelszó alapú kulcshoz erős KDF-et alkalmazzon (pl. Argon2, bcrypt, PBKDF2 megfelelő paraméterekkel), mindig sóval és elegendő iterációval.
- Kerülje az algoritmusok és paraméterek saját implementálását — használjon szabványos, kipróbált könyvtárakat és protokollokat.
- Végezzen kulcsellenőrzést: ellenőrizze, hogy a generált kulcs nem szerepel-e ismert gyenge kulcsok listáján, illetve validálja a paramétereket (például RSA prímek, ECC pontok).
- Ne ismételje meg a kulcsokat és rendszeresen forgassa (key rotation); használjon session kulcsokat és rövid élettartamú kulcsokat ott, ahol lehetséges.
- Ne használjon konstans vagy előre meghatározott kulcsokat éles környezetben (pl. beégetett kulcsok alkalmazásokban).
Ellenőrzés és észlelés
Módszerek a gyenge kulcsok feltárására és megelőzésére:
- Automatizált tesztek a kulcsgenerálás során: entropiamérés, statisztikai tesztek.
- Listák használata ismert gyenge kulcsokról (pl. DES-gyenge kulcsok), illetve egyedi validációk az aszimmetrikus paraméterekre.
- Különös figyelem ECDSA/DSA aláírásoknál: ugyanaz a nonce (k) csökkenti a kulcs biztonságát és lehetővé teszi a privát kulcs kiszámítását.
- Konzisztens logolás és auditálás: kulcsgenerálási események naplózása, auditálás harmadik fél által.
Összefoglaló
A gyenge kulcsok ritkák lehetnek, de következményeik súlyosak. A legfontosabb védekezés a megfelelő tervezés, korszerű algoritmusok és könyvtárak használata, erős véletlenszám-források alkalmazása, valamint az ismert gyenge kulcsok és hibás paraméterek kiszűrése. Ezekkel a lépésekkel egy rejtjelező rendszert közelebb lehet vinni ahhoz, hogy lapos vagy lineáriskulcstér jellemezze, és minimalizáljuk a gyenge kulcsok okozta kockázatokat.
Példák 128 bites gyenge kulcsokra
- Minden nulla (0x000000000000000000000000)
- Minden egyes (0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
- Váltakozó '1' + '0' (0x01010101010101010101010101)
- Váltakozó 'F' + 'E' (0xFEFEFEFEFEFEFEFEFEFEFEFEFEFE)
- Váltakozó 'E' + '1' (0xE1E1E1E1E1E1F0F0F0F0F0) vagy (0x1E1E1E1E1E1E0F0F0F0F0F)
Keres