Twofish – symmetrinen 128-bittinen lohkosalaus ja AES-finalisti
Twofish: 128-bittinen symmetrinen lohkosalaus, AES-finalisti. Nopea ja turvallinen vaihtoehto, joka käyttää avainriippuvaisia S-boxeja ja vahvaa avaimen aikataulua.
Kryptografiassa Twofish on symmetrisen avaimen lohkosalaus, jonka lohkokoko on 128 bittiä ja avaimen pituus enintään 256 bittiä.
Vuonna 1997 NIST julisti kilpailun DES:n seuraajan valitsemiseksi nimellä AES, Twofish oli yksi Advanced Encryption Standard -kilpailun viidestä finalistista, mutta sitä ei valittu standardiksi.
Twofish on sukua aiemmalle lohkosalakirjoitukselle Blowfish. Twofishin pääpiirteet ovat ennalta laskettujen, avaimesta riippuvaisten S-boxien käyttö ja suhteellisen monimutkainen avaimen aikataulu. Toista puolta n-bittisestä avaimesta käytetään varsinaisena salausavaimena ja toista puolta n-bittisestä avaimesta käytetään salausalgoritmin muuttamiseen (avaimesta riippuvaiset S-boxit). Twofish käyttää joitakin elementtejä muista malleista, esimerkiksi SAFER-salakirjoitustyypin pseudo-Hadamard-muunnosta (PHT). Twofish käyttää samaa Feistel-rakennetta kuin DES.
Useimmilla ohjelmistoalustoilla Twofish on hieman hitaampi kuin Rijndael (Advanced Encryption Standard -algoritmi) 128-bittisten avainten osalta, mutta hieman nopeampi 256-bittisten avainten osalta.
Suunnittelu, tekijät ja historia
Twofish suunniteltiin osana AES-kilpailua ja sen pääsuunnittelijoita olivat Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall ja Niels Ferguson. Algoritmi julkaistiin avoimesti kilpailua varten, ja sen toteutukset ovat vapaasti käytettävissä ilman lisenssimaksuja tai patenttivaatimuksia.
Tekniset ominaisuudet
- Lohkokoko: 128 bittiä.
- Avaimen pituus: tuki 128, 192 ja 256 bittiä (yhteensä jopa 256 bittiä).
- Rakenne: 16 kierroksen Feistel-verkko.
- Allekirjoitetut avaimet ja valmisteet: Twofish käyttää yhteensä 40 32-bittistä alikäyttöavainta — yleensä 8 avainta whitenausta varten ja 32 kierrosavainta (kaksi 32-bittistä arvoa per kierros).
- Avaimsidonnaiset S-boxit: S-boxit lasketaan avaimesta käyttäen kiinteitä permutaatioita (ns. Q-boxit) ja matriisimuunnoksia (esim. MDS-matriisi). Tämä tekee S-boxeista avainkohtaisia ja lisää kokonaisuuden monimutkaisuutta.
- Diffuusio ja sekoitus: Twofish hyödyntää PHT (pseudo-Hadamard transform), MDS-matriisia ja muita tavanomaisia lohkosalauskomponentteja tarjotakseen vahvan diffuusion ja hajautuksen.
Avaimen aikataulu ja S-boxien muodostus
Twofishin avainlaajennus (key schedule) on suunniteltu antamaan paitsi kierrosavaimia myös avainsidonnaisia S-boxeja. Avain pilkotaan osiin, joista osa toimii suoraan kierrosavaimena ja osa prosessoidaan muodostaakseen S-boxien lähtöaineiston. Tämä kaksijakoinen rakenne (osa avaimesta suoraan alikajoiksi, osa S-boxien lähteeksi) on yksi Twofishin tunnusmerkeistä ja sen suojamekanismeista.
Turvallisuus ja kryptanalyysi
Twofishia on tutkittu laajasti. Kokonaisesta 16-kierroksisesta Twofishista ei ole löytynyt käytännössä toteutettavissa olevia murtoja, ja se on edelleen yleisesti pidetty turvallisena lohkosalausalgoritmina. Kuten monille moderneille algoritmeille, myös Twofishille on esitetty teoreettisia hyökkäyksiä tai parannuksia käytännön läpimurtoihin liittyen, mutta nämä koskevat yleensä:
- vähennettyjen kierrosten variantteja (reduced-round),
- avainriippuvia tai relación-avain (related-key) -hyökkäyksiä, jotka eivät vastaa tyypillisiä, itsenäisiä avainkäyttötapauksia,
- sivu-kanava- ja ajoitusperusteisia hyökkäyksiä toteutuksissa, jos niitä ei suojata asianmukaisesti.
Yhteenvetona: Twofishin perussuunnittelu on kestänyt ajan ja sille ei ole löytynyt käytännöllistä heikkoutta, joka uhkaisisi sen käyttöä normaalissa salauskäytössä.
Suorituskyky ja toteutukset
Alkuperäisessä arvioinnissa Twofish oli yleisesti hieman hitaampi kuin Rijndael (sittemmin valittu AES:ksi) etenkin 128-bittisellä avaimella, mutta se voi olla kilpailukykyisempi tai nopeampi 256-bittisillä avaimilla joillakin alustoilla johtuen avainvapautuksista ja optimointimahdollisuuksista. Nykyisissä ympäristöissä, joissa on laitteistotuki AES-operaatioille (esim. AES-NI x86-arkkitehtuurissa), AES voi olla huomattavasti nopeampi, joten käytännön valinnoissa se vaikuttaa paljon.
Twofishille on olemassa useita avoimen lähdekoodin toteutuksia ja kirjastoja, ja se on ollut vaihtoehtona useissa salausohjelmissa ja -työkaluissa (esimerkiksi tiedostojen ja levyn salaustyökalut). Koska Twofish ei ole patentoitu, se on soveltuva vaihtoehto avoimen lähdekoodin ratkaisuissa.
Käyttötapaukset
- Tiedostojen ja levyjen salaus (esim. useissa salaustyökaluissa tarjolla vaihtoehtona).
- Yleinen lohkosalausratkaisuna kirjastoissa ja sovelluksissa, joissa halutaan vaihtoehto AES:lle.
- Sovellukset, joissa halutaan hyödyntää avainsidonnaisia S-boxeja ja monimutkaista avainajastusta.
Yhteenveto
Twofish on moderni, 128-bittinen lohkosalaus, joka tarjoaa joustavia avainpituuksia (jopa 256 bittiä), avaimesta riippuvat S-boxit ja 16-kierroksisen Feistel-rakenteen. Se oli vahva ehdokas AES-kilpailussa ja on edelleen turvallinen ja käyttökelpoinen vaihtoehto erityisesti tilanteissa, joissa halutaan vaihtoehtoinen algoritmi AES:lle tai jossa patenttivapaus on tärkeää. Valinta Twofishin ja AES:n välillä riippuu usein suorituskyvystä laitteistossa (esim. AES-NI) sekä toteutuksen ja käyttötapauksen vaatimuksista.
Luojat
Twofishin suunnittelivat Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall ja Niels Ferguson; Twofishin ja muiden AES-kilpailijoiden kryptoanalyysin jatkamiseksi kokoontuneeseen "laajennettuun Twofish-tiimiin" kuuluivat Stefan Lucks, Tadayoshi Kohno ja Mike Stay.
Twofish-algoritmi on vapaasti kaikkien käytettävissä ilman minkäänlaisia rajoituksia. Twofish-salausalgoritmia ei ole patentoitu, ja sen määrittelyä kuvaava ohjelmistoesimerkki on asetettu julkiseen käyttöön. Twofishia ei kuitenkaan käytetä laajalti, kuten Blowfishia, joka on ollut saatavilla jo pidemmän aikaa.
Cryptanalysis
Vuodesta 2008 lähtien paras julkaistu Twofish-lohkosalakirjoituksen kryptoanalyysi on lyhennetty differentiaalinen kryptoanalyysi täydestä 16-kierroksisesta versiosta. Kirjoituksessa väitetään, että typistettyjen differentiaalihyökkäysten todennäköisyys on 2-57.3 lohkoa kohti ja että hyvän typistettyjen differentiaalien parin löytämiseen tarvitaan noin 251 valittua tavutekstiä (32 PiB:n verran dataa).
Bruce Schneier vastaa vuonna 2005 julkaistussa blogikirjoituksessaan, että tässä artikkelissa ei esitetä täydellistä kryptoanalyyttistä hyökkäystä, vaan ainoastaan joitakin oletettuja eroavia ominaisuuksia: "Mutta edes teoreettisesta näkökulmasta katsottuna Twofish ei ole edes etäisesti rikki. Näihin tuloksiin ei ole tehty mitään laajennuksia sen jälkeen, kun ne julkaistiin vuonna 2000".
Aiheeseen liittyvät sivut
- Blowfish (salakirjoitus)
- Advanced Encryption Standard
- Tietojen salausstandardi
Lisälukemista
- Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, Niels Ferguson (1998-06-15). "Twofish-salausalgoritmi" (PDF/PostScript). Haettu 2007-03-04.
{{cite journal}}: Cite journal requires|journal=(help)CS1 maint: multiple names: authors list (link) (link) - Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, Niels Ferguson (1999-03-22). Twofish-salausalgoritmi: A 128-Bit Block Cipher. New York: Wiley & Sons. ISBN 0-471-35381-7.
{{cite book}}: CS1 maint: multiple names: authors list (linkki).
Kysymyksiä ja vastauksia
Q: Mikä on Twofish?
V: Twofish on symmetrisen avaimen lohkosalaus, jonka lohkokoko on 128 bittiä ja avaimen pituus enintään 256 bittiä.
K: Miten Twofish liittyy aiempaan lohkosalakirjoitukseen Blowfish?
V: Twofishin pääpiirteet ovat ennalta laskettujen, avaimesta riippuvaisten S-boxien käyttö ja suhteellisen monimutkainen avainohjelma. Toista puolta n-bittisestä avaimesta käytetään varsinaisena salausavaimena ja toista puolta n-bittisestä avaimesta käytetään salausalgoritmin muuttamiseen (avaimesta riippuvaiset S-boxit).
Kysymys: Onko Twofish valittu kehittyneeksi salausstandardiksi?
V: Ei, vuonna 1997 NIST julisti kilpailun DES:n seuraajan valitsemiseksi, joka tunnettaisiin nimellä AES, mutta Twofishia ei valittu standardiksi.
K: Mitä elementtejä Twofish käyttää muista malleista?
V: Twofish käyttää joitakin elementtejä muista malleista, esimerkiksi SAFER-salakirjoitustuoteperheen pseudo-Hadamard-muunnosta (PHT).
K: Käytetäänkö siinä Feistel-rakennetta kuten DES:ssä?
V: Kyllä, se käyttää Feistel-rakennetta kuten DES.
K: Onko se nopeampi kuin Rijndael 128-bittisille avaimille?
V: Useimmilla ohjelmistoalustoilla Twofish on hieman hitaampi kuin Rijndael 128-bittisillä avaimilla.
K: Onko se nopeampi kuin Rijndael 256-bittisille avaimille?
V: Se on jonkin verran nopeampi kuin Rijndael 256-bittisille avaimille.
Etsiä