rfc9054.original.xml | rfc9054.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version='1.0' encoding='utf-8'?> | |||
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="info" cons | |||
<?rfc toc="yes"?> | ensus="true" docName="draft-ietf-cose-hash-algs-09" indexInclude="true" ipr="tru | |||
<?rfc symrefs="yes"?> | st200902" number="9054" prepTime="2022-08-24T14:59:32" scripts="Common,Latin" so | |||
<?rfc sortrefs="yes"?> | rtRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true | |||
<?rfc comments="yes"?> | " xml:lang="en"> | |||
<rfc ipr="trust200902" docName="draft-ietf-cose-hash-algs-09" category="info" ve | <link href="https://datatracker.ietf.org/doc/draft-ietf-cose-hash-algs-09" rel | |||
rsion="3" submissionType="IETF"> | ="prev"/> | |||
<link href="https://dx.doi.org/10.17487/rfc9054" rel="alternate"/> | ||||
<link href="urn:issn:2070-1721" rel="alternate"/> | ||||
<front> | <front> | |||
<title abbrev="COSE Hashes">CBOR Object Signing and Encryption (COSE): Hash Algorithms</title> | <title abbrev="COSE Hashes">CBOR Object Signing and Encryption (COSE): Hash Algorithms</title> | |||
<seriesInfo name="RFC" value="9054" stream="IETF"/> | ||||
<author initials="J." surname="Schaad" fullname="Jim Schaad"> | <author initials="J." surname="Schaad" fullname="Jim Schaad"> | |||
<organization>August Cellars</organization> | <organization showOnFrontPage="true">August Cellars</organization> | |||
<address> | <address/> | |||
<email>ietf@augustcellars.com</email> | ||||
</address> | ||||
</author> | </author> | |||
<date/> | <date month="08" year="2022"/> | |||
<area>Security</area> | <area>Security</area> | |||
<abstract> | <workgroup>COSE Working Group</workgroup> | |||
<t> | <keyword>SHA-1 Hash Algorithm</keyword> | |||
The CBOR Object Signing and Encryption (COSE) syntax <xref target="I-D.i | <keyword>SHA-2 HAsh Algorithm</keyword> | |||
etf-cose-rfc8152bis-struct"/> does not define any direct methods for using hash | <keyword>SHAKE Algorithm</keyword> | |||
algorithms. | <abstract pn="section-abstract"> | |||
There are, however, circumstances where hash algorithms are used, such a | <t indent="0" pn="section-abstract-1"> | |||
s indirect signatures where the hash of one or more contents are signed, and X.5 | The CBOR Object Signing and | |||
09 certificate or other object identification by the use of a fingerprint. | Encryption (COSE) syntax (see RFC 9052) does not define any | |||
This document defines a set of hash algorithms that are identified by CO | direct methods for using hash algorithms. | |||
SE Algorithm Identifiers. | There are, however, circumstances where hash algorithms are used, such | |||
as indirect signatures, where the hash of one or more contents are | ||||
signed, and identification of an X.509 certificate or other object by the | ||||
use of a fingerprint. | ||||
This document defines hash algorithms that are identified by COSE algori | ||||
thm identifiers. | ||||
</t> | </t> | |||
</abstract> | </abstract> | |||
<note removeInRFC="true"> | <boilerplate> | |||
<name>Contributing to this document</name> | <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc= | |||
<!-- RFC EDITOR - Please remove this note before publishing --> | "exclude" pn="section-boilerplate.1"> | |||
<t> | <name slugifiedName="name-status-of-this-memo">Status of This Memo</name | |||
The source for this draft is being maintained in GitHub. | > | |||
Suggested changes should be submitted as pull requests at <eref target=" | <t indent="0" pn="section-boilerplate.1-1"> | |||
https://github.com/cose-wg/X509"/> | This document is not an Internet Standards Track specification; it i | |||
Editorial changes can be managed in GitHub, but any substantial issues n | s | |||
eed to be discussed on the COSE mailing list. | published for informational purposes. | |||
</t> | </t> | |||
</note> | <t indent="0" pn="section-boilerplate.1-2"> | |||
This document is a product of the Internet Engineering Task Force | ||||
(IETF). It represents the consensus of the IETF community. It has | ||||
received public review and has been approved for publication by the | ||||
Internet Engineering Steering Group (IESG). Not all documents | ||||
approved by the IESG are candidates for any level of Internet | ||||
Standard; see Section 2 of RFC 7841. | ||||
</t> | ||||
<t indent="0" pn="section-boilerplate.1-3"> | ||||
Information about the current status of this document, any | ||||
errata, and how to provide feedback on it may be obtained at | ||||
<eref target="https://www.rfc-editor.org/info/rfc9054" brackets="non | ||||
e"/>. | ||||
</t> | ||||
</section> | ||||
<section anchor="copyright" numbered="false" removeInRFC="false" toc="excl | ||||
ude" pn="section-boilerplate.2"> | ||||
<name slugifiedName="name-copyright-notice">Copyright Notice</name> | ||||
<t indent="0" pn="section-boilerplate.2-1"> | ||||
Copyright (c) 2022 IETF Trust and the persons identified as the | ||||
document authors. All rights reserved. | ||||
</t> | ||||
<t indent="0" pn="section-boilerplate.2-2"> | ||||
This document is subject to BCP 78 and the IETF Trust's Legal | ||||
Provisions Relating to IETF Documents | ||||
(<eref target="https://trustee.ietf.org/license-info" brackets="none | ||||
"/>) in effect on the date of | ||||
publication of this document. Please review these documents | ||||
carefully, as they describe your rights and restrictions with | ||||
respect to this document. Code Components extracted from this | ||||
document must include Revised BSD License text as described in | ||||
Section 4.e of the Trust Legal Provisions and are provided without | ||||
warranty as described in the Revised BSD License. | ||||
</t> | ||||
</section> | ||||
</boilerplate> | ||||
<toc> | ||||
<section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" p | ||||
n="section-toc.1"> | ||||
<name slugifiedName="name-table-of-contents">Table of Contents</name> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="section-to | ||||
c.1-1"> | ||||
<li pn="section-toc.1-1.1"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref der | ||||
ivedContent="1" format="counter" sectionFormat="of" target="section-1"/>. <xref | ||||
derivedContent="" format="title" sectionFormat="of" target="name-introduction"> | ||||
Introduction</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.1.2"> | ||||
<li pn="section-toc.1-1.1.2.1"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1">< | ||||
xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1. | ||||
1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-re | ||||
quirements-terminology">Requirements Terminology</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.2"> | ||||
<t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" form | ||||
at="counter" sectionFormat="of" target="section-2"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-hash-algorithm-usage">Hash Algorit | ||||
hm Usage</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.2.2"> | ||||
<li pn="section-toc.1-1.2.2.1"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1">< | ||||
xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2. | ||||
1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-ex | ||||
ample-cbor-hash-structure"> | ||||
Example CBOR Hash Structure | ||||
</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.3"> | ||||
<t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" form | ||||
at="counter" sectionFormat="of" target="section-3"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-hash-algorithm-identifiers">Hash A | ||||
lgorithm Identifiers</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.3.2"> | ||||
<li pn="section-toc.1-1.3.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent= | ||||
"3.1" format="counter" sectionFormat="of" target="section-3.1"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-sha-1-hash-algorithm"> | ||||
SHA-1 Hash Algorithm</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.3.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent= | ||||
"3.2" format="counter" sectionFormat="of" target="section-3.2"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-sha-2-hash-algorithms" | ||||
>SHA-2 Hash Algorithms</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.3.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.3.2.3.1"><xref derivedContent= | ||||
"3.3" format="counter" sectionFormat="of" target="section-3.3"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-shake-algorithms">SHAK | ||||
E Algorithms</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.4"> | ||||
<t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" form | ||||
at="counter" sectionFormat="of" target="section-4"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-iana-considerations">IANA Consider | ||||
ations</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.4.2"> | ||||
<li pn="section-toc.1-1.4.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent= | ||||
"4.1" format="counter" sectionFormat="of" target="section-4.1"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-cose-algorithm-registr | ||||
y">COSE Algorithm Registry</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.5"> | ||||
<t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" form | ||||
at="counter" sectionFormat="of" target="section-5"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-security-considerations">Security | ||||
Considerations</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6"> | ||||
<t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" form | ||||
at="counter" sectionFormat="of" target="section-6"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-references">References</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.6.2"> | ||||
<li pn="section-toc.1-1.6.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent= | ||||
"6.1" format="counter" sectionFormat="of" target="section-6.1"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-normative-references"> | ||||
Normative References</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent= | ||||
"6.2" format="counter" sectionFormat="of" target="section-6.2"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-informative-references | ||||
">Informative References</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.7"> | ||||
<t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="" forma | ||||
t="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-authors-address">Author's Addres | ||||
s</xref></t> | ||||
</li> | ||||
</ul> | ||||
</section> | ||||
</toc> | ||||
</front> | </front> | |||
<middle> | <middle> | |||
<section anchor="introduction"> | <section anchor="introduction" numbered="true" removeInRFC="false" toc="incl | |||
<name>Introduction</name> | ude" pn="section-1"> | |||
<t> | <name slugifiedName="name-introduction">Introduction</name> | |||
The CBOR Object Signing and Encryption (COSE) syntax does not define any | <t indent="0" pn="section-1-1"> | |||
direct methods for the use of hash algorithms. | The CBOR Object Signing and Encryption (COSE) syntax <xref target="RFC90 | |||
It also does not define a structure syntax that is used to encode a dige | 52" format="default" sectionFormat="of" derivedContent="RFC9052"/> does not defi | |||
sted object structure along the lines of the DigestedData ASN.1 structure in <xr | ne any direct methods for the use of hash algorithms. | |||
ef target="RFC5652"/>. | It also does not define a structure syntax that is used to encode a dige | |||
sted object structure along the lines of the DigestedData ASN.1 structure in <xr | ||||
ef target="RFC5652" format="default" sectionFormat="of" derivedContent="CMS"/>. | ||||
This omission was intentional, as a structure consisting of just a diges t identifier, the content, and a digest value does not, by itself, provide any s trong security service. | This omission was intentional, as a structure consisting of just a diges t identifier, the content, and a digest value does not, by itself, provide any s trong security service. | |||
Additionally, an application is going to be better off defining this typ e of structure so that it can include any additional data that needs to be hashe d, as well as methods of obtaining the data. | Additionally, an application is going to be better off defining this typ e of structure so that it can include any additional data that needs to be hashe d, as well as methods of obtaining the data. | |||
</t> | </t> | |||
<t> | <t indent="0" pn="section-1-2"> | |||
While the above is true, there are some cases where having some standard hash algorithms defined for COSE with a common identifier makes a great deal of sense. | While the above is true, there are some cases where having some standard hash algorithms defined for COSE with a common identifier makes a great deal of sense. | |||
Two of the cases where these are going to be used are: | Two of the cases where these are going to be used are: | |||
</t> | </t> | |||
<ul> | <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-1-3 | |||
<li> | "> | |||
<li pn="section-1-3.1"> | ||||
Indirect signing of content, and | Indirect signing of content, and | |||
</li> | </li> | |||
<li> | <li pn="section-1-3.2"> | |||
Object identification. | Object identification. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t> | <t indent="0" pn="section-1-4"> | |||
Indirect signing of content is a paradigm where the content is not direc | Indirect signing of content is a paradigm where the content is not | |||
tly signed, but instead a hash of the content is computed and that hash value, a | directly signed, but instead a hash of the content is computed, and | |||
long with an identifier for the hash algorithm, is included in the content that | that hash value -- along with an identifier for the hash algorithm -- is | |||
will be signed. | included in the content that will be signed. | |||
Doing indirect signing allows for a signature to be validated without fi | Indirect signing allows for a signature to be validated without first | |||
rst downloading all of the content associated with the signature. | downloading all of the content associated with the signature. | |||
Rather the signature can be validated on all of the hash values and poin | Rather, the signature can be validated on all of the hash values and | |||
ters to the associated contents, then those associated parts can be downloaded, | pointers to the associated contents; those associated parts can then | |||
the hash value of that part computed, and then compared to the hash value in the | be downloaded, then the hash value of that part can be computed and | |||
signed content. | compared to the hash value in the signed content. | |||
This capability can be of even greater importance in a constrained envir | This capability can be of even greater importance in a constrained | |||
onment as not all of the content signed may be needed by the device. | environment, as not all of the content signed may be needed by the | |||
An example of how this is used can be found in <xref target="I-D.ietf-su | device. An example of how this is used can be found in <xref target="I-D. | |||
it-manifest"/>. | ietf-suit-manifest" sectionFormat="of" section="5.4" format="default" derivedLin | |||
k="https://datatracker.ietf.org/doc/html/draft-ietf-suit-manifest-19#section-5.4 | ||||
" derivedContent="SUIT-MANIFEST"/>. | ||||
</t> | </t> | |||
<t> | <t indent="0" pn="section-1-5"> | |||
The use of hashes to identify objects is something that has been very co mmon. | The use of hashes to identify objects is something that has been very co mmon. | |||
One of the primary things that has been identified by a hash function in a secure message is a certificate. | One of the primary things that has been identified by a hash function in a secure message is a certificate. | |||
Two examples of this can be found in <xref target="RFC2634"/> and the CO SE equivalents in <xref target="I-D.ietf-cose-x509"/>. | Two examples of this can be found in <xref target="RFC2634" format="defa ult" sectionFormat="of" derivedContent="ESS"/> and the COSE equivalents in <xref target="I-D.ietf-cose-x509" format="default" sectionFormat="of" derivedContent= "COSE-x509"/>. | |||
</t> | </t> | |||
<section anchor="requirements-terminology"> | <section anchor="requirements-terminology" numbered="true" removeInRFC="fa | |||
<name>Requirements Terminology</name> | lse" toc="include" pn="section-1.1"> | |||
<t> | <name slugifiedName="name-requirements-terminology">Requirements Termino | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "S | logy</name> | |||
HOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in | <t indent="0" pn="section-1.1-1"> | |||
this document are to be interpreted as described in BCP 14 <xref target="RFC211 | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
9"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOUL | |||
as shown here. | D</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>N | |||
OT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
be interpreted as | ||||
described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="o | ||||
f" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFor | ||||
mat="of" derivedContent="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | </t> | |||
</section> | </section> | |||
<!-- | ||||
<section removeInRFC="true"> | ||||
<name>Open Issues</name> | ||||
<ul> | ||||
<li> | ||||
No Open Issues | ||||
</li> | ||||
</ul> | ||||
</section> | ||||
--> | ||||
</section> | </section> | |||
<section numbered="true" removeInRFC="false" toc="include" pn="section-2"> | ||||
<section> | <name slugifiedName="name-hash-algorithm-usage">Hash Algorithm Usage</name | |||
<name>Hash Algorithm Usage</name> | > | |||
<t indent="0" pn="section-2-1"> | ||||
<t> | As noted in the previous section, hash functions can be used for a | |||
As noted in the previous section, hash functions can be used for a varie | variety of purposes. | |||
ty of purposes. | ||||
Some of these purposes require that a hash function be cryptographically strong. | Some of these purposes require that a hash function be cryptographically strong. | |||
These include direct and indirect signatures. | These include direct and indirect signatures -- that is, using the | |||
That is, using the hash as part of the signature or using the hash as pa | hash as part of the signature or using the hash as part of the body to | |||
rt of the body to be signed. | be signed. | |||
Other uses of hash functions may not require the same level of strength. | Other uses of hash functions may not require the same level of strength. | |||
</t> | </t> | |||
<t indent="0" pn="section-2-2"> | ||||
<t> | ||||
This document contains some hash functions that are not designed to be u sed for cryptographic operations. | This document contains some hash functions that are not designed to be u sed for cryptographic operations. | |||
An application that is using a hash function needs to carefully evaluate exactly what hash properties are needed and which hash functions are going to p rovide them. | An application that is using a hash function needs to carefully evaluate exactly what hash properties are needed and which hash functions are going to p rovide them. | |||
Applications should also make sure that the ability to change hash funct | Applications should also make sure that the ability to change hash | |||
ions is part of the base design, as cryptographic advances are sure to reduce th | functions is part of the base design, as cryptographic advances are sure to | |||
e strength of a hash function <xref target="BCP201"/>. | reduce the strength of any given hash function <xref target="BCP201" format="def | |||
ault" sectionFormat="of" derivedContent="BCP201"/>. | ||||
</t> | </t> | |||
<t indent="0" pn="section-2-3"> | ||||
<t> | ||||
A hash function is a map from one, normally large, bit string to a secon d, usually smaller, bit string. | A hash function is a map from one, normally large, bit string to a secon d, usually smaller, bit string. | |||
As the number of possible input values is far greater than the number of possible output values, it is inevitable that there are going to be collisions. | As the number of possible input values is far greater than the number of possible output values, it is inevitable that there are going to be collisions. | |||
The trick is to make sure that it is difficult to find two values that a re going to map to the same output value. | The trick is to make sure that it is difficult to find two values that a re going to map to the same output value. | |||
A "Collision Attack" is one where an attacker can find two different mes sages that have the same hash value. | A "Collision Attack" is one where an attacker can find two different mes sages that have the same hash value. | |||
A hash function that is susceptible to practical collision attacks, <bcp | A hash function that is susceptible to practical collision attacks <bcp1 | |||
14>SHOULD NOT</bcp14> be used for a cryptographic purpose. | 4>SHOULD NOT</bcp14> be used for a cryptographic purpose. | |||
The discovery of theoretical collision attacks against a given hash func | The discovery of theoretical collision attacks against a given hash | |||
tion <bcp14>SHOULD</bcp14> trigger protocol maintainers and users to do a review | function <bcp14>SHOULD</bcp14> trigger protocol maintainers and users | |||
of the continued suitability of the algorithm if alternatives are available and | to review the continued suitability of the algorithm if | |||
migration is viable. | alternatives are available and migration is viable. | |||
The only reason why such a hash function is used is when there is absolu | The only reason such a hash function is used is when there is | |||
tely no other choice (e.g. a Hardware Security Module (HSM) that cannot be repla | absolutely no other choice (e.g., a Hardware Security Module (HSM) | |||
ced), and only after looking at the possible security issues. | that cannot be replaced), and only after looking at the possible | |||
security issues. | ||||
Cryptographic purposes would include the creation of signatures or the u se of hashes for indirect signatures. | Cryptographic purposes would include the creation of signatures or the u se of hashes for indirect signatures. | |||
These functions may still be usable for non-cryptographic purposes. | These functions may still be usable for noncryptographic purposes. | |||
</t> | </t> | |||
<t indent="0" pn="section-2-4"> | ||||
<t> | An example of a noncryptographic use of a hash is filtering from a | |||
An example of a non-cryptographic use of a hash is for filtering from a | collection of values to find a set of possible candidates; the | |||
collection of values to find a set of possible candidates; the candidates can th | candidates can then be checked to see if they can successfully be | |||
en be checked to see if they can successfully be used. | used. | |||
A simple example of this is the classic fingerprint of a certificate. | A simple example of this is the classic fingerprint of a certificate. | |||
If the fingerprint is used to verify that it is the correct certificate, then that usage is a cryptographic one and is subject to the warning above abou t collision attack. | If the fingerprint is used to verify that it is the correct certificate, then that usage is a cryptographic one and is subject to the warning above abou t collision attack. | |||
If, however, the fingerprint is used to sort through a collection of cer tificates to find those that might be used for the purpose of verifying a signat ure, a simple filter capability is sufficient. | If, however, the fingerprint is used to sort through a collection of cer tificates to find those that might be used for the purpose of verifying a signat ure, a simple filter capability is sufficient. | |||
In this case, one still needs to confirm that the public key validates t | In this case, one still needs to confirm that the public key validates | |||
he signature (and the certificate is trusted), and all certificates that don't c | the signature (and that the certificate is trusted), and all certificates that d | |||
ontain a key that validates the signature can be discarded as false positives. | on't contain a key that validates the signature can be discarded as false positi | |||
ves. | ||||
</t> | </t> | |||
<t indent="0" pn="section-2-5"> | ||||
<t> | To distinguish between these two cases, a new value in the Recommended | |||
To distinguish between these two cases, a new value in the recommended c | column of the "COSE Algorithms" registry has been added. | |||
olumn of the COSE Algorithms registry is to be added. | "Filter Only" indicates that the only purpose of a hash function | |||
"Filter Only" indicates that the only purpose of a hash function should | should be to filter results; it is not intended for applications that | |||
be to filter results and it is not intended for applications which require a cry | require a cryptographically strong algorithm. | |||
ptographically strong algorithm. | ||||
</t> | </t> | |||
<section numbered="true" removeInRFC="false" toc="include" pn="section-2.1 | ||||
<section> | "> | |||
<name> | <name slugifiedName="name-example-cbor-hash-structure"> | |||
Example CBOR hash structure | Example CBOR Hash Structure | |||
</name> | </name> | |||
<t indent="0" pn="section-2.1-1"> | ||||
<t> | <xref target="RFC8152" format="default" sectionFormat="of" derivedCont | |||
<xref target="RFC8152"/> did not provide a default structure for holdi | ent="COSE"/> did not provide a default structure for | |||
ng a hash value not only because no separate hash algorithms were defined, but b | holding a hash value both because no separate hash algorithms | |||
ecause how the structure is setup is frequently application specific. | were defined and because the way the structure is set up is frequently | |||
application specific. | ||||
There are four fields that are often included as part of a hash struct ure: | There are four fields that are often included as part of a hash struct ure: | |||
</t> | </t> | |||
<ul bare="false" empty="false" indent="3" spacing="normal" pn="section-2 | ||||
<ul> | .1-2"> | |||
<li> | <li pn="section-2.1-2.1"> | |||
The hash algorithm identifier. | The hash algorithm identifier. | |||
</li> | </li> | |||
<li> | <li pn="section-2.1-2.2"> | |||
The hash value. | The hash value. | |||
</li> | </li> | |||
<li> | <li pn="section-2.1-2.3"> | |||
A pointer to the value that was hashed. | A pointer to the value that was hashed. | |||
This could be a pointer to a file, an object that can be obtained fr | This could be a pointer to a file, an object that can be obtained | |||
om the network, or a pointer to someplace in the message, or something very appl | from the network, a pointer to someplace in the message, or | |||
ication specific. | something very application specific. | |||
</li> | </li> | |||
<li> | <li pn="section-2.1-2.4"> | |||
Additional data; this can be something as simple as a random value ( | Additional data. This can be something as simple as a random value | |||
i.e. salt) to make finding hash collisions slightly harder (as the payload hande | (i.e., salt) to make finding hash collisions slightly harder (because | |||
d to the application could have been selected to have a collision), or as compli | the payload handed to the application could have been selected to | |||
cated as a set of processing instructions that are used with the object that is | have a collision), or as complicated as a set of processing | |||
pointed to. | instructions that is used with the object that is pointed to. | |||
The additional data can be dealt with in a number of ways, prependin | The additional data can be dealt with in a number of ways, | |||
g or appending to the content, but it is strongly suggested that it either be a | prepending or appending to the content, but it is strongly | |||
fixed known size, or the lengths of the pieces being hashed be included. | suggested that either it be a fixed known size, or the lengths of | |||
the pieces being hashed be included so that the resulting byte | ||||
string has a unique interpretation as the additional data. | ||||
(Encoding as a CBOR array accomplishes this requirement.) | (Encoding as a CBOR array accomplishes this requirement.) | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-2.1-3"> | ||||
<t> | An example of a structure that permits all of the above fields to exis | |||
An example of a structure which permits all of the above fields to exi | t would look like the following: | |||
st would look like the following. | ||||
</t> | </t> | |||
<sourcecode type="cddl" markers="false" pn="section-2.1-4"> | ||||
<sourcecode type="CDDL"> | ||||
COSE_Hash_V = ( | COSE_Hash_V = ( | |||
1 : int / tstr, # Algorithm identifier | 1 : int / tstr, # Algorithm identifier | |||
2 : bstr, # Hash value | 2 : bstr, # Hash value | |||
? 3 : tstr, # Location of object that was hashed | ? 3 : tstr, # Location of object that was hashed | |||
? 4 : any # object containing other details and things | ? 4 : any # object containing other details and things | |||
) | ) | |||
</sourcecode> | </sourcecode> | |||
<t indent="0" pn="section-2.1-5"> | ||||
<t> | ||||
Below is an alternative structure that could be used in situations whe re one is searching a group of objects for a matching hash value. | Below is an alternative structure that could be used in situations whe re one is searching a group of objects for a matching hash value. | |||
In this case, the location would not be needed and adding extra data t o the hash would be counterproductive. | In this case, the location would not be needed, and adding extra data to the hash would be counterproductive. | |||
This results in a structure that looks like this: | This results in a structure that looks like this: | |||
</t> | </t> | |||
<sourcecode type="cddl" markers="false" pn="section-2.1-6"> | ||||
<sourcecode type="CDDL"> | ||||
COSE_Hash_Find = [ | COSE_Hash_Find = [ | |||
hashAlg : int / tstr, | hashAlg : int / tstr, | |||
hashValue : bstr | hashValue : bstr | |||
] | ] | |||
</sourcecode> | </sourcecode> | |||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" removeInRFC="false" toc="include" pn="section-3"> | ||||
<section> | <name slugifiedName="name-hash-algorithm-identifiers">Hash Algorithm Ident | |||
<name>Hash Algorithm Identifiers</name> | ifiers</name> | |||
<section numbered="true" removeInRFC="false" toc="include" pn="section-3.1 | ||||
<section> | "> | |||
<name>SHA-1 Hash Algorithm</name> | <name slugifiedName="name-sha-1-hash-algorithm">SHA-1 Hash Algorithm</na | |||
<t> | me> | |||
The SHA-1 hash algorithm <xref target="RFC3174"/> was designed by th | <t indent="0" pn="section-3.1-1"> | |||
e United States National Security Agency and published in 1995. | The SHA-1 hash algorithm <xref target="RFC3174" format="default" sec | |||
Since that time a large amount of cryptographic analysis has been ap | tionFormat="of" derivedContent="RFC3174"/> was designed by | |||
plied to this algorithm and a successful collision attack has been created (<xre | the United States National Security Agency and published in | |||
f target="SHA-1-collision"/>). | 1995. Since that time, a large amount of cryptographic analysis | |||
The IETF formally started discouraging the use of SHA-1 with the pub | has been applied to this algorithm, and a successful collision | |||
lishing of <xref target="RFC6194"/>. | attack has been created <xref target="SHA-1-collision" format="defaul | |||
</t> | t" sectionFormat="of" derivedContent="SHA-1-collision"/>. | |||
The IETF formally started discouraging the use of SHA-1 in <xref tar | ||||
<!-- RFC Editor - | get="RFC6194" format="default" sectionFormat="of" derivedContent="RFC6194"/>. | |||
I had an original comment that the grammar of the "or where" clau | </t> | |||
se did not match with the start of the sentence. | <t indent="0" pn="section-3.1-2"> | |||
I re-wrote the second sentence but it is possible that I still ha | Despite these facts, there are still times where SHA-1 needs to be | |||
ve the same problem. | used; therefore, it makes sense to assign a code point for the | |||
--> | use of this hash algorithm. | |||
<t> | Some of these situations involve historic HSMs where only SHA-1 is | |||
Despite the above, there are still times where SHA-1 needs to be use | implemented; in other situations, the SHA-1 value is used | |||
d and therefore it makes sense to assign a codepoint for the use of this hash al | for the purpose of filtering; thus, the collision-resistance | |||
gorithm. | property is not needed. | |||
Some of these situations are with historic HSMs where only SHA-1 is | </t> | |||
implemented; other situations are where the SHA-1 value is used for the purpose | <t indent="0" pn="section-3.1-3"> | |||
of filtering and thus the collision resistance property is not needed. | ||||
</t> | ||||
<t> | ||||
Because of the known issues for SHA-1 and the fact that it should no longer be used, the algorithm will be registered with the recommendation of "Fi lter Only". | Because of the known issues for SHA-1 and the fact that it should no longer be used, the algorithm will be registered with the recommendation of "Fi lter Only". | |||
This provides guidance about when the algorithm is safe for use, whi le discouraging usage where it is not safe. | This provides guidance about when the algorithm is safe for use, whi le discouraging usage where it is not safe. | |||
</t> | </t> | |||
<t indent="0" pn="section-3.1-4"> | ||||
<t> | ||||
The COSE capabilities for this algorithm is an empty array. | The COSE capabilities for this algorithm is an empty array. | |||
</t> | </t> | |||
<table align="center" anchor="SHA1-Algs" pn="table-1"> | ||||
<table align="center" anchor="SHA1-Algs"> | <name slugifiedName="name-sha-1-hash-algorithm-2">SHA-1 Hash Algorithm | |||
<name>SHA-1 Hash Algorithm</name> | </name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th>Name</th> | <th align="left" colspan="1" rowspan="1">Name</th> | |||
<th>Value</th> | <th align="left" colspan="1" rowspan="1">Value</th> | |||
<th>Description</th> | <th align="left" colspan="1" rowspan="1">Description</th> | |||
<th>Capabilities</th> | <th align="left" colspan="1" rowspan="1">Capabilities</th> | |||
<th>Reference</th> | <th align="left" colspan="1" rowspan="1">Reference</th> | |||
<th>Recommended</th> | <th align="left" colspan="1" rowspan="1">Recommended</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td>SHA-1</td> | <td align="left" colspan="1" rowspan="1">SHA-1</td> | |||
<td>-14</td> | <td align="left" colspan="1" rowspan="1">-14</td> | |||
<td>SHA-1 Hash</td> | <td align="left" colspan="1" rowspan="1">SHA-1 Hash</td> | |||
<td>[]</td> | <td align="left" colspan="1" rowspan="1">[]</td> | |||
<td>[This Document]</td> | <td align="left" colspan="1" rowspan="1">RFC 9054</td> | |||
<td>Filter Only</td> | <td align="left" colspan="1" rowspan="1">Filter Only</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | ||||
</section> | <section numbered="true" removeInRFC="false" toc="include" pn="section-3.2 | |||
"> | ||||
<section> | <name slugifiedName="name-sha-2-hash-algorithms">SHA-2 Hash Algorithms</ | |||
<name>SHA-2 Hash Algorithms</name> | name> | |||
<t> | <t indent="0" pn="section-3.2-1"> | |||
The family of SHA-2 hash algorithms <xref target="FIPS-180-4"/> was de | The family of SHA-2 hash algorithms <xref target="FIPS-180-4" format=" | |||
signed by the United States National Security Agency and published in 2001. | default" sectionFormat="of" derivedContent="FIPS-180-4"/> was designed by the Un | |||
Since that time some additional algorithms have been added to the orig | ited States National Security Agency and published in 2001. | |||
inal set to deal with length extension attacks and some performance issues. | Since that time, some additional algorithms have been added to the ori | |||
ginal set to deal with length-extension attacks and some performance issues. | ||||
While the SHA-3 hash algorithms have been published since that time, t he SHA-2 algorithms are still broadly used. | While the SHA-3 hash algorithms have been published since that time, t he SHA-2 algorithms are still broadly used. | |||
</t> | </t> | |||
<t indent="0" pn="section-3.2-2"> | ||||
<t> | ||||
There are a number of different parameters for the SHA-2 hash function s. | There are a number of different parameters for the SHA-2 hash function s. | |||
The set of hash functions which have been chosen for inclusion in this | The set of hash functions that has been chosen for inclusion in | |||
document are based on those different parameters and some of the trade-offs inv | this document is based on those different parameters and some of | |||
olved. | the trade-offs involved. | |||
</t> | </t> | |||
<ul> | <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-3 | |||
<li> | .2-3"> | |||
<t> | <li pn="section-3.2-3.1"> | |||
<t indent="0" pn="section-3.2-3.1.1"> | ||||
<strong>SHA-256/64</strong> provides a truncated hash. | <strong>SHA-256/64</strong> provides a truncated hash. | |||
The length of the truncation is designed to allow for smaller tran smission size. | The length of the truncation is designed to allow for smaller tran smission size. | |||
The trade-off is that the odds that a collision will occur increas e proportionally. | The trade-off is that the odds that a collision will occur increas e proportionally. | |||
Use of this hash function needs analysis of the potential problems | Use of this hash function requires analysis of the potential | |||
with having a collision occur, or must be limited to where the function of the | problems that could result from a collision, or it must be | |||
hash is non-cryptographic. | limited to where the purpose of the hash is noncryptographic. | |||
</t> | </t> | |||
<t> | <t indent="0" pn="section-3.2-3.1.2"> | |||
The latter is the case for <xref target="I-D.ietf-cose-x509"/>. | The latter is the case for some of the scenarios identified in < | |||
The hash value is used to select possible certificates and, if t | xref target="I-D.ietf-cose-x509" format="default" sectionFormat="of" derivedCont | |||
here are multiple choices remaining then, each choice can be tested by using the | ent="COSE-x509"/>, | |||
public key. | specifically, for the cases when the hash value is used to selec | |||
</t> | t among possible certificates: if | |||
</li> | there are multiple choices remaining, then each choice can be | |||
<li> | tested by using the public key. | |||
<strong>SHA-256</strong> is probably the most common hash function | </t> | |||
used currently. | </li> | |||
<li pn="section-3.2-3.2"> | ||||
<strong>SHA-256</strong> is probably the most common hash function u | ||||
sed currently. | ||||
SHA-256 is an efficient hash algorithm for 32-bit hardware. | SHA-256 is an efficient hash algorithm for 32-bit hardware. | |||
</li> | </li> | |||
<li> | <li pn="section-3.2-3.3"> | |||
<strong>SHA-384</strong> and <strong>SHA-512</strong> hash functio | <strong>SHA-384</strong> and <strong>SHA-512</strong> hash functions | |||
ns are efficient for 64-bit hardware. | are efficient for 64-bit hardware. | |||
</li> | </li> | |||
<li> | <li pn="section-3.2-3.4"> | |||
<strong>SHA-512/256</strong> provides a hash function that runs mo | <strong>SHA-512/256</strong> provides a hash function that runs more | |||
re efficiently on 64-bit hardware, but offers the same security levels as SHA-25 | efficiently on 64-bit hardware but offers the same security level as SHA-256. | |||
6. | ||||
</li> | </li> | |||
</ul> | </ul> | |||
<aside pn="section-3.2-4"> | ||||
<t> | <t indent="0" pn="section-3.2-4.1">NOTE: SHA-256/64 is a simple trunca | |||
tion of SHA-256 to 64 bits defined in this specification. SHA-512/256 is a modif | ||||
ied variant of SHA-512 truncated to 256 bits, as defined in <xref target="FIPS-1 | ||||
80-4" format="default" sectionFormat="of" derivedContent="FIPS-180-4"/>.</t> | ||||
</aside> | ||||
<t indent="0" pn="section-3.2-5"> | ||||
The COSE capabilities array for these algorithms is empty. | The COSE capabilities array for these algorithms is empty. | |||
</t> | </t> | |||
<table align="center" anchor="SHA2-Algs" pn="table-2"> | ||||
<table align="center" anchor="SHA2-Algs"> | <name slugifiedName="name-sha-2-hash-algorithms-2">SHA-2 Hash Algorith | |||
<name>SHA-2 Hash Algorithms</name> | ms</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th>Name</th> | <th align="left" colspan="1" rowspan="1">Name</th> | |||
<th>Value</th> | <th align="left" colspan="1" rowspan="1">Value</th> | |||
<th>Description</th> | <th align="left" colspan="1" rowspan="1">Description</th> | |||
<th>Capabilities</th> | <th align="left" colspan="1" rowspan="1">Capabilities</th> | |||
<th>Reference</th> | <th align="left" colspan="1" rowspan="1">Reference</th> | |||
<th>Recommended</th> | <th align="left" colspan="1" rowspan="1">Recommended</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td>SHA-256/64</td> | <td align="left" colspan="1" rowspan="1">SHA-256/64</td> | |||
<td>-15</td> | <td align="left" colspan="1" rowspan="1">-15</td> | |||
<td>SHA-2 256-bit Hash truncated to 64-bits</td> | <td align="left" colspan="1" rowspan="1">SHA-2 256-bit Hash trunca | |||
<td>[]</td> | ted to 64-bits</td> | |||
<td>[This Document]</td> | <td align="left" colspan="1" rowspan="1">[]</td> | |||
<td>Filter Only</td> | <td align="left" colspan="1" rowspan="1">RFC 9054</td> | |||
<td align="left" colspan="1" rowspan="1">Filter Only</td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>SHA-256</td> | <td align="left" colspan="1" rowspan="1">SHA-256</td> | |||
<td>-16</td> | <td align="left" colspan="1" rowspan="1">-16</td> | |||
<td>SHA-2 256-bit Hash</td> | <td align="left" colspan="1" rowspan="1">SHA-2 256-bit Hash</td> | |||
<td>[]</td> | <td align="left" colspan="1" rowspan="1">[]</td> | |||
<td>[This Document]</td> | <td align="left" colspan="1" rowspan="1">RFC 9054</td> | |||
<td>Yes</td> | <td align="left" colspan="1" rowspan="1">Yes</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>SHA-384</td> | <td align="left" colspan="1" rowspan="1">SHA-384</td> | |||
<td>-43</td> | <td align="left" colspan="1" rowspan="1">-43</td> | |||
<td>SHA-2 384-bit Hash</td> | <td align="left" colspan="1" rowspan="1">SHA-2 384-bit Hash</td> | |||
<td>[]</td> | <td align="left" colspan="1" rowspan="1">[]</td> | |||
<td>[This Document]</td> | <td align="left" colspan="1" rowspan="1">RFC 9054</td> | |||
<td>Yes</td> | <td align="left" colspan="1" rowspan="1">Yes</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>SHA-512</td> | <td align="left" colspan="1" rowspan="1">SHA-512</td> | |||
<td>-44</td> | <td align="left" colspan="1" rowspan="1">-44</td> | |||
<td>SHA-2 512-bit Hash</td> | <td align="left" colspan="1" rowspan="1">SHA-2 512-bit Hash</td> | |||
<td>[]</td> | <td align="left" colspan="1" rowspan="1">[]</td> | |||
<td>[This Document]</td> | <td align="left" colspan="1" rowspan="1">RFC 9054</td> | |||
<td>Yes</td> | <td align="left" colspan="1" rowspan="1">Yes</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>SHA-512/256</td> | <td align="left" colspan="1" rowspan="1">SHA-512/256</td> | |||
<td>-17</td> | <td align="left" colspan="1" rowspan="1">-17</td> | |||
<td>SHA-2 512-bit Hash truncated to 256-bits</td> | <td align="left" colspan="1" rowspan="1">SHA-2 512-bit Hash trunca | |||
<td>[]</td> | ted to 256-bits</td> | |||
<td>[This Document]</td> | <td align="left" colspan="1" rowspan="1">[]</td> | |||
<td>Yes</td> | <td align="left" colspan="1" rowspan="1">RFC 9054</td> | |||
<td align="left" colspan="1" rowspan="1">Yes</td> | ||||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
<section numbered="true" removeInRFC="false" toc="include" pn="section-3.3 | ||||
<section> | "> | |||
<name>SHAKE Algorithms</name> | <name slugifiedName="name-shake-algorithms">SHAKE Algorithms</name> | |||
<t indent="0" pn="section-3.3-1"> | ||||
<t> | The family of SHA-3 hash algorithms <xref target="FIPS-202" format="de | |||
The family of SHA-3 hash algorithms <xref target="FIPS-202"/> was the | fault" sectionFormat="of" derivedContent="FIPS-202"/> was the result of a compet | |||
result of a competition run by NIST. | ition run by NIST. | |||
The pair of algorithms known as SHAKE-128 and SHAKE-256 are the instan ces of SHA-3 that are currently being standardized in the IETF. | The pair of algorithms known as SHAKE-128 and SHAKE-256 are the instan ces of SHA-3 that are currently being standardized in the IETF. | |||
<!-- Check with Roman - maybe delete --> | ||||
This is the reason for including these algorithms in this document. | This is the reason for including these algorithms in this document. | |||
</t> | </t> | |||
<t indent="0" pn="section-3.3-2"> | ||||
<t> | ||||
The SHA-3 hash algorithms have a significantly different structure tha n the SHA-2 hash algorithms. | The SHA-3 hash algorithms have a significantly different structure tha n the SHA-2 hash algorithms. | |||
</t> | </t> | |||
<t indent="0" pn="section-3.3-3"> | ||||
<t> | ||||
Unlike the SHA-2 hash functions, no algorithm identifier is created fo r shorter lengths. | Unlike the SHA-2 hash functions, no algorithm identifier is created fo r shorter lengths. | |||
The length of the hash value stored is 256-bits for SHAKE-128 and 512- | The length of the hash value stored is 256 bits for SHAKE-128 and | |||
bits for SHAKE-256. | 512 bits for SHAKE-256. | |||
</t> | </t> | |||
<t indent="0" pn="section-3.3-4"> | ||||
<t> | ||||
The COSE capabilities array for these algorithms is empty. | The COSE capabilities array for these algorithms is empty. | |||
</t> | </t> | |||
<table align="center" anchor="SHAKE-Algs" pn="table-3"> | ||||
<table align="center" anchor="SHAKE-Algs"> | <name slugifiedName="name-shake-hash-functions">SHAKE Hash Functions</ | |||
<name>SHAKE Hash Functions</name> | name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th>Name</th> | <th align="left" colspan="1" rowspan="1">Name</th> | |||
<th>Value</th> | <th align="left" colspan="1" rowspan="1">Value</th> | |||
<th>Description</th> | <th align="left" colspan="1" rowspan="1">Description</th> | |||
<th>Capabilities</th> | <th align="left" colspan="1" rowspan="1">Capabilities</th> | |||
<th>Reference</th> | <th align="left" colspan="1" rowspan="1">Reference</th> | |||
<th>Recommended</th> | <th align="left" colspan="1" rowspan="1">Recommended</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td>SHAKE128</td> | <td align="left" colspan="1" rowspan="1">SHAKE128</td> | |||
<td>-18</td> | <td align="left" colspan="1" rowspan="1">-18</td> | |||
<td>SHAKE-128 256-bit Hash Value</td> | <td align="left" colspan="1" rowspan="1">SHAKE-128 256-bit Hash Va | |||
<td>[]</td> | lue</td> | |||
<td>[This Document]</td> | <td align="left" colspan="1" rowspan="1">[]</td> | |||
<td>Yes</td> | <td align="left" colspan="1" rowspan="1">RFC 9054</td> | |||
<td align="left" colspan="1" rowspan="1">Yes</td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>SHAKE256</td> | <td align="left" colspan="1" rowspan="1">SHAKE256</td> | |||
<td>-45</td> | <td align="left" colspan="1" rowspan="1">-45</td> | |||
<td>SHAKE-256 512-bit Hash Value</td> | <td align="left" colspan="1" rowspan="1">SHAKE-256 512-bit Hash Va | |||
<td>[]</td> | lue</td> | |||
<td>[This Document]</td> | <td align="left" colspan="1" rowspan="1">[]</td> | |||
<td>Yes</td> | <td align="left" colspan="1" rowspan="1">RFC 9054</td> | |||
<td align="left" colspan="1" rowspan="1">Yes</td> | ||||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="iana-considerations" numbered="true" removeInRFC="false" to | ||||
<section anchor="iana-considerations"> | c="include" pn="section-4"> | |||
<name>IANA Considerations</name> | <name slugifiedName="name-iana-considerations">IANA Considerations</name> | |||
<!-- RFC Editor | <section anchor="cose-algorithm-registry" numbered="true" removeInRFC="fal | |||
I think that this paragraph can be removed before publishing. | se" toc="include" pn="section-4.1"> | |||
--> | <name slugifiedName="name-cose-algorithm-registry">COSE Algorithm Regist | |||
<t> | ry</name> | |||
The IANA actions in <xref target="I-D.ietf-cose-rfc8152bis-struct"/> and | <t indent="0" pn="section-4.1-1"> | |||
<xref target="I-D.ietf-cose-rfc8152bis-algs"/> need to be executed before the a | IANA has registered the following algorithms in the <eref target="http | |||
ctions in this document. | s://www.iana.org/assignments/cose/" brackets="none">"COSE Algorithms" registry</ | |||
Where early allocation of codepoints has been made, these should be pres | eref>. | |||
erved. | ||||
</t> | ||||
<section anchor="cose-algorithm-registry"> | ||||
<name>COSE Algorithm Registry</name> | ||||
<t> | ||||
IANA is requested to register the following algorithms in the "COSE Al | ||||
gorithms" registry. | ||||
</t> | </t> | |||
<ul bare="false" empty="false" indent="3" spacing="normal" pn="section-4 | ||||
<ul> | .1-2"> | |||
<li> | <li pn="section-4.1-2.1"> | |||
The SHA-1 hash function found in <xref target="SHA1-Algs"/>. | The SHA-1 hash function found in <xref target="SHA1-Algs" format="de | |||
fault" sectionFormat="of" derivedContent="Table 1"/>. | ||||
</li> | </li> | |||
<li> | <li pn="section-4.1-2.2"> | |||
The set of SHA-2 hash functions found in <xref target="SHA2-Algs"/>. | The set of SHA-2 hash functions found in <xref target="SHA2-Algs" fo | |||
rmat="default" sectionFormat="of" derivedContent="Table 2"/>. | ||||
</li> | </li> | |||
<li> | <li pn="section-4.1-2.3"> | |||
The set of SHAKE hash functions found in <xref target="SHAKE-Algs"/> | The set of SHAKE hash functions found in <xref target="SHAKE-Algs" f | |||
. | ormat="default" sectionFormat="of" derivedContent="Table 3"/>. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-4.1-3"> | ||||
<!-- IANA | Many of the hash values produced are relatively long; as such, | |||
The following paragraph is retained for historic reasons only. | use of a two-byte algorithm identifier seems reasonable. | |||
--> | SHA-1 is tagged as "Filter Only", so a longer algorithm identifier is | |||
appropriate even though it is a shorter hash value. | ||||
<t> | ||||
Many of the hash values produced are relatively long and as such the u | ||||
se of a two byte algorithm identifier seems reasonable. | ||||
SHA-1 is tagged as 'Filter Only' and thus a longer algorithm identifie | ||||
r is appropriate even though it is a shorter hash value. | ||||
</t> | </t> | |||
<t indent="0" pn="section-4.1-4"> | ||||
IANA has added the value of "Filter Only" to the set of | ||||
legal values for the Recommended column. | ||||
This value is only to be used for hash functions and indicates that | ||||
it is not to be used for purposes that require collision | ||||
resistance. As a result of this addition, IANA has added this document | ||||
as a reference for the "COSE Algorithms" registry. | ||||
<t> | ||||
IANA is requested to add the value of 'Filter Only' to the set of lega | ||||
l values for the 'Recommended' column. | ||||
This value is only to be used for hash functions and indicates that it | ||||
is not to be used for purposes which require collision resistance. | ||||
IANA is requested to add this document to the reference section for th | ||||
is table due to this addition. | ||||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="security-considerations" numbered="true" removeInRFC="false | ||||
<section anchor="security-considerations"> | " toc="include" pn="section-5"> | |||
<name>Security Considerations</name> | <name slugifiedName="name-security-considerations">Security Considerations | |||
<t> | </name> | |||
<t indent="0" pn="section-5-1"> | ||||
Protocols need to perform a careful analysis of the properties of a ha sh function that are needed and how they map onto the possible attacks. | Protocols need to perform a careful analysis of the properties of a ha sh function that are needed and how they map onto the possible attacks. | |||
In particular, one needs to distinguish between those uses that need t he cryptographic properties, such as collision resistance, and properties that c orrespond to possible object identification. | In particular, one needs to distinguish between those uses that need t he cryptographic properties, such as collision resistance, and uses that only ne ed properties that correspond to possible object identification. | |||
The different attacks correspond to who or what is being protected: is it the originator that is the attacker or a third party? | The different attacks correspond to who or what is being protected: is it the originator that is the attacker or a third party? | |||
This is the difference between collision resistance and second pre-ima ge resistance. | This is the difference between collision resistance and second pre-ima ge resistance. | |||
As a general rule, longer hash values are "better" than short ones, bu t trade-offs of transmission size, timeliness, and security all need to be inclu ded as part of this analysis. | As a general rule, longer hash values are "better" than short ones, bu t trade-offs of transmission size, timeliness, and security all need to be inclu ded as part of this analysis. | |||
In many cases the value being hashed is a public value and, as such, p | In many cases, the value being hashed is a public value and, as | |||
re-image resistance is not part of this analysis. | such, (first) pre-image resistance is not part of this analysis. | |||
</t> | </t> | |||
<t> | <t indent="0" pn="section-5-2"> | |||
Algorithm agility needs to be considered a requirement for any use of | Algorithm agility needs to be considered a requirement for any use of | |||
hash functions <xref target="BCP201"/>. | hash functions <xref target="BCP201" format="default" sectionFormat="of" derived | |||
As with any cryptographic function, hash functions are under constant | Content="BCP201"/>. | |||
attack and the cryptographic strength of hash algorithms will be reduced over ti | As with any cryptographic function, hash functions are under | |||
me. | constant attack, and the cryptographic strength of hash algorithms | |||
</t> | will be reduced over time. | |||
</t> | ||||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | ||||
<back xmlns:xi="http://www.w3.org/2001/XInclude" xml:base="http://xml2rfc.ietf | ||||
.org/public/rfc/"> | ||||
<displayreference target="RFC2634" to="ESS"/> | <displayreference target="RFC2634" to="ESS"/> | |||
<displayreference target="RFC5652" to="CMS"/> | <displayreference target="RFC5652" to="CMS"/> | |||
<displayreference target="RFC8152" to="COSE"/> | <displayreference target="RFC8152" to="COSE"/> | |||
<displayreference target="I-D.ietf-cose-x509" to="COSE-x509"/> | ||||
<displayreference target="I-D.ietf-suit-manifest" to="SUIT-MANIFEST"/> | ||||
<references pn="section-6"> | ||||
<name slugifiedName="name-references">References</name> | ||||
<references pn="section-6.1"> | ||||
<name slugifiedName="name-normative-references">Normative References</na | ||||
me> | ||||
<reference anchor="FIPS-180-4" quoteTitle="true" target="https://doi.org | ||||
/10.6028/NIST.FIPS.180-4" derivedAnchor="FIPS-180-4"> | ||||
<front> | ||||
<title>Secure Hash Standard</title> | ||||
<author> | ||||
<organization showOnFrontPage="true">NIST</organization> | ||||
</author> | ||||
<date month="August" year="2015"/> | ||||
</front> | ||||
<seriesInfo name="FIPS PUB" value="180-4"/> | ||||
<seriesInfo name="DOI" value="10.6028/NIST.FIPS.180-4"/> | ||||
</reference> | ||||
<reference anchor="FIPS-202" quoteTitle="true" target="https://doi.org/1 | ||||
0.6028/NIST.FIPS.202" derivedAnchor="FIPS-202"> | ||||
<front> | ||||
<title>SHA-3 Standard: Permutation-Based Hash and Extendable-Output | ||||
Functions</title> | ||||
<author initials="M.J." surname="Dworkin"> | ||||
<organization showOnFrontPage="true">National Institute of Standar | ||||
ds and Technology</organization> | ||||
</author> | ||||
<date month="August" year="2015"/> | ||||
</front> | ||||
<seriesInfo name="FIPS PUB" value="202"/> | ||||
<seriesInfo name="DOI" value="10.6028/NIST.FIPS.202"/> | ||||
</reference> | ||||
<reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | ||||
119" quoteTitle="true" derivedAnchor="RFC2119"> | ||||
<front> | ||||
<title>Key words for use in RFCs to Indicate Requirement Levels</tit | ||||
le> | ||||
<author initials="S." surname="Bradner" fullname="S. Bradner"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="1997" month="March"/> | ||||
<abstract> | ||||
<t indent="0">In many standards track documents several words are | ||||
used to signify the requirements in the specification. These words are often ca | ||||
pitalized. This document defines these words as they should be interpreted in IE | ||||
TF documents. This document specifies an Internet Best Current Practices for th | ||||
e Internet Community, and requests discussion and suggestions for improvements.< | ||||
/t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="2119"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
</reference> | ||||
<reference anchor="RFC3174" target="https://www.rfc-editor.org/info/rfc3 | ||||
174" quoteTitle="true" derivedAnchor="RFC3174"> | ||||
<front> | ||||
<title>US Secure Hash Algorithm 1 (SHA1)</title> | ||||
<author initials="D." surname="Eastlake 3rd" fullname="D. Eastlake 3 | ||||
rd"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="P." surname="Jones" fullname="P. Jones"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2001" month="September"/> | ||||
<abstract> | ||||
<t indent="0">The purpose of this document is to make the SHA-1 (S | ||||
ecure Hash Algorithm 1) hash algorithm conveniently available to the Internet co | ||||
mmunity. This memo provides information for the Internet community.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="3174"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3174"/> | ||||
</reference> | ||||
<reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 | ||||
174" quoteTitle="true" derivedAnchor="RFC8174"> | ||||
<front> | ||||
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
tle> | ||||
<author fullname="B. Leiba" surname="Leiba"/> | ||||
<date month="May" year="2017"/> | ||||
<abstract> | ||||
<t indent="0">RFC 2119 specifies common key words that may be used | ||||
in protocol specifications. This document aims to reduce the ambiguity by clar | ||||
ifying that only UPPERCASE usage of the key words have the defined special meani | ||||
ngs.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="8174"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
</reference> | ||||
<reference anchor="RFC9052" target="https://www.rfc-editor.org/info/rfc9 | ||||
052" quoteTitle="true" derivedAnchor="RFC9052"> | ||||
<front> | ||||
<title>CBOR Object Signing and Encryption (COSE): Structures and Pro | ||||
cess</title> | ||||
<author initials="J" surname="Schaad" fullname="Jim Schaad"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="August" year="2022"/> | ||||
</front> | ||||
<seriesInfo name="STD" value="96"/> | ||||
<seriesInfo name="RFC" value="9052"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9052"/> | ||||
</reference> | ||||
</references> | ||||
<references pn="section-6.2"> | ||||
<name slugifiedName="name-informative-references">Informative References | ||||
</name> | ||||
<reference anchor="BCP201" target="https://www.rfc-editor.org/info/bcp20 | ||||
1" quoteTitle="true" derivedAnchor="BCP201"> | ||||
<front> | ||||
<title>Guidelines for Cryptographic Algorithm Agility and Selecting | ||||
Mandatory-to-Implement Algorithms</title> | ||||
<author initials="R." surname="Housley" fullname="Russ Housley"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="November" year="2015"/> | ||||
</front> | ||||
<seriesInfo name="BCP" value="201"/> | ||||
<seriesInfo name="RFC" value="7696"/> | ||||
</reference> | ||||
<reference anchor="RFC5652" target="https://www.rfc-editor.org/info/rfc5 | ||||
652" quoteTitle="true" derivedAnchor="CMS"> | ||||
<front> | ||||
<title>Cryptographic Message Syntax (CMS)</title> | ||||
<author initials="R." surname="Housley" fullname="R. Housley"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2009" month="September"/> | ||||
<abstract> | ||||
<t indent="0">This document describes the Cryptographic Message Sy | ||||
ntax (CMS). This syntax is used to digitally sign, digest, authenticate, or enc | ||||
rypt arbitrary message content. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="70"/> | ||||
<seriesInfo name="RFC" value="5652"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5652"/> | ||||
</reference> | ||||
<reference anchor="RFC8152" target="https://www.rfc-editor.org/info/rfc8 | ||||
152" quoteTitle="true" derivedAnchor="COSE"> | ||||
<front> | ||||
<title>CBOR Object Signing and Encryption (COSE)</title> | ||||
<author initials="J." surname="Schaad" fullname="J. Schaad"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2017" month="July"/> | ||||
<abstract> | ||||
<t indent="0">Concise Binary Object Representation (CBOR) is a dat | ||||
a format designed for small code size and small message size. There is a need f | ||||
or the ability to have basic security services defined for this data format. Thi | ||||
s document defines the CBOR Object Signing and Encryption (COSE) protocol. This | ||||
specification describes how to create and process signatures, message authentic | ||||
ation codes, and encryption using CBOR for serialization. This specification ad | ||||
ditionally describes how to represent cryptographic keys using CBOR.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8152"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8152"/> | ||||
</reference> | ||||
<reference anchor="I-D.ietf-cose-x509" quoteTitle="true" target="https:/ | ||||
/datatracker.ietf.org/doc/html/draft-ietf-cose-x509-08" derivedAnchor="COSE-x509 | ||||
"> | ||||
<front> | ||||
<title>CBOR Object Signing and Encryption (COSE): Header parameters | ||||
for carrying and referencing X.509 certificates</title> | ||||
<author fullname="Jim Schaad"> | ||||
<organization showOnFrontPage="true">August Cellars</organization> | ||||
</author> | ||||
<date month="December" day="14" year="2020"/> | ||||
<abstract> | ||||
<t indent="0"> The CBOR Signing And Encrypted Message (COSE) str | ||||
ucture uses | ||||
references to keys in general. For some algorithms, additional | ||||
properties are defined which carry parameters relating to keys as | ||||
needed. The COSE Key structure is used for transporting keys outside | ||||
of COSE messages. This document extends the way that keys can be | ||||
identified and transported by providing attributes that refer to or | ||||
contain X.509 certificates. | ||||
<references title='Normative References'> | </t> | |||
<xi:include href="bibxml/reference.RFC.2119.xml" /> | </abstract> | |||
<xi:include href="bibxml/reference.RFC.8174.xml" /> | </front> | |||
<xi:include href="bibxml3/reference.I-D.ietf-cose-rfc8152bis-struct.xml" / | <seriesInfo name="Internet-Draft" value="draft-ietf-cose-x509-08"/> | |||
> | <format type="TXT" target="https://www.ietf.org/archive/id/draft-ietf- | |||
cose-x509-08.txt"/> | ||||
<reference anchor="FIPS-180-4"> | <refcontent>Work in Progress</refcontent> | |||
<front> | </reference> | |||
<title>Secure Hash Standard</title> | <reference anchor="RFC2634" target="https://www.rfc-editor.org/info/rfc2 | |||
<author> | 634" quoteTitle="true" derivedAnchor="ESS"> | |||
<organization>National Institute of Standards and Technology</organi | <front> | |||
zation> | <title>Enhanced Security Services for S/MIME</title> | |||
</author> | <author initials="P." surname="Hoffman" fullname="P. Hoffman" role=" | |||
<date month="August" year="2015"/> | editor"> | |||
</front> | <organization showOnFrontPage="true"/> | |||
<seriesInfo name="FIPS" value="PUB 180-4"/> | </author> | |||
</reference> | <date year="1999" month="June"/> | |||
<abstract> | ||||
<reference anchor="FIPS-202"> | <t indent="0">This document describes four optional security servi | |||
<front> | ce extensions for S/MIME. [STANDARDS-TRACK]</t> | |||
<title>SHA-3 Standard: Permutation-Based Hash and Extendable-Output Fu | </abstract> | |||
nctions</title> | </front> | |||
<author> | <seriesInfo name="RFC" value="2634"/> | |||
<organization>National Institute of Standards and Technology</organi | <seriesInfo name="DOI" value="10.17487/RFC2634"/> | |||
zation> | </reference> | |||
</author> | <reference anchor="RFC6194" target="https://www.rfc-editor.org/info/rfc6 | |||
<date month="August" year="2015"/> | 194" quoteTitle="true" derivedAnchor="RFC6194"> | |||
</front> | <front> | |||
<seriesInfo name="FIPS" value="PUB 202"/> | <title>Security Considerations for the SHA-0 and SHA-1 Message-Diges | |||
</reference> | t Algorithms</title> | |||
<author fullname="T. Polk" surname="Polk"/> | ||||
<!-- | <author fullname="L. Chen" surname="Chen"/> | |||
<?rfc include="bibxml/reference.RFC.5280.xml" /> | <author fullname="S. Turner" surname="Turner"/> | |||
--> | <author fullname="P. Hoffman" surname="Hoffman"/> | |||
<date month="March" year="2011"/> | ||||
<xi:include href="bibxml/reference.RFC.3174.xml" /> | <abstract> | |||
</references> | <t indent="0">This document includes security considerations for t | |||
he SHA-0 and SHA-1 message digest algorithm. This document is not an Internet S | ||||
<references title='Informative References'> | tandards Track specification; it is published for informational purposes.</t> | |||
<xi:include href="bibxml/reference.RFC.5652.xml"/> | </abstract> | |||
<xi:include href="bibxml/reference.RFC.2634.xml"/> | </front> | |||
<xi:include href="bibxml3/reference.I-D.ietf-cose-x509.xml"/> | <seriesInfo name="RFC" value="6194"/> | |||
<xi:include href="bibxml/reference.RFC.6194.xml"/> | <seriesInfo name="DOI" value="10.17487/RFC6194"/> | |||
<xi:include href="bibxml3/reference.I-D.ietf-cose-rfc8152bis-algs.xml"/> | </reference> | |||
<xi:include href="bibxml3/reference.I-D.ietf-suit-manifest.xml"/> | <reference anchor="SHA-1-collision" target="https://shattered.io/static/ | |||
shattered.pdf" quoteTitle="true" derivedAnchor="SHA-1-collision"> | ||||
<!-- | <front> | |||
<xi:include href="bibxml/reference.RFC.2585.xml"/> | <title>The first collision for full SHA-1</title> | |||
<xi:include href="bibxml/reference.RFC.5246.xml"/> | <author initials="M." surname="Stevens"/> | |||
<xi:include href="bibxml/reference.RFC.7468.xml"/> | <author initials="E." surname="Bursztein"/> | |||
<xi:include href="bibxml/reference.RFC.8152.xml"/> | <author initials="P." surname="Karpman"/> | |||
<xi:include href="bibxml/reference.RFC.8392.xml"/> | <author initials="A." surname="Albertini"/> | |||
<xi:include href="bibxml/reference.I-D.ietf-lamps-rfc5751-bis.xml"/> | <author initials="Y." surname="Markov"/> | |||
<xi:include href="bibxml/reference.I-D.ietf-cbor-cddl.xml"/> | <date month="Feb" year="2017"/> | |||
<xi:include href="bibxml/reference.I-D.selander-ace-cose-ecdhe.xml"/> | </front> | |||
--> | </reference> | |||
<reference anchor="I-D.ietf-suit-manifest" quoteTitle="true" target="htt | ||||
<!-- <xi:include href="bibxml/reference.BCP.0201.xml"/> --> | ps://datatracker.ietf.org/doc/html/draft-ietf-suit-manifest-19" derivedAnchor="S | |||
<referencegroup anchor="BCP201" target="https://www.rfc-editor.org/info/bcp201"> | UIT-MANIFEST"> | |||
<!-- reference.RFC.7696.xml --> | <front> | |||
<reference anchor="RFC7696" target="https://www.rfc-editor.org/info/rfc7696"> | <title>A Concise Binary Object Representation (CBOR)-based Serializa | |||
<front> | tion Format for the Software Updates for Internet of Things (SUIT) Manifest</tit | |||
<title> | le> | |||
Guidelines for Cryptographic Algorithm Agility and Selecting Mandatory-to-Implem | <author fullname="Brendan Moran"> | |||
ent Algorithms | <organization showOnFrontPage="true">Arm Limited</organization> | |||
</title> | </author> | |||
<author initials="R." surname="Housley" fullname="R. Housley"> | <author fullname="Hannes Tschofenig"> | |||
<organization/> | <organization showOnFrontPage="true">Arm Limited</organization> | |||
</author> | </author> | |||
<date year="2015" month="November"/> | <author fullname="Henk Birkholz"> | |||
<abstract> | <organization showOnFrontPage="true">Fraunhofer SIT</organization> | |||
<t> | </author> | |||
Many IETF protocols use cryptographic algorithms to provide confidentiality, int | <author fullname="Koen Zandberg"> | |||
egrity, authentication, or digital signature. Communicating peers must support a | <organization showOnFrontPage="true">Inria</organization> | |||
common set of cryptographic algorithms for these mechanisms to work properly. T | </author> | |||
his memo provides guidelines to ensure that protocols have the ability to migrat | <date month="August" day="9" year="2022"/> | |||
e from one mandatory-to-implement algorithm suite to another over time. | <abstract> | |||
</t> | <t indent="0"> This specification describes the format of a mani | |||
</abstract> | fest. A manifest is | |||
</front> | a bundle of metadata about code/data obtained by a recipient (chiefly | |||
<seriesInfo name="BCP" value="201"/> | the firmware for an IoT device), where to find the that code/data, | |||
<seriesInfo name="RFC" value="7696"/> | the devices to which it applies, and cryptographic information | |||
<seriesInfo name="DOI" value="10.17487/RFC7696"/> | protecting the manifest. Software updates and Trusted Invocation | |||
</reference> | both tend to use sequences of common operations, so the manifest | |||
</referencegroup> | encodes those sequences of operations, rather than declaring the | |||
metadata. | ||||
<reference anchor="SHA-1-collision" target="https://shattered.io/static/shattere | </t> | |||
d.pdf"> | </abstract> | |||
<front> | </front> | |||
<title>The first collision for full SHA-1</title> | <seriesInfo name="Internet-Draft" value="draft-ietf-suit-manifest-19"/ | |||
<author initials="M." surname="Stevens"/> | > | |||
<author initials="E." surname="Bursztein"/> | <format type="TXT" target="https://www.ietf.org/archive/id/draft-ietf- | |||
<author initials="P." surname="Karpman"/> | suit-manifest-19.txt"/> | |||
<author initials="A." surname="Albertini"/> | <refcontent>Work in Progress</refcontent> | |||
<author initials="Y." surname="Markov"/> | </reference> | |||
<date month="Feb" year="2017"/> | </references> | |||
</front> | ||||
</reference> | ||||
<xi:include href="bibxml/reference.RFC.8152.xml"/> | ||||
</references> | </references> | |||
<section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | ||||
="include" pn="section-appendix.a"> | ||||
<name slugifiedName="name-authors-address">Author's Address</name> | ||||
<author initials="J." surname="Schaad" fullname="Jim Schaad"> | ||||
<organization showOnFrontPage="true">August Cellars</organization> | ||||
<address/> | ||||
</author> | ||||
</section> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 81 change blocks. | ||||
504 lines changed or deleted | 840 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |