Twofish — simetrisks 128/256 bitu bloka šifrs, AES finālists

Twofish — drošs 128/256 bitu simetrisks bloka šifrs, AES finālists. Uzzini par arhitektūru, atslēgu režīmiem, veiktspēju un bezpatenta izmantošanu.

Autors: Leandro Alegsa

Kriptogrāfijā Twofish ir simetriskās atslēgas bloka šifrs ar 128 bitu bloka lielumu un atslēgas garumu līdz 256 bitiem. Twofish atbalsta atslēgu garumus 128, 192 un 256 bitu līmeņos.

1997. gadā NIST izsludināja konkursu, lai izvēlētos DES pēcteci, kas būtu pazīstams kā AES, Twofish bija viens no pieciem konkursa par Advanced Encryption Standard finālistiem, bet netika izvēlēts par standartu. Izvēlētais variants bija Rijndael, kas tagad tiek plaši saukts par AES.

Dizains un galvenās iezīmes

Twofish ir radniecīgs agrākajam blokķiprāfam Blowfish, taču ir ievērojami modernizēts un sarežģītāks. Galvenās dizaina iezīmes ir:

  • Feistela tipa struktūra ar 16 kārtām (rounds), kas nodrošina spēcīgu diferenciāciju starp bloku ievadi un izvadi, līdzīgi kā DES.
  • Atslēgas atkarīgas (key-dependent) un daļēji iepriekš aprēķinātas S-box, kas padara šifrēšanas transformācijas atkarīgas no konkrētās atslēgas un palielina pretestību pret vairākām klasiskām analīzes metodēm.
  • Pseido-Hadamarda transformācija (PHT) — elementāra lineāra apvienošanas operācija, ko Twofish izmanto datu sajaukšanai (ši elements ir aizgūts no SAFER šifru saimes).
  • MDS (Maximum Distance Separable) matricas izmantošana, lai panāktu labu izgaismošanas (diffusion) īpašību starp baitiem (baitu apmaiņas un multiplācijas operācijas Galois lauka laukā).
  • “Whitening” — šifrēšanas priekšā un beigās tiek piemērotas papildus XOR atslēgas (pre- un post-whitening), lai sarežģītu tiešu atslēgas izvilkšanu.
  • Atslēgas grafiks (key schedule), kas ģenerē aptuveni 40 32-bitu apakšatslēgas (subkeys): 8 apakšatslēgas whitening operācijām un 32 apakšatslēgas 16 kārtu darbībām (divas uz katru kārtu).

Tehniskais apraksts īsumā

Twofish darbu pamatā veido g-funkcija (g-function), kurā ienākošie 32 bitu vārdi tiek sadalīti baitos, katrs pats tiek transformēts ar atslēgas atkarīgajām S-boksēm, pēc tam baitu vektors reizina ar MDS matricu, lai nodrošinātu spēcīgu starpbaitu sajaukšanos. Rezultāts tiek apvienots ar PHT un apstrādāts Feistela kārtu mehānikā. Galvenā atslēga tiek sadalīta — viena daļa tiek izmantota kā faktiskā šifrēšanas atslēga, bet otra daļa tiek izmantota S-bokšu un atslēgu grafika modifikācijai, padarot S-bokses atslēgas atkarīgas.

Veiktspēja un implementācija

Twofish sākotnēji tika izstrādāts, domājot par programmatūras veiktspēju uz 32 bitu procesoriem, kur tabulu (lookup table) izmantošana un byte-orientētās operācijas ir efektīvas. Tomēr atslēgas atkarīgās S-bokses nozīmē, ka atslēgas sagatavošana (key setup) var būt dārgāka — S-bokšu aprēķināšana prasa laiku pirms šifrēšanas sākuma.

Vairumā programmatūras platformu Twofish ar 128 bitu atslēgām ir nedaudz lēnāks nekā Rijndael (izvēlētais algoritms Advanced Encryption Standard), bet 256 bitu atslēgām reizēm ir nedaudz ātrāks, jo Twofish atbalsta lielākas atslēgas bez būtiskas arhitektūras pārmaiņas. Aparatūras realizācijās (piem., specializēti čipi vai instrukciju paplašinājumi) rezultāti var atšķirties.

Drošība un kriptoanalīze

Twofish ir bijis plaši publiski analizēts kopš tā publicēšanas. Lielākā daļa kriptoanalīzes rezultātu attiecas uz samazinātu kārtu versijām vai uz specifiskiem uzbrukumu modeļiem (piem., related-key uzbrukumi). Lai gan pastāv teorētiski vājumi dažos analizētos modeļos, līdz šim nav zināms praktisks uzbrukums, kas pārspētu bruteforce pilnām 16 kārtām ar reāli realizējamu resursu apjomu. Tāpēc Twofish tiek uzskatīts par drošu mūsdienīgu bloka šifru, ja tiek izmantota pietiekami gara atslēga (īsākas atslēgas riskē ar bruteforce uzbrukumu).

Izmantošana un atbalsts

Twofish nav tik plaši izplatīts kā Blowfish vai AES, taču to atbalsta vairākas programmas un projekti. Piemēram, Twofish bija pieejams kā šifrēšanas variants šifrēšanas programmatūrā (ieskaitot populāras diska šifrēšanas programmas un paroļu glabāšanas rīkus), un to var atrast arī kā iespēju dažos atvērtā koda kriptogrāfijas rīkos. Daudzas atvērtā koda implementācijas un bibliotēkas nodrošina Twofish atbalstu vai ir pieejamas kā paplašinājumi.

Licencēšana

Twofish algoritmu ikviens var izmantot bez jebkādiem ierobežojumiem. Twofish šifrs nav patentēts, un tā specifikācijas programmatūras piemērs ir publiskots. Tas padara Twofish par pievilcīgu izvēli projektiem, kur prioritāte ir brīvi izmantojams un licenciāli nesaistīts algoritms.

Kopsavilkums

Twofish ir spēcīgs, rūpīgi izstrādāts bloka šifrs ar 128 bitu bloku un atslēgas garumiem līdz 256 bitiem, kas apvieno vairākas modernās konstrukcijas idejas (atslēgas atkarīgas S-bokses, MDS matricu, PHT, whitening). Lai gan tas netika izvēlēts par AES standartu, Twofish joprojām ir droša un brīvi izmantojama alternatīva ar atbalstu vairākās programmatūras realizācijās.

Kriptoanalīze

Kopš 2008. gada labākā publicētā Twofish bloka šifra kriptoanalīze ir pilnas 16 raundu versijas saīsinātā diferenciālā kriptoanalīze. Darbā apgalvots, ka saīsināto diferenču uzbrukumu varbūtība ir 2-57,3 uz bloku un ka, lai atrastu labu saīsināto diferenču pāri, ir nepieciešams aptuveni 251 izvēlēts vienkāršais teksts (32 PiB datu vērtība).

Brūss Šneiers (Bruce Schneier) 2005. gada bloga ierakstā atbild, ka šajā dokumentā nav sniegts pilns kriptoanalītisks uzbrukums, bet tikai dažas hipotētiskas atšķirīgas īpašības: "Taču pat no teorētiskā viedokļa Twofish nav pat ne tuvu uzlauzts. Kopš šo rezultātu publicēšanas 2000. gadā nav bijuši nekādi paplašinājumi".

Saistītās lapas

Jautājumi un atbildes

J: Kas ir Twofish?


A: Twofish ir simetriskās atslēgas bloka šifrs ar 128 bitu bloka lielumu un atslēgas garumu līdz 256 bitiem.

J: Kā Twofish ir saistīts ar agrāko bloka šifru Blowfish?


A.: Twofish galvenās iezīmes ir iepriekš aprēķinātu, no atslēgas atkarīgu S-kastīšu izmantošana un samērā sarežģīts atslēgas grafiks. Vienu pusi no n bitu atslēgas izmanto kā faktisko šifrēšanas atslēgu, bet otru pusi no n bitu atslēgas izmanto, lai modificētu šifrēšanas algoritmu (no atslēgas atkarīgie S-boxes).

J: Vai Twofish tika izvēlēts kā uzlabotais šifrēšanas standarts?


A: Nē, 1997. gadā NIST izsludināja konkursu, lai izvēlētos DES pēcteci, kas būtu pazīstams kā AES, tomēr Twofish netika izvēlēts par standartu.

J: Kādus elementus Twofish izmanto no citiem dizainparaugiem?


A: Twofish izmanto dažus elementus no citiem dizainiem, piemēram, pseidohadamarda transformāciju (PHT) no SAFER šifru saimes.

J: Vai tas izmanto Feistela struktūru kā DES?


A: Jā, tas izmanto Feistela struktūru kā DES.

J: Vai tas ir ātrāks par Rijndael 128 bitu atslēgām?


A: Vairumā programmatūras platformu Twofish 128 bitu atslēgām ir nedaudz lēnāks nekā Rijndael.

J: Vai 256 bitu atslēgām tas ir ātrāks par Rijndael?


A: 256 bitu atslēgām tas ir nedaudz ātrāks par Rijndael.


Meklēt
AlegsaOnline.com - 2020 / 2025 - License CC3