Az SFLASH egy aszimmetrikus digitális aláírási algoritmus , amelyet a NESSIE európai projekt ajánlott 2003-ban. A SFLASH a Matsumoto-Imai( MI ) sémán alapul, amelyet C* -nak is neveznek . Az algoritmus többdimenziós nyilvános kulcssémák családjába tartozik, azaz minden aláírást és üzenetkivonatot a végső K mező elemei képviselnek. Az SFLASH-t nagyon specifikus alkalmazásokhoz tervezték, ahol a klasszikus algoritmusok költségei ( RSA , Elliptic Curves , DSA és mások) rendkívül magasak lesznek. : nagyon lassúak és nagy aláírásmérettel rendelkeznek. A SFLASH tehát az olcsó intelligens kártyák igényeinek kielégítésére jött létre.
Az SFLASH sokkal gyorsabb és egyszerűbb, mint az RSA, mind az aláírás létrehozásában, mind pedig ellenőrzésében (ellenőrzésében).
A cikkben a következő jelöléseket használjuk:
Az SFLASH algoritmus két meghatározott mezőt használ:
Az SFLASH algoritmus két affin bijekciót is használ: s és t tól -ig . Mindegyik rejtett lineáris (67*67 mátrix) és konstans (67*1 oszlop).
A nyilvános kulcs a G from to függvényben található, a következőképpen definiálva:
F egy függvény től ig definiálva
Legyen next_7bit_random_string egy 7 bites karakterlánc, amely a CSPRBG (Cryptographically Secure PseudoRandom Bit Generator) hétszeri meghívásával jön létre. Először megkapjuk a húr első bitjét, majd a másodikat, és így tovább a hetedikig.
1) generálunk Két módszer használható egy fordított 67x67-es mátrix létrehozására :(next_7bit_random_string)
3) generálunk Ugyanaz, mint a mátrix . 4) Generálunk Ugyanaz, mint az oszlop . 5) Generálunk A CSPRBG (Cryptographically Secure PseudoRandom Bit Generator) segítségével 80 véletlenszerű bitet generálunk.Legyen M az üzenetünk, amelyhez S aláírást szeretnénk találni. Az S aláírás létrehozása a következő algoritmussal rendelkezik:
1) Legyen - ezek az SHA-1 kriptográfiai kivonatoló algoritmussal meghatározott karakterláncok :
, , , ,2) Keresse meg a V - 392 bites karakterláncot a következőképpen:
3) Keresse meg a W - 77 bites karakterláncot a következőképpen:
4) Keresse meg Y - 56 K elemből álló sztringet a következőképpen:
5) Keresse meg az R-t – egy 11 K elemből álló sztringet a következőképpen:
6) Keresse meg a B elemet :
7) Keresse meg az A - elemet :
, ahol F egy -től -ig terjedő függvény, amely a következőképpen definiálható:8) Find - 67. sor elemei K:
9) Aláírás S – 469 bites karakterlánc a következőképpen lett beszerezve:
Adott egy M üzenet (bit karakterlánc) és egy S aláírás (256 bites karakterlánc). A következő algoritmust használjuk az M üzenet S aláírásának érvényességének meghatározására:
1) Legyen - ezek az SHA-1 kriptográfiai kivonatoló algoritmussal meghatározott karakterláncok :
, , , ,2) Keresse meg a V - 392 bites karakterláncot a következőképpen:
3) Keresse meg Y - 56 K elemből álló sztringet a következőképpen:
4) Keresse meg az Y'-t – egy 56 K elemből álló sztringet:
5) Hasonlítsa össze a kapott Y és Y' karakterláncokat. Ha megegyeznek, akkor az aláírást elfogadják, ellenkező esetben elutasítják.