Tervező (k) | Bruce schneier |
---|---|
Első kiadvány | 1993 |
Származó | Nem |
Titkosítás (ok) ezen algoritmus alapján | Twofish |
Blokk mérete (i) | 64 bit |
---|---|
Kulcs (ok) | 32–448 bit (8 bit által) |
Szerkezet | Feistel- séma |
Fordulatok száma | 16 forduló |
Jobb kriptanalízis
Négy toronyos támadás (Rijmen, 1997). Statisztikai sérülékenységet gyenge kulcsokkal Serge Vaudenay bizonyította 14 kör alatt 1996-ban.
Blowfish egy algoritmus a titkosítás szimmetrikus (azaz „titkos kulcs”) blokk tervezett Bruce Schneier a 1993 .
A Blowfish 64 bites blokkméretet használ, és a változó hosszúságú kulcs 32 és 448 bit közötti lehet. Azon az elképzelésen alapszik, hogy a kriptanalízis támadásokkal szembeni jó biztonság nagyon nagy ál-véletlenszerű kulcsok használatával érhető el.
A Blowfish jó végrehajtási sebességet mutat, kivéve, ha kulcsot cserél, körülbelül ötször gyorsabb, mint a Triple DES, és kétszer olyan gyors, mint az IDEA . Kora ellenére továbbra is kriptográfiailag erős marad, viszonylag kevés hatékony támadással kevesebb fordulat mellett. A 16 fordulóval ellátott teljes verzió egyelőre teljesen megbízható, és a kimerítő kutatás továbbra is az egyetlen módja annak, hogy megtámadjuk.
Alkotója nyilvánosan hozzáférhetővé tette; semmilyen szabadalom nem védi, és használata nem engedélyköteles. Ez részben megmagyarázza a sikerét, mert ez volt az egyik első szabadon használt titkosítási algoritmus. Számos saját és ingyenes szoftverben használják (beleértve a GnuPG-t és az OpenSSH-t is ).
A Blowfish 64 bites blokkméretet használ, és a kulcs , amelynek hossza változhat , 32 és 448 bit közötti lehet. A Blowfish 16 körös Feistel-sémán alapul, és nagy csavarkulcsfüggő S- Boxokat használ . Úgy néz ki, mint a CAST-128, amely az előre rögzített tartalommal rendelkező S-Boxokat vette át.
A bal oldali ábra a Blowfish fő szerkezetét mutatja. Minden sor 32 bitet képvisel. Az algoritmus két kulcskészletet kezel: a P tömb 18 bejegyzését és a négy, egyenként 256 elemből álló S-Boxot. Az S-Boxok 8 bites szót fogadnak el bemenetként, és 32 bites kimenetet produkálnak. Minden fordulóban a P táblázat bejegyzése használatos. Az utolsó fordulóba érkezve az adatblokk fele XOR- t hajt végre, a P tömb fennmaradó két elemének egyikével .
A második ábra Blowfish F-függvényét mutatja . A 32 bites bemenetet négy 8 bites darabra osztja, és bemenetként használja az S-Boxok eléréséhez. A kimeneteket egy modulo 2 32 összegzéssel összegzik, és az algoritmus XOR-t hajt végre a két részösszeg között a végső 32 bites kimenet előállításához. Feistel sémaként a Blowfish egyszerűen megfordítható, ha a P tömb 17 és 18 elemeinek XOR-ját alkalmazza a rejtjelblokkra . Ezután a P táblázat bejegyzéseit fordított sorrendben kell felhasználni .
A struktúra előkészítése a kulcsból a P tömb és az S-Box inicializálásával kezdődik, olyan értékekkel, amelyek a Pi számból származnak , hexadecimálisan kifejezve . Ezután XOR-t hajtanak végre a titkos kulcs és a P táblázat bejegyzései között, hogy megszerezzék a P táblázat új bejegyzéseit (szükség esetén a kulcs ciklikus kiterjesztésével). A Blowfish ezzel az ideiglenes verziójával egy 64 bites blokkot titkosítanak, nulla. Ezután a titkosított eredmény felváltja a P tömb első és második elemét . Megismételjük a titkosítási műveletet ezzel az új verzióval, és ezt az előző eredményen. Ezután megkapja a P harmadik és negyedik elemét . Az algoritmus ezen a módon folytatódik az összes P tömb és az S-Boxok elemének kicserélésével . Végül 72 bájt adatot kell generálni a P tömbhöz , és 1024 bájt adatot S-Boxonként, összesen 4168 bájtot, a Blowfish pedig 521 iterációt hajt végre ennek elérése érdekében.
Ezen korlátok miatt a Blowfish lassú, amikor a kulcsot meg kell változtatni, de a külön vett titkosításhoz nagyon gyorsan.
Mivel az inicializálási elv abból áll, hogy XOR -t hajtanak végre az 576 bites hosszú P tömb és a kulcs bitjei között ciklikusan 576 bitre bővítve, sok megvalósítás lehetővé teszi az 576 bites méretű kulcsok használatát a biztonság növelése érdekében. Bár ez teljesen lehetséges, a 448 bit korlátot úgy állították be, hogy a P és az S-Box minden egyes értékének mindegyik bitje a kulcs összes bitjétől függ, a P n ' tábla utolsó négy értéke nem befolyásolja a titkosítóblokk összes bitje.
Ezt a pontot figyelembe kell venni, ha meghatározzuk az algoritmusok maximális kulcsa hosszát egy másik fordulatszámnál, mert akkor is, ha a kulcs méretének kiterjesztése (függetlenül a fordulatok számának kiterjesztésétől) nagyobb biztonságot nyújt az arcban a kimerítő keresés hatással van az algoritmus által garantált biztonságra. Mivel a megnövekedett kulcsméret nyilvánvaló előnyeit leszámítva egyelőre egyetlen tanulmány sem vizsgálta a szabály be nem tartásának a biztonságra gyakorolt hatását, ami sok szoftvergyártót tiszteletre késztet. Valójában, tekintettel a Blowfish hosszú és összetett inicializálására minden kulcsváltással, természetes védelemmel van ellátva a kimerítő keresések ellen, mert a számítási idő jelentősen megnő. Így jelenleg a megszerzett nyereség nem igazán indokolja a 448 bitnél nagyobb méretű kulcs használatát, amely már kimerítő kereséssel már jóval meghaladja a számítás képességét, valamint számos algoritmust biztonságosnak tekintenek.
A 1996 , Serge Vaudenay azt mutatta, hogy permutáció Blowfish jelentősen eltért teljesen véletlenszerű permutációk több mint 14 fordulat. Az általa elkövetett támadáshoz 2 8 r + 1 ismert tiszta szöveg szükséges, r-vel a fordulatok száma. Kiemelte az úgynevezett gyenge kulcsokat is , amelyek ütközéssel S-Boxokat generálnak . Ezek a kulcsok azonos támadással csak 2 4 r + 1 ismert, tiszta szövegben detektálhatók és feltörhetők . A támadás nem terjeszthető ki a teljes körű Blowfish-re, annak 16 fordulatával. Vincent Rijmen 1997-ben négy körös támadást tett közzé , amely a másodfokú differenciál kriptanalízisen alapul. A teljes körű keresés az egyetlen megoldás a teljes Blowfish legyőzésére.
A GNU Privacy Guard alkalmazásban a Blowfish és a Twofish megvalósításra kerül, és aktiválhatók. Egy másik Windows szoftver (nyílt forráskódú) a Blowfish és a Twofish szolgáltatással a Blowfish Advanced CS.