SFLASH

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.

Johdanto

Tässä artikkelissa käytetään seuraavaa merkintää:

  1. — määrittää  ketjutusoperaattorin .
  2.  on operaattori, joka määritellään seuraavasti: , jossa , ja kokonaislukujen r ja s on täytettävä: .

Algoritmin parametrit

SFLASH-algoritmi käyttää kahta määriteltyä kenttää:

  1. määritelty nimellä . Määrittele bijektioksi ja K: n välillä seuraavasti:
  2. . Määritä bijektioksi ja välillä : _
  3.  - 80-bittinen piilotettu merkkijono.

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.

Avaa Asetukset

Julkinen avain on funktiossa G from to määritellään seuraavasti:

F on funktio välillä - määritelty

Avaimen luominen

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ää: i = 0 - 66 j = 0 - 66 S_L[i,j]=pi(seuraava_7 bittiä_satunnainen_merkkijono) i = 0 - 66 j = 0 - 66 { jos (i<j) niin {U_S[i,j]=pi(seuraava_7 bittiä_satunnainen_merkkijono); L_S[i,j]=0;}; jos (i>j) sitten {L_S[i,j]=pi(seuraava_7 bittiä_satunnainen_merkkijono); U_S[i,j]=0;}; jos (i=j) niin {toista (z=next_7bit_random_string) kunnes z!=(0,0,0,0,0,0,0); U_S[i,j]=pi(z); L_S[i,j]=1;}; }; 2) Luomme Käytä CSPRBG:tä löytääksesi K:n uudet 67 elementtiä (matriisisarakkeen ylhäältä alas). Jokainen K:n elementti löytyy funktiolla:

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

Allekirjoituksen luominen

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:

Allekirjoituksen todentaminen (varmennus)

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.

Kirjallisuus

Linkit