V kryptografii je Twofish bloková šifra se symetrickým klíčem o velikosti bloku 128 bitů a délce klíče až 256 bitů. Twofish podporuje konkrétně klíče o délce 128, 192 a 256 bitů a používá 16 kol šifrování.

Historie a soutěž AES

V roce 1997 vyhlásil NIST soutěž o nástupce DES pod názvem AES. Twofish byl jedním z pěti finalistů soutěže Advanced Encryption Standard, ale nebyl vybrán jako standard. Během soutěže a po ní prošel Twofish rozsáhlou veřejnou kryptoanalýzou.

Twofish je příbuzný starší blokové šifře Blowfish, ale obsahuje řadu nových konstrukčních prvků navržených pro vyšší odolnost a efektivitu. Mezi hlavní konstrukční body patří:

  • Feistelova struktura: Twofish používá částečně Feistelovu strukturu podobnou té z DES, zpracovává 128bitový blok přes 16 kol.
  • S-boxy závislé na klíči: S-boxy nejsou pevné, ale jsou předem vypočtené z klíče, takže se chování šifry mění s každým klíčem.
  • Whitening: Před a po kolech se provádí XOR s podklíči (tzv. input/output whitening), což zvyšuje odolnost proti některým typům útoků.
  • Pseudo-Hadamardova transformace (PHT): používá se v kombinaci se subfunkcemi pro šíření bitů (diffusion), prvek převzatý z rodiny šifer SAFER.
  • Matice MDS a Reed–Solomon kód: při konstrukci S-boxů a při klíčovém plánu se využívá MDS matice a technik podobných Reed–Solomonovým kódům pro zajištění silné difúze mezi bajty.

Klíčový plán je poměrně složitý: klíč se rozdělí na části, z nichž některé slouží k přípravě S-boxů a jiné k samotnému šifrování (subklíče a whitening). Celkem se zpravidla vygeneruje 40 32bitových podklíčů (včetně whitening klíčů a dvojic podklíčů pro každé kolo).

Bezpečnost a analýza

Twofish byl během AES soutěže a i po ní důkladně analyzován akademickou komunitou. Základní body bezpečnostního hodnocení:

  • Na plnou 16kolovou verzi Twofishu nejsou známy prakticky využitelné útoky, které by byly efektivnější než hrubá síla (brute force) pro doporučené délky klíčů (zejména 128/192/256 bitů).
  • Existují teoretické útoky a analýzy, které útočí na zredukovaný počet kol nebo používají speciální modely (např. diferenciální a lineární analýzy, některé sofistikované strukturované útoky), ale tyto útoky neohrožují plnou verzi v praxi.
  • Díky klíčově závislým S-boxům a dalším konstrukčním prvkům je Twofish odolný proti širokému spektru známých tříd útoků, avšak jako u každé kryptografické konstrukce zůstává důležitá další veřejná analýza a revize.

Výkon a implementace

Na většině softwarových platforem je Twofish o něco pomalejší než Rijndael (zvolený algoritmus pro Advanced Encryption Standard) pro 128bitové klíče, ale o něco rychlejší pro 256bitové klíče v některých implementacích. Výkon závisí na implementaci (tabulkové lookupy vs. bitově orientované operace), na procesorové architektuře a na tom, zda jsou využity optimalizace pro konkrétní platformu.

Twofish je efektivní v softwaru díky možnosti použít předpočítané tabulky S-boxů, což zrychluje šifrovací a dešifrovací operace, ale na moderních procesorech s hardwarovou akcelerací AES může být Rijndael/AES výrazně rychlejší.

Implementace v praxi a dostupnost

Algoritmus Twofish může používat kdokoli bez jakýchkoli omezení. Šifra Twofish nebyla patentována a softwarový příklad její specifikace byl zveřejněn. Díky tomu existují otevřené implementace v různých programových knihovnách a projektech. Twofish se objevil v některých aplikacích pro šifrování disku a souborů (např. mezi softwary pro šifrování disků byl historicky podporován v projektech jako TrueCrypt/VeraCrypt) a je součástí řady kryptografických knihoven a studijních implementací.

Závěr

Twofish je silná a flexibilní symetrická bloková šifra navržená s důrazem na bezpečnost a univerzálnost. Ačkoli nebyla vybrána jako AES, zůstává významným návrhem s otevřenou specifikací, bez patentových omezení a s široce dostupnými implementacemi a analýzami. Pro většinu moderních aplikací je dnes AES častější volbou z důvodu hardwarové podpory a konzistence standardů, ale Twofish může být vhodnou alternativou tam, kde je žádoucí jeho specifické vlastnosti či nezávislost na AES.