Twofish

A kriptográfiában a Twofish egy szimmetrikus kulcsú blokk titkosítás, amelynek blokkmérete 128 bit, kulcsmérete pedig legfeljebb 256 bit. Az Advanced Encryption Standard pályázat öt döntőse közé tartozott, de végül nem választották ki szabványosításra. A Twofish a korábbi Blowfish blokk titkosításhoz kapcsolódik.

A Twofish jellegzetes tulajdonságai az előre kiszámított, kulcsfüggő S-dobozok használata, valamint a viszonylag összetett kulcsütemezés. Az n-bites kulcs egyik felét a tényleges titkosítási kulcsként használják, a másik felét pedig a titkosítási algoritmus módosítására (kulcsfüggő S-dobozok). A Twofish más tervekből is átvesz bizonyos elemeket; például a pseudo-Hadamard transzformációt (PHT) a SAFER titkosítási családból. A Twofish Feistel-szerkezettel rendelkezik, hasonlóan a DES-hez. A Twofish emellett maximális távolságú szeparálható mátrixot is alkalmaz.

Amikor 1998-ban bevezették, a Twofish kissé lassabb volt a Rijndael-nél (az Advanced Encryption Standard számára kiválasztott algoritmus) 128 bites kulcsok esetén, de valamivel gyorsabb volt 256 bites kulcsoknál. 2008 óta gyakorlatilag az összes AMD és Intel processzor tartalmazza a Rijndael algoritmus hardveres gyorsítását az AES utasításkészlet segítségével; az utasításkészletet használó Rijndael-megvalósítások ma már nagyságrendekkel gyorsabbak, mint a (szoftveres) Twofish-megvalósítások.

A Twofish-t Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall és Niels Ferguson tervezte: a „kibővített Twofish-csapat” azért jött létre, hogy elvégezze a Twofish további kriptanalízisét. Az AES-verseny további résztvevői között volt Stefan Lucks, Tadayoshi Kohno és Mike Stay.

A Twofish titkosítást nem szabadalmazták, és a referenciamegvalósítást a nyilvános domainbe helyezték. Ennek eredményeként a Twofish algoritmust bárki korlátozás nélkül szabadon használhatja. Ez az egyik azon kevés titkosítás közül, amelyeket az OpenPGP szabvány (RFC 9580) tartalmaz. A Twofish azonban kevésbé elterjedt, mint a Blowfish, amely már régebb óta elérhető.

Teljesítmény

A Twofish tervezése során a teljesítmény mindig is fontos tényező volt. Az algoritmust úgy tervezték, hogy többféle teljesítmény-kompromisszumot tegyen lehetővé, a titkosítási sebesség, a memóriahasználat, a hardverkapuk száma, a kulcsbeállítás és egyéb paraméterek fontosságától függően. Ez egy rendkívül rugalmas algoritmust eredményez, amely számos alkalmazásban megvalósítható.

A Twofish esetében számos tér-idő kompromisszumot lehet kötni, mind szoftveres, mind hardveres szinten. Egy ilyen kompromisszum példája lehet a körök alkulcsainak vagy s-dobozainak előzetes kiszámítása, ami a sebesség kétszeresére vagy annál is nagyobb mértékű növekedését eredményezheti. Ezek azonban azzal járnak, hogy több RAM szükséges a tárolásukhoz.

Az alábbi táblázatban szereplő becslések mind a meglévő 0,35 μm-es CMOS technológián alapulnak.

Hardveres kompromisszumok (128 bites kulcs)
Kapuszám h

blokkok

Órajelek

blokkonként

Csővezeték

szintek

Órajel Átviteli sebesség (Mbit/s) Indítási órajelek Megjegyzések
14000 1 64 1 40 MHz 80 4 alkulcsok menet közben
19000 1 32 1 40 MHz 160 40
23000 2 16 1 40 MHz 320 20
26000 2 32 2 80 MHz 640 20
28000 2 48 3 120 MHz 960 20
30000 2 64 4 150 MHz 1200 20
80000 2 16 1 80 MHz 640 300 S-box RAM-ok

Kriptoanalízis

1999-ben Niels Ferguson publikált egy lehetetlen differenciális támadást, amely 2256 lépéssel feltöri a 256 bites kulcsú változat 16 köréből 6-ot.

2000-től a Twofish blokk-titkosításra vonatkozó legjobb publikált kriptanalízis a teljes 16 körös változat csonkított differenciális kriptanalízise. A tanulmány szerint a csonkított differenciálok valószínűsége blokkonként 2−57,3, és körülbelül 251 kiválasztott nyílt szövegre (32 petabájt adat) van szükség ahhoz, hogy egy jó csonkított differenciálpárt találjunk.

Bruce Schneier egy 2005-ös blogbejegyzésében úgy reagált, hogy ez a cikk nem egy teljes kriptanalitikai támadást mutatott be, hanem csak néhány hipotetikus differenciális jellemzőt: „De még elméleti szempontból sem törhető meg a Twofish. 2000-es publikálása óta nem történt kiterjesztés ezekre az eredményekre.”

Jegyzetek

  1. ↑ "Impossible Differentials in Twofish". Schneier on Security (amerikai angol nyelven). Hozzáférés: 2026. május 23.
  2. ↑ "A Performance Comparison of the Five AES Finalists". Schneier on Security (amerikai angol nyelven). Hozzáférés: 2026. május 23.
  3. ↑ "Twofish Cryptanalysis Rumors". Schneier on Security (amerikai angol nyelven). 2005. november 23. Hozzáférés: 2026. május 23.

Fordítás

Ez a szócikk részben vagy egészben a Twofish című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

További információk