Whirlpool (hash-toiminto)

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 25. helmikuuta 2022 tarkistetusta versiosta . tarkastukset vaativat 2 muokkausta .
Whirlpool
Kehittäjät Vincent Rayman ,
Barreto
Ensimmäinen julkaistu marraskuuta 2000
Standardit NESSIE Portfolio ( 2003 ), ISO/IEC 10118-3:2004 ( 2004 )
Hash-koko 512-bittinen
Kierrosten lukumäärä kymmenen
Tyyppi hash-toiminto

Whirlpool  on Vincent Raymanin ja Paulo Barreton kehittämä kryptografinen hash-funktio . Julkaistu marraskuussa 2000 . Tiivistää syöttöviestin enintään bitin pituiseksi . Hajautusfunktion Whirlpool - hajautusarvo on 512 bittiä.

Historia

Otsikko

Whirlpoolin hash-funktio on nimetty Whirlpool Galaxyn (M51) mukaan Canis Houndsin tähdistössä  , joka on ensimmäinen galaksi, jossa on havaittavissa oleva spiraalirakenne.

Muutokset

Sen perustamisesta vuonna 2000 lähtien Whirlpoolia on muutettu kahdesti.

Ensimmäinen versio, Whirlpool-0, esitetään ehdokkaana NESSIE-projektissa ( eng.  New European Schemes for Signatures, Integrity and Encryption , uudet eurooppalaiset projektit digitaalisesta allekirjoituksesta , eheydestä ja salauksesta).

Whirlpool-0:n muunnos, nimeltään Whirlpool-T, lisättiin NESSIE:n suositusten salaustoimintojen luetteloon vuonna 2003 . Muutokset koskivat Whirlpoolin korvauslohkoa ( S-box ): ensimmäisessä versiossa S-box-rakennetta ei kuvattu ja se generoitiin mielivaltaisesti, mikä aiheutti tiettyjä ongelmia Whirlpoolin laitteistototeutuksessa. Whirlpool-T-versiossa S-box "hanki" selkeän rakenteen.

Taizō Shirain ja Kyoji Shibutanin [1] havaitsema Whirlpool-T-diffuusimatriisien vika korjattiin myöhemmin, ja lopullinen (kolmas) versio, lyhennettynä Whirlpool, hyväksyttiin ISO :ssa ISO/IEC:ssä. 10118-3:2004 vuonna 2004.

Kuvaus

Pääversio - hash-funktiot - on kolmas; toisin kuin ensimmäisessä versiossa, S-laatikko on määritelty ja hajamatriisi korvataan uudella Shirain ja Shibutanin raportin [1] jälkeen .

Whirlpool koostuu pakkaustoiminnon uudelleenkäytöstä , joka perustuu erityiseen 512-bittiseen lohkosalaukseen 512-bittisellä avaimella.

Algoritmi käyttää operaatioita Galois'n kentässä moduloi redusoitumattoman polynomin .

Polynomit kirjoitetaan heksadesimaalimuodossa lyhyyden vuoksi. Esimerkiksi merkintä tarkoittaa .

Symbolia käytetään osoittamaan funktiosarjan koostumusta : tai yksinkertaisesti

Tietomuoto

Whirlpool on rakennettu erityiseen lohkosalaukseen , joka toimii 512-bittisen tiedon kanssa.

Muunnoksissa hash -laskennan välitulosta kutsutaan hash-tilaksi tai yksinkertaisesti tilaksi . Laskennassa tilaa edustaa yleensä tilamatriisi . Whirlpoolille tämä on matriisi . Siksi 512-bittiset tietolohkot on muunnettava tähän muotoon ennen lisälaskelmia. Tämä saavutetaan ottamalla käyttöön toiminto :

Yksinkertaisesti sanottuna tilamatriisi täytetään tiedoilla rivi riviltä. Tässä tapauksessa matriisin jokainen tavu on vastaava polynomi .

Muutokset

Epälineaarinen muunnos (S-box)

Toiminto koostuu korvauslaatikon ( S-box ) soveltamisesta rinnakkain tilamatriisin kaikkiin tavuihin:

Korvauslohko on kuvattu seuraavassa korvaustaulukossa:

Taulukko 1. Korvauslohko

Syklinen permutaatio

Permutaatio kiertää tilamatriisin jokaista saraketta siten, että sarake siirtyy alaspäin :

Tämän muunnoksen tehtävänä on sekoittaa tilamatriisirivien tavut keskenään.

Lineaarinen diffuusio

Lineaarinen diffuusio  on lineaarinen muunnos, jonka matriisi on MDS-matriisi , eli:


niin

Toisin sanoen tilamatriisi kerrotaan oikealta matriisilla . Muista, että matriisielementtien yhteen- ja kertolaskutoiminnot suoritetaan .

MDS-matriisi  on sellainen äärellisen kentän matriisi, että jos se otetaan lineaarisen muunnoksen matriisinaavaruudesta avaruuteen ,niinmissä tahansa kahdessa näkymäavaruuden vektorissaon ainakineroja komponenteissa. Toisin sanoen joukko näkymävektoreitamuodostaa koodin, jolla on enimmäisvälin ominaisuus ( englanniksi Maximum Distance Separable code ). Tällainen koodi on esimerkiksi Reed-Solomon-koodi .  

Whirlpoolissa MDS-matriisin maksimidiversiteettiominaisuus tarkoittaa, että vektorin ja vektorin vaihtuvien tavujen kokonaismäärä on vähintään . Toisin sanoen mikä tahansa muutos vain yhteen tavuun johtaa muutoksen kaikkiin 8 tavuun . Tämä on lineaarisen diffuusion ongelma .

Kuten edellä mainittiin, Whirlpoolin uusimman (kolmannen) version MDS-matriisia on muokattu Taizo Shirain ja Kyoji Shibutanin[1] artikkelin ansiosta . He analysoivat Whirlpoolin toisen version MDS-matriisia ja osoittivat mahdollisuuden parantaa Whirlpoolin vastustuskykyä differentiaalista kryptausanalyysiä vastaan . He ehdottivat myös 224 ehdokasta uuteen MDS-matriisiin. Tästä luettelosta Whirlpoolin kirjoittajat valitsivat laitteistoon helpoimmin toteutetun vaihtoehdon.

Avaimen lisääminen

Avainten summausfunktio on tilan ja avainmatriisien bittikohtainen yhteenlasku ( XOR ) :

Pyöreät vakiot

Jokainen kierros käyttää vakiomatriisia siten, että:

Tämä osoittaa, että matriisin ensimmäinen rivi on tulosta korvauslohkon soveltamisesta tavunumeroihin .

Loput 7 riviä ovat nollia.

Pyöreä funktio

Jokaisella kierroksella kierrosfunktio  on yhdistelmämuunnos , jonka parametri on avainmatriisi . Pyöreä toiminto on kuvattu seuraavasti:

Avaimen laajennus

Jokaisella kierroksella tarvitaan 512-bittinen salausavain . Tämän ongelman ratkaisemiseksi monet algoritmit ottavat käyttöön niin sanotun avaimen laajennusmenettelyn . Whirlpoolissa avainlaajennus toteutetaan seuraavasti:

Siten tunnetusta avaimesta tuotetaan vaadittu näppäinsarja jokaiselle lohkosalauksen kierrokselle .

Estä salaus

Erityinen 512-bittinen lohkosalaus käyttää 512-bittistä avainta parametrina ja suorittaa seuraavan muunnossarjan:

jossa avaimet luodaan yllä kuvatulla avaimenlaajennusmenettelyllä . Whirlpool - hajautusfunktiossa kierrosten määrä on .

Täydennetään syöttöviestiä

Whirlpoolin, kuten minkä tahansa muun tiivistefunktion , on tiivistettävä mielivaltaisen pituinen viesti. Koska sisäinen salauslohko toimii 512-bittisten syöttöviestien kanssa, alkuperäinen viesti on jaettava 512-bittisiksi lohkoiksi. Tässä tapauksessa viimeinen lohko, joka sisältää viestin lopun, voi olla epätäydellinen.

Tämän ongelman ratkaisemiseksi Whirlpool käyttää Merkle-Damgor-syöttöviestin lisäysalgoritmia . Viestin valmistumisen tulos on viesti, jonka pituus on 512:n kerrannainen. Olkoon  alkuperäisen viestin pituus. Sitten se selviää useassa vaiheessa:

  1. Lisää viestin loppuun bitti "1".
  2. Määritä bitit "0" niin, että vastaanotetun merkkijonon pituus on parittoman monta kertaa.
  3. Määritä lopuksi 256-bittinen numeroesitys .

Täydennetty viesti on kirjoitettu muodossa

ja jaettu 512-bittisiksi lohkoiksi jatkokäsittelyä varten.

Pakkaustoiminto

Whirlpool käyttää Preneel-

täytetyn viestin lohkot salataan peräkkäin lohkosalauksella :


missä ( eng. alustusvektori , alustusvektori ) on 512-bittinen merkkijono, joka on täytetty luvulla "0".  

Hash-laskenta

Viestitiivistelmä on pakkausfunktion lähtöarvo , joka muunnetaan takaisin 512-bittiseksi merkkijonoksi:

Turvallisuus

Hajautusfunktion sanotaan olevan kryptografisesti turvallinen , jos se täyttää kolme perusvaatimusta, joihin useimmat salausfunktioiden sovellukset perustuvat : peruuttamattomuus , tyypin 1 törmäyskestävyys ja tyypin 2 törmäyskestävyys .

Antaa olla 512-bittisen Whirlpool - tiivisteen  mielivaltainen bittimerkkijono . Whirlpoolin kirjoittajat väittävät, että heidän luomansa hash-funktio täyttää seuraavat kryptografisen vahvuuden vaatimukset :

Whirlpoolin kirjoittajat lisäsivät huomautuksen tähän lausuntoon:

Nämä lausunnot johtuvat merkittävästä turvamarginaalista kaikkia tunnettuja hyökkäyksiä vastaan. Ymmärrämme kuitenkin, että on mahdotonta antaa ei-spekulatiivisia lausuntoja tuntemattomista asioista.

Cryptanalysis

Tähän mennessä WHIRLPOOL on vastustuskykyinen kaikentyyppisille kryptausanalyysille . Whirlpoolin kahdeksan vuoden olemassaolon aikana ei ole kirjattu yhtään hyökkäystä sitä vastaan.

Kuitenkin vuonna 2009 julkaistiin uusi menetelmä hyökätä hash-funktioihin  - The Rebound Attack [2] [3] . Uuden hyökkäyksen ensimmäiset "marsut" olivat hash-funktiot Whirlpool ja Grøstl . Suoritetun krypta -analyysin tulokset on esitetty taulukossa.

Taulukko 2. Whirlpool- ja Grøstl - hajautusfunktioiden kryptausanalyysin tulokset The Rebound Attack -menetelmällä [2] [3]
hash-toiminto Kierrosten lukumäärä Monimutkaisuus Vaadittu määrä muistia Törmäystyyppi
Whirlpool törmäys
puolivapaa törmäys
puolivapaa lähes törmäys
Grøstl-256 puolivapaa törmäys

Tutkimuksen tekijät käyttivät seuraavia käsitteitä ja termejä:

Törmäystyypit : _

  • törmäys :
    •  - korjattu
  • melkein törmäys :
  • puolivapaa törmäys :
  • vapaa törmäys :


Kuten taulukosta näkyy, onnistuimme synnyttämään törmäyksen Whirlpoolille vain sen "leikatulla" 4,5 kierroksen versiolla. Lisäksi tarvittavien laskelmien monimutkaisuus on melko korkea.

Sovellus

Whirlpool on vapaasti käytettävissä oleva hash-toiminto . Siksi sitä käytetään laajasti avoimen lähdekoodin ohjelmistoissa . Tässä on joitain esimerkkejä Whirlpoolin käytöstä:

Esimerkkejä tiivisteistä

Mukavuussyistä Whirlpool-hajautusarvon 512 bittiä (64 tavua) esitetään usein 128-numeroisena heksadesimaalilukuna.

Kuten edellä mainittiin, algoritmiin on tehty kaksi muutosta vuoden 2000 julkaisun jälkeen. Alla on esimerkkejä tiivisteistä, jotka on laskettu ASCII - tekstistä : Nopea ruskea kettu hyppää laiskan koiran pangramin yli kaikille kolmelle Whirlpoolin versiolle:

Whirlpool-0("Nopea ruskea kettu hyppää laiskan koiran yli") = 4F8F5CB531E3D49A61CF417CD133792CCFA501FD8DA53EE368FED20E5FE0248C 3A0B64F98A6533CEE1DA614C3A8DDEC791FF05FEE6D971D57C1348320F4EB42D Whirlpool-T("Nopea ruskea kettu hyppää laiskan koiran yli") = 3CCF8252D8BBB258460D9AA999C06EE38E67CB546CFFCF48E91F700F6FC7C183 AC8CC3D3096DD30A35B01F4620A1E3A20D79CD5168544D9E1B7CDF49970E87F1 Whirlpool("Nopea ruskea kettu hyppää laiskan koiran yli") = B97DE512E91E3828B40D2B0FDCE9CEB3C4A71F9BEA8D88E75C4FA854DF36725F D2B52EB6544EDCACD6F8BEDDFEA403CB55AE31F03AD62A5EF54E42EE82C3FB35

Jopa pieni muutos viestin alkuperäisessä tekstissä (tässä tapauksessa yksi kirjain korvataan: merkki "d" korvataan merkillä "e") johtaa täydelliseen muutokseen hashissa :

Whirlpool-0("Nopea ruskea kettu hyppää laiskan egon yli") = 228FBF76B2A93469D4B25929836A12B7D7F2A0803E43DABA0C7FC38BC11C8F2A 9416BBCF8AB8392EB2AB7BCB565A64AC50C26179164B26084A253CAF2E012676 Whirlpool-T("Nopea ruskea kettu hyppää laiskan egon yli") = C8C15D2A0E0DE6E6885E8A7D9B8A9139746DA299AD50158F5FA9EECDDEF744F9 1B8B83C617080D77CB4247B1E964C2959C507AB2DB0F1F3BF3E3B299CA00CAE3 Whirlpool("Nopea ruskea kettu hyppää laiskan egon yli") = C27BA124205F72E6847F3E19834F925CC666D0974167AF915BB462420ED40CC5 0900D85A1F923219D832357750492D5C143011A76988344C2635E69D06F2D38C

Merkkien lisääminen merkkijonoon, merkkijonojen yhdistäminen ja muut muutokset vaikuttavat myös tulokseen.

Esimerkkejä "nolla"-merkkijonon tiivisteistä :

Whirlpool-0("") = B3E1AB6EAF640A34F784593F2074416ACCD3B8E62C620175FCA0997B1BA23473 39AA0D79E754C308209EA36811DFA40C1C32F1A2B9004725D987D3635165D3C8 Whirlpool-T("") = 470F0409ABAA446E49667D4EBE12A14387CEDBD10DD17B8243CAD550A089DC0F EEA7AA40F6C2AAAB71C6EBD076E43C7CFCA0AD32567897DCB5969861049A0F5A Whirlpool("") = 19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A7 3E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3

Esimerkkejä ohjelmoinnista

Suoritusaika Koodi Tulos
PHP 5.0 echo hash('whirlpool', 'testi'); b913d5bbb8e461c2c5961cbe0edcdadfd29f068225ceb37da6defcf89849368f 8c6c2eb6a4c4ac75775d032a0ecfdfe8550573062b653fe92fc7b8fb3b7be8d6
rubiini asettaa Whirlpool.calc_hex('test') b913d5bbb8e461c2c5961cbe0edcdadfd29f068225ceb37da6defcf89849368f 8c6c2eb6a4c4ac75775d032a0ecfdfe8550573062b653fe92fc7b8fb3b7be8d6

Muistiinpanot

  1. 1 2 3 Kyoji, Shibutani; Shirai, Taizo. Whirlpool-hajautusfunktiossa käytetystä diffuusiomatriisista  : päiväkirja . - 2003. - 11. maaliskuuta.  
  2. 1 2 Florian Mendel, Christian Rechberger, Martin Schläffer, Søren S. Thomsen. The Rebound Attack: Cryptanalysis of Reduced Whirlpool ja Grøstl  ( 24. helmikuuta 2009). — uuden kryptausanalyysimenetelmän esittely ja sen sovellus Whirlpool- ja Grøstl- hajautusfunktioiden kryptausanalyysiin . Haettu 25. kesäkuuta 2019. Arkistoitu alkuperäisestä 28. syyskuuta 2011.
  3. 1 2 Florian Mendel, Christian Rechberger, Martin Schläffer, Søren S. Thomsen. The Rebound Attack: Cryptanalysis of Reduced Whirlpool ja Grøstl  (englanniksi) (2009). - artikkeli uudesta krypta-analyysimenetelmästä ja sen soveltamisesta Whirlpool- ja Grøstl- hajautusfunktioiden kryptausanalyysiin . Haettu 25. kesäkuuta 2019. Arkistoitu alkuperäisestä 18. marraskuuta 2018.

Linkit

  • Whirlpoolin  kotisivut . - Whirlpoolin kotisivu. Haettu 25. kesäkuuta 2019. Arkistoitu alkuperäisestä 29. marraskuuta 2017.

Standardit

  •  ISO/IEC 10118-3 : 2004 -standardi . — ISO/IEC 10118-3:2004 -standardi. Käyttöönottopäivä: 25.6.2019.
  • NESSIE  (englanniksi) . - Englanti.  Uudet eurooppalaiset allekirjoitusten, eheyden ja salauksen järjestelmät , uudet eurooppalaiset hankkeet digitaalisen allekirjoituksen, eheyden ja salauksen alalla. Käyttöönottopäivä: 25.6.2019.
  • Suositeltujen kryptografisten primitiivien  salkku . — luettelo NESSIE-salaustoiminnoista, joita suositellaan käytettäväksi. Käyttöönottopäivä: 25.6.2019.

Ohjelmistototeutukset

Laitteistototeutukset

  •  Whirlpool - hajautustoiminnon tehokas arkkitehtuuri ja laitteistototeutus . - Tehokas Whirlpoolin laitteistototeutus. IEEE Transactions on Consumer Electronics -artikkeli. Haettu 18. marraskuuta 2009. Arkistoitu alkuperäisestä 29. helmikuuta 2012.
  • Whirlpool Hash Functionin  nopea rinnakkaisarkkitehtuuri . - Whirlpoolin nopea rinnakkaisarkkitehtuuri. Artikkeli julkaisussa International Journal of Advanced Science and Technology , Issue 7, June 2009. Haettu 18. marraskuuta 2009. Arkistoitu alkuperäisestä 29. helmikuuta 2012.