HOME

TheInfoList



OR:

In
cryptography Cryptography, or cryptology (from grc, , translit=kryptós "hidden, secret"; and ''graphein'', "to write", or ''-logia'', "study", respectively), is the practice and study of techniques for secure communication in the presence of adve ...
, a Lamport signature or Lamport one-time signature scheme is a method for constructing a
digital signature A digital signature is a mathematical scheme for verifying the authenticity of digital messages or documents. A valid digital signature, where the prerequisites are satisfied, gives a recipient very high confidence that the message was created b ...
. Lamport signatures can be built from any cryptographically secure
one-way function In computer science, a one-way function is a function that is easy to compute on every input, but hard to invert given the image of a random input. Here, "easy" and "hard" are to be understood in the sense of computational complexity theory, spe ...
; usually a
cryptographic hash function A cryptographic hash function (CHF) is a hash algorithm (a map of an arbitrary binary string to a binary string with fixed size of n bits) that has special properties desirable for cryptography: * the probability of a particular n-bit output re ...
is used. Although the potential development of
quantum computer Quantum computing is a type of computation whose operations can harness the phenomena of quantum mechanics, such as superposition, interference, and entanglement. Devices that perform quantum computations are known as quantum computers. Though ...
s threatens the security of many common forms of cryptography such as RSA, it is believed that Lamport signatures with large hash functions would still be secure in that event. Each Lamport key can be used to sign a single message. Combined with
hash tree Hash, hashes, hash mark, or hashing may refer to: Substances * Hash (food), a coarse mixture of ingredients * Hash, a nickname for hashish, a cannabis product Hash mark * Hash mark (sports), a marking on hockey rinks and gridiron football fiel ...
s, a single key could be used for many messages, making this a fairly efficient digital signature scheme. The Lamport signature cryptosystem was invented in 1979 and named after its inventor,
Leslie Lamport Leslie B. Lamport (born February 7, 1941 in Brooklyn) is an American computer scientist and mathematician. Lamport is best known for his seminal work in distributed systems, and as the initial developer of the document preparation system LaTeX an ...
.


Example

Alice Alice may refer to: * Alice (name), most often a feminine given name, but also used as a surname Literature * Alice (''Alice's Adventures in Wonderland''), a character in books by Lewis Carroll * ''Alice'' series, children's and teen books by ...
has a 256-bit cryptographic hash function and some kind of secure
random number generator Random number generation is a process by which, often by means of a random number generator (RNG), a sequence of numbers or symbols that cannot be reasonably predicted better than by random chance is generated. This means that the particular outc ...
. She wants to create and use a Lamport key pair, that is, a private key and a corresponding public key.


Making the key pair

To create the private key Alice uses the random number generator to produce 256 pairs of random numbers (2×256 numbers in total), each number being 256 bits in size, that is, a total of 2×256×256 bits = 128 Kibit in total. This is her private key and she will store it away in a secure place for later use. To create the public key she hashes each of the 512 random numbers in the private key, thus creating 512 hashes, each 256 bits in size. (Also 128 Kbits in total.) These 512 numbers form her public key, which she will share with the world.


Signing the message

Later Alice wants to sign a message. First she hashes the message to a 256-bit hash sum. Then, for each bit in the hash, based on the value of the bit, she picks one number from the corresponding pairs of numbers that make up her private key (i.e., if the bit is 0, the first number is chosen, and if the bit is 1, the second is chosen). This produces a sequence of 256 numbers. As each number is itself 256 bits long the total size of her signature will be 256×256 bits = 65536 bits = 64 Kibit. These (originally randomly picked) numbers are her signature and she publishes them along with the message. Note that now that Alice's private key is used, it should never be used again. She must destroy the other 256 numbers that she did not use for the signature. Otherwise, each additional signature reusing the private key reduces the
security level In cryptography, security level is a measure of the strength that a cryptographic primitive — such as a cipher or hash function — achieves. Security level is usually expressed as a number of "bits of security" (also security strength) ...
against adversaries that might later create false signatures from them.


Verifying the signature

Then Bob wants to verify Alice's signature of the message. He also hashes the message to get a 256-bit hash sum. Then he uses the bits in the hash sum to pick out 256 of the hashes in Alice's public key. He picks the hashes in the same manner that Alice picked the random numbers for the signature. That is, if the first bit of the message hash is a 0, he picks the ''first'' hash in the first pair, and so on. Then Bob hashes each of the 256 random numbers in Alice's signature. This gives him 256 hashes. If these 256 hashes exactly match the 256 hashes he just picked from Alice's public key then the signature is ok. If not, then the signature is wrong. Note that prior to Alice publishing the signature of the message, no one else knows the 2×256 random numbers in the private key. Thus, no one else can create the proper list of 256 random numbers for the signature. And after Alice has published the signature, others still do not know the other 256 random numbers and thus can not create signatures that fit other message hashes.


Formal description

Below is a short description of how Lamport signatures work, written in
mathematical notation Mathematical notation consists of using symbols for representing operations, unspecified numbers, relations and any other mathematical objects, and assembling them into expressions and formulas. Mathematical notation is widely used in mathem ...
. Note that the "message" in this description is a fixed sized block of reasonable size, possibly (but not necessarily) the hash result of an arbitrary long message being signed.


Keys

Let k be a positive integer and let P = \^k be the set of messages. Let f:\,Y \rightarrow Z be a
one-way function In computer science, a one-way function is a function that is easy to compute on every input, but hard to invert given the image of a random input. Here, "easy" and "hard" are to be understood in the sense of computational complexity theory, spe ...
. For 1 \leq i \leq k and j \in \ the signer chooses y_ \in Y randomly and computes z_ = f(y_). The private key, K, consists of 2k values y_. The public key consists of the 2k values z_.


Signing a message

Let m = m_1 \ldots m_k \in \^k be a message. The signature of the message is :\operatorname(m_1 \ldots m_k) = (y_, \ldots, y_) = (s_1, \ldots, s_k).


Verifying a signature

The verifier validates a signature by checking that f(s_i) = z_ for all 1 \leq i \leq k. In order to forge a message
Eve Eve (; ; ar, حَوَّاء, Ḥawwāʾ; el, Εὕα, Heúa; la, Eva, Heva; Syriac: romanized: ) is a figure in the Book of Genesis in the Hebrew Bible. According to the origin story, "Creation myths are symbolic stories describing how the ...
would have to invert the one-way function f. This is assumed to be intractable for suitably sized inputs and outputs.


Security parameters

The security of Lamport signatures is based on the security of the one-way hash function and the length of its output. For a hash function that generates an n-bit message digest, the ideal preimage and 2nd preimage resistance on a single hash function invocation implies on the order of 2''n'' operations to find a collision under a classical computing model. According to Grover's algorithm, finding a preimage collision on a single invocation of an ideal hash function is upper bound on O(2''n''/2) operations under a quantum computing model. In Lamport signatures, each bit of the public key and signature is based on short messages requiring only a single invocation to a hash function. For each private key ''yi,j'' and its corresponding ''zi,j'' public key pair, the private key length must be selected so performing a preimage attack on the length of the input is not faster than performing a preimage attack on the length of the output. For example, in a degenerate case, if each private key ''yi,j'' element was only 16 bits in length, it is trivial to exhaustively search all 216 possible private key combinations in 216 operations to find a match with the output, irrespective of the message digest length. Therefore a balanced system design ensures both lengths are approximately equal. Based on Grover's algorithm, a quantum secure system, the length of the public key elements ''zi,j'', the private key elements ''yi,j'' and the signature elements ''si,j'' must be no less than 2 times larger than the security rating of the system. That is: * An 80-bit secure system uses element lengths of no less than 160 bit; * A 128-bit secure system uses element lengths of no less than 256 bit; However caution should be taken as the idealistic work estimates above assume an ideal (perfect) hash function and are limited to attacks that target only a single preimage at a time. It is known under a conventional computing model that if 23''n''/5 preimages are searched, the full cost per preimage decreases from 2''n''/2 to 22''n''/5. Selecting the optimum element size taking into account the collection of multiple message digests is an open problem. Selection of larger element sizes and stronger hash functions, such as 512-bit elements and SHA-512, ensures greater security margins to manage these unknowns.


Optimisations and variants


Short private key

Instead of creating and storing all the random numbers of the private key, a single key of sufficient size can be stored. (Usually the same size as one of the random numbers in the private key.) The single key can then be used as the seed for a
cryptographically secure pseudorandom number generator A cryptographically secure pseudorandom number generator (CSPRNG) or cryptographic pseudorandom number generator (CPRNG) is a pseudorandom number generator (PRNG) with properties that make it suitable for use in cryptography. It is also loosely kno ...
(CSPRNG) to create all the random numbers in the private key when needed. Note a cryptographically secure hash (or at least whose output is not XORed with the seed) can not be used instead of CSPRNG because signing a message would reveal additional random values from the private key. If the adversary can access the signature before the intended recipients can, then he can forge a signature with a halving of security level for each doubling of the revealed random values from the private key. In the same manner a single key can be used together with a CSPRNG to create many Lamport keys. Preferably then some kind of
random access Random access (more precisely and more generally called direct access) is the ability to access an arbitrary element of a sequence in equal time or any datum from a population of addressable elements roughly as easily and efficiently as any othe ...
CSPRNG should be used, such as BBS.


Short public key

A Lamport signature can be combined with a
hash list In computer science, a hash list is typically a list of hashes of the data blocks in a file or set of files. Lists of hashes are used for many different purposes, such as fast table lookup (hash tables) and distributed databases (distributed ha ...
, making it possible to publish only the single top hash instead of all the hashes in the public key. That is, instead of the 2k values z_. To verify against the single top hash, the signature must include the random numbers and the unused hashes from hash list of the public key, resulting in signatures of about twice the size. That is, the values (z_) for all j\neq m_i needs to be included. The unused hashes do not need to be included in the signature if a cryptographic accumulator is used instead of a hash list.


Short keys and signature

Winternitz signature compression reduces the size of the private key and public key by slightly less than a factor of the 2\langle\text\rangle, and half that factor for the signature. The computation increases by slightly more than a factor of 2^/\langle\text \rangle. A cryptographically secure hash suffices instead of the requirement for a CSPRNG. A hash list could also be employed to shorten the public key to a single value at the expense of doubling the size of the signature as explained in the prior section.


Public key for multiple messages

Each Lamport public key can only be used to sign one single message, which means many keys have to be published if many messages are to be signed. But a
hash tree Hash, hashes, hash mark, or hashing may refer to: Substances * Hash (food), a coarse mixture of ingredients * Hash, a nickname for hashish, a cannabis product Hash mark * Hash mark (sports), a marking on hockey rinks and gridiron football fiel ...
can be used on those public keys, publishing the top hash of the hash tree instead. This increases the size of the resulting signature, since parts of the hash tree have to be included in the signature, but it makes it possible to publish a single hash that then can be used to verify any given number of future signatures.


See also

*
S/KEY S/KEY is a one-time password system developed for authentication to Unix-like operating systems, especially from dumb terminals or untrusted public computers on which one does not want to type a long-term password. A user's real password is combined ...


References


Further reading

* L. Lamport, ''Constructing digital signatures from a one-way function'', Technical Report SRI-CSL-98, SRI International Computer Science Laboratory, Oct. 1979.
Efficient Use of Merkle Trees
- RSA labs explanation of the original purpose of Merkle trees + Lamport signatures, as an efficient one-time signature scheme.
An introduction to hash-based signatures and Merkle signatures by Adam Langley.

Reference implementation of Lamport scheme on top of BLAKE2b (C++)

Reference Implementation of Lamport Signatures on top of SHA256, SHA512, or Blake2b (Rust)
{{Cryptography navbox , public-key Digital signature schemes Hash-based cryptography