Twofish - 128/256 bites blokkos titkosítás, AES-versenyző ismertető

Twofish: nyílt, szabadon használható 128/256 bites blokkos titkosítás — AES-versenyző, kulcsfüggő S-dobozokkal, erős kulcsütemezéssel és hatékony, biztonságos alternatívával.

Szerző: Leandro Alegsa

A kriptográfiában a Twofish egy szimmetrikus kulcsú, blokkos titkosítás, amelynek blokkmérete 128 bit, a kulcs hossza pedig legfeljebb 256 bit lehet (gyakran használt kulcsméretek: 128 és 256 bit).

Háttér és történet

1997-ben a NIST versenyt hirdetett a DES utódjának kiválasztására AES néven. A Twofish az Advanced Encryption Standard verseny öt döntősének egyike volt, de végül nem választották ki szabványnak (a győztes az akkor kiválasztott Rijndael lett).

A Twofish tervezői: Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall és Niels Ferguson. A tervezés után egy kibővített csoport (amelyhez Stefan Lucks, Tadayoshi Kohno és Mike Stay is tartozott) további AES-versenyzők és a Twofish kriptoanalízisével foglalkozott.

Tervezés és működés

A Twofish rokona a korábbi Blowfish blokkos titkosításnak, de több modernebb elemet is alkalmaz. Főbb jellemzői:

  • Feistel-struktúra: a Twofish ugyanazt a Feistel-szerkezetet használja, mint a DES, azaz az adatblokk felosztva és többször egymásra alkalmazott kört (rundot) használ.
  • Rundok száma: a Twofish tipikusan 16 fordulaton (round) keresztül dolgozik.
  • Kulcsfüggő S-dobozok: a Twofish előre kiszámított, a kulcstól függő S-dobozokat alkalmaz, amelyek a titkosítás során nem statikus táblák, hanem a kulcsmaterialból származtatott, speciális leképezések.
  • Komplex kulcsütemezés: a bemeneti kulcsból több előfeldolgozott al-kulcs és S-doboz-állapot származik, amelyeket a titkosítási körök és a be-/kikitöltés (whitening) során használnak.
  • Matematikai elemek: a Twofish felhasználja több korábbi ötletet is, például a SAFER családból ismert pszeudo-Hadamard-transzformációt (PHT), valamint MDS (Maximum Distance Separable) mátrixműveleteket és Reed–Solomon alapú kulcskerék-származtatást a S-dobozok létrehozásához.
  • Kulcskiegészítés (key whitening): a bemenet és a kimenet egyes részeit a kulcstól származtatott értékekkel XOR-olják, ez növeli a teljes struktúra ellenállását a bizonyos típusú támadásokkal szemben.

Teljesítmény és implementáció

A Twofish különböző platformokon eltérően teljesít. Általánosan elmondható, hogy

  • a legtöbb szoftverplatformon 128 bites kulcsok esetén a Twofish valamivel lassabb, mint a Rijndael (az AES választott algoritmusa),
  • viszont 256 bites kulcsok használatakor sok implementációnál a Twofish hatékonyabb lehet.

A Twofish implementálható mind szoftverben, mind hardverben; a kulcsfüggő S-dobozok előre számítása javíthatja a futási sebességet, de megnöveli a memóriakövetelményt. Számos kriptográfiai könyvtár és implementáció elérhető referenciaként, a forráskódot a tervezők és közösség több helyen közzétette.

Biztonság és kriptoanalízis

A Twofishről több kriptoanalitikus munka látott napvilágot. Fontosabb pontok:

  • a teljes, 16 körös Twofishre nincs ismert gyakorlatban alkalmazható gyengeség vagy gyorsabb általános támadás, mint a nyers kulcsterjesztés (brute-force) – a legjobb ismert kriptoanalitikus eredmények általában redukált körszámú változatokra vonatkoznak;
  • különböző elméleti és redukált-round támadások (pl. differenciál- és lineáris kriptoanalízis variánsai, bizonyos típusú kapcsolt-kulcs támadások) publikálódtak, de ezek nem adtak életképes módszert a teljes Twofish megtörésére;
  • mint minden blokkos titkosításnál, a gyakorlatban a biztonságot nemcsak a magát a blokkkódot, hanem a használati mód (módusok: CBC, CTR, GCM, XTS stb.), a kulcskezelés, valamint a véletlenszámok és kezdeti vektorok helyes használata határozza meg.

Licenc, szabad felhasználás és elterjedtség

A Twofish algoritmust bárki szabadon, mindenféle korlátozás nélkül használhatja. A Twofish titkosítást nem szabadalmaztatták, és a specifikációját tartalmazó szoftverpéldányt közkinccsé tették. Emiatt sok projekt számára vonzó volt alternatívát jelenteni az AES mellett.

Ennek ellenére a Twofish nem vált olyan széles körben használt de facto szabvánnyá, mint egyes más algoritmusok (például a Blowfish, amely már hosszabb ideje elérhető, illetve az AES/Rijndael). A döntésnél gyakran szerepet játszott az AES széleskörű szabványosítása és az interoperabilitás.

Alkalmazási javaslatok

Ha új rendszert tervez, érdemes szem előtt tartani:

  • interoperabilitás és szabványok miatt gyakran az AES az első választás;
  • a Twofish jó, erős alternatíva lehet, ha szabad, szabadalmaztatás-mentes megoldásra van szükség, vagy ha adott alkalmazásnál a Twofish teljesítmény- és memóriaprofilja előnyösebb;
  • mindig használjon jól bevált működési módokat (pl. AEAD módokat, ha integritás is fontos), és gondoskodjon biztonságos kulcskezelésről, véletlenszám-generálásról és helyes paddingról.

Összefoglalva: a Twofish egy jól megtervezett, erős blokkos titkosítási algoritmus, amely gazdag elméleti hátteret és több gyakorlati implementációt is kínál. Bár az AES lett a hivatalos szabvány, a Twofish továbbra is használható és biztonságos alternatíva marad speciális esetekben.

Cryptanalysis

2008 óta a Twofish blokkos titkosítás legjobb közzétett kriptoanalízise a teljes 16 körös változat csonka differenciális kriptoanalízise. A cikk azt állítja, hogy a csonka differenciálok támadásának valószínűsége blokkonként 2-57,3, és hogy körülbelül 251 kiválasztott egyszerű szöveg (32 PiB értékű adat) szükséges ahhoz, hogy egy jó pár csonka differenciál párat találjunk.

Bruce Schneier egy 2005-ös blogbejegyzésben válaszol, hogy ez a cikk nem egy teljes kriptoanalitikai támadást mutat be, hanem csak néhány feltételezett differenciális jellemzőt: "De a Twofish még elméleti szempontból sem tört el még csak távolról sem. A 2000-es publikálás óta nem történt semmilyen kiterjesztés ezekre az eredményekre".

Kapcsolódó oldalak

Kérdések és válaszok

K: Mi az a Kéthal?


V: A Twofish egy szimmetrikus kulcsú blokkos titkosítás, amelynek blokkmérete 128 bit, a kulcs hossza pedig legfeljebb 256 bit lehet.

K: Hogyan kapcsolódik a Twofish a korábbi Blowfish blokkos titkosításhoz?


V: A Twofish fő jellemzői az előre kiszámított kulcsfüggő S-dobozok használata és egy viszonylag összetett kulcsütemezés. Az n bites kulcs egyik fele a tényleges titkosítási kulcs, az n bites kulcs másik fele pedig a titkosítási algoritmus módosítására szolgál (kulcsfüggő S-dobozok).

K: A Twofish-t választották fejlett titkosítási szabványnak?


V: Nem, 1997-ben a NIST versenyt hirdetett a DES utódjának kiválasztására, amely AES néven vált volna ismertté, azonban a Twofish-t nem választották ki szabványnak.

K: Milyen elemeket használ a Twofish más tervekből?


V: A Twofish más tervezetek egyes elemeit használja; például a SAFER kódolócsaládból származó pszeudo-Hadamard-transzformációt (PHT).

K: Használ Feistel-struktúrát, mint a DES?


V: Igen, a DES-hez hasonlóan Feistel-struktúrát használ.

K: Gyorsabb, mint a Rijndael 128 bites kulcsok esetén?


V: A legtöbb szoftverplatformon a Twofish 128 bites kulcsok esetén valamivel lassabb, mint a Rijndael.

K: 256 bites kulcsok esetén gyorsabb, mint a Rijndael?


V: 256 bites kulcsok esetén valamivel gyorsabb, mint a Rijndael.


Keres
AlegsaOnline.com - 2020 / 2025 - License CC3