Twofish — symetryczny szyfr blokowy 128/256-bit, finalista AES

Twofish — zaawansowany, darmowy szyfr blokowy 128/256-bit; finalist AES, szybki dla kluczy 256‑bit, bez patentów — bezpieczna alternatywa dla Rijndael i Blowfish.

Autor: Leandro Alegsa

W kryptografii Twofish to symetryczny szyfr bloku klucza o wielkości bloku 128 bitów i długości klucza do 256 bitów.

W 1997 roku NIST ogłosiła konkurs na następcę DES o nazwie AES, Twofish był jednym z pięciu finalistów konkursu Advanced Encryption Standard, ale nie został wybrany jako standard.

Twofish jest spokrewniony z wcześniejszym szyfrem blokowym Blowfish. Główne cechy Twofish to użycie wstępnie obliczonych, zależnych od klucza S-boxów oraz stosunkowo złożony harmonogram kluczy. Jedna połowa n-bitowego klucza jest używana jako rzeczywisty klucz szyfrujący, a druga połowa n-bitowego klucza jest używana do modyfikacji algorytmu szyfrującego (S-boxy zależne od klucza). Twofish używa niektórych elementów z innych konstrukcji; na przykład transformacji pseudohadamardowej (PHT) z rodziny szyfrów SAFER. Twofish używa tej samej struktury Feistela co DES.

Na większości platform programowych Twofish jest nieco wolniejszy niż Rijndael (wybrany algorytm dla Advanced Encryption Standard) dla kluczy 128-bitowych, ale nieco szybszy dla kluczy 256-bitowych.

Twofish został zaprojektowany przez Bruce'a Schneiera, Johna Kelsey'a, Douga Whitinga, Davida Wagnera, Chrisa Hall'a i Nielsa Fergusona; "poszerzony zespół Twofish", który spotkał się, aby dokonać dalszej kryptoanalizy Twofish i innych zawodników AES, w tym Stefana Lucksa, Tadayoshi Kohno i Mike'a Stay'a.

Algorytm "Twofish" jest darmowy dla każdego bez żadnych ograniczeń. Szyfr Twofish nie został opatentowany, a programowy przykład jego specyfikacji został umieszczony w domenie publicznej. Jednakże, Twofish nie jest szeroko używany tak jak Blowfish, który był dostępny przez dłuższy okres czasu.

Budowa i kluczowe elementy

Twofish to 16-rundowa sieć typu Feistel (16 rund), zaprojektowana tak, aby łączyć wysoką wydajność z odpornością na znane typy ataków kryptograficznych. Najważniejsze elementy konstrukcji to:

  • Rozmiar bloku: 128 bitów.
  • Długość klucza: do 256 bitów (standardowo obsługiwane konfiguracje 128/192/256 bitów).
  • S-boxy zależne od klucza: cztery 8×8 S-boxy tworzone na podstawie fragmentów klucza — dzięki temu działanie substytucji zależy od klucza szyfrującego.
  • MDS (Maximum Distance Separable) matrix: macierz 4×4 używana do dyfuzji wyników operacji na bajtach, co zwiększa odporność na ataki liniowe i różnicowe.
  • Q-permutacje (q0, q1): nierotacyjne permutacje bajtów użyte przy konstrukcji S-boxów.
  • Pseudo-Hadamard Transform (PHT): prosta operacja liniowa (pochodna z konstrukcji SAFER) stosowana w funkcjach mieszających.
  • Whitening: maskowanie danych wejściowych i wyjściowych za pomocą dodatkowych subkluczy (input i output whitening), co utrudnia ataki brute-force i analizy strukturalne.

Harmonogram kluczy i subklucze

Harmonogram kluczy Twofish generuje łącznie 40 32-bitowych subkluczy: 8 subkluczy do whiteningu (wejściowego i wyjściowego) oraz 32 subkluczy używanych w rundach (po dwa na rundę). Proces generacji subkluczy obejmuje transformacje przy użyciu komponentów takich jak Q-permutacje, MDS i operacje na słowach klucza, dzięki czemu subklucze są ściśle powiązane z całym kluczem głównym.

Funkcja rundy

Funkcja rundy (często opisywana jako funkcja F lub g) wykorzystuje S-boxy zależne od klucza, operacje XOR, PHT i mnożenie przez macierz MDS. W typowej rundzie dwie połowy bloku są przetwarzane przez tzw. funkcję F, wyniki są mieszane przez PHT, a następnie części są poddawane rotacji i XOR-owaniu z subkluczami — charakterystyczne dla struktury Feistela podejście zapewnia silną dyfuzję i substytucję.

Bezpieczeństwo i kryptanaliza

Twofish przeszedł szeroką analizę kryptograficzną zarówno podczas trwania konkursu AES, jak i później. Kilka istotnych uwag:

  • Do tej pory nie wykryto praktycznego ataku łamiącego pełne 16 rund Twofish, który byłby szybszy niż brute-force dla poprawnie użytego klucza o pełnej długości.
  • W literaturze opublikowano różne analizy i ataki na zredukowaną liczbę rund (np. studia dotyczące bezpieczeństwa dla mniejszej liczby rund lub w modelu related-key), co jest typowe przy analizie szyfrów blokowych.
  • Projektanci uwzględnili odporność na ataki różnicowe i liniowe poprzez zastosowanie zależnych od klucza S-boxów, MDS i PHT, a także przez stosowanie whiteningu.

Podsumowując: Twofish uważany jest za bezpieczny w praktycznych zastosowaniach, o ile stosowane są odpowiednio długie losowe klucze i poprawne tryby pracy. Jednak w praktyce częściej wybierany jest AES (Rijndael) ze względu na standaryzację i szeroką adopcję.

Wydajność i zastosowania

Wydajność Twofish zależy od platformy i implementacji:

  • Na wielu implementacjach programowych Twofish bywa nieco wolniejszy niż Rijndael dla kluczy 128-bitowych, ale może być konkurencyjny lub szybszy dla konfiguracji 256-bitowych — zależnie od optymalizacji i zestawu instrukcji procesora.
  • Twofish był i jest dostępny w kilku narzędziach i projektach kryptograficznych — np. jako opcja w niektórych implementacjach GPG/PGP oraz w narzędziach do szyfrowania dysków takich jak TrueCrypt/VeraCrypt (często jako wariant z mieszaniem z AES lub innymi szyframi).

Implementacje i licencja

Autorzy udostępnili specyfikację i przykładowe implementacje publicznie. Jak wspomniano wcześniej, algorytm nie jest opatentowany, a niektóre realizacje znalazły się w domenie publicznej. Dzięki temu Twofish może być używany swobodnie w oprogramowaniu otwartoźródłowym i komercyjnym bez opłat licencyjnych.

Podsumowanie

Twofish to przemyślana konstrukcja szyfru blokowego oferująca bezpieczeństwo i elastyczność (klucze do 256 bitów, S-boxy zależne od klucza, silne mechanizmy dyfuzji). Mimo że nie został wybrany jako standard AES, pozostaje wartościowym kandydatem w zastosowaniach, gdzie preferuje się alternatywy dla Rijndael. Ze względu na szeroką analizę i brak praktycznych łamań pełnej wersji, Twofish można uznać za bezpieczny wybór, choć w praktyce większość systemów i protokołów wykorzystuje dziś AES z powodu standaryzacji i lepszej integracji sprzętowej.

Kryptoanaliza

Od 2008 roku najlepiej opublikowaną kryptoanalizą na szyfrie bloku Twofish jest obcięta kryptoanaliza różnicowa w pełnej 16-okrągłej wersji. W artykule stwierdzono, że prawdopodobieństwo ataku obciętych dyferencjałów wynosi 2-57,3 na blok i że znalezienie dobrej pary obciętych dyferencjałów zajmie około 251 wybranych plaintextów (32 PiB danych).

Bruce Schneier odpowiada w jednym z wpisów na blogu z 2005 roku, że artykuł ten nie przedstawia pełnego kryptoanalitycznego ataku, a jedynie pewne hipotetyczne cechy różnicowe: "Ale nawet z teoretycznego punktu widzenia, Twofish nie jest nawet zdalnie złamany. Nie było żadnych rozszerzeń tych wyników od czasu ich opublikowania" w 2000 roku.

Powiązane strony

Pytania i odpowiedzi

P: Co to jest Twofish?


A: Twofish to szyfr blokowy z kluczem symetrycznym o wielkości bloku 128 bitów i długości klucza do 256 bitów.

P: W jaki sposób Twofish jest powiązany z wcześniejszym szyfrem blokowym Blowfish?


O: Główne cechy szyfru Twofish to wykorzystanie wstępnie obliczonych S-boxów zależnych od klucza oraz stosunkowo skomplikowany rozkład klucza. Jedna połowa n-bitowego klucza jest używana jako właściwy klucz szyfrujący, a druga połowa n-bitowego klucza jest używana do modyfikacji algorytmu szyfrowania (skrzynki S zależne od klucza).

P: Czy Twofish został wybrany jako Advanced Encryption Standard?


O: Nie, w 1997 r. NIST ogłosił konkurs na następcę DES, który będzie znany jako AES, jednak Twofish nie został wybrany jako standard.

P: Jakie elementy wykorzystuje Twofish z innych projektów?


O: Twofish wykorzystuje pewne elementy z innych konstrukcji; na przykład pseudo-hadamardową transformatę (PHT) z rodziny szyfrów SAFER.

P: Czy wykorzystuje strukturę Feistela, tak jak DES?


O: Tak, wykorzystuje strukturę Feistela, tak jak DES.

P: Czy jest szybszy niż Rijndael dla kluczy 128-bitowych?


O: Na większości platform programowych Twofish jest nieco wolniejszy niż Rijndael dla kluczy 128-bitowych.

P: Czy jest szybszy niż Rijndael dla 256-bitowych kluczy?


O: Jest nieco szybszy niż Rijndael dla kluczy 256-bitowych.


Przeszukaj encyklopedię
AlegsaOnline.com - 2020 / 2025 - License CC3