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.
Følgende notation vil blive brugt i hele denne artikel:
SFLASH-algoritmen bruger to specifikke felter:
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).
Den offentlige nøgle ligger i funktionen G fra til defineret som:
F er en funktion fra til defineret som
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 :(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.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:
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.