Twofish – symmetriskt 128‑bitars blockchiffer och AES‑finalist (upp till 256‑bit)

Inom kryptografi är Twofish ett blockchiffer med symmetrisk nyckel med en blockstorlek på 128 bitar och nyckellängder på upp till 256 bitar (vanliga nyckellängder är 128, 192 och 256 bitar).

1997 utlyste NIST en tävling för att välja en efterföljare till DES som skulle kallas AES. Twofish var en av de fem finalisterna i tävlingen Advanced Encryption Standard, men valdes inte ut som standard (Rijndael blev vald år 2000). Twofish har ändå fortsatt att användas och studeras inom både praktisk kryptering och forskning.

Twofish är besläktat med det tidigare blockchiffret Blowfish. Twofishs främsta kännetecken är användningen av förberäknade nyckelberoende S-boxar och ett relativt komplicerat nyckelschema. En del av nyckeln används direkt som krypteringsnyckel medan andra delar används för att beräkna S‑boxarna och subnycklar som i praktiken ändrar själva krypteringsalgoritmens inre funktioner (nyckelberoende S‑boxar). Twofish använder vissa element från andra konstruktioner, till exempel pseudo‑Hadamard‑transformen (PHT) från SAFER‑familjen av chiffer, samt linjära transformeringar för bra spridning av nyckelbitar. Strukturellt bygger Twofish på en Feistel‑arkitektur liknande den som används i DES, med 16 rundor samt före‑ och efter‑whitening för att öka säkerheten.

Design och nyckelschema

Twofish konstruerades med fokus på flexibilitet och motståndskraft mot kända kryptanalytiska angrepp. Nyckelschemat genererar flera subnycklar som används både för de enskilda rundorna och för whitening (för- och efterblandning av data), och S‑boxarna beräknas från nyckeln så att de är anpassade till den valda nyckeln. Denna design ger ett gott skydd mot olika typer av analytiska attacker men innebär också en större kostnad i nyckeluppsättningstid (setup) eftersom S‑boxarna måste beräknas vid nyckelinitiering. I gengäld kan kryptering/avkryptering gå snabbare när dessa värden är förberäknade.

Prestanda

På de flesta mjukvaruplattformar är Twofish något långsammare än Rijndael (den valda algoritmen för Advanced Encryption Standard) för 128‑bitars nycklar, men kan vara konkurrenskraftigt eller snabbare för längre nycklar (t.ex. 256 bitar) beroende på implementation och om S‑boxar förberäknas. Twofish är väl lämpat för mjukvaruimplementationer och kan även implementeras i hårdvara, även om enkelheten i Rijndael ofta ger prestandafördelar för AES i många miljöer. Ett typiskt avvägande är snabbare nyckelinställning (AES) kontra mer omfattande nyckelberoende optimeringar (Twofish).

Säkerhet och kryptanalys

Twofish anses fortfarande vara säkert för praktisk användning; det finns inga kända praktiska attacker som bryter hela 16‑rundorsversionen under realistiska förutsättningar. Forskare har funnit vissa teoretiska och relaterade‑nyckelattacker mot reducerade varianter av Twofish, men inget som hotar fullversionens säkerhet i normala tillämpningar. Som med andra algoritmer bör man dock följa aktuell forskning och rekommendationer, och använda välgranskade implementationer.

Implementeringar och användning

Twofish finns implementerat i flera öppna och kommersiella kryptobibliotek och används som ett alternativ i olika krypteringsprogram och verktyg. Ett känt exempel är användningen av Twofish som ett valbart chiffer i diskkrypteringsprogram som TrueCrypt och efterföljaren VeraCrypt. Eftersom AES blev standarden för många organisationer är Twofish inte lika utbrett i standardiserade protokoll, men det fungerar som ett starkt alternativ där det stöds.

Sammanfattning

  • Twofish är ett 128‑bitars blockchiffer med stöd för nycklar upp till 256 bitar.
  • Det var en av fem finalister i NIST:s AES‑tävling, men valdes inte till standard.
  • Twofish kombinerar nyckelberoende S‑boxar, PHT och en Feistel‑struktur med ett komplext nyckelschema.
  • Algoritmen anses vara säker idag och används i vissa praktiska tillämpningar, men AES (Rijndael) är fortsatt dominerande som standard.

Skaparna

Twofish utformades av Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall och Niels Ferguson; det "utökade Twofish-teamet" som träffades för att göra ytterligare kryptoanalyser av Twofish och andra AES-konkurrenter inkluderade Stefan Lucks, Tadayoshi Kohno och Mike Stay.

Twofish-algoritmen är gratis för alla att använda utan några som helst begränsningar. Twofish-krypteringen har inte patenterats och mjukvaruexemplet för dess specifikation har placerats i den offentliga domänen. Twofish används dock inte i stor utsträckning, till skillnad från Blowfish, som har funnits tillgänglig under en längre tid.


 

Kryptoanalys

Sedan 2008 är den bästa publicerade kryptoanalysen av Twofish-blockchiffret en avkortad differentiell kryptoanalys av den fullständiga 16-rundiga versionen. I dokumentet hävdas att sannolikheten för attacker med trunkerad differentiell kod är 2-57.3 per block och att det kommer att krävas cirka 251 valda klartexter (32 PiB värde av data) för att hitta ett bra par trunkerade differentiella kodar.

Bruce Schneier svarar i ett blogginlägg från 2005 att det här dokumentet inte presenterar en fullständig kryptoanalytisk attack, utan endast några antagna differentiella egenskaper: "Men även ur ett teoretiskt perspektiv är Twofish inte ens i närheten av att brytas. Det har inte skett några utvidgningar av dessa resultat sedan de publicerades" år 2000.


 

Relaterade sidor


 

Ytterligare läsning

  • Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, Niels Ferguson (1998-06-15). "The Twofish Encryption Algorithm" (PDF/PostScript). Hämtad 2007-03-04. {{cite journal}}: Cite journal requires |journal= (help)CS1 maint: multiple names: authors list (link)
  • Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, Niels Ferguson (1999-03-22). Krypteringsalgoritmen Twofish: A 128-Bit Block Cipher. New York City: John Wiley & Sons. ISBN 0-471-35381-7.{{cite book}}: CS1 maint: multiple names: authors list (link)
 

Frågor och svar

F: Vad är Twofish?


S: Twofish är ett blockchiffer med symmetrisk nyckel med en blockstorlek på 128 bitar och nyckellängder på upp till 256 bitar.

F: Hur var Twofish relaterat till det tidigare blockchiffret Blowfish?


S: Twofishs viktigaste kännetecken är användningen av förberäknade nyckelberoende S-boxar och ett relativt komplicerat nyckelschema. Den ena halvan av en n-bit-nyckel används som den egentliga krypteringsnyckeln och den andra halvan av n-bit-nyckeln används för att ändra krypteringsalgoritmen (nyckelberoende S-boxar).

F: Valde man Twofish som en avancerad krypteringsstandard?


S: Nej, 1997 utlyste NIST en tävling för att välja en efterföljare till DES som skulle kallas AES, men Twofish valdes inte som standard.

F: Vilka element använder Twofish från andra konstruktioner?


S: Twofish använder vissa element från andra konstruktioner, t.ex. pseudo-Hadamard-transformen (PHT) från SAFER-familjen av chiffer.

F: Använder den Feistel-struktur som DES?


S: Ja, den använder Feistel-struktur som DES.

F: Är det snabbare än Rijndael för 128-bitarsnycklar?


S: På de flesta mjukvaruplattformar är Twofish något långsammare än Rijndael för 128-bitarsnycklar.

F: Är den snabbare än Rijndael för 256-bitarsnycklar?


S: Den är något snabbare än Rijndael för 256-bitarsnycklar.

AlegsaOnline.com - 2020 / 2025 - License CC3