Blowfish

Blowfish összefoglaló
Tervező (k) Bruce schneier
Első kiadvány 1993
Származó Nem
Titkosítás (ok) ezen algoritmus alapján Twofish
Jellemzők
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 ).

Algoritmus

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.

Rejtjel megfejtés

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.

Példák

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.

Megjegyzések és hivatkozások

  1. (in) B. Schneier, "  Új, változó hosszúságú kulcs, 64 bites blokkos kód (Blowfish) leírása  " ,1993. december(megtekintés : 2015. október 4. ) .
  2. (a) S. Vaudenay, A gyenge kulcsok Blowfish  " ,1996(megtekintés : 2015. október 4. ) .
  3. (in) Blowfish Advanced CS (Commercial Edition)  " (2013. február 19-i verzió az Internetes Archívumban ) .
  4. (de) Blowfish Advanced CS  " ( Internet Archive verzió április 24, 2013 ) [PDF] .

Külső linkek