rfc8954xml2.original.xml | rfc8954.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.2119.xml"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" | |||
<!ENTITY RFC3279 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | category="std" consensus="true" docName="draft-ietf-lamps-ocsp-nonce-05" | |||
C.3279.xml"> | number="8954" ipr="trust200902" updates="6960" obsoletes="" | |||
<!ENTITY RFC2560 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | xml:lang="en" sortRefs="true" symRefs="true" tocInclude="true" | |||
C.2560.xml"> | version="3"> | |||
<!ENTITY RFC4732 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.4732.xml"> | <!-- xml2rfc v2v3 conversion 3.2.1 --> | |||
<!ENTITY RFC5019 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <!-- Generated by id2xml 1.5.0 on 2020-03-02T06:24:23Z --> | |||
C.5019.xml"> | <front> | |||
<!ENTITY RFC5912 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.5912.xml"> | <title abbrev="OCSP Nonce Extension">Online Certificate Status Protocol | |||
<!ENTITY RFC6960 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | (OCSP) Nonce Extension</title> | |||
C.6960.xml"> | <seriesInfo name="RFC" value="8954"/> | |||
<!ENTITY RFC5280 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <author initials="M." surname="Sahni" fullname="Mohit Sahni" role="editor"> | |||
C.5280.xml"> | ||||
<!ENTITY RFC4086 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.4086.xml"> | ||||
]> | ||||
<rfc submissionType="IETF" docName="draft-ietf-lamps-ocsp-nonce-05" category="st | ||||
d" ipr="trust200902" updates="6960"> | ||||
<!-- Generated by id2xml 1.5.0 on 2020-03-02T06:24:23Z --> | ||||
<?rfc compact="yes"?> | ||||
<?rfc text-list-symbols="*o+-"?> | ||||
<?rfc subcompact="no"?> | ||||
<?rfc sortrefs="no"?> | ||||
<?rfc symrefs="yes"?> | ||||
<?rfc strict="yes"?> | ||||
<?rfc toc="yes"?> | ||||
<front> | ||||
<title>OCSP Nonce Extension</title> | ||||
<author initials="M." surname="Sahni" fullname="Mohit Sahni" role="ed | ||||
itor"> | ||||
<organization>Palo Alto Networks</organization> | <organization>Palo Alto Networks</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>3000 Tannery Way</street> | <street>3000 Tannery Way</street> | |||
<city>Santa Clara</city> | <city>Santa Clara</city> | |||
<region>CA</region> | <region>CA</region> | |||
<code>95054</code> | <code>95054</code> | |||
<country>US</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<email>msahni@paloaltonetworks.com</email> | <email>msahni@paloaltonetworks.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date month="November" year="2020"/> | ||||
<workgroup>LAMPS</workgroup> | ||||
<date day="10" month="September" year="2020"/> | <keyword>OCSP Nonce Length</keyword> | |||
<workgroup>LAMPS</workgroup> | <keyword>OCSP Nonce Randomness</keyword> | |||
<abstract><t> | ||||
<abstract> | ||||
<t> | ||||
This document specifies the updated format of the Nonce extension in the | This document specifies the updated format of the Nonce extension in the | |||
Online Certificate Status Protocol (OCSP) request and response | Online Certificate Status Protocol (OCSP) request and response | |||
messages. OCSP is used to check the status of a certificate and | messages. OCSP is used to check the status of a certificate, and | |||
the Nonce extension is used to cryptographically bind an OCSP | the Nonce extension is used to cryptographically bind an OCSP | |||
response message to a particular OCSP request message. This document updates RFC 6960.</t> | response message to a particular OCSP request message. This document updates RFC 6960.</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | ||||
<middle> | <section anchor="sect-1" numbered="true" toc="default"> | |||
<section title="Introduction" anchor="sect-1"><t> | <name>Introduction</name> | |||
<t> | ||||
This document updates the usage and format of the Nonce extension | This document updates the usage and format of the Nonce extension | |||
used in OCSP request and response messages. This extension was | in OCSP request and response messages. This extension was | |||
previously defined in section 4.4.1 of <xref target="RFC6960"/>. <xref target | previously defined in <xref target="RFC6960" | |||
="RFC6960"/> | sectionFormat="of" section="4.4.1"/>. <xref target="RFC6960" format="default" | |||
does not mention any minimum and maximum length of nonce in the Nonce | /> | |||
extension. Lacking limits on the length of nonce in the Nonce extension, an O | does not mention any minimum or maximum length of the nonce in the Nonce | |||
CSP responders that follow <xref target="RFC6960"/> may be | extension. | |||
vulnerable to various attacks like Denial of Service attacks <xref target="RF | ||||
C4732"/>, chosen | ||||
prefix attacks to get a desired signature, and | ||||
possible evasions using the Nonce extension data. This | ||||
document specifies a lower limit of 1 and an upper limit of 32 to the | ||||
length of nonce in the Nonce extension. This document updates <xref target="R | ||||
FC6960"/>.</t> | ||||
<section title="Terminology" anchor="sect-1.1"><t> | ||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONA | ||||
L" in this | ||||
document are to be interpreted as described in BCP 14 <xref target="RFC2119" | ||||
format="default"/> <xref target="RFC8174" format="default"/> when, and only when | ||||
, they appear in all capitals, as shown here.</t> | ||||
</section> | ||||
</section> | ||||
<section title="OCSP Extensions" anchor="sect-2"><t> | Lacking limits on the length of the nonce in the Nonce extension, OCSP | |||
The message format for OCSP request and response is defined in | responders that follow <xref target="RFC6960" format="default"/> may be | |||
<xref target="RFC6960"/>. <xref target="RFC6960"/> also defines the standard | vulnerable to various attacks, like Denial-of-Service attacks <xref | |||
extensions for OCSP | target="RFC4732" format="default"/> or chosen-prefix attacks (to get a desire | |||
d signature), and | ||||
possible evasions using the Nonce extension data. This | ||||
document specifies a lower limit of 1 and an upper limit of 32 for the | ||||
length of the nonce in the Nonce extension. This document updates <xref | ||||
target="RFC6960" format="default"/>.</t> | ||||
<section anchor="sect-1.1" numbered="true" toc="default"> | ||||
<name>Terminology</name> | ||||
<t> | ||||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | ||||
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | ||||
"<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
be interpreted as | ||||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="sect-2" numbered="true" toc="default"> | ||||
<name>OCSP Extensions</name> | ||||
<t> | ||||
The message formats for OCSP requests and responses are defined in | ||||
<xref target="RFC6960" format="default"/>. <xref target="RFC6960" | ||||
format="default"/> also defines the standard extensions for OCSP | ||||
messages based on the extension model employed in X.509 version 3 | messages based on the extension model employed in X.509 version 3 | |||
certificates (see <xref target="RFC5280"/>). This document only specifies the | certificates (see <xref target="RFC5280" format="default"/>). This document | |||
new format for Nonce extension and | only specifies the new format for the Nonce extension and | |||
does not change specification of any of the other standard extensions defined | does not change the specifications of any of the other standard extensions | |||
in <xref target="RFC6960"/>.</t> | defined in <xref target="RFC6960" format="default"/>.</t> | |||
<section anchor="sect-2.1" numbered="true" toc="default"> | ||||
<section title="Nonce Extension" anchor="sect-2.1"> <t> | <name>Nonce Extension</name> | |||
This section replaces the entirety of the Section 4.4.1 of <xref target="RFC6 | <t>This section replaces the entirety of <xref target="RFC6960" | |||
960"/> which describes the OCSP Nonce extension. | sectionFormat="of" section="4.4.1"/>, which describes the OCSP Nonce | |||
</t><t> | extension.</t> | |||
<t> | ||||
The nonce cryptographically binds a request and a response to | The nonce cryptographically binds a request and a response to | |||
prevent replay attacks. The nonce is included as one of the | prevent replay attacks. The nonce is included as one of the | |||
requestExtensions in requests, while in responses it would be | requestExtensions in requests; in responses, it would be | |||
included as one of the responseExtensions. In both the request and | included as one of the responseExtensions. In both the request and | |||
the response, the nonce will be identified by the object identifier | the response, the nonce will be identified by the object identifier | |||
id-pkix-ocsp-nonce, while the extnValue is the value of the nonce. | id-pkix-ocsp-nonce, while the extnValue is the value of the nonce. | |||
If Nonce extension is present then the length of nonce MUST be at | If the Nonce extension is present, then the length of the nonce <bcp14>MUST</ bcp14> be at | |||
least 1 octet and can be up to 32 octets. | least 1 octet and can be up to 32 octets. | |||
</t> | </t> | |||
<t> | <t>A server <bcp14>MUST</bcp14> reject any OCSP request that has a nonce | |||
A server MUST reject any OCSP request having a nonce in the Nonce extension w | in the Nonce extension with a length of either 0 octets or more than 32 o | |||
ith | ctets | |||
length of 0 octets or more than 32 octets with the malformedRequest | with the malformedRequest OCSPResponseStatus, as described in <xref | |||
OCSPResponseStatus as described in section 4.2.1 of <xref target="RFC6960"/>. | target="RFC6960" sectionFormat="of" section="4.2.1"/>.</t> | |||
</t> | <t> | |||
<t> | The value of the nonce <bcp14>MUST</bcp14> be generated using a cryptographic | |||
The value of the nonce MUST be generated using a cryptographically | ally | |||
strong pseudorandom number generator (see <xref target="RFC4086"/>). | strong pseudorandom number generator (see <xref target="RFC4086" format="defa | |||
ult"/>). | ||||
The minimum nonce length of 1 octet is defined to provide | The minimum nonce length of 1 octet is defined to provide | |||
backward compatibility with older clients that follow [RFC6960]. | backward compatibility with older clients that follow <xref | |||
Newer OCSP clients that support this document MUST use a | target="RFC6960" format="default"/>. | |||
length of 32 octets for the nonce in Nonce extension. OCSP responders | Newer OCSP clients that support this document <bcp14>MUST</bcp14> use a | |||
MUST accept lengths of at least 16 octets, and MAY choose to | length of 32 octets for the nonce in the Nonce extension. OCSP responders | |||
ignore the Nonce extension for requests where the length of the nonce is less | <bcp14>MUST</bcp14> accept lengths of at least 16 octets and <bcp14>MAY</bcp | |||
than 16 octets | 14> choose to | |||
</t> | ignore the Nonce extension for requests where the length of the nonce is less | |||
than 16 octets. | ||||
</t> | ||||
<figure><artwork><![CDATA[ | <sourcecode type="asn.1"><![CDATA[ | |||
id-pkix-ocsp OBJECT IDENTIFIER ::= { id-ad-ocsp } | id-pkix-ocsp OBJECT IDENTIFIER ::= { id-ad-ocsp } | |||
id-pkix-ocsp-nonce OBJECT IDENTIFIER ::= { id-pkix-ocsp 2 } | id-pkix-ocsp-nonce OBJECT IDENTIFIER ::= { id-pkix-ocsp 2 } | |||
Nonce ::= OCTET STRING(SIZE(1..32)) | Nonce ::= OCTET STRING(SIZE(1..32)) | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </section> | |||
</section> | </section> | |||
<section anchor="sect-3" numbered="true" toc="default"> | ||||
</section> | <name>Security Considerations</name> | |||
<section title="Security Considerations" anchor="sect-3"> | ||||
<t> | <t> | |||
The security considerations of OCSP, in general, are described in | The security considerations of OCSP, in general, are described in | |||
<xref target="RFC6960"/>. During the interval in which the previous OCSP r | <xref target="RFC6960" format="default"/>. During the interval in which | |||
esponse for a | the previous OCSP response for a | |||
certificate is not expired but the responder has a changed status for | certificate is not expired but the responder has a changed status for | |||
that certificate, a copy of that OCSP response can be used to indicate tha | that certificate, a copy of that OCSP response can be used to indicate | |||
t the status of the certificate is still valid. | that the status of the certificate is still valid. | |||
Including client's Nonce value in the OCSP | Including a client's nonce value in the OCSP | |||
response makes sure that the response is the latest response from | response makes sure that the response is the latest response from | |||
the server and not an old copy. | the server and not an old copy. | |||
</t> | </t> | |||
<section anchor="sect-3-1" numbered="true" toc="default"> | ||||
<section title="Replay Attack" anchor="sect-3-1"> | <name>Replay Attack</name> | |||
<t> | <t> | |||
The Nonce extension is used to avoid replay attacks. Since the OCSP | The Nonce extension is used to avoid replay attacks. Since the OCSP | |||
responder may choose to not send the Nonce extension in the OCSP | responder may choose not to send the Nonce extension in the OCSP | |||
response even if the client has sent the Nonce extension in the | response even if the client has sent the Nonce extension in the | |||
request <xref target="RFC5019"/>, an on-path attacker can intercept the OCSP request | request <xref target="RFC5019" format="default"/>, an on-path attacker can in tercept the OCSP request | |||
and respond with an earlier response from the server without the | and respond with an earlier response from the server without the | |||
Nonce extension. This can be mitigated by configuring the server to | Nonce extension. This can be mitigated by configuring the server to | |||
use a short time interval between the thisUpdate and nextUpdate fields in | use a short time interval between the thisUpdate and nextUpdate fields in | |||
the OCSP response. | the OCSP response. | |||
</t> | </t> | |||
</section> | </section> | |||
<section title="Nonce Collision" anchor="sect-3-2"> | <section anchor="sect-3-2" numbered="true" toc="default"> | |||
<t> | <name>Nonce Collision</name> | |||
If the value of nonce used by a client in OCSP request is | <t> | |||
If the value of the nonce used by a client in the OCSP request is | ||||
predictable, then an attacker may prefetch responses with the | predictable, then an attacker may prefetch responses with the | |||
predicted nonce and can replay them, thus defeating the purpose of | predicted nonce and can replay them, thus defeating the purpose of | |||
using nonce. Therefore the value of Nonce extension in the OCSP | using the nonce. Therefore, the value of the Nonce extension in the OCSP | |||
request MUST contain cryptographically strong randomness and MUST be | request <bcp14>MUST</bcp14> contain cryptographically strong randomness and < | |||
freshly generated at the time of creating the OCSP request. Also | bcp14>MUST</bcp14> be | |||
if the length of nonce is too small e.g. 1 octet then | freshly generated at the time of the creation of the OCSP request. Also, | |||
if the length of the nonce is too small (e.g., 1 octet), then | ||||
an on-path attacker can prefetch responses with all the possible | an on-path attacker can prefetch responses with all the possible | |||
values of nonce and replay a matching nonce. | values of the nonce and replay a matching nonce. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sect-4" numbered="true" toc="default"> | ||||
<section title="IANA Considerations" anchor="sect-4"> | <name>IANA Considerations</name> | |||
<t>This document does not call for any IANA actions.</t> | <t>This document has no IANA actions.</t> | |||
</section> | </section> | |||
<section title="Changes to Appendix B. of RFC 6960" anchor="sect-5"> | <section anchor="sect-5" numbered="true" toc="default"> | |||
<t> | <name>Changes to Appendix B of RFC 6960</name> | |||
This section updates the ASN.1 definitions of the OCSP Nonce extension in | <t> | |||
Appendix B.1 and Appendix B.2 of <xref target="RFC6960"/> | This section updates the ASN.1 definitions of the OCSP Nonce extension | |||
The Appendix B.1 defines OCSP using ASN.1 - 1998 Syntax and Appendix B.2 | in Appendices <xref target="RFC6960" | |||
defines OCSP using ASN.1 - 2008 Syntax | section="B.1" sectionFormat="bare"/> and <xref target="RFC6960" | |||
</t> | section="B.2" sectionFormat="bare"/> of <xref target="RFC6960"/>. | |||
<section title="Changes to Appendix B.1. OCSP in ASN.1 - 1998 Syntax" anc | Appendix <xref target="RFC6960" section="B.1" sectionFormat="bare"/> | |||
hor="sect-5-1"> | defines OCSP using ASN.1 - 1998 Syntax; Appendix <xref | |||
<t>OLD Syntax: </t> | target="RFC6960" section="B.2" sectionFormat="bare"/> defines OCSP | |||
<t>The definition of OCSP Nonce Extension is not provided in Appendix B.1 | using ASN.1 - 2008 Syntax.</t> | |||
of <xref target="RFC6960"/> for the ASN.1 - 1998 Syntax.</t> | <section anchor="sect-5-1" numbered="true" toc="default"> | |||
<t>NEW Syntax: </t> | <name>Changes to Appendix B.1 OCSP in ASN.1 - 1998 Syntax</name> | |||
<figure><artwork><![CDATA[ | <t>OLD Syntax: </t> | |||
<t>The definition of OCSP Nonce extension is not provided in <xref | ||||
target="RFC6960" sectionFormat="of" section="B.1"/> for the ASN.1 - | ||||
1998 Syntax.</t> | ||||
<t>NEW Syntax: </t> | ||||
<sourcecode type="asn.1"><![CDATA[ | ||||
Nonce ::= OCTET STRING(SIZE(1..32)) | Nonce ::= OCTET STRING(SIZE(1..32)) | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </section> | |||
</section> | <section anchor="sect-5-2" numbered="true" toc="default"> | |||
<section title="Changes to Appendix B.2 OCSP in ASN.1 - 2008 Syntax" anc | <name>Changes to Appendix B.2 OCSP in ASN.1 - 2008 Syntax</name> | |||
hor="sect-5-2"> | <t>OLD Syntax: </t> | |||
<t>OLD Syntax: </t> | <sourcecode type="asn.1"><![CDATA[ | |||
<figure><artwork><![CDATA[ | ||||
re-ocsp-nonce EXTENSION ::= { SYNTAX OCTET STRING IDENTIFIED | re-ocsp-nonce EXTENSION ::= { SYNTAX OCTET STRING IDENTIFIED | |||
BY id-pkix-ocsp-nonce } | BY id-pkix-ocsp-nonce } | |||
]]></sourcecode> | ||||
]]></artwork> | <t>NEW Syntax: </t> | |||
</figure> | <sourcecode type="asn.1"><![CDATA[ | |||
<t>NEW Syntax: </t> | ||||
<figure><artwork><![CDATA[ | ||||
re-ocsp-nonce EXTENSION ::= { SYNTAX OCTET STRING(SIZE(1..32)) | re-ocsp-nonce EXTENSION ::= { SYNTAX OCTET STRING(SIZE(1..32)) | |||
IDENTIFIED BY id-pkix-ocsp-nonce } | IDENTIFIED BY id-pkix-ocsp-nonce } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </section> | |||
</section> | </section> | |||
</section> | </middle> | |||
</middle> | <back> | |||
<references> | ||||
<back> | <name>References</name> | |||
<references title="Normative References"> | <references> | |||
<reference anchor="RFC2119" target="http://www.rfc-editor.org/info/rfc211 | ||||
9"><front> | ||||
<title>Key words for use in RFCs to Indicate Requirement Levels</title> | ||||
<author fullname="S. Bradner" initials="S." surname="Bradner"> | ||||
</author> | ||||
<date month="March" year="1997"/> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="2119"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
</reference> | ||||
<reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc81 | ||||
74"> | ||||
<front> | ||||
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
tle> | ||||
<author initials="B." surname="Leiba" fullname="B. Leiba"> | ||||
</author> | ||||
<date year="2017" month="May"/> | ||||
</front> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
<seriesInfo name="RFC" value="8174"/> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
</reference> | ||||
&RFC5280; | ||||
&RFC6960; | ||||
</references> | ||||
<references title="Informative References"> | ||||
&RFC4086; | ||||
&RFC4732; | ||||
&RFC5019; | ||||
</references> | ||||
</back> | ||||
</rfc> | <name>Normative References</name> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.2119.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8174.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5280.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6960.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4086.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4732.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5019.xml"/> | ||||
</references> | ||||
</references> | ||||
</back> | ||||
</rfc> | ||||
End of changes. 27 change blocks. | ||||
211 lines changed or deleted | 175 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/ |