SWIFFT

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 6. helmikuuta 2021 tarkistetusta versiosta . tarkastukset vaativat 3 muokkausta .
SWIFFT
Kehittäjät Vadim Lyubashevsky, Daniel Michiancio, Chris Peikert, Alon Rosen
Luotu 2008
julkaistu 2008
Tyyppi hash-toiminto

SWIFFT on joukko kryptografisia hajautusfunktioita, joiden turvallisuus on todistettu [1] [2] [3] . Ne perustuvat FFT ( Fast  Fourier Transform ) -muunnokseen ja käyttävät LLL-reduced bases -algoritmia . SWIFFT-funktioiden kryptografinen turvallisuus (asymptoottisessa mielessä) [4] on matemaattisesti todistettu käyttämällä suositeltuja parametreja [5] . Törmäysten löytäminen SWIFFT:ssä on pahimmassa tapauksessa vähintään yhtä aikaa vievää kuin lyhyiden vektoreiden löytäminen syklisistä/ ideaaleista hiloista . SWIFFT:n käytännön soveltaminen on arvokasta juuri niissä tapauksissa, joissa törmäyskestävyys on erityisen tärkeää. Esimerkiksi digitaaliset allekirjoitukset, joiden on säilyttävä luotettavina pitkään.

Tämä algoritmi tarjoaa noin 40 Mb/s suorituskyvyn Intel Pentium 4 -prosessorilla kellotaajuudella 3,2 GHz [6] [1] . SWIFFT:ssä käytetyn FFT:n nopeuttamiseksi on tehty tutkimusta [7] . Tämän seurauksena algoritmin nopeus kasvoi yli 13 kertaa [6] . Tämä SWIFFT-toteutus osoittautui nopeammaksi kuin yleisesti käytettyjen hash-funktioiden toteutukset [8] .

Vuoden 2012 National Institute of Standards and Technology [2] -kilpailussa SWIFFTX:ää (SWIFFT:n muunnos) ehdotettiin SHA-3 :ksi (korvaamaan vanhemman SHA-2:n ja erityisesti SHA-1:n [9] ), mutta se hylättiin ensimmäinen kierros [10] .

Työn kuvaus

SWIFFT-funktiot voidaan kuvata yksinkertaisena algebrallisena lausekkeena jonkin polynomirenkaan yli [1] [11] . Toimintojen perhe riippuu kolmesta pääparametrista : olkoon potenssi 2, - pieni kokonaisluku ja - ei välttämättä alkuluku , mutta se on parempi valita alkuluku. Määrittelemme sen muodon renkaaksi . Esimerkiksi polynomien rengas , jonka kertoimet ovat kokonaislukuja, on luku, jolla suoritamme modulo-jaon, ja . Alku voi olla alemman asteen polynomi kertoimilla alkaen .

Määritelty funktio SWIFFT-perheessä määritellään kiinteiksi rengaselementeiksi , joita kutsutaan kertojiksi. Tämä funktio renkaan päälle voidaan kirjoittaa seuraavassa muodossa:

,

missä ovat polynomit, joiden binäärikertoimet vastaavat pituuden binaarisyöteviestiä .

Toimintaalgoritmi on seuraava: [1] [12] [11]

  1. Taken on redusoitumaton polynomi over
  2. Syöte on pituinen viesti
  3. muunnetaan polynomijoukoksi tietyssä polynomirenkaassa binäärikertoimilla
  4. Fourier-kertoimet lasketaan jokaiselle
  5. Kiinteät Fourier-kertoimet asetetaan SWIFFT-perheen mukaan
  6. Fourier - kertoimet kerrotaan pareittain kullekin
  7. Käänteistä Fourier-muunnosta käytetään korkeintaan astepolynomien saamiseksi
  8. Laskettu modulo ja .
  9. muunnetaan biteiksi ja lähetetään ulostuloon

Esimerkki

Parametrien n , m ja p ominaisarvot valitaan seuraavasti: n = 64, m = 16, p = 257 [13] . Näille parametreille mikä tahansa perheen kiinteä pakkausfunktio hyväksyy syötteeksi viestin, jonka pituus on mn = 1024 bittiä (128 tavua). Tulos on alueella , jolla on koko . Lähtötiedot voidaan esittää käyttämällä 528 bittiä (66 tavua).

Polynomien kertolaskutuloksen laskenta

Vaikein osa yllä olevan lausekkeen laskemisessa on kertolaskutuloksen laskeminen [1] [14] . Nopea tapa laskea tietty tulo on käyttää konvoluutiolausetta , joka sanoo, että tietyissä olosuhteissa:

Tässä tarkoittaa Fourier-muunnosta ja operaatio tarkoittaa kertoimien kertomista samalla indeksillä. Yleensä konvoluutiolauseella on konvoluutio , ei kertolasku. Voidaan kuitenkin osoittaa, että polynomien kertolasku on konvoluutio.

Nopea Fourier-muunnos

Fourier-muunnoksen löytämiseksi käytämme nopeaa Fourier-muunnosta (FFT), joka kestää [1] . Kertolalgoritmi on seuraava [14] : laskemme kaikki Fourier-kertoimet kaikille polynomeille kerralla käyttämällä FFT:tä. Kerromme sitten pareittain näiden kahden polynomin vastaavat Fourier-kertoimet. Kun käytämme käänteistä FFT:tä, jonka jälkeen saamme polynomin, jonka aste ei ole suurempi kuin .

Diskreetti Fourier-muunnos

Tavallisen Fourier-muunnoksen sijaan SWIFFT käyttää Discrete Fourier-muunnosta (DFT) [1] [14] . Se käyttää yhtenäisyyden juuria monimutkaisten yhtenäisyyden juurien sijaan . Tämä on totta, jos on äärellinen kenttä ja sen 2 n :nnet yksinkertaiset ykseyden juuret ovat olemassa annetussa kentässä. Nämä ehdot täyttyvät, jos otamme sellaisen alkuluvun , joka on jaollinen luvulla .

Vaihtoehtojen valinta

Parametrien m , p , n on täytettävä seuraavat vaatimukset [15] :

Voit ottaa esimerkiksi seuraavat parametrit: n =64, m =16, p =257. Otamme suorituskyvyn tasolle 40 Mb / s [6] , turvallisuus törmäysten etsinnästä - operaatiot.

Tilastolliset ominaisuudet

Salausominaisuudet ja suojaus

Teoreettinen vakaus

SWIFFT - Todistettu turvallisuus salaustoiminnot [1] [3] . Kuten useimmissa tapauksissa, funktioiden turvallisuuden todistaminen perustuu siihen, että funktioissa käytettyä matemaattista ongelmaa ei voida ratkaista polynomiajassa. Tämä tarkoittaa, että SWIFFT:n vahvuus on vain siinä, että se perustuu monimutkaiseen matemaattiseen ongelmaan.

SWIFFT:n tapauksessa todistettu turvallisuus piilee ongelmassa löytää lyhyitä vektoreita syklisistä/ ideaalihiloista [17] . Voidaan todistaa, että seuraava väite on totta: oletetaan, että meillä on algoritmi, joka löytää funktiotörmäyksiä SWIFFT:n satunnaiselle versiolle, joka on saatu kohdasta , jossain mahdollisessa ajassa todennäköisyydellä . Tämä tarkoittaa, että algoritmi toimii vain pienellä mutta huomattavalla osalla perheen toimintoja. Sitten voimme löytää myös algoritmin , joka voi aina löytää lyhyen vektorin mistä tahansa ideaalisesta hilasta renkaan yli jossain mahdollisessa ajassa riippuen ja . Tämä tarkoittaa, että törmäysten löytäminen SWIFFT:ssä ei ole yhtä vaikeaa, ongelmana on löytää lyhyitä vektoreita hilassa yli , jolle on olemassa vain eksponentiaalisia algoritmeja.

Käytännöllinen kestävyys

Tämän hash-funktion kirjoittajat tutkivat sen haavoittuvuuksia eri hyökkäyksille ja havaitsivat, että "syntymäpäivä"-hyökkäys vaatii vähiten hash-laskentatoimintoja (2 106 ) törmäysten löytämiseksi. [18] [1] . Permutaatiohyökkäykset vaativat 2 448 laskentaa vakioparametreille. Mahdollisten arvojen täydellinen luettelointi vaatisi 2 528 hash-laskentaa. Tämä riittää yleensä tekemään vihollisen hyökkäyksen mahdottomaksi.

Katso myös

Muistiinpanot

  1. 1 2 3 4 5 6 7 8 9 10 11 12 13 Lyubashevsky ym., 2008 .
  2. 12 Arbitman et al., 2008 .
  3. 1 2 Györfi et al., 2012 , s. 2.
  4. 12 Arbitman et al., 2008 , s. yksi.
  5. Buchmann ja Lindner 2009 , s. 1-2.
  6. 1 2 3 Györfi et al., 2012 , s. viisitoista.
  7. Györfi et al., 2012 , s. 15-16.
  8. Györfi et al., 2012 , s. 16.
  9. PRE-SHA-3 KILPAILU . National Institute of Standards and Technology (15. huhtikuuta 2005). Arkistoitu alkuperäisestä 9. elokuuta 2017.
  10. Toisen kierroksen ehdokkaat . National Institute of Standards and Technology (19. tammikuuta 2010). Haettu 14. helmikuuta 2010. Arkistoitu alkuperäisestä 10. huhtikuuta 2012.
  11. 1 2 Györfi et al., 2012 , s. 3.
  12. Arbitman et ai., 2008 , s. 4-5.
  13. Györfi ym., 2012 .
  14. 1 2 3 Györfi et al., 2012 , s. neljä.
  15. Buchmann, Lindner, 2009 .
  16. Sarinay, 2010 , s. 9.
  17. Arbitman et ai., 2008 , s. 10-11.
  18. Buchmann ja Lindner 2009 , s. 2.

Kirjallisuus

Kirjat

Artikkelit