Semnătura Merkle este un algoritm de semnătură digitală post-cuantică și reutilizabil , bazat pe utilizarea unui arbore Merkle și a unui fel de semnătură digitală unică. [unu]
Semnătura a fost publicată pentru prima dată de Ralph Merkle în 1979 în articolul său „Secrecy, authentication, and public key systems” [2] ca semnătură digitală reutilizabilă folosind semnătura unică a lui Lamport . [3]
Semnătura Merkle se bazează pe o semnătură digitală unică deja existentă, a cărei putere criptografică trebuie să se bazeze pe o funcție hash sigură criptografic . Exemple de astfel de semnături ar fi Schema de semnătură unică Winternitz sau semnătura lui Lamport . [4] O semnătură digitală unică ar trebui să conțină trei operațiuni principale: [5]
De asemenea, este necesar să se decidă asupra unei funcții hash rezistente la cripto , care va fi folosită ulterior pentru a calcula cheia publică. [patru]
Sunt generate matrice de chei și lungimi . Lungimea este aleasă să fie o putere de doi, deoarece este necesar să construiți un arbore Merkle. Fiecare pereche este folosită ca o pereche de chei private-publice pentru o semnătură unică de bază. Array - este cheia privată a semnăturii Merkle, un arbore Merkle este construit pentru a genera cheia publică:
Rădăcina arborelui Merkle construit este luată ca cheie publică: . [6]
Pentru a genera o semnătură din matrice și , este selectată a treia pereche de chei .Se calculează o semnătură digitală unică pentru mesaj folosind cheia privată . Apoi, luați în considerare calea de la rădăcina arborelui Merkle până la frunza corespunzătoare cheii . Să notăm vârfurile prin care trece această cale ca o matrice de lungime , unde este rădăcina arborelui și este . Valoarea fiecărui vârf , cu excepția , este calculată ca , unde și sunt copii imediati ai . Astfel, pentru a calcula calea de la rădăcina arborelui, este suficient să cunoaștem șirul de vârfuri , pe care îl vom numi cale de autentificare. Astfel, semnătura mesajului include: o cheie de verificare , o semnătură unică și o cale de autentificare pentru calcularea căii către rădăcina arborelui. [7]
În primul rând, destinatarul verifică semnătura unică cu mesajul . Dacă verificarea a avut succes, începe să construiască calea de la rădăcina arborelui. Mai întâi, apoi, și așa mai departe. Dacă , atunci verificarea semnăturii a avut succes. [opt]
Algoritmii de semnătură digitală folosiți în mod obișnuit, cum ar fi RSA și DSA , profită de complexitatea factorizării numerelor și de complexitatea calculării logaritmului discret . Cu toate acestea, folosind algoritmul lui Shor și un computer cuantic , aceste semnături pot fi sparte în timp polinomial. În schimb, semnătura Merkle este post-cuantică, deoarece puterea sa criptografică se bazează pe puterea funcției hash criptografice și pe puterea semnăturii digitale unice. [unu]
Una dintre principalele probleme ale semnăturilor digitale bazate pe funcții hash puternice este că acestea sunt utilizate de obicei în contextul semnăturilor digitale unice, adică semnături în care o pereche de chei este folosită pentru a semna un singur mesaj. Cu toate acestea, există modalități de a extinde astfel de semnături pentru a fi reutilizabile. O astfel de metodă este de a construi un arbore Merkle, care este folosit pentru a autentifica diferite semnături unice. [9]
Această problemă este legată de găsirea unui algoritm eficient pentru calcularea datelor de autentificare. Soluția banală - de a păstra toate datele în memorie - necesită prea multă memorie. Pe de altă parte, abordarea calculării căii de autentificare în zona în care este nevoie va fi prea costisitoare pentru unele noduri arbore. [10] Dacă lungimea matricelor X și Y este mai mare de 2^25, utilizarea semnăturii Merkle devine nepractică. [opt]
Este dovedit că algoritmul de semnătură digitală Merkle este puternic din punct de vedere criptografic împotriva unui atac de selecție adaptivă a mesajelor dacă folosește o funcție hash care este rezistentă la coliziunile de tip 2 . [11] [12] Cu toate acestea, pentru a sparge semnătura Merkle, criptoanalistul trebuie fie să reconstruiască imaginea prealabilă a funcției hash, fie să calculeze o coliziune de tip I. Aceasta înseamnă că, din punct de vedere practic, puterea criptografică a unei semnături Merkle se bazează pe ireversibilitatea funcției hash utilizate și pe rezistența acesteia la coliziuni de primă clasă. [12]
Funcții hash | |
---|---|
scop general | |
Criptografic | |
Funcții de generare a cheilor | |
Numărul de verificare ( comparație ) | |
Hashes |
|