| < draft-ietf-cose-hash-sig-00.txt | draft-ietf-cose-hash-sig-01.txt > | |||
|---|---|---|---|---|
| INTERNET-DRAFT R. Housley | Network Working Group R. Housley | |||
| Intended Status: Proposed Standard Vigil Security | Internet-Draft Vigil Security | |||
| Expires: 15 July 2019 15 January 2019 | Intended status: Standards Track March 06, 2019 | |||
| Expires: September 7, 2019 | ||||
| Use of the Hash-based Signature Algorithm with | Use of the Hash-based Signature Algorithm with CBOR Object Signing and | |||
| CBOR Object Signing and Encryption (COSE) | Encryption (COSE) | |||
| <draft-ietf-cose-hash-sig-00> | draft-ietf-cose-hash-sig-01 | |||
| Abstract | Abstract | |||
| This document specifies the conventions for using the Leighton-Micali | This document specifies the conventions for using the HSS/LMS hash- | |||
| Signature (LMS) algorithm for digital signatures with the CBOR Object | based signature algorithm with the CBOR Object Signing and Encryption | |||
| Signing and Encryption (COSE) syntax. | (COSE) syntax. The HSS/LMS algorithm is one form of hash-based | |||
| digital signature; it is described in [HASHSIG]. | ||||
| Status of this Memo | Status of This Memo | |||
| This Internet-Draft is submitted to IETF in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF). Note that other groups may also distribute | |||
| other groups may also distribute working documents as Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| The list of current Internet-Drafts can be accessed at | This Internet-Draft will expire on September 7, 2019. | |||
| http://www.ietf.org/1id-abstracts.html | ||||
| The list of Internet-Draft Shadow Directories can be accessed at | ||||
| http://www.ietf.org/shadow.html | ||||
| Copyright and License Notice | Copyright Notice | |||
| Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Algorithm Security Considerations . . . . . . . . . . . . 2 | |||
| 3. LMS Digital Signature Algorithm Overview . . . . . . . . . . . 3 | 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3.1. Hierarchical Signature System (HSS) . . . . . . . . . . . 4 | 2. LMS Digital Signature Algorithm Overview . . . . . . . . . . 3 | |||
| 3.2. Leighton-Micali Signature (LMS) . . . . . . . . . . . . . 5 | 2.1. Hierarchical Signature System (HSS) . . . . . . . . . . . 4 | |||
| 3.3. Leighton-Micali One-time Signature Algorithm (LM-OTS) . . 6 | 2.2. Leighton-Micali Signature (LMS) . . . . . . . . . . . . . 5 | |||
| 4. Hash-based Signature Algorithm Identifiers . . . . . . . . . . 7 | 2.3. Leighton-Micali One-time Signature Algorithm (LM-OTS) . . 6 | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 3. Hash-based Signature Algorithm Identifiers . . . . . . . . . 7 | |||
| 5.1. Implementation Security Considerations . . . . . . . . . . 7 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | |||
| 5.2. Algorithm Security Considerations . . . . . . . . . . . . 8 | 4.1. Implementation Security Considerations . . . . . . . . . 7 | |||
| 6. Operational Considerations . . . . . . . . . . . . . . . . . . 8 | 5. Operational Considerations . . . . . . . . . . . . . . . . . 8 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 7.1. COSE Algorithms Registry Entry . . . . . . . . . . . . . . 9 | 6.1. COSE Algorithms Registry Entry . . . . . . . . . . . . . 9 | |||
| 7.2. COSE Key Types Registry Entry . . . . . . . . . . . . . . 9 | 6.2. COSE Key Types Registry Entry . . . . . . . . . . . . . . 9 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . . 10 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 9 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . . 10 | 7.2. Informative References . . . . . . . . . . . . . . . . . 10 | |||
| Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . 11 | Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 11 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 11 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 1. Introduction | 1. Introduction | |||
| Today, RSA is often used to digitally sign software updates. In | This document specifies the conventions for using the HSS/LMS hash- | |||
| preparation for a day when RSA, DSA, and ECDSA cannot be depended | based signature algorithm with the CBOR Object Signing and Encryption | |||
| upon, a digital signature algorithm is needed that will remain secure | (COSE) [RFC8152] syntax. The Leighton-Micali Signature (LMS) system | |||
| even if there are significant cryptoanalytic advances or a large- | provides a one-time digital signature that is a variant of Merkle | |||
| scale quantum computer is invented. The hash-based digital signature | Tree Signatures (MTS). The Hierarchical Signature System (HSS) is | |||
| algorithm specified in [HASHSIG] is one such algorithm. The use of | built on top of the LMS system to efficiently scale for a larger | |||
| hash-based signatures to protect software update distribution will | numbers of signatures. The HSS/LMS algorithm is one form of hash- | |||
| allow the deployment of software that implements new cryptosystems | based digital signature, and it is described in [HASHSIG]. The HSS/ | |||
| even if such advances break current digital signature mechanisms. | LMS signature algorithm can only be used for a fixed number of | |||
| signing operations. The number of signing operations depends upon | ||||
| the size of the tree. The HSS/LMS signature algorithm uses small | ||||
| public keys, and it has low computational cost; however, the | ||||
| signatures are quite large. The HSS/LMS private key can be very | ||||
| small when the signer is willing to perform additional computation at | ||||
| signing time; alternatively, the private key can consume additional | ||||
| memory and provide a faster signing time. | ||||
| This document specifies the conventions for using the Leighton-Micali | 1.1. Algorithm Security Considerations | |||
| Signature (LMS) algorithm [HASHSIG] for digital signatures with the | ||||
| CBOR Object Signing and Encryption (COSE) [RFC8152] syntax. The LMS | ||||
| algorithm is one form of hash-based digital signature; it can only be | ||||
| used for a fixed number of signatures. The LMS algorithm uses small | ||||
| private and public keys, and it has low computational cost; however, | ||||
| the signatures are quite large. | ||||
| 2. Terminology | At Black Hat USA 2013, some researchers gave a presentation on the | |||
| current sate of public key cryptography. They said: "Current | ||||
| cryptosystems depend on discrete logarithm and factoring which has | ||||
| seen some major new developments in the past 6 months" [BH2013]. | ||||
| They encouraged preparation for a day when RSA and DSA cannot be | ||||
| depended upon. | ||||
| A post-quantum cryptosystem [PQC] is a system that is secure against | ||||
| quantum computers that have more than a trivial number of quantum | ||||
| bits. It is open to conjecture when it will be feasible to build | ||||
| such a machine. RSA, DSA, and ECDSA are not post-quantum secure. | ||||
| The HSS/LMS signature algorithm does not depend on discrete logarithm | ||||
| or factoring, as a result these algorithms are considered to be post- | ||||
| quantum secure. | ||||
| Today, the RSA digital signature algorithm is often used to sign | ||||
| software updates. In preparation for a day when RSA, DSA, and ECDSA | ||||
| cannot be depended upon, a digital signature algorithm is needed that | ||||
| will remain secure even if there are significant cryptoanalytic | ||||
| advances or a large-scale quantum computer is invented. The HSS/LMS | ||||
| hash-based digital signature algorithm specified in [HASHSIG] is one | ||||
| such algorithm. The use of hash-based signatures to protect software | ||||
| update distribution will allow the deployment of software that | ||||
| implements new cryptosystems even if such advances break current | ||||
| digital signature mechanisms. | ||||
| 1.2. Terminology | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
| BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 3. LMS Digital Signature Algorithm Overview | 2. LMS Digital Signature Algorithm Overview | |||
| This specification makes use of the hash-based signature algorithm | This specification makes use of the hash-based signature algorithm | |||
| specified in [HASHSIG], which is the Leighton and Micali adaptation | specified in [HASHSIG], which is the Leighton and Micali adaptation | |||
| [LM] of the original Lamport-Diffie-Winternitz-Merkle one-time | [LM] of the original Lamport-Diffie-Winternitz-Merkle one-time | |||
| signature system [M1979][M1987][M1989a][M1989b]. | signature system [M1979][M1987][M1989a][M1989b]. | |||
| The hash-based signature algorithm has three major components: | The hash-based signature algorithm has three major components: | |||
| o Hierarchical Signature System (HSS) -- see Section 3.1; | o Hierarchical Signature System (HSS) -- see Section 2.1; | |||
| o Leighton-Micali Signature (LMS) -- see Section 3.2; and | o Leighton-Micali Signature (LMS) -- see Section 2.2; and | |||
| o Leighton-Micali One-time Signature Algorithm (LM-OTS) -- see | o Leighton-Micali One-time Signature Algorithm (LM-OTS) -- see | |||
| Section 3.3. | Section 2.3. | |||
| As implied by the name, the hash-based signature algorithm depends on | As implied by the name, the hash-based signature algorithm depends on | |||
| a collision-resistant hash function. The the hash-based signature | a collision-resistant hash function. The the hash-based signature | |||
| algorithm specified in [HASHSIG] currently makes use of the SHA-256 | algorithm specified in [HASHSIG] currently makes use of the SHA-256 | |||
| one-way hash function [SHS], but it also establishes an IANA registry | one-way hash function [SHS], but it also establishes an IANA registry | |||
| to permit the registration of additional one-way hash functions in | to permit the registration of additional one-way hash functions in | |||
| the future. | the future. | |||
| 3.1. Hierarchical Signature System (HSS) | 2.1. Hierarchical Signature System (HSS) | |||
| The hash-based signature algorithm specified in [HASHSIG] uses a | The hash-based signature algorithm specified in [HASHSIG] uses a | |||
| hierarchy of trees. The Hierarchical Signature System (HSS) allows | hierarchy of trees. The Hierarchical Signature System (HSS) allows | |||
| subordinate trees to be generated when needed by the signer. By | subordinate trees to be generated when needed by the signer. By | |||
| using trees-of-trees, a very large number of nodes can be | using trees-of-trees, a very large number of nodes can be | |||
| accommodated, where each node enables a single digital signature. | accommodated, where each node enables a single digital signature. | |||
| Without the HSS, the generation of such a large tree might take weeks | Without the HSS, the generation of such a large tree might take weeks | |||
| or longer. | or longer. | |||
| An HSS signature as specified in [HASHSIG] carries the number of | An HSS signature as specified in [HASHSIG] carries the number of | |||
| signed public keys (Nspk), followed by that number of signed public | signed public keys (Nspk), followed by that number of signed public | |||
| keys, followed by the LMS signature as described in Section 3.2. | keys, followed by the LMS signature as described in Section 2.2. | |||
| Each signed public key is represented by the hash value at the root | Each signed public key is represented by the hash value at the root | |||
| of the tree, and it also contains information about the tree | of the tree, and it also contains information about the tree | |||
| structure. The signature over the public key is an LMS signature as | structure. The signature over the public key is an LMS signature as | |||
| described in Section 3.2. | described in Section 2.2. | |||
| The elements of the HSS signature value for a stand-alone tree can be | The elements of the HSS signature value for a stand-alone tree can be | |||
| summarized as: | summarized as: | |||
| u32str(0) || | u32str(0) || | |||
| lms_signature /* signature of message */ | lms_signature /* signature of message */ | |||
| The elements of the HSS signature value for a tree with Nspk levels | The elements of the HSS signature value for a tree with Nspk levels | |||
| can be summarized as: | can be summarized as: | |||
| skipping to change at page 5, line 5 ¶ | skipping to change at page 5, line 5 ¶ | |||
| ... | ... | |||
| signed_public_key[Nspk-2] || | signed_public_key[Nspk-2] || | |||
| signed_public_key[Nspk-1] || | signed_public_key[Nspk-1] || | |||
| lms_signature /* signature of message */ | lms_signature /* signature of message */ | |||
| where, as defined in Section 3.3 of [HASHSIG], a signed_public_key is | where, as defined in Section 3.3 of [HASHSIG], a signed_public_key is | |||
| the lms_signature over the public key followed by the public key | the lms_signature over the public key followed by the public key | |||
| itself. Note that Nspk is the number of levels in the hierarchy of | itself. Note that Nspk is the number of levels in the hierarchy of | |||
| trees minus 1. | trees minus 1. | |||
| 3.2. Leighton-Micali Signature (LMS) | 2.2. Leighton-Micali Signature (LMS) | |||
| Each tree in the hash-based signature algorithm specified in | Each tree in the hash-based signature algorithm specified in | |||
| [HASHSIG] uses the Leighton-Micali Signature (LMS) system. LMS | [HASHSIG] uses the Leighton-Micali Signature (LMS) system. LMS | |||
| systems have two parameters. The first parameter is the height of | systems have two parameters. The first parameter is the height of | |||
| the tree, h, which is the number of levels in the tree minus one. | the tree, h, which is the number of levels in the tree minus one. | |||
| The hash-based signature algorithm supports five values for this | The [HASHSIG] includes support for five values of this parameter: | |||
| parameter: h=5; h=10; h=15; h=20; and h=25. Note that there are 2^h | h=5; h=10; h=15; h=20; and h=25. Note that there are 2^h leaves in | |||
| leaves in the tree. The second parameter is the number of bytes | the tree. The second parameter is the number of bytes output by the | |||
| output by the hash function, m, which is the amount of data | hash function, m, which is the amount of data associated with each | |||
| associated with each node in the tree. This specification supports | node in the tree. This specification supports only SHA-256, with | |||
| only SHA-256, with m=32. | m=32. An IANA registry is defined so that other hash functions could | |||
| be used in the future. | ||||
| Currently, the hash-based signature algorithm supports five tree | Currently, the hash-based signature algorithm supports five tree | |||
| sizes: | sizes: | |||
| LMS_SHA256_M32_H5; | LMS_SHA256_M32_H5; | |||
| LMS_SHA256_M32_H10; | LMS_SHA256_M32_H10; | |||
| LMS_SHA256_M32_H15; | LMS_SHA256_M32_H15; | |||
| LMS_SHA256_M32_H20; and | LMS_SHA256_M32_H20; and | |||
| LMS_SHA256_M32_H25. | LMS_SHA256_M32_H25. | |||
| The [HASHSIG] specification establishes an IANA registry to permit | The [HASHSIG] specification establishes an IANA registry to permit | |||
| the registration of additional tree sizes in the future. | the registration of additional tree sizes in the future. | |||
| An LMS signature consists of four elements: the number of the leaf | An LMS signature consists of four elements: the number of the leaf | |||
| associated with the LM-OTS signature, an LM-OTS signature as | associated with the LM-OTS signature, an LM-OTS signature as | |||
| described in Section 3.3, a typecode indicating the particular LMS | described in Section 2.3, a typecode indicating the particular LMS | |||
| algorithm, and an array of values that is associated with the path | algorithm, and an array of values that is associated with the path | |||
| through the tree from the leaf associated with the LM-OTS signature | through the tree from the leaf associated with the LM-OTS signature | |||
| to the root. The array of values contains the siblings of the nodes | to the root. The array of values contains the siblings of the nodes | |||
| on the path from the leaf to the root but does not contain the nodes | on the path from the leaf to the root but does not contain the nodes | |||
| on the path itself. The array for a tree with height h will have h | on the path itself. The array for a tree with height h will have h | |||
| values. The first value is the sibling of the leaf, the next value | values. The first value is the sibling of the leaf, the next value | |||
| is the sibling of the parent of the leaf, and so on up the path to | is the sibling of the parent of the leaf, and so on up the path to | |||
| the root. | the root. | |||
| The four elements of the LMS signature value can be summarized as: | The four elements of the LMS signature value can be summarized as: | |||
| u32str(q) || | u32str(q) || | |||
| ots_signature || | ots_signature || | |||
| u32str(type) || | u32str(type) || | |||
| path[0] || path[1] || ... || path[h-1] | path[0] || path[1] || ... || path[h-1] | |||
| 3.3. Leighton-Micali One-time Signature Algorithm (LM-OTS) | 2.3. Leighton-Micali One-time Signature Algorithm (LM-OTS) | |||
| The hash-based signature algorithm depends on a one-time signature | The hash-based signature algorithm depends on a one-time signature | |||
| method. This specification makes use of the Leighton-Micali One-time | method. This specification makes use of the Leighton-Micali One-time | |||
| Signature Algorithm (LM-OTS) [HASHSIG]. An LM-OTS has five | Signature Algorithm (LM-OTS) [HASHSIG]. An LM-OTS has five | |||
| parameters: | parameters: | |||
| n - The number of bytes output by the hash function. This | n - The number of bytes output by the hash function. This | |||
| specification supports only SHA-256 [SHS], with n=32. | specification supports only SHA-256 {{SHS}}, with n=32. | |||
| H - A preimage-resistant hash function that accepts byte strings | H - A preimage-resistant hash function that accepts byte strings | |||
| of any length, and returns an n-byte string. This | of any length, and returns an n-byte string. This | |||
| specification supports only SHA-256 [SHS]. | specification supports only SHA-256 [SHS]. | |||
| w - The width in bits of the Winternitz coefficients. [HASHSIG] | w - The width in bits of the Winternitz coefficients. [HASHSIG] | |||
| supports four values for this parameter: w=1; w=2; w=4; and | supports four values for this parameter: w=1; w=2; w=4; and | |||
| w=8. | w=8. | |||
| p - The number of n-byte string elements that make up the LM-OTS | p - The number of n-byte string elements that make up the LM-OTS | |||
| skipping to change at page 6, line 40 ¶ | skipping to change at page 6, line 40 ¶ | |||
| n and w, as described in Appendix A of [HASHSIG]. | n and w, as described in Appendix A of [HASHSIG]. | |||
| Currently, the hash-based signature algorithm supports four LM-OTS | Currently, the hash-based signature algorithm supports four LM-OTS | |||
| variants: | variants: | |||
| LMOTS_SHA256_N32_W1; | LMOTS_SHA256_N32_W1; | |||
| LMOTS_SHA256_N32_W2; | LMOTS_SHA256_N32_W2; | |||
| LMOTS_SHA256_N32_W4; and | LMOTS_SHA256_N32_W4; and | |||
| LMOTS_SHA256_N32_W8. | LMOTS_SHA256_N32_W8. | |||
| The [HASHSIG] specification establishes an IANA registry to permit | The [HASHSIG] specification establishes an IANA registry to permit | |||
| the registration of additional variants in the future. | the registration of additional variants in the future. | |||
| Signing involves the generation of C, which is an n-byte random | Signing involves the generation of C, which is an n-byte random | |||
| value. | value. | |||
| The LM-OTS signature value can be summarized as: | The LM-OTS signature value can be summarized as: | |||
| u32str(otstype) || C || y[0] || ... || y[p-1] | u32str(otstype) || C || y[0] || ... || y[p-1] | |||
| 4. Hash-based Signature Algorithm Identifiers | 3. Hash-based Signature Algorithm Identifiers | |||
| The CBOR Object Signing and Encryption (COSE) [RFC8152] supports two | The CBOR Object Signing and Encryption (COSE) [RFC8152] supports two | |||
| signature algorithm schemes. This specification makes use of the | signature algorithm schemes. This specification makes use of the | |||
| signature with appendix scheme for hash-based signatures. | signature with appendix scheme for hash-based signatures. | |||
| The signature value is a large byte string. The byte string is | The signature value is a large byte string. The byte string is | |||
| designed for easy parsing, and it includes a counter and type codes | designed for easy parsing, and it includes a counter and type codes | |||
| that indirectly provide all of the information that is needed to | that indirectly provide all of the information that is needed to | |||
| parse the byte string during signature validation. | parse the byte string during signature validation. | |||
| skipping to change at page 7, line 34 ¶ | skipping to change at page 7, line 34 ¶ | |||
| creating a hash-based signature. | creating a hash-based signature. | |||
| o If the 'key_ops' field is present, it MUST include 'verify' | o If the 'key_ops' field is present, it MUST include 'verify' | |||
| when verifying a hash-based signature. | when verifying a hash-based signature. | |||
| o If the 'kid' field is present, it MAY be used to identify the | o If the 'kid' field is present, it MAY be used to identify the | |||
| top of the HSS tree. In [HASHSIG], this identifier is called | top of the HSS tree. In [HASHSIG], this identifier is called | |||
| 'I', and it is the 16-byte identifier of the LMS public key | 'I', and it is the 16-byte identifier of the LMS public key | |||
| for the tree. | for the tree. | |||
| 5. Security Considerations | 4. Security Considerations | |||
| 5.1. Implementation Security Considerations | 4.1. Implementation Security Considerations | |||
| Implementations must protect the private keys. Use of a hardware | Implementations must protect the private keys. Use of a hardware | |||
| security module (HSM) is one way to protect the private keys. | security module (HSM) is one way to protect the private keys. | |||
| Compromise of the private keys may result in the ability to forge | Compromise of the private keys may result in the ability to forge | |||
| signatures. Along with the private key, the implementation must keep | signatures. Along with the private key, the implementation must keep | |||
| track of which leaf nodes in the tree have been used. Loss of | track of which leaf nodes in the tree have been used. Loss of | |||
| integrity of this tracking data can cause a one-time key to be used | integrity of this tracking data can cause a one-time key to be used | |||
| more than once. As a result, when a private key and the tracking | more than once. As a result, when a private key and the tracking | |||
| data are stored on non-volatile media or stored in a virtual machine | data are stored on non-volatile media or stored in a virtual machine | |||
| environment, care must be taken to preserve confidentiality and | environment, care must be taken to preserve confidentiality and | |||
| skipping to change at page 8, line 24 ¶ | skipping to change at page 8, line 24 ¶ | |||
| force searching the whole key space. The generation of quality | force searching the whole key space. The generation of quality | |||
| random numbers is difficult. [RFC4086] offers important guidance in | random numbers is difficult. [RFC4086] offers important guidance in | |||
| this area. | this area. | |||
| The generation of hash-based signatures also depends on random | The generation of hash-based signatures also depends on random | |||
| numbers. While the consequences of an inadequate pseudo-random | numbers. While the consequences of an inadequate pseudo-random | |||
| number generator (PRNGs) to generate these values is much less severe | number generator (PRNGs) to generate these values is much less severe | |||
| than the generation of private keys, the guidance in [RFC4086] | than the generation of private keys, the guidance in [RFC4086] | |||
| remains important. | remains important. | |||
| 5.2. Algorithm Security Considerations | 5. Operational Considerations | |||
| At Black Hat USA 2013, some researchers gave a presentation on the | ||||
| current sate of public key cryptography. They said: "Current | ||||
| cryptosystems depend on discrete logarithm and factoring which has | ||||
| seen some major new developments in the past 6 months" [BH2013]. | ||||
| They encouraged preparation for a day when RSA and DSA cannot be | ||||
| depended upon. | ||||
| A post-quantum cryptosystem is a system that is secure against | ||||
| quantum computers that have more than a trivial number of quantum | ||||
| bits. It is open to conjecture when it will be feasible to build | ||||
| such a machine. RSA, DSA, and ECDSA are not post-quantum secure. | ||||
| The LM-OTP one-time signature, LMS, and HSS do not depend on discrete | ||||
| logarithm or factoring, as a result these algorithms are considered | ||||
| to be post-quantum secure. | ||||
| Today, RSA is often used to digitally sign software updates. This | ||||
| means that the distribution of software updates could be compromised | ||||
| if a significant advance is made in factoring or a quantum computer | ||||
| is invented. The use of hash-based signatures to protect software | ||||
| update distribution will allow the deployment of software that | ||||
| implements new cryptosystems. | ||||
| 6. Operational Considerations | ||||
| The public key for the hash-based signature is the key at the root of | The public key for the hash-based signature is the key at the root of | |||
| Hierarchical Signature System (HSS). In the absence of a public key | Hierarchical Signature System (HSS). In the absence of a public key | |||
| infrastructure [RFC5280], this public key is a trust anchor, and the | infrastructure [RFC5280], this public key is a trust anchor, and the | |||
| number of signatures that can be generated is bounded by the size of | number of signatures that can be generated is bounded by the size of | |||
| the overall HSS set of trees. When all of the LM-OTS signatures have | the overall HSS set of trees. When all of the LM-OTS signatures have | |||
| been used to produce a signature, then the establishment of a new | been used to produce a signature, then the establishment of a new | |||
| trust anchor is required. | trust anchor is required. | |||
| To ensure that none of tree nodes are used to generate more than one | To ensure that none of tree nodes are used to generate more than one | |||
| signature, the signer maintains state across different invocations of | signature, the signer maintains state across different invocations of | |||
| the signing algorithm. Section 12.2 of [HASHSIG] offers some | the signing algorithm. Section 12.2 of [HASHSIG] offers some | |||
| practical implementation approaches around this statefulness. In | practical implementation approaches around this statefulness. In | |||
| some of these approaches, nodes are sacrificed to ensure that none | some of these approaches, nodes are sacrificed to ensure that none | |||
| are used more than once. As a result, the total number of signatures | are used more than once. As a result, the total number of signatures | |||
| that can be generated might be less than the overall HSS set of | that can be generated might be less than the overall HSS set of | |||
| trees. | trees. | |||
| 7. IANA Considerations | 6. IANA Considerations | |||
| IANA is requested to add entries for hash-based signatures in the | IANA is requested to add entries for hash-based signatures in the | |||
| "COSE Algorithms" registry and hash-based public keys in the "COSE | "COSE Algorithms" registry and hash-based public keys in the "COSE | |||
| Key Types" registry. | Key Types" registry. | |||
| 7.1. COSE Algorithms Registry Entry | 6.1. COSE Algorithms Registry Entry | |||
| The new entry in the "COSE Algorithms" registry has the following | The new entry in the "COSE Algorithms" registry has the following | |||
| columns: | columns: | |||
| Name: HASHSIG-HSS-LMS | Name: HSS-LMS | |||
| Value: TBD (Value to be assigned by IANA) | Value: TBD (Value to be assigned by IANA) | |||
| Description: Hash-based digital signatures using HSS/LMS | Description: HSS/LMS hash-based digital signature | |||
| Reference: This document (Number to be assigned by RFC Editor) | Reference: This document (Number to be assigned by RFC Editor) | |||
| Recommended: Yes | Recommended: Yes | |||
| 7.2. COSE Key Types Registry Entry | 6.2. COSE Key Types Registry Entry | |||
| The new entry in the "COSE Key Types" registry has the following | The new entry in the "COSE Key Types" registry has the following | |||
| columns: | columns: | |||
| Name: HASHSIG-HSS-LMS | Name: HSS-LMS | |||
| Value: TBD (Value to be assigned by IANA) | Value: TBD (Value to be assigned by IANA) | |||
| Description: Public key for hash-based digital signature using HSS/LMS | Description: Public key for HSS/LMS hash-based digital signature | |||
| Reference: This document (Number to be assigned by RFC Editor) | Reference: This document (Number to be assigned by RFC Editor) | |||
| 8. References | 7. References | |||
| 8.1. Normative References | 7.1. Normative References | |||
| [HASHSIG] McGrew, D., M. Curcio, and S. Fluhrer, "Hash-Based | [HASHSIG] McGrew, D., Curcio, M., and S. Fluhrer, "Hash-Based | |||
| Signatures", Work in progress. <draft-mcgrew-hash- | Signatures", draft-mcgrew-hash-sigs-15 (work in progress), | |||
| sigs-14> | January 2019. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, DOI | Requirement Levels", BCP 14, RFC 2119, | |||
| 10.17487/RFC2119, March 1997, <http://www.rfc- | DOI 10.17487/RFC2119, March 1997, | |||
| editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC8152] Schaad, J., "CBOR Object Signing and Encryption (COSE)", | [RFC8152] Schaad, J., "CBOR Object Signing and Encryption (COSE)", | |||
| RFC 8152, DOI 10.17487/RFC8152, July 2017, | RFC 8152, DOI 10.17487/RFC8152, July 2017, | |||
| <https://www.rfc-editor.org/info/rfc8152>. | <https://www.rfc-editor.org/info/rfc8152>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| RFC 2119 Key Words", BCP 14, RFC 8174, DOI | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| 10.17487/RFC8174, May 2017, <https://www.rfc- | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| editor.org/info/rfc8174>. | ||||
| [SHS] National Institute of Standards and Technology (NIST), | [SHS] National Institute of Standards and Technology (NIST), | |||
| FIPS Publication 180-3: Secure Hash Standard, October | "Secure Hash Standard", FIPS Publication 180-3, 2008. | |||
| 2008. | ||||
| 8.2. Informative References | 7.2. Informative References | |||
| [BH2013] Ptacek, T., T. Ritter, J. Samuel, and A. Stamos, "The | [BH2013] Ptacek, T., Ritter, T., Samuel, J., and A. Stamos, "The | |||
| Factoring Dead: Preparing for the Cryptopocalypse", August | Factoring Dead: Preparing for the Cryptopocalypse", August | |||
| 2013. <https://media.blackhat.com/us-13/us-13-Stamos-The- | 2013, <https://media.blackhat.com/us-13/ | |||
| Factoring-Dead.pdf> | us-13-Stamos-The-Factoring-Dead.pdf>. | |||
| [LM] Leighton, T. and S. Micali, "Large provably fast and | [LM] Leighton, F. and S. Micali, "Large provably fast and | |||
| secure digital signature schemes from secure hash | secure digital signature schemes from secure hash | |||
| functions", U.S. Patent 5,432,852, July 1995. | functions", U.S. Patent 5,432,852, July 1995. | |||
| [M1979] Merkle, R., "Secrecy, Authentication, and Public Key | [M1979] Merkle, R., "Secrecy, Authentication, and Public Key | |||
| Systems", Stanford University Information Systems | Systems", Stanford University Information Systems | |||
| Laboratory Technical Report 1979-1, 1979. | Laboratory Technical Report 1979-1, 1979. | |||
| [M1987] Merkle, R., "A Digital Signature Based on a Conventional | [M1987] Merkle, R., "A Digital Signature Based on a Conventional | |||
| Encryption Function", Lecture Notes in Computer Science | Encryption Function", Lecture Notes in Computer | |||
| crypto87, 1988. | Science crypto87, 1988. | |||
| [M1989a] Merkle, R., "A Certified Digital Signature", Lecture Notes | [M1989a] Merkle, R., "A Certified Digital Signature", Lecture Notes | |||
| in Computer Science crypto89, 1990. | in Computer Science crypto89, 1990. | |||
| [M1989b] Merkle, R., "One Way Hash Functions and DES", Lecture Notes | [M1989b] Merkle, R., "One Way Hash Functions and DES", Lecture | |||
| in Computer Science crypto89, 1990. | Notes in Computer Science crypto89, 1990. | |||
| [PQC] Bernstein, D., "Introduction to post-quantum | [PQC] Bernstein, D., "Introduction to post-quantum | |||
| cryptography", 2009. | cryptography", 2009, | |||
| <http://www.pqcrypto.org/www.springer.com/cda/content/ | <http://www.pqcrypto.org/www.springer.com/cda/content/ | |||
| document/cda_downloaddocument/9783540887010-c1.pdf> | document/cda_downloaddocument/9783540887010-c1.pdf>. | |||
| [RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, | [RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, | |||
| "Randomness Requirements for Security", BCP 106, RFC 4086, | "Randomness Requirements for Security", BCP 106, RFC 4086, | |||
| DOI 10.17487/RFC4086, June 2005, <http://www.rfc- | DOI 10.17487/RFC4086, June 2005, | |||
| editor.org/info/rfc4086>. | <https://www.rfc-editor.org/info/rfc4086>. | |||
| [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
| Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
| Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
| (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | |||
| <https://www.rfc-editor.org/info/rfc5280>. | <https://www.rfc-editor.org/info/rfc5280>. | |||
| Acknowledgements | Appendix A. Acknowledgements | |||
| Thanks to Jim Schaad and Tony Putman for their valuable review and | Many hanks to Jim Schaad and Tony Putman for their valuable review | |||
| insights. | and insights. | |||
| Author's Address | Author's Address | |||
| Russ Housley | Russ Housley | |||
| Vigil Security, LLC | Vigil Security, LLC | |||
| 516 Dranesville Road | 516 Dranesville Road | |||
| Herndon, VA 20170 | Herndon, VA 20170 | |||
| USA | US | |||
| EMail: housley@vigilsec.com | Email: housley@vigilsec.com | |||
| End of changes. 59 change blocks. | ||||
| 148 lines changed or deleted | 149 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||