SLASH

SFLASH  er en asymmetrisk digital signaturalgoritme anbefalet af det europæiske NESSIE-projekt i 2003. SFLASH er baseret på Matsumoto-Imai( MI )-skemaet, også kaldet C* . Algoritmen tilhører en familie af multidimensionelle offentlige nøgleskemaer, dvs. hver signatur og hver meddelelseshash er repræsenteret af elementer i det endelige felt K. SFLASH blev designet til meget specifikke applikationer, hvor omkostningerne ved klassiske algoritmer ( RSA , Elliptic Curves , DSA og andre) bliver ekstremt høje. : de er meget langsomme og har en stor signaturstørrelse. Så SFLASH blev skabt for at imødekomme behovene for billige smartkort.

SFLASH er meget hurtigere og nemmere end RSA, både til at skabe og til at verificere (verificere) en signatur.

Introduktion

Følgende notation vil blive brugt i hele denne artikel:

  1. — definerer  sammenkædningsoperatoren .
  2.  er en operator defineret som følger: , hvor , og heltal r og s skal opfylde: .

Algoritmeparametre

SFLASH-algoritmen bruger to specifikke felter:

  1. defineret som . Definer som en bijektion mellem og K som:
  2. . Definer som en bijektion mellem og som:
  3.  — 80 bit skjult streng.

SFLASH-algoritmen bruger også to affine bijektioner s og t fra til . Hver af dem er skjult lineær (matrix 67*67) og konstant (kolonne 67*1).

Åbn indstillinger

Den offentlige nøgle ligger i funktionen G fra til defineret som:

F er en funktion fra til defineret som

Nøglegenerering

Lad next_7bit_random_string være en 7-bit streng, som genereres ved at kalde CSPRBG(Cryptographically Secure PseudoRandom Bit Generator) 7 gange. Først får vi den første bit af strengen, derefter den anden og så videre indtil den syvende.

1) Vi genererer To metoder kan bruges til at generere en inverteret 67x67 matrix : for i=0 til 66 for j=0 til 66 S_L[i,j]=pi(next_7bit_random_string) for i=0 til 66 for j=0 til 66 { hvis (i<j) da {U_S[i,j]=pi(next_7bit_random_string); L_S[i,j]=0;}; hvis (i>j) da {L_S[i,j]=pi(next_7bit_random_string); U_S[i,j]=0;}; hvis (i=j) så {gentag (z=next_7bit_random_string) indtil z!=(0,0,0,0,0,0,0); U_S[i,j]=pi(z); L_S[i,j]=1;}; }; 2) Vi genererer Brug CSPRBG til at finde de nye 67 elementer i K (fra toppen til bunden af ​​matrixkolonnen). Hvert element i K findes ved hjælp af funktionen:

(næste_7bit_tilfældig_streng)

3) Vi genererer Samme som matrixen . 4) Vi genererer Samme som kolonnen . 5) Vi genererer Ved at bruge CSPRBG (Cryptographically Secure PseudoRandom Bit Generator) genererer vi 80 tilfældige bits.

Oprettelse af en signatur

Lad M være vores budskab, som vi ønsker at finde en signatur S for. Oprettelse af en signatur S har følgende algoritme:

1) Lad  - disse er strenge bestemt ved hjælp af den kryptografiske hashing-algoritme SHA-1 :

, , , ,

2) Find V - 392 bit streng som:

3) Find W - 77 bit streng som:

4) Find Y - en streng med 56 K elementer som:

5) Find R - en streng med 11 K elementer som:

6) Find B - element som:

7) Find A - element som:

, hvor F er en funktion fra til defineret som:

8) Find  - linje 67 elementer K:

9) Signatur S - 469 bit streng opnået som:

Verifikation (verifikation) af signaturen

Givet en besked M (streng af bit) og en signatur S (256-bit streng). Følgende algoritme bruges til at bestemme gyldigheden af ​​signaturen S af beskeden M:

1) Lad  - disse er strenge bestemt ved hjælp af den kryptografiske hashing-algoritme SHA-1 :

, , , ,

2) Find V - 392 bit streng som:

3) Find Y - en streng med 56 K elementer som:

4) Find Y' - en streng med 56 K elementer som:

5) Sammenlign de resulterende strenge Y og Y'. Hvis de er lige, så accepteres underskriften, ellers afvises den.

Litteratur

Links