SWIFFT

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 6 februarie 2021; verificările necesită 3 modificări .
SWIFFT
Dezvoltatori Vadim Lyubashevsky, Daniel Michiancio, Chris Peikert, Alon Rosen
Creată 2008
publicat 2008
Tip de funcția hash

SWIFFT este un set de funcții hash criptografice cu securitate dovedită [1] [2] [3] . Acestea se bazează pe transformarea rapidă Fourier ( FFT ) și folosesc algoritmul de baze reduse cu LLL . Securitatea criptografică a funcțiilor SWIFFT (în sensul asimptotic) [4] este dovedită matematic folosind parametrii recomandați [5] . Găsirea coliziunilor în SWIFFT este cel puțin la fel de consumatoare de timp în cel mai rău caz ca găsirea de vectori scurti în rețele ciclice/ ideale . Aplicarea practică a SWIFFT va fi valoroasă tocmai în acele cazuri în care rezistența la coliziuni este deosebit de importantă. De exemplu, semnăturile digitale, care trebuie să rămână de încredere mult timp.  

Acest algoritm oferă un debit de aproximativ 40 Mb/s pe un procesor Intel Pentium 4 cu o frecvență de ceas de 3,2 GHz [6] [1] . Au fost făcute cercetări pentru a accelera FFT, care este folosit în SWIFFT [7] . Ca urmare, viteza algoritmului a fost mărită de peste 13 ori [6] . Această implementare a SWIFFT sa dovedit a fi mai rapidă decât implementările funcțiilor hash utilizate pe scară largă [8] .

La concursul Institutului Național de Standarde și Tehnologie [2] din 2012, SWIFFTX (o modificare a SWIFFT) a fost propus ca SHA-3 (pentru a înlocui vechiul SHA-2 și în special SHA-1 [9] ), dar a fost respins în primul tur [10] .

Descrierea lucrării

Funcțiile SWIFFT pot fi descrise ca o simplă expresie algebrică peste un inel polinomial [1] [11] . Familia de funcții depinde de trei parametri principali : fie o putere de 2, - un număr întreg mic și - nu neapărat un număr prim , dar este mai bine să-l alegeți prim. Îl definim ca un inel de forma . De exemplu, inelul de polinoame din , ai căror coeficienți sunt numere întregi, este numărul cu care efectuăm împărțirea modulo și . Un element din poate fi un polinom de grad inferior cu coeficienți din .

O funcție definită în familia SWIFFT este definită ca elemente inelare fixe , numite multiplicatori. Această funcție peste inel poate fi scrisă în următoarea formă:

,

unde sunt polinoame cu coeficienți binari corespunzători unui mesaj de intrare binar de lungime .

Algoritmul de operare este următorul: [1] [12] [11]

  1. Luat este un polinom ireductibil peste
  2. Intrarea este un mesaj de lungime
  3. este convertit într-un set de polinoame într-un anumit inel polinomial cu coeficienți binari
  4. Coeficienții Fourier sunt calculați pentru fiecare
  5. Coeficienții Fourier fix sunt setați în funcție de familia SWIFFT
  6. Coeficienții Fourier sunt înmulțiți în perechi cu pentru fiecare
  7. Transformata Fourier inversă este utilizată pentru a obține cel mult polinoame de grad
  8. Calculat modulo și .
  9. convertit în biți și trimis la ieșire

Exemplu

Valorile specifice pentru parametrii n , m și p sunt alese după cum urmează: n = 64, m = 16, p = 257 [13] . Pentru acești parametri, orice funcție fixă ​​de compresie a familiei va accepta un mesaj cu lungimea mn = 1024 biți (128 octeți) ca intrare. Ieșirea este într-un interval care are dimensiune . Datele de ieșire pot fi reprezentate folosind 528 de biți (66 de octeți).

Calculul rezultatului înmulțirii polinoamelor

Cea mai grea parte a calculului expresiei de mai sus este de a calcula rezultatul înmulțirii [1] [14] . O modalitate rapidă de a calcula un produs dat este să utilizați teorema de convoluție , care afirmă că în anumite condiții:

Aici denotă transformata Fourier , iar operația înseamnă înmulțirea coeficienților cu același indice. În general, teorema de convoluție are sensul de convoluție , nu de înmulțire. Totuși, se poate demonstra că înmulțirea polinoamelor este o convoluție.

Transformată Fourier rapidă

Pentru a găsi transformata Fourier, folosim transformata Fourier rapidă (FFT), care necesită [1] . Algoritmul de multiplicare este următorul [14] : calculăm toți coeficienții Fourier pentru toate polinoamele simultan folosind FFT. Apoi înmulțim în perechi coeficienții Fourier corespunzători celor două polinoame. După ce folosim inversul FFT, după care obținem un polinom de grad nu mai mare decât .

Transformată Fourier discretă

În loc de transformarea Fourier obișnuită, SWIFFT folosește transformata Fourier discretă (DFT) [1] [14] . Folosește rădăcinile unității în loc de rădăcini complexe ale unității. Acest lucru va fi adevărat dacă este un câmp finit și a 2- a n - a rădăcină simplă a unității există în câmpul dat. Aceste condiții vor fi îndeplinite dacă luăm un astfel de număr prim care este divizibil cu .

Alegerea opțiunilor

Parametrii m , p , n trebuie să îndeplinească următoarele cerințe [15] :

Puteți lua, de exemplu, următorii parametri: n =64, m =16, p =257. Luăm debitul la nivelul de 40 Mb/s [6] , securitate din căutarea coliziunilor - operațiuni.

Proprietăți statistice

Proprietăți criptografice și securitate

Stabilitate teoretică

SWIFFT - Funcții criptografice dovedite de securitate [1] [3] . Ca în majoritatea cazurilor, demonstrarea securității funcțiilor se bazează pe faptul că problema matematică folosită în funcții nu poate fi rezolvată în timp polinomial. Aceasta înseamnă că puterea SWIFFT constă doar în faptul că se bazează pe o problemă matematică complexă.

În cazul SWIFFT, securitatea dovedită constă în problema găsirii vectorilor scurti în rețele ciclice/ ideale [17] . Se poate dovedi că următoarea afirmație este adevărată: să presupunem că avem un algoritm care poate găsi coliziuni de funcții pentru o versiune aleatorie a SWIFFT obținută din , într-un timp posibil cu probabilitate . Aceasta înseamnă că algoritmul funcționează doar pe o fracțiune mică, dar vizibilă, din funcțiile familiei. Apoi, putem găsi, de asemenea, un algoritm care poate găsi întotdeauna un vector scurt pe orice rețea ideală peste un inel într-un timp posibil, în funcție de și . Aceasta înseamnă că găsirea coliziunilor în SWIFFT nu este mai puțin dificilă, problema găsirii de vectori scurti într-o rețea peste , pentru care există doar algoritmi exponențiali .

Durabilitate practică

Autorii acestei funcții hash au examinat-o pentru vulnerabilități la diferite atacuri și au descoperit că atacul „zile de naștere” necesită cele mai puține operațiuni de numărare hash (2 106 ) pentru a găsi coliziuni. [18] [1] . Atacurile de permutare necesită 2.448 de numărări pentru parametrii standard. O enumerare completă a valorilor posibile ar necesita 2.528 de calcule hash. Acest lucru este de obicei suficient pentru a face imposibil un atac inamic.

Vezi și

Note

  1. 1 2 3 4 5 6 7 8 9 10 11 12 13 Lyubashevsky și colab., 2008 .
  2. 12 Arbitman și colab., 2008 .
  3. 1 2 Györfi și colab., 2012 , p. 2.
  4. 12 Arbitman și colab., 2008 , p. unu.
  5. Buchmann și Lindner 2009 , p. 1-2.
  6. 1 2 3 Györfi și colab., 2012 , p. cincisprezece.
  7. Györfi și colab., 2012 , p. 15-16.
  8. Györfi și colab., 2012 , p. 16.
  9. CONCURS PRE-SHA-3 . Institutul Național de Standarde și Tehnologie (15 aprilie 2005). Arhivat din original pe 9 august 2017.
  10. Candidații din runda a doua . Institutul Național de Standarde și Tehnologie (19 ianuarie 2010). Consultat la 14 februarie 2010. Arhivat din original pe 10 aprilie 2012.
  11. 1 2 Györfi și colab., 2012 , p. 3.
  12. Arbitman și colab., 2008 , p. 4-5.
  13. Györfi și colab., 2012 .
  14. 1 2 3 Györfi și colab., 2012 , p. patru.
  15. Buchmann, Lindner, 2009 .
  16. Sarinay, 2010 , p. 9.
  17. Arbitman și colab., 2008 , p. 10-11.
  18. Buchmann și Lindner 2009 , p. 2.

Literatură

Cărți

Articole