SFLASH

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).

Bevezetés

A cikkben a következő jelöléseket használjuk:

  1. — meghatározza az összefűzési  operátort .
  2.  a következőképpen definiált operátor: , ahol , valamint az r és s egész számoknak teljesíteniük kell: .

Algoritmus paraméterei

Az SFLASH algoritmus két meghatározott mezőt használ:

  1. ként határozzuk meg . Határozza meg bijekcióként és K között :
  2. . Határozza meg bijekcióként és között :
  3.  — 80 bites rejtett karakterlánc.

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).

Nyissa meg az Options

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

Kulcsgenerálás

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 : i=0-tól 66-ig j=0 és 66 között S_L[i,j]=pi(következő_7 bites_random_karakterlánc) i=0 és 66 között j=0 és 66 között { ha (i<j) akkor {U_S[i,j]=pi(next_7bit_random_string); L_S[i,j]=0;}; ha (i>j) akkor {L_S[i,j]=pi(next_7bit_random_string); U_S[i,j]=0;}; ha (i=j) akkor {ismétlés (z=next_7bit_random_string) amíg z!=(0,0,0,0,0,0,0); U_S[i,j]=pi(z); L_S[i,j]=1;}; }; 2) generálunk A CSPRBG segítségével keresse meg a K új 67 elemét (a mátrixoszlop tetejétől az aljáig). A K minden eleme megtalálható a következő függvény segítségével:

(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.

Aláírás létrehozása

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:

Az aláírás ellenőrzése (ellenőrzése)

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.

Irodalom

Linkek