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ámh blokkokÓrajelek blokkonkéntCsővezeték szintekÓrajelÁtviteli sebesség (Mbit/s)Indítási órajelekMegjegyzések14000164140 MHz804alkulcsok menet közben19000132140 MHz1604023000216140 MHz3202026000232280 MHz64020280002483120 MHz96020300002644150 MHz12002080000216180 MHz640300S-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
Fordítás
További információk
Twofish weboldal, teljes specifikációkkal, ingyenes forráskódlal és más Twofish erőforrásokkal - Bruce Schneier 256 bites kódok - Twofish referencia-befektetés és származékos kód A Twofish használatával készült termékek - Bruce Schneier sci.crypt: Jobb algoritmus: Rijndael vagy TwoFish? - sci.crypt Általános kriptográfiai algoritmus nevezés: Twofish
Kategória:Kriptográfia