Recent from talks
Nothing was collected or created yet.
Hash chain
View on WikipediaThis article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
A hash chain is the successive application of a cryptographic hash function to a piece of data. In computer security, a hash chain is a method used to produce many one-time keys from a single key or password. For non-repudiation, a hash function can be applied successively to additional pieces of data in order to record the chronology of data's existence.
Definition
[edit]A hash chain is a successive application of a cryptographic hash function to a string .
For example,
gives a hash chain of length 4, often denoted
Applications
[edit]Leslie Lamport[1] suggested the use of hash chains as a password protection scheme in an insecure environment. A server which needs to provide authentication may store a hash chain rather than a plain text password and prevent theft of the password in transmission or theft from the server. For example, a server begins by storing which is provided by the user. When the user wishes to authenticate, they supply to the server. The server computes and verifies this matches the hash chain it has stored. It then stores for the next time the user wishes to authenticate.
An eavesdropper seeing communicated to the server will be unable to re-transmit the same hash chain to the server for authentication since the server now expects . Due to the one-way property of cryptographically secure hash functions, it is infeasible for the eavesdropper to reverse the hash function and obtain an earlier piece of the hash chain. In this example, the user could authenticate 1000 times before the hash chain were exhausted. Each time the hash value is different, and thus cannot be duplicated by an attacker.
Binary hash chains
[edit]Binary hash chains are commonly used in association with a hash tree. A binary hash chain takes two hash values as inputs, concatenates them and applies a hash function to the result, thereby producing a third hash value.
The above diagram shows a hash tree consisting of eight leaf nodes and the hash chain for the third leaf node. In addition to the hash values themselves the order of concatenation (right or left 1,0) or "order bits" are necessary to complete the hash chain.
Winternitz chains
[edit]Winternitz chains (also known as function chains[2]) are used in hash-based cryptography. The chain is parameterized by the Winternitz parameter w (number of bits in a "digit" d) and security parameter n (number of bits in the hash value, typically double the security strength,[3] 256 or 512). The chain consists of values that are results of repeated application of a one-way "chain" function F to a secret key sk: . The chain function is typically based on a standard cryptographic hash, but needs to be parameterized ("randomized"[4]), so it involves few invocations of the underlying hash.[5] In the Winternitz signature scheme a chain is used to encode one digit of the m-bit message, so the Winternitz signature uses approximately bits, its calculation takes about applications of the function F.[3] Note that some signature standards (like Extended Merkle signature scheme, XMSS) define w as the number of possible values in a digit, so in XMSS corresponds to in standards (like Leighton-Micali Signature, LMS) that define w in the same way as above - as a number of bits in the digit.[6]
Hash chain vs. blockchain
[edit]A hash chain is similar to a blockchain, as they both utilize a cryptographic hash function for creating a link between two nodes. However, a blockchain (as used by Bitcoin and related systems) is generally intended to support distributed agreement around a public ledger (data), and incorporates a set of rules for encapsulation of data and associated data permissions.
See also
[edit]- Challenge–response authentication
- Hash list – In contrast to the recursive structure of hash chains, the elements of a hash list are independent of each other.
- One-time password
- Key stretching
- Linked timestamping – Binary hash chains are a key component in linked timestamping.
- X.509
References
[edit]- ^ L. Lamport, “Password Authentication with Insecure Communication”, Communications of the ACM 24.11 (November 1981), pp 770-772. [1]
- ^ Hülsing 2013b, pp. 18–20.
- ^ a b Buchmann et al. 2011, p. 2.
- ^ Hülsing 2013b.
- ^ RFC 8391
- ^ NIST SP 800-208, Recommendation for Stateful Hash-Based Signature Schemes, p. 5
Sources
[edit]- Buchmann, Johannes; Dahmen, Erik; Ereth, Sarah; Hülsing, Andreas; Rückert, Markus (2011). "On the Security of the Winternitz One-Time Signature Scheme" (PDF). Progress in Cryptology – AFRICACRYPT 2011. Lecture Notes in Computer Science. Vol. 6737. Springer Berlin Heidelberg. pp. 363–378. doi:10.1007/978-3-642-21969-6_23. eISSN 1611-3349. ISBN 978-3-642-21968-9. ISSN 0302-9743.
- Hülsing, Andreas (2013b). Practical Forward Secure Signatures using Minimal Security Assumptions (PDF) (PhD). TU Darmstadt.
- Hülsing, Andreas (2013a). "W-OTS+ – Shorter Signatures for Hash-Based Signature Schemes" (PDF). Progress in Cryptology – AFRICACRYPT 2013. Lecture Notes in Computer Science. Vol. 7918. Springer Berlin Heidelberg. pp. 173–188. doi:10.1007/978-3-642-38553-7_10. eISSN 1611-3349. ISBN 978-3-642-38552-0. ISSN 0302-9743.
Hash chain
View on GrokipediaFundamentals
Definition
A hash chain is a sequence of values generated by iteratively applying a cryptographic hash function to an initial seed value, where each subsequent value is the hash of the immediately preceding one.[7] This structure forms a unidirectional chain, as computing forward from any point is straightforward, but reversing the process to find prior values is computationally infeasible due to the properties of the underlying hash function.[8] Cryptographic hash functions, which serve as the building blocks for hash chains, are mathematical algorithms that map input data of arbitrary length to a fixed-size output, typically a string of hexadecimal digits.[9] These functions exhibit the avalanche effect, whereby even a minor change in the input—such as flipping a single bit—results in a dramatically different output, with approximately half the bits altered on average.[10] Key security properties include preimage resistance (difficulty in finding an input that produces a given output), collision resistance (infeasibility of finding two distinct inputs yielding the same output), and second-preimage resistance (hardness of producing a different input with the same output as a given input).[9] These attributes ensure the chain's integrity and resistance to tampering or forgery. For example, given a seed value and a hash function , the chain is constructed as , , ..., .[8] This iterative process leverages the one-way nature of , making it easy to verify forward links (e.g., checking if ) while preventing backward computation. The concept originated in cryptographic literature in the early 1980s, introduced by Leslie Lamport for secure one-time password authentication over insecure channels.[11]Construction
A hash chain is constructed by selecting a secure cryptographic one-way hash function, such as SHA-256, which produces a 256-bit output and is designed to resist preimage and collision attacks.[12] The process starts with choosing an initial seed value, typically a random or secret string of sufficient entropy to prevent predictability by adversaries. This seed, denoted as , serves as the starting point, and the chain is generated by iteratively applying the hash function to produce subsequent values up to a predetermined length . For example, each for to , where is the chosen hash function.[13] The chain length is selected based on the anticipated number of uses or the desired lifetime of the chain; for example, values on the order of (approximately 1 million) are used in some systems to support extended authentication periods without reseeding.[14] Typically, only the endpoint hash is stored publicly or shared for verification purposes, while the full chain may be generated and stored privately if needed for sequential revelation. Weak hash functions must be avoided during construction; for instance, MD5 was deprecated after 2008 due to practical collision attacks that undermine its one-way property.[15] To illustrate the algorithmic process, the following pseudocode outlines the basic iterative construction:function generate_hash_chain(seed, n, H):
h = seed // h_0 = seed
chain = [h] // Optional: store full chain if needed
for i = 1 to n:
h = H(h) // Apply [hash function](/page/Hash_function)
chain.append(h) // Optional storage
return chain // Or just return h_n for endpoint-only
function generate_hash_chain(seed, n, H):
h = seed // h_0 = seed
chain = [h] // Optional: store full chain if needed
for i = 1 to n:
h = H(h) // Apply [hash function](/page/Hash_function)
chain.append(h) // Optional storage
return chain // Or just return h_n for endpoint-only

