SWIFFT

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. február 6-án felülvizsgált verziótól ; az ellenőrzések 3 szerkesztést igényelnek .
SWIFFT
Fejlesztők Vadim Lyubashevsky, Daniel Michiancio, Chris Peikert, Alon Rosen
Létrehozva 2008
közzétett 2008
Típusú hash függvény

A SWIFFT kriptográfiai hash függvények készlete bizonyított biztonsággal [1] [2] [3] . Ezek a gyors Fourier-transzformáción ( FFT ) alapulnak, és az LLL-redukált bázisalgoritmust használják . A SWIFFT-függvények kriptográfiai biztonsága (aszimptotikus értelemben) [4] az ajánlott paraméterek [5] segítségével matematikailag bizonyított . Az ütközések megtalálása SWIFFT - ben a legrosszabb esetben legalább olyan időigényes , mint a rövid vektorok megtalálása ciklikus/ ideális rácsokban . A SWIFFT gyakorlati alkalmazása éppen azokban az esetekben lesz értékes, ahol különösen fontos az ütközésállóság. Például a digitális aláírások, amelyeknek hosszú ideig megbízhatónak kell maradniuk.  

Ez az algoritmus körülbelül 40 Mb/s átviteli sebességet biztosít egy 3,2 GHz-es órajelű Intel Pentium 4 processzoron [6] [1] . Kutatásokat végeztek az FFT felgyorsítására, amelyet a SWIFFT-ben használnak [7] . Ennek eredményeként az algoritmus sebessége több mint 13-szorosára nőtt [6] . A SWIFFT ezen megvalósítása gyorsabbnak bizonyult, mint a széles körben használt hash-függvények [8] .

A 2012-es National Institute of Standards and Technology [2] versenyen a SWIFFTX-et (a SWIFFT egy módosítása) SHA-3 néven javasolták (a régebbi SHA-2 és különösen az SHA-1 helyére [9] ), de a első kör [10] .

Munka leírása

A SWIFFT függvények egyszerű algebrai kifejezésként írhatók le valamilyen polinomgyűrűn [1] [11] . A függvénycsalád három fő paramétertől függ : legyen 2 hatványa, - egy kis egész szám, és - nem feltétlenül prímszám , de jobb, ha prímszámot választunk. A forma gyűrűjeként határozzuk meg . Például a -beli polinomok gyűrűje , amelyek együtthatói egész számok, az a szám, amellyel modulo osztást hajtunk végre, és . A -ból származó elem lehet alacsonyabb fokú polinom , melynek együtthatói -ból .

A SWIFFT családban egy meghatározott függvényt rögzített gyűrűs elemekként határoznak meg, amelyeket szorzóknak neveznek. Ez a függvény a gyűrű felett a következő formában írható fel:

,

ahol a hosszúságú bináris bemeneti üzenetnek megfelelő bináris együtthatójú polinomok vannak .

A műveleti algoritmus a következő: [1] [12] [11]

  1. Taken egy irreducibilis polinom over
  2. A bemenet egy hosszúságú üzenet
  3. egy bizonyos polinomgyűrűben lévő polinomok halmazává alakul át bináris együtthatókkal
  4. Mindegyikhez Fourier-együtthatót számítanak ki
  5. A rögzített Fourier-együtthatók a SWIFFT családtól függően vannak beállítva
  6. A Fourier - együtthatókat páronként megszorozzuk mindegyikre
  7. Az inverz Fourier-transzformációt legfeljebb fokszámú polinomok előállítására használjuk
  8. Számított modulo és .
  9. bitekre konvertálva és a kimenetre küldve

Példa

Az n , m és p paraméterek fajlagos értékeit a következőképpen választjuk ki: n = 64, m = 16, p = 257 [13] . Ezeknél a paramétereknél a család bármely rögzített tömörítési függvénye elfogad egy mn = 1024 bit (128 bájt) hosszúságú üzenetet bemenetként. A kimenet mérete tartományban van . A kimeneti adatok 528 bittel (66 bájttal) ábrázolhatók.

Polinomok szorzási eredményének kiszámítása

A fenti kifejezés kiszámításának legnehezebb része a szorzás eredményének kiszámítása [1] [14] . Egy adott szorzat kiszámításának gyors módja a konvolúciós tétel használata , amely kimondja, hogy bizonyos feltételek mellett:

Itt a Fourier-transzformációt jelöli , a művelet pedig az együtthatók azonos indexű szorzását jelenti. Általában a konvolúciós tétel jelentése konvolúció , nem szorzás. Kimutatható azonban, hogy a polinomok szorzása konvolúció.

Gyors Fourier transzformáció

A Fourier-transzformáció megtalálásához a gyors Fourier-transzformációt (FFT) használjuk, amely [1] . A szorzási algoritmus a következő [14] : az összes polinomra egyszerre számítjuk ki az összes Fourier-együtthatót az FFT segítségével. Ezután páronként megszorozzuk a két polinom megfelelő Fourier-együtthatóit. Miután az inverz FFT-t használjuk, ami után egy fokú polinomot kapunk, amely nem magasabb, mint .

Diszkrét Fourier transzformáció

A szokásos Fourier-transzformáció helyett a SWIFFT a diszkrét Fourier-transzformációt (DFT) [1] [14] használja . Az egység gyökereit használja az egység komplex gyökerei helyett. Ez akkor lesz igaz, ha egy véges mező , és az egység 2. n - edik egyszerű gyöke létezik az adott mezőben. Ezek a feltételek akkor teljesülnek, ha olyan prímszámot veszünk, amely osztható -vel .

Választási lehetőségek

Az m , p , n paramétereknek meg kell felelniük a következő követelményeknek [15] :

Vegyük például a következő paramétereket: n =64, m =16, p =257. Az átviteli sebességet 40 Mb / s [6] szintre vesszük , a biztonságot az ütközések keresésétől - műveletek.

Statisztikai tulajdonságok

Kriptográfiai tulajdonságok és biztonság

Elméleti stabilitás

SWIFFT – Bizonyított biztonságú kriptográfiai funkciók [1] [3] . Mint a legtöbb esetben, a függvények biztonságának bizonyítása azon alapul, hogy a függvényekben használt matematikai probléma nem oldható meg polinomiális időben. Ez azt jelenti, hogy a SWIFFT ereje csak abban rejlik, hogy összetett matematikai problémán alapul.

A SWIFFT esetében a bizonyított biztonság abban rejlik, hogy ciklikus/ ideális rácsokban rövid vektorokat találunk [17] . Bebizonyítható, hogy igaz a következő állítás: tegyük fel, hogy van egy algoritmusunk, amely függvényütközéseket talál a SWIFFT egy véletlenszerű változatára, amely -ből származik , bizonyos időn belül valószínűséggel . Ez azt jelenti, hogy az algoritmus a család funkcióinak csak egy kis, de észrevehető hányadán működik. Ekkor találhatunk egy olyan algoritmust is , amely mindig képes egy rövid vektort találni bármely ideális rácson egy gyűrű felett bizonyos időn belül attól függően, hogy és . Ez azt jelenti, hogy az ütközések megtalálása SWIFFT-ben nem kevésbé nehéz, a rövid vektorok megtalálásának problémája a feletti rácsban , amelyre csak exponenciális algoritmusok léteznek.

Praktikus tartósság

Ennek a hash-függvénynek a szerzői megvizsgálták a különféle támadásokkal szembeni sebezhetőségeket, és megállapították, hogy a „születésnapi” támadáshoz van szükség a legkevesebb hash-számlálási műveletre (2 106 ) az ütközések megtalálásához. [18] [1] . A permutációs támadásokhoz 2448 számlálás szükséges a szabványos paraméterekhez. A lehetséges értékek teljes felsorolásához 2528 hash-számításra lenne szükség. Ez általában elég ahhoz, hogy lehetetlenné tegye az ellenséges támadást.

Lásd még

Jegyzetek

  1. 1 2 3 4 5 6 7 8 9 10 11 12 13 Lyubashevsky et al., 2008 .
  2. 12 Arbitman et al., 2008 .
  3. 1 2 Györfi et al., 2012 , p. 2.
  4. 12 Arbitman et al., 2008 , p. egy.
  5. Buchmann és Lindner 2009 , p. 1-2.
  6. 1 2 3 Györfi et al., 2012 , p. tizenöt.
  7. Györfi et al., 2012 , p. 15-16.
  8. Györfi et al., 2012 , p. 16.
  9. PRE-SHA-3 VERSENY . Nemzeti Szabványügyi és Technológiai Intézet (2005. április 15.). Az eredetiből archiválva : 2017. augusztus 9.
  10. Második forduló jelöltjei . Nemzeti Szabványügyi és Technológiai Intézet (2010. január 19.). Letöltve: 2010. február 14. Az eredetiből archiválva : 2012. április 10..
  11. 1 2 Györfi et al., 2012 , p. 3.
  12. Arbitman et al., 2008 , p. 4-5.
  13. Györfi et al., 2012 .
  14. 1 2 3 Györfi et al., 2012 , p. négy.
  15. Buchmann, Lindner, 2009 .
  16. Sarinay, 2010 , p. 9.
  17. Arbitman et al., 2008 , p. 10-11.
  18. Buchmann és Lindner 2009 , p. 2.

Irodalom

Könyvek

Cikkek