SIMD | |
---|---|
Luotu | 2008 |
julkaistu | lokakuuta 2008 |
Hash-koko | 256 tai 512 bittiä |
Kierrosten lukumäärä | neljä |
Tyyppi | hash-toiminto |
SIMD on iteratiivinen kryptografinen hash-funktio , jonka ovat kehittäneet Gaëtan Leurent, Charles Bouillaguet ja Pierre-Alain Fouque. Hänet asetettiin ehdokkaaksi National Institute of Standards and Technologyn (USA) järjestämään SHA-3- standardikilpailuun , jossa hän pääsi toiselle kierrokselle [1] .
Hajautusfunktiosta on kaksi versiota, SIMD-256 ja SIMD-512, jotka muuntavat mielivaltaisen pituisen viestin 256- tai 512-bittiseksi hash-arvoksi, jota kutsutaan myös sanoman tiivisteeksi . Lisäksi on mahdollista määritellä SIMD-n-hajautusfunktiot SIMD-256- ja SIMD-512-funktioiden katkaisuiksi funktioille n<256 ja 256<n<512 [2] .
Tekijöiden mukaan hash-funktion pääominaisuus on viestin merkittävä laajennus, jonka avulla voit suojautua differentiaaliselta kryptausanalyysiltä [3] .
Pääosa hash-funktiosta h on pakkausfunktio . H(M) laskemiseksi sanoma M jaetaan k osaan , joissa kussakin on m bittiä. Pakkaustoimintoa : sovelletaan sitten iteratiivisesti viestin osiin . Alkutila tai alustusvektori on nimetty ja kiinteä jokaiselle SIMD-perhefunktiolle. Hajautusfunktion lopputulos saadaan soveltamalla viimeistelyfunktiota .
C-pakkaustoiminto Davis-Meier- tilassa rakennetaan yleensä käyttämällä lohkosalaustoimintoa : , mutta SIMD-hajautustoimintoon käytetään useita parannuksia.
SIMD-hajautusfunktioperhe käyttää seuraavia parametreja:
Hash-koko, n | Viestilohkon koko, m | Sisäinen tilakoko( ), s | |
---|---|---|---|
SIMD-256 | 256 | 512 | 512 |
SIMD-512 | 512 | 1024 | 1024 |
Sisäinen tila esitetään 32-bittisten sanojen 4x4 matriisina SIMD-256:lle ja 8x4:lle SIMD-512:lle.
SIMD-pakkaustoiminto perustuu Davis-Meyerin malliin, jossa on joitain muutoksia.
Ensinnäkin pakkaustoiminnon sijaan .
Toiseksi XOR-operaation sijasta SIMD:ssä ja SIMD:ssä käytetään useita Feistel-lisäkierroksia h syöttönäppäimenä. Tämän toiminnon suorittaa toiminto .
Näin ollen pakkausfunktio määritellään muodossa . SIMD-hajautusfunktion tekijöiden mukaan nämä muutokset tarjoavat saman turvallisuustason kuin alkuperäinen Davis-Meyer-suunnittelu, mutta samalla estävät tietyntyyppiset usean lohkon hyökkäykset [4] .
SIMD-256-hajautustoiminnon (vastaavasti SIMD-512) viestilaajennus muuntaa 512 bitin (vastaa 1024 bitin) viestilohkon 4096 bitin (vastaa 8192 bitin) laajennetuksi viestiksi, jonka vähimmäisetäisyys on 520 ( vastaavasti .1032).
Feistel-rakenteen käyttö SIMD-hajautusfunktiolla on rakennettu samalla tavalla kuin MD/SHA-hajautusfunktioiden perhe:
tai kätevämmässä muodossa:
SIMD-256:lle
SIMD-512:lle
jossa on looginen funktio, on modulo-lisäys ja vasen syklinen siirto bittiä kohden.
SIMD-256:ssa käytetään 4 rinnakkaista Feistel-solua (vastaavasti 8 SIMD-512:ssa), jotka ovat vuorovaikutuksessa toistensa kanssa permutaatioiden vuoksi . Permutaatiot valitaan hyvän sekoituksen varmistamiseksi.
SIMD-256:lle se on määritelty:
Vastaavasti SIMD-512:lle:
Yleensä pakkaustoiminto toimii 4 kierroksella, joista jokainen koostuu 8 vaiheesta (vaiheesta) sekä yhdestä ylimääräisestä viimeisestä kierroksesta.
Kun kaikki viestin lohkot on pakattu, tehdään toinen ylimääräinen pakkaustoimintokutsu syöttämällä viestin koko. Tällöin sanoman pituus lasketaan tarvittaessa bitteinä modulo.
Viimeiseen pakkaustoimintoon käytetään hieman muokattua viestin laajennusmenetelmää:
SIMD-256:lle käytetään .
Näin ollen SIMD-512:lle käytön sijaan
Siten viimeisen vaiheen laajennettu viestialue eroaa viestin runkolohkojen laajennetusta viestialueesta.
Kun viimeinen pakkaustoiminto on käytetty, tulos on seuraava merkkijonoesitys:
SIMD-256:lle
SIMD-512:lle
SIMD-n:n tapauksessa SIMD-256:n (n < 256) tai SIMD 512:n (256 < n < 512) ensimmäiset n bittiä tulostetaan. Esimerkiksi SIMD-384:lle lähtö on
Jokainen SIMD-perheen hash-funktio käyttää omaa IV-toimintoaan välttääkseen linkit eri SIMD-n-toimintojen lähtöjen välillä. SIMD-n-toiminnon IV on määritelty seuraavasti:
IV = SIMD-Compress(0, "SIMD-(i)" v1.0, 0) jossa merkkijono on ASCII -muodossa nolilla täytettynä ja (i) on n:n desimaaliesitys.
IV-arvot SIMD-perheen erilaisille hash-funktioille:
Algoritmin 2 osaa on muuttunut: permutaatiot ja sykliset siirtymät (rotaatiot) [5] .
Uusia permutaatioita valittaessa tiivistefunktion kirjoittajia ohjasivat seuraavat kriteerit:
SIMD-256. Alkuperäiset permutaatiot:
Uudet permutaatiot:
missä . Siten permutaatioiden määrä kasvoi kahdesta kolmeen.
SIMD-512. Alkuperäiset permutaatiot:
Uudet permutaatiot:
missä . Siten permutaatioiden määrä kasvoi 4:stä 7:ään.
Viesti M | SIMD-256(M) |
---|---|
Tyhjä viesti | 8029e81e7320e13ed9001dc3d8021fec695b7a25cd43ad805260181c35fcaea8 |
0x00; 0x01; 0x02; … 0x3f | 5bebdb816cd3e6c8c2b5a42867a6f41570c4b917f1d3b15aabc17f24679e6acd |
Viesti M | SIMD-512(M) |
---|---|
Tyhjä viesti | 51a5af7e243cd9a5989f7792c880c4c3168c3d60c4518725fe5757d1f7a69c63 66977eaba7905ce2da5d7cfd07773725f0935b55f3efb954996689a49b6d29e0 |
0x00; 0x01; 0x02; … 0x3f | 8851ad0a57426b4af57af3294706c0448fa6accf24683fc239871be58ca913fb ee53e35c1dedd88016ebd131f2eb0761e97a3048de6e696787fd5f54981d6f2c |
SIMD-algoritmin riippumattomat suorituskykytestit, jotka suoritettiin käyttämällä eBASH- vertailuarvoa , osoittivat seuraavat tulokset (nopeus ilmaistaan jaksoina tavua kohden ( cpb )) [8] [3] :
prosessori | Core i5 | Core 2 (45nm) | Core 2 (65nm) |
---|---|---|---|
SIMD-256 | 7,51 cbp | 9,18 cbp | 11,34 cbp |
SIMD-512 | 8,63 cbp | 10,02 cpb | 12,05 cpb |
Samaan aikaan noin puolet hash-funktion ajasta kuluu sanoman laajennusoperaatioon: Number-Theoretic Transform (NTT) on suorituskyvyn kannalta kallein osa algoritmia.
SIMD-pakkaustoiminnolla on osittain rinnakkaisarkkitehtuuri, jonka avulla voit luoda algoritmin tehokkaita toteutuksia käyttämällä vektoriohjeita ( SIMD ). Nämä ohjeet ovat saatavilla monille tunnetuille arkkitehtuureille : SSE x86 , AltiVec PowerPC , IwMMXt ARM .
RAM-vaatimusten osalta SIMD-hajautustoiminto tarvitsee muistia sisäisen tilan tallentamiseen (64 tavua SIMD-256:lle ja 128 tavua SIMD-512:lle) ja muistia NTT-lähtöarvoille (4*64 = 256 tavua SIMD-256:lle ja 4*128 = 512 tavua SIMD-512:lle).
SIMD-hajautustoimintoa ei valittu SHA-3-kilpailun finalistiksi.
Kilpailun asiantuntijat totesivat, että vaikka SIMD-hajautustoiminto toistaa suurelta osin MD/SHA-perheiden algoritmeja, tekijöiden tekemät parannukset todella mahdollistivat SIMD:n suojaamisen monentyyppisiltä hyökkäyksiltä (esimerkiksi törmäyshyökkäykseltä ). Lisäksi toiselle kierrokselle tehdyt muutokset pystyivät suojaamaan SIMD-hajautusfunktiota Mendelin ja Nadin suorittamalta differentiaaliselta kryptausanalyysiltä, jolle SIMD oli alttiina alkuperäisessä toteutuksessaan [9] .
Kuitenkin korkeat RAM -vaatimukset ja SIMD-ohjeiden saatavuus hyvää suorituskykyä varten tekevät hash-toiminnosta huonon ehdokkaan FPGA -toteutukseen [10] . Pääasiassa tästä syystä SIMD-hajautustoiminto ei päässyt kilpailun viimeiseen vaiheeseen.
Hash-funktiot | |
---|---|
yleinen tarkoitus | |
Kryptografinen | |
Avainten luontitoiminnot | |
Tarkista numero ( vertailu ) | |
Hashes |
|