Merkle signature

from Wikipedia, the free encyclopedia

The Merkle signature is a digital signature method based on Merkle trees and one-time signatures such as the Lamport one-time signatures . It was developed by Ralph Merkle in the late 1970s and represents an alternative to traditional digital signatures such as the Digital Signature Algorithm or RSA- based signatures. In contrast to these, it is resistant to attacks by quantum computers , since its security only depends on its existence more secure hash functions .

idea

One problem with one-time signatures such as the Lamport signature is the transmission of the public key. Since each key can only be used once, there is a large amount of data that has to be reliably passed on to the recipient.

The Merkle signature process solves this problem by combining the entire (public) key material of one-time signatures in a multi-level hash process into a single hash value . As a public key, it only needs to be published, then messages can be signed with it .

The signature of a message then consists of two parts:

  • One of the public keys and the message signed with the corresponding private key. The recipient can verify that the sender actually had the private key.
  • Proof that the public key is one of the keys from which the hash value was calculated.

Key generation

Merkle tree with 8 leaves

The Merkle signature process can only be used to sign a limited number of messages with a public key . The number of possible messages is a power of two and is therefore referred to as .

The first step in generating the public key is generating the private key and the public key from one-time signatures. A hash value is calculated for each public key with . A hash tree is built with these hash values .

A node of the tree is identified with , where denotes the level of the node. The level of a node is defined by its distance from the leaves. Thus a leaf has the plane and the root has the plane . The nodes of each level are numbered from left to right so that the leftmost node is on level .

In the Merkle tree, the hash values ​​are the leaves of the binary tree, so . Each inner node of the tree is the hash value of the concatenation of its two children. For example, is and .

In this way a tree is built with leaves and nodes. The root of the tree is the public key of the Merkle signature process.

signing

Merkle tree with path A and authentication path for i = 2

To sign a message with the Merkle signature process, the message is first signed with a one-time signature process , which creates the signature . One of the key pairs from the private and public key is used for this.

The leaf of the hash tree associated with a private one-time key is . The path in the hash tree from to the root is denoted by. The path is made up of nodes, where the leaves are and the root is the tree. Each node child is required to calculate this path . It is known that a child is. In order to compute the next node of the path , both children of must be known. Hence, the brother of is needed. This node is labeled so that . Therefore nodes are needed to compute every node of the path . These nodes are calculated and saved. Together with a one-time signature from, they form the signature of the Merkle signature process.

verification

The recipient knows the public key , the message , and the signature . First, the recipient verifies the one-time signature of the message . If is a valid signature from , the receiver calculates by calculating the hash value of the public key of the one-time signature. The nodes of the path are calculated for with . If the public key corresponds to the Merkle signature process, the signature is valid.

Further developments

In the course of the search for quantum computer-resistant signature processes, the process has recently come back into focus. In the meantime, improved variants of the Merkle signature procedure have been published, including a.

  • XMSS (eXtended Merkle Signature Scheme), which was standardized as RFC 8391 in 2018
  • SPHINCS with larger signatures than XMSS, but stateless

swell

  1. ^ Johannes Buchmann, Erik Dahmen, Andreas Hülsing: XMSS - A Practical Forward Secure Signature Scheme Based on Minimal Security Assumptions . In: Post-Quantum Cryptography. PQCrypto 2011 (=  Lecture Notes in Computer Science . Volume 7071 ). Springer, Berlin Heidelberg 2011, p. 117-129 , doi : 10.1007 / 978-3-642-25405-5_8 .
  2. ^ Daniel J. Bernstein, Daira Hopwood, Andreas Hülsing, Tanja Lange, Ruben Niederhagen, Louiza Papachristodoulou, Michael Schneider, Peter Schwabe, Zooko Wilcox-O'Hearn: SPHINCS: practical stateless hash-based signatures . In: Elisabeth Oswald, Marc Fischlin (Ed.): Advances in Cryptology - EUROCRYPT 2015 (=  Lecture Notes in Computer Science . Volume 9056 ). Springer, Berlin Heidelberg 2015, ISBN 978-3-662-46799-2 , p. 368-397 , doi : 10.1007 / 978-3-662-46800-5_15 .
  3. SPHINCS: Introduction. Retrieved January 25, 2019 .

Web links

  • Efficient Use of Merkle Trees - Declaration by RSA Security for the original purpose of Merkle trees: the handling of many Lamport one-time signatures.