Clever Geek Handbook
📜 ⬆️ ⬇️

Signature Merkle

Merkle's signature is a post-quantum and reusable digital signature algorithm based on the use of the Merkle tree and any one-time digital signature. [one]

Content

  • 1 History
  • 2 Description of the algorithm
    • 2.1 Preparation
    • 2.2 Key Generation
    • 2.3 Signature Generation
    • 2.4 Signature Verification
  • 3 Benefits
    • 3.1 Post-quantum
    • 3.2 Reusability
  • 4 disadvantages
    • 4.1 Tree traversal problem
  • 5 Cryptanalysis
  • 6 notes
  • 7 Literature

History

The signature was first published by Ralph Merkle in 1979 in his article “Secrecy, authentication, and public key systems” [2] , as a reusable digital signature using Lamport's one-time signature . [3]

Algorithm Description

Preparation

Merkle's signature is based on an already existing one-time digital signature, the cryptographic strength of which should be based on a cryptographic hash function . Examples of such signatures are the Winternitz One-time Signature Scheme or Lamport's signature . [4] A one-time digital signature should consist of three main operations: [5]

  • Secret key generationX {\ displaystyle X} X and public keyY {\ displaystyle Y} Y .
  • Signature Generationb {\ displaystyle b} b from messaged {\ displaystyle d} d using a secret keyX {\ displaystyle X} X .
  • Signature Verificationb {\ displaystyle b} b using public keyY {\ displaystyle Y} Y .

It is also necessary to determine the cryptographic hash functionH:{0,one}∗→{0,one}s {\ displaystyle H: \ {0,1 \} ^ {*} \ rightarrow \ {0,1 \} ^ {s}} {\displaystyle H:\{0,1\}^{*}\rightarrow \{0,1\}^{s}} , which will later be used to calculate the public key. [four]

Merkle Tree for Eight Keys

Key Generation

Key arrays are generatedX {\ displaystyle X} X andY {\ displaystyle Y} Y lengthsN=2n {\ displaystyle N = 2 ^ {n}} {\displaystyle N=2^{n}} . The length is chosen equal to the power of two, as it is necessary to build a Merkle tree. Every couple(Xi,Yi) {\ displaystyle (X_ {i}, Y_ {i})} {\displaystyle (X_{i},Y_{i})} used as a private-public key pair for a basic one-time signature. ArrayX {\ displaystyle X} X - is the private key of Merkle's signature; to generate the public key, the Merkle tree is built:

  • For everybodyYi {\ displaystyle Y_ {i}} Y_{i} calculate the hash valueH(Yi) {\ displaystyle H (Y_ {i})} {\displaystyle H(Y_{i})} - this will be the zero layer of the tree, that is, its leaves. Denote this layera0 {\ displaystyle a_ {0}} a_{0} . Totala0 {\ displaystyle a_ {0}} a_{0} containsl0=2n {\ displaystyle l_ {0} = 2 ^ {n}} {\displaystyle l_{0}=2^{n}} elements. Then we calculate the followingaone {\ displaystyle a_ {1}}   size layerlone=2n-one {\ displaystyle l_ {1} = 2 ^ {n-1}}   : everyonej {\ displaystyle j}   layer elementaone {\ displaystyle a_ {1}}   calculated through two elements from the previous layeraone,j=H(a0,j∗2||a0,j∗2+one) {\ displaystyle a_ {1, j} = H (a_ {0, j * 2} || a_ {0, j * 2 + 1})}   where|| {\ displaystyle ||}   - concatenation operation. So every nexti {\ displaystyle i}   layer, has a lengthli=2n-i {\ displaystyle l_ {i} = 2 ^ {ni}}   and calculated throughi-one {\ displaystyle i-1}   th layer. In the end, we will come to the last layer of the treean {\ displaystyle a_ {n}}   having a lengthln=one {\ displaystyle l_ {n} = 1}   and being the root of the tree.

For the public key, the root of the constructed Merkle tree is taken:pub_key=an {\ displaystyle pub \ _key = a_ {n}}   . [6]

 
Merkle tree for eight keys with authentication path

Signature Generation

To generate a signature from arraysX {\ displaystyle X}   andY {\ displaystyle Y}   is selectedi {\ displaystyle i}   key pair(Xi,Yi) {\ displaystyle (X_ {i}, Y_ {i})}   .For messaged {\ displaystyle d}   a one-time digital signature is calculatedbi {\ displaystyle b_ {i}}   using private keyXi {\ displaystyle X_ {i}}   . Next, consider the path from the roota0,n {\ displaystyle a_ {0, n}}   Merkle tree to leafa0,i {\ displaystyle a_ {0, i}}   corresponding to the keyYi {\ displaystyle Y_ {i}}   . Denote the vertices through which this path passes, as an arrayA {\ displaystyle A}   lengthsn+one {\ displaystyle n + 1}   whereAn {\ displaystyle A_ {n}}   Is the root of the tree, andA0 {\ displaystyle A_ {0}}   - this isa0,i {\ displaystyle a_ {0, i}}   . Value of each vertexAj {\ displaystyle A_ {j}}   , BesidesA0=H(Yi) {\ displaystyle A_ {0} = H (Y_ {i})}   is calculated asH(Aj-one||authj-one) {\ displaystyle H (A_ {j-1} || auth_ {j-1})}   whereauthj-one {\ displaystyle auth_ {j-1}}   andAj-one {\ displaystyle A_ {j-1}}   are immediate descendantsAj {\ displaystyle A_ {j}}   . Thus, in order to calculate the path from the root of the tree, it is enough to knowYi {\ displaystyle Y_ {i}}   and an array of verticesauthone,auth2,...,authn {\ displaystyle auth_ {1}, auth_ {2}, ..., auth_ {n}}   , which we will call the authentication path. So in the message signatured {\ displaystyle d}   included: verification keyYi {\ displaystyle Y_ {i}}   one time signaturebi {\ displaystyle b_ {i}}   and an authentication path to calculate the path to the root of the tree. [7]

Signature Verification

First, the recipient verifies the one-time signaturebi {\ displaystyle b_ {i}}   for compliance with the messaged {\ displaystyle d}   . If the test was successful, then begins to build the path fromH(Yi) {\ displaystyle H (Y_ {i})}   to the root of the tree. First calculatedA0=H(Yi) {\ displaystyle A_ {0} = H (Y_ {i})}   , thenAone=H(A0||auth0) {\ displaystyle A_ {1} = H (A_ {0} || auth_ {0})}   and so on. IfAn=pub_key {\ displaystyle A_ {n} = pub \ _key}   , then the verification of the signature was successful. [8]

Benefits

Post-Quantum

Commonly used digital signature algorithms such as RSA and DSA use the complexity of factoring numbers and the complexity of computing the discrete logarithm . However, using the Shore algorithm and a quantum computer , these signatures can be cracked in polynomial time. In contrast, Merkle's signature is post-quantum, since its cryptographic strength is based on the strength of the cryptographic hash function and the strength of a one-time digital signature. [one]

Reusability

One of the main problems of digital signatures based on cryptographic hash functions is that they are usually used in the context of one-time digital signatures, that is, signatures in which one key pair is used to sign only one message. However, there are ways to expand such signatures to reusable ones. One of such methods is just building a Merkle tree, which is used to authenticate various one-time signatures. [9]

Weaknesses

Tree traversal problem

This problem is associated with finding an effective algorithm for calculating authentication data. The trivial decision to save all the data in memory requires too much memory. On the other hand, the approach of computing the authentication path in the area where it is needed will be too costly for some tree nodes. [10] If the lengths of the X and Y arrays are greater than 2 ^ 25, using Merkle's signature becomes impractical. [8]

Cryptanalysis

It is proved that the Merkle digital signature algorithm is cryptographic against an adaptive attack with a choice of messages if it uses a hash function that is resistant to collisions of the second kind. [11] [12] However, in order to crack Merkle's signature, a cryptanalyst needs to either restore the inverse image of the hash function or calculate a collision of the first kind. This means that, from a practical point of view, the cryptographic strength of Merkle's signature is based on the irreversibility of the hash function used and on its resistance to collisions of the first kind. [12]



Notes

  1. ↑ 1 2 CMSS, 2006 , p. 349-350.
  2. ↑ Merkle, 1979 .
  3. ↑ Security, 2005 , p. one.
  4. ↑ 1 2 CMSS, 2006 , p. 352.
  5. ↑ CMSS, 2006 , p. 351.
  6. ↑ Security, 2005 , p. 3.
  7. ↑ CMSS, 2006 , p. 352-353.
  8. ↑ 1 2 CMSS, 2006 , p. 353.
  9. ↑ dods2005hash, 2005 , p. 96.
  10. ↑ szydlo2004merkle, 2004 , p. 541.
  11. ↑ Security, 2005 , p. four.
  12. ↑ 1 2 rohde2008fast, 2008 , p. 109.

Literature

  • Merkle, Ralph Charles. Secrecy, authentication, and public key systems : Technical Report No. 1979-1. - Citeseer, 1979. - DOI : 10.1.1.637.3952 .
  • Garcıa, LC Coronado. On the security and the efficiency of the Merkle signature scheme : Technical Report 2005/192. - Cryptology ePrint Archive, 2005.
  • Buchmann, Johannes. CMSS – an improved Merkle signature scheme // International Conference on Cryptology in India. - Springer Berlin Heidelberg, 2006 .-- S. 349-363 . - DOI : 10.1007 / 11941378_25 . (inaccessible link)
  • Dods, Chris and Smart, Nigel P and Stam, Martijn. Hash based digital signature schemes // IMA International Conference on Cryptography and Coding. - Springer Berlin Heidelberg, 2005. - S. 96-115 . - DOI : 10.1007 / 11586821_8 .
  • Szydlo, Michael. Merkle tree traversal in log space and time // International Conference on the Theory and Applications of Cryptographic Techniques. - Springer Berlin Heidelberg, 2004 .-- S. 541-554 . - DOI : 10.1007 / 978-3-540-24676-3_32 .
  • Rohde, Sebastian and Eisenbarth, Thomas and Dahmen, Erik and Buchmann, Johannes and Paar, Christof. Fast hash-based signatures on constrained devices // International Conference on Smart Card Research and Advanced Applications. - Springer Berlin Heidelberg, 2008 .-- S. 104-117 . - DOI : 10.1007 / 978-3-540-85893-5_8 .
Source - https://ru.wikipedia.org/w/index.php?title=Merkle Signature&oldid = 98159173


More articles:

  • Berger, Bonnie
  • Polidori, Paolo
  • Subramanyan, Arvind
  • Novikov, Vyacheslav Vladimirovich
  • Ritchie Charles, 1st Baron Ritchie Dundee
  • Elistratova, Zhanna Pavlovna
  • Monte Viso
  • Isle of Man Gambling Supervision Commission
  • Malaysia Women's Open Tennis Championship 2015
  • Gribnitze

All articles

Clever Geek | 2019