Sienifunktio - Sponge function

Kuva sienen rakenteesta
Sienen rakenne hash-toimintoihin. P i ovat syöttöjonon lohkot, Z i on hajautetut lähtölohkot.

In salakirjoitus , joka on sieni funktio tai sienellä rakentaminen on mikä tahansa luokan algoritmeja , joilla on rajallinen sisäinen tila , joka ottaa syötteenä bittivirran ilman pituus ja tuottaa lähtöbittivirran minkä pituinen tahansa. Sienifunktioilla on sekä teoreettinen että käytännöllinen käyttö. Niitä voidaan käyttää mallia tai toteuttamaan monia kryptografisia , kuten tiivisteitä , viesti autentikointikoodeja , maski sukupolven toimintoja , salausjonon , pseudo-satunnaislukugeneraattorit , ja todennettu salaus .

rakentaminen

Sienifunktio on rakennettu kolmesta osasta:

  • valtion muisti, S , joka sisältää b bittiä,
  • toiminto, joka muuttaa tilamuistin (usein se on tila-arvojen näennäissatunnainen permutaatio )
  • pehmustetoiminto P

Tilamuisti on jaettu kahteen osaan: yksi koon r (bittinopeus) ja loput osan koosta c (kapasiteetti). Näitä osioita on merkitty vastaavasti R ja C.

Täytefunktio lisää riittävästi bittejä syöttöjonoon niin, että pehmustetun sisääntulon pituus on koko bittinopeuden r rikki . Pehmustettu tulo voidaan siten hajottaa r- bittisiksi lohkoiksi.

Operaatio

Sienifunktio toimii seuraavasti:

  • Tila S alustetaan nollaan
  • Syöttömerkkijono on pehmustettu. Tämä tarkoittaa, että sisääntulo muutetaan r- bittisiksi lohkoiksi täyttöfunktion P avulla .
  • jokaiselle pehmustetun tulon r- bittilohkolle B :
    • R korvataan R XOR B: llä (käyttämällä bittiä XOR )
    • S korvataan f ( S )

Tämä prosessi "imee" (on sieni metafora) kaikki lohkot pehmustettu syötteen.

Sienifunktiotulos on nyt valmis tuottamaan ("puristettu") seuraavasti:

  • tilamuistin R- osa tulostetaan
  • toista, kunnes tulostetaan tarpeeksi bittejä:
    • S korvataan f ( S )
    • tilamuistin R- osa tulostetaan

Jos jäljelle jää vähemmän kuin r bittiä, niin R katkaistaan ​​(vain osa R: stä tulostetaan).

Toinen metafora kuvaa tilamuistin " entrooppipooliksi ", jonka tulo "kaadetaan" pooliin, ja muunnosfunktiota kutsutaan "entrooppialtaan sekoittamiseksi".

Huomaa, että syöttöbittejä ei koskaan XORORERoida tilamuistin C- osaan, eikä C: n bittejä koskaan lähetetä suoraan. Se, missä määrin C muuttaa tuloa, riippuu täysin muunnosfunktiosta f. Hajasovelluksissa resistenssi törmäyksille tai esikuvien hyökkäyksille riippuu C: stä , ja sen koko ("kapasiteetti" c ) on tyypillisesti kaksi kertaa haluttu vastus.

Kaksipuolinen rakenne

On myös mahdollista imeä ja puristaa vuorotellen. Tätä toimintoa kutsutaan duplex-rakenteeksi tai duplexing-palveluksi. Se voi olla yhden pass-todennetun salausjärjestelmän perusta.

  • Tila S alustetaan nollaan
  • R on XOR- syötteen ensimmäisellä r- bittisellä lohkolla
  • S korvataan f ( S )
  • R on nyt lähtö ensimmäisen r bittiä.
  • R on XOR- syötteen seuraavalla r- bittisellä lohkolla
  • S korvataan f ( S )
  • R on nyt lähdön seuraava r bitti.
  • ...

Korvaa tila

XOR-operaatiot on mahdollista jättää huomiotta imeytymisen aikana, samalla kun valittu turvataso säilytetään . Tässä tilassa absorboivassa vaiheessa tulon seuraava lohko korvaa tilan R- osan. Tämä mahdollistaa pienemmän tilan pitämisen vaiheiden välillä. Koska R- osa korvataan joka tapauksessa, se voidaan hylätä etukäteen, vain C- osa on säilytettävä.

Sovellukset

Sienifunktioilla on sekä teoreettinen että käytännöllinen käyttö. Teoreettisessa kryptoanalyysissä satunnainen sienifunktio on sienen rakenne, jossa f on satunnainen permutaatio tai muutos, tapauksen mukaan. Satunnaiset sienifunktiot kaappaavat enemmän salauksen primitiivien käytännön rajoituksia kuin laajalti käytetty satunnainen oraaklimalli , erityisesti äärellinen sisätila.

Sienen rakennetta voidaan käyttää myös rakentamaan käytännöllisiä salausprimaateja. Esimerkiksi NIST on valinnut voittajaksi SHA-3-kilpailussa Keccak-salaussienen , jonka tila on 1600-bittinen . Keccakin vahvuus johtuu sen kirjoittajien kehittämästä monimutkaisesta, monipuolisesta permutaatiosta f . RC4 -redesign kutsutaan Spritz viittaa sieni-konstrukti määrittää algoritmin.

Toisessa esimerkissä sienifunktiota voidaan käyttää rakentamaan todennettu salaus niihin liittyvien tietojen kanssa (AEAD).

Viitteet