SFLASH on epäsymmetrinen digitaalinen allekirjoitusalgoritmi , jota NESSIE-eurooppalainen projekti suositteli vuonna 2003. SFLASH perustuu Matsumoto-Imai( MI ) -malliin, jota kutsutaan myös C* :ksi . Algoritmi kuuluu moniulotteisten julkisten avainten skeemojen perheeseen, eli jokaista allekirjoitusta ja jokaista viestin hajautusarvoa edustavat viimeisen kentän K elementit. SFLASH on suunniteltu hyvin erityisiin sovelluksiin, joissa klassisten algoritmien ( RSA , Elliptic Curves , DSA ja muut) muuttuvat erittäin korkeiksi. : ne ovat erittäin hitaita ja niillä on suuri allekirjoituskoko. Joten SFLASH luotiin täyttämään halpojen älykorttien tarpeet.
SFLASH on paljon nopeampi ja helpompi kuin RSA sekä allekirjoituksen luomisessa että varmentamisessa.
Tässä artikkelissa käytetään seuraavaa merkintää:
SFLASH-algoritmi käyttää kahta määriteltyä kenttää:
SFLASH-algoritmi käyttää myös kahta affinista bijektiota s ja t välillä - . Jokainen niistä on piilotettu lineaarinen (matriisi 67*67) ja vakio (sarake 67*1), vastaavasti.
Julkinen avain on funktiossa G from to määritellään seuraavasti:
F on funktio välillä - määritelty
Olkoon next_7bit_random_string 7-bittinen merkkijono, joka generoidaan kutsumalla CSPRBG (Cryptographically Secure PseudoRandom Bit Generator) 7 kertaa. Ensin saamme merkkijonon ensimmäisen bitin, sitten toisen ja niin edelleen seitsemänteen.
1) Luomme Käänteisen 67x67 matriisin luomiseen voidaan käyttää kahta menetelmää:(seuraava_7bit_satunnainen_merkkijono)
3) Luomme Sama kuin matriisi . 4) Luomme Sama kuin sarakkeessa . 5) Luomme Käyttämällä CSPRBG:tä (Cryptographically Secure PseudoRandom Bit Generator) luomme 80 satunnaista bittiä.Olkoon M viestimme, jolle haluamme löytää allekirjoituksen S. Allekirjoituksen luomisessa S on seuraava algoritmi:
1) Olkoon - nämä ovat SHA-1 kryptografisen hajautusalgoritmin avulla määritettyjä merkkijonoja :
, , , ,2) Etsi V - 392-bittinen merkkijono seuraavasti:
3) Etsi W - 77-bittinen merkkijono seuraavasti:
4) Etsi Y - 56 K elementin merkkijono seuraavasti:
5) Etsi R - 11 K elementin merkkijono seuraavasti:
6) Etsi B - elementti seuraavasti:
7) Etsi A - elementti muodossa:
, jossa F on funktio alkaen - määritellään seuraavasti:8) Etsi - rivin 67 elementit K:
9) Allekirjoitus S - 469-bittinen merkkijono saatu seuraavasti:
Annettu viesti M (bittijono) ja allekirjoitus S (256-bittinen merkkijono). Seuraavaa algoritmia käytetään määrittämään sanoman M allekirjoituksen S kelpoisuus:
1) Olkoon - nämä ovat SHA-1 kryptografisen hajautusalgoritmin avulla määritettyjä merkkijonoja :
, , , ,2) Etsi V - 392-bittinen merkkijono seuraavasti:
3) Etsi Y - 56 K elementin merkkijono seuraavasti:
4) Etsi Y' - 56 K elementin merkkijono seuraavasti:
5) Vertaa tuloksena olevia merkkijonoja Y ja Y'. Jos ne ovat yhtä suuret, allekirjoitus hyväksytään, muuten se hylätään.