SFLASH este un algoritm de semnătură digitală asimetrică recomandat de proiectul european NESSIE în 2003. SFLASH se bazează pe schema Matsumoto-Imai( MI ), numită și C* . Algoritmul aparține unei familii de scheme de chei publice multidimensionale, adică fiecare semnătură și fiecare hash de mesaj este reprezentată de elemente ale câmpului final K. SFLASH a fost conceput pentru aplicații foarte specifice în care costurile algoritmilor clasici ( RSA , Curbe Eliptice , DSA și altele) devin extrem de înalte.: sunt foarte lente și au o dimensiune mare a semnăturii. Așadar, SFLASH a fost creat pentru a răspunde nevoilor de carduri inteligente ieftine.
SFLASH este mult mai rapid și mai ușor decât RSA, atât la crearea, cât și la verificarea (verificarea) unei semnături.
Următoarea notație va fi folosită pe parcursul acestui articol:
Algoritmul SFLASH utilizează două câmpuri definite:
Algoritmul SFLASH utilizează, de asemenea, două bijecții afine s și t de la la . Fiecare dintre acestea este ascunsă liniară (matricea 67*67) și, respectiv, constantă (coloana 67*1).
Cheia publică se află în funcția G de la până la definită ca:
F este o funcție de la până la definită ca
Fie next_7bit_random_string un șir de 7 biți, care este generat prin apelarea CSPRBG (Cryptographically Secure PseudoRandom Bit Generator) de 7 ori. Mai întâi obținem primul bit de sfoară, apoi al doilea și așa mai departe până la al șaptelea.
1) Noi generăm Două metode pot fi utilizate pentru a genera o matrice inversată 67x67 :(next_7bit_random_string)
3) Noi generăm La fel ca și matricea . 4) Noi generăm La fel ca și coloana . 5) Noi generăm Folosind CSPRBG (Cryptographically Secure PseudoRandom Bit Generator) generăm 80 de biți aleatori.Fie M mesajul nostru pentru care dorim să găsim o semnătură S. Crearea unei semnături S are următorul algoritm:
1) Fie - acestea sunt șiruri determinate folosind algoritmul de hashing criptografic SHA-1 :
, , , ,2) Găsiți șir V - 392 de biți ca:
3) Găsiți W - șir de 77 de biți ca:
4) Găsiți Y - un șir de 56 K elemente ca:
5) Găsiți R - un șir de 11 K elemente ca:
6) Găsiți B - element ca:
7) Găsiți A - element ca:
, unde F este o funcție de la până la definită ca:8) Găsiți - linia 67 elemente K:
9) Semnătura S - șir de 469 de biți obținut ca:
Dat un mesaj M (șir de biți) și o semnătură S (șir de 256 de biți). Următorul algoritm este utilizat pentru a determina validitatea semnăturii S a mesajului M:
1) Fie - acestea sunt șiruri determinate folosind algoritmul de hashing criptografic SHA-1 :
, , , ,2) Găsiți șir V - 392 de biți ca:
3) Găsiți Y - un șir de 56 K elemente ca:
4) Găsiți Y' - un șir de 56 K elemente ca:
5) Comparați șirurile rezultate Y și Y'. Dacă sunt egale, atunci semnătura este acceptată, în caz contrar este respinsă.