Luffa (hash-funktio)

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 26. huhtikuuta 2014 tarkistetusta versiosta . tarkastukset vaativat 16 muokkausta .
Luffa
Kehittäjät Dai Watanabe, Hisayoshi Sato, Christophe De Canniere
Luotu 2008
julkaistu 2008
Hash-koko 224, 256, 384, 512
Tyyppi hash-toiminto

Lúffa [1] (hash-funktio, lausutaan "luffa") on salausalgoritmi (algoritmien perhe) muuttuvan bitin pituuden hajauttamiseen , jonka ovat kehittäneet Dai Watanabe ,  Hisayoshi Sato Hitachi  Yokohama Research Laboratorysta ja Christophe De Cannière ( Niderl. Christophe De Cannière) ) Leuvenin katolisen yliopiston COSIC -tutkimusryhmältä ( en: COSIC ) osallistuakseen kilpailuun [2] , US National Institute of Standards and Technology ( NIST ). Lúffa on muunnos Guido Bertonin ym . ehdottamasta sienifunktiosta , jonka kryptografinen vahvuus perustuu vain taustalla olevan permutaation satunnaisuuteen . Toisin kuin alkuperäinen sienitoiminto , Lúffa käyttää useita rinnakkaisia ​​permutaatioita ja viestin injektiotoimintoja.   

NIST SHA-3 -kilpailuun osallistumisen historia [2]

Algoritmi Lúffa [6]

Viestien käsittely suoritetaan ketjulla pyöreitä sekoitustoimintoja, joilla on kiinteä tulo- ja lähtöpituus, joka on sienitoiminto . Ketju koostuu välisekoituslohkoista C' (pyöreät toiminnot) ja täydennyslohkosta C''. Pyöreät funktiot muodostuvat epälineaaristen permutaatioiden perheestä, niin kutsutuista askelfunktioista. Ensimmäisen kierroksen funktion syöte on : viestin ensimmäinen lohko ja alustusarvot , jossa  on permutaatioiden lukumäärä. -: nnen kierroksen syöttöparametrit ovat : edellisen kierroksen lähtö ja -:nnen viestilohkon syöttöparametrit .

Viestin valmistuminen

Sanoman , jonka pituus on enintään 256 bitin kerrannainen, lisääminen suoritetaan merkkijonolla , jossa nollien lukumäärä määritetään vertailusta

Alustus

Viestin ensimmäisen lohkon lisäksi vektorit annetaan alustusarvoina ensimmäisen kierroksen funktion sisääntulossa .

i j
0 yksi 2 3 neljä 5 6 7
0 0x6d251e69 0x44b051e0 0x4eaa6fb4 0xdbf78465 0x6e292011 0x90152df4 0xee058139 0xdef610bb
yksi 0xc3b44b95 0xd9d2f256 0x70eee9a0 0xde099fa3 0x5d9b0557 0x8fc944b3 0xcf1ccf0e 0x746cd581
2 0xf7efc89d 0x5dba5781 0x04016ce5 0xad659c05 0x0306194f 0x666d1836 0x24aa230a 0x8b264ae7
3 0x858075d5 0x36d79cce 0xe571f7d7 0x204b1f67 0x35870c6a 0x57e9e923 0x14bcb808 0x7cde72ce
neljä 0x6c68e9be 0x5ec41e22 0xc825b7c7 0xaffb4363 0xf5df3999 0x0fc688f1 0xb07224cc 0x03e86cea

Pyöreä funktio

Pyöreä funktio on viestin injektiofunktion MI ja permutaatiofunktion P peräkkäinen sovellus.

Viestin lisäystoiminnot

Viestin injektiofunktio voidaan esittää muunnosmatriisina renkaan yli . Luodaan kenttäpolynomia .

Viestin ruiskutustoiminnot

jossa numerot vastaavat vastaavasti polynomeja

Viestin ruiskutustoiminnot

Viestin ruiskutustoiminnot

Permutaatiofunktio

Epälineaarisella permutaatiofunktiolla on bittitulo, alipermutaation pituus on kiinteä Lúffa-spesifikaatiossa [6] , ; permutaatioiden määrä riippuu tiivisteen koosta ja näkyy taulukossa.

Hash pituus Permutaatioiden määrä
224 3
256 3
384 neljä
512 5

Permutaatiofunktio on 8-kertainen iteraatio askelfunktiosta viestin injektiofunktiosta saadun lohkon yli . Lohko esitetään 8 32-bittisenä sanana: . Vaihetoiminto koostuu kolmesta funktiosta: SubCrumb, MixWord, AddConstant.

Permutti(a[8], j){ //Permutaatio Q_j for (r = 0; r < 8; r++){ SubCrumb(a[0],a[1],a[2],a[3]); SubCrumb(a[5],a[6],a[7],a[4]); (k = 0; k < 4; k++) MixWord(a[k],a[k+4]); AddConstant(a, j, r); } } SubCrumb

SubCrumb  on toiminto, jolla korvataan l:nnet bitit S-laatikossa tai sitä pitkin , suorituksen tulos on korvaaminen , S-boxin indeksi saadaan ketjuttamalla vastaavat bitit : , bitit korvataan vastaavilla bitteillä seuraavaan kaavaan:

MixWord

MixWord  on lineaarinen permutaatiofunktio, joka ottaa ja syötteenä ; tulos on ja , saatu algoritmilla:

  1. , (<<< 2 - käännä vasemmalle 2 bittiä)
AddConstant

AddConstant  - toiminto, johon vakio lisätään

Vakioiden taulukko on Lúffa-määrityksen [6] liitteessä B.

Täydennyslohko

Sanomatiivistelmän muodostuksen viimeinen vaihe koostuu peräkkäisistä exit-funktion ja pyöreän funktion iteraatioista, joiden sisääntulossa on nollaviestilohko 0x00 0. Poistumisfunktio on kaikkien väliarvojen XOR, ja tuloksena on 256-bittinen sana . i : nnessä iteraatiossa tulosfunktion arvo määritetään muodossa

, missä , jos , muuten

Merkitään 32-bittisillä sanoilla , niin Lúffan tulosteet muodostuvat peräkkäin . Symboli "||" tarkoittaa ketjutusta.

Hash pituus Hash-arvo
224
256
384
512

Lúffa-224 hash on itse asiassa Lúffa-256 hash ilman viimeistä 32-bittistä sanaa.

Testivektorit [6]

Tiivistelmät viestistä "abc" eri hash -kooilla .

224 256 384 512
Z0.0 _ 0xf29311b8 0xf29311b8 0x9a7abb79 0xf4024597
Z0.1 _ 0x7e9e40de 0x7e9e40de 0x7a840e2d 0x3e80d79d
Z0.2 _ 0x7699be23 0x7699be23 0x423c34c9 0x0f4b9b20
Z 0,3 0xfbeb5a47 0xfbeb5a47 0x1f559f68 0x2ddd4505
Z0.4 _ 0xcb16ea4f 0xcb16ea4f 0x09bdb291 0xb81b8830
Z0.5 _ 0x5556d47c 0x5556d47c 0x6fb2e9ef 0x501bea31
Z0.6 _ 0xa40c12ad 0xa40c12ad 0xfec2fa0a 0x612b5817
Z 0,7 0x764a73bd 0x7a69881b 0xaae38792
Z 1.0 0xe9872480 0x1dcefd80
Z 1.1 0xc635d20d 0x8ca2c780
Z 1.2 0x2fd6e95d 0x20aff593
Z 1.3 0x046601a7 0x45d6f91f
Z 1.4 0x0ee6b2ee
Z 1.5 0xe113f0cb
Z 1.6 0xcf22b643
Z 1.7 0x81387e8a

Kryptanalysis

SHA-3- kilpailun toisella kierroksella Luffa-224 ja Luffa-256 osoittivat aluksi alhaista salausvoimakkuutta, ja onnistuneeseen hyökkäykseen vaadittiin viestejä. Sen jälkeen Dai Watanabe muokkasi algoritmia ja nimettiin Luffa v.2. Luffa v.2 [5] muutokset :

  • lisätty tyhjän kierroksen täydennystoiminto kaikille hash-kokoille
  • vaihdettu S-lohko
  • lisäsi askelfunktion toistojen määrää 7:stä 8:aan

Bart Preneel esitteli onnistuneen törmäyksen havaitsemishyökkäyksen [7] 4 kierrokselle Luffa stepping -toiminnolle hajautustoimintoja varten ja 5 kierrosta, mikä osoitti mitoituskestävyyden differentiaalisen törmäyksen havaitsemiseen.

Suorituskyky

Vuonna 2010 Thomas Oliviera ja Giulio Lopez tekivät menestyksekkään tutkimuksen [8] mahdollisuudesta parantaa Luffan alkuperäisen toteutuksen suorituskykyä. Algoritmin optimoidulla toteutuksella on 20 % suorituskyvyn lisäys Luffa-512 hashin laskennassa, kun se suoritetaan 1 säikeessä; Luffa-256/384:lle yksisäikeisen toteutuksen suorituskyvyn lisäys eri testeissä on korkeintaan 5 %. Testitulokset näkyvät taulukossa jaksoina tavua kohden :

  • 64-bittisillä alustoilla ilman SSE:tä:
Algoritmin toteutus Luffa-256 Luffa-384 Luffa-512
Alkuperäinen toteutus 2009
Yksisäikeinen toteutus 27 42 58
Thomas Oliviera 2010
Yksisäikeinen toteutus 24 42 46
Monisäikeinen toteutus kaksikymmentä 24 36
  • SSE:n käyttäminen:
Algoritmin toteutus Luffa-256 Luffa-384 Luffa-512
Alkuperäinen toteutus 2009
Yksisäikeinen toteutus 17 19 kolmekymmentä
Thomas Oliviera 2010
Yksisäikeinen toteutus viisitoista 16 24
Monisäikeinen toteutus viisitoista kahdeksantoista 25

Vertailun vuoksi, Keccakin ( SHA-3-kilpailun voittaja ) käyttöönotto testeissä [9] samankaltaisella prosessorilla käyttäen SSE:tä osoitti seuraavat tulokset: Keccak-256 - 15 c/b, Keccak-512 - 12 c/b .

Muistiinpanot

  1. Hash Function Family Luffa . Haettu 22. marraskuuta 2013. Arkistoitu alkuperäisestä 28. joulukuuta 2013.
  2. 12 NIST sha-3 kilpailu . Haettu 22. marraskuuta 2013. Arkistoitu alkuperäisestä 9. heinäkuuta 2011.
  3. 1 2 Toisen kierroksen ehdokkaita . Haettu 28. joulukuuta 2013. Arkistoitu alkuperäisestä 10. huhtikuuta 2012.
  4. Toinen SHA-3-ehdokaskonferenssi . Haettu 28. joulukuuta 2013. Arkistoitu alkuperäisestä 12. tammikuuta 2014.
  5. 1 2 Tilaraportti SHA-3:n toisesta kierroksesta . Haettu 28. joulukuuta 2013. Arkistoitu alkuperäisestä 14. maaliskuuta 2011.
  6. 1 2 3 4 Luffa Specification V.2.01 . Haettu 29. marraskuuta 2013. Arkistoitu alkuperäisestä 20. helmikuuta 2013.
  7. Törmäysten etsiminen vähennetylle Luffa-256 v2:lle . Käyttöpäivä: 4. tammikuuta 2014. Arkistoitu alkuperäisestä 20. helmikuuta 2013.
  8. Luffa Hash Algorithmin suorituskyvyn parantaminen . Haettu 28. joulukuuta 2013. Arkistoitu alkuperäisestä 21. maaliskuuta 2014.
  9. Keccak-sienitoimintoperhe: Ohjelmiston suorituskyky . Käyttöpäivä: 4. tammikuuta 2014. Arkistoitu alkuperäisestä 4. tammikuuta 2014.

Kirjallisuus

Linkit