this.xml | that.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="utf-8"?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" number="8747" consensus="true" c | ||||
<rfc number="8747" consensus="true" xmlns:xi="http://www.w3.org/2001/XInclude" c | ategory="std" docName="draft-ietf-ace-cwt-proof-of-possession-11" ipr="trust2009 | |||
ategory="std" | 02" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true | |||
docName="draft-ietf-ace-cwt-proof-of-possession-11" ipr="trust200902" | " tocDepth="4" symRefs="true" sortRefs="true" version="3"> | |||
obsoletes="" updates="" submissionType="IETF" xml:lang="en" | ||||
tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" | ||||
version="3"> | ||||
<!-- xml2rfc v2v3 conversion 2.38.0 --> | <!-- xml2rfc v2v3 conversion 2.38.0 --> | |||
<front> | <front> | |||
<title abbrev="Proof-of-Possession Key for CWTs">Proof-of-Possession Key | <title abbrev="Proof-of-Possession Key for CWTs">Proof-of-Possession Key | |||
Semantics for CBOR Web Tokens (CWTs)</title> | Semantics for CBOR Web Tokens (CWTs)</title> | |||
<seriesInfo name="RFC" value="8747"/> | <seriesInfo name="RFC" value="8747"/> | |||
<author fullname="Michael B. Jones" initials="M." surname="Jones"> | <author fullname="Michael B. Jones" initials="M." surname="Jones"> | |||
<organization>Microsoft</organization> | <organization>Microsoft</organization> | |||
<address> | <address> | |||
<email>mbj@microsoft.com</email> | <email>mbj@microsoft.com</email> | |||
<uri>https://self-issued.info/</uri> | <uri>https://self-issued.info/</uri> | |||
skipping to change at line 101 ¶ | skipping to change at line 96 ¶ | |||
This specification provides equivalent functionality to | This specification provides equivalent functionality to | |||
"Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)" <xref targ et="RFC7800" format="default"/> | "Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)" <xref targ et="RFC7800" format="default"/> | |||
but using Concise Binary Object Representation (CBOR) <xref target="RFC70 49" format="default"/> | but using Concise Binary Object Representation (CBOR) <xref target="RFC70 49" format="default"/> | |||
and CWTs <xref target="RFC8392" format="default"/> | and CWTs <xref target="RFC8392" format="default"/> | |||
rather than JavaScript Object Notation (JSON) <xref target="RFC8259" form at="default"/> | rather than JavaScript Object Notation (JSON) <xref target="RFC8259" form at="default"/> | |||
and JSON Web Tokens (JWTs) <xref target="RFC7519" format="default"/>. | and JSON Web Tokens (JWTs) <xref target="RFC7519" format="default"/>. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="Terminology" numbered="true" toc="default"> | <section anchor="Terminology" numbered="true" toc="default"> | |||
<name>Terminology</name> | <name>Terminology</name> | |||
<t> | <t> | |||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
"<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | |||
to be interpreted as | to be interpreted as | |||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | |||
when, and only when, they appear in all capitals, as shown here. | when, and only when, they appear in all capitals, as shown here. | |||
</t> | </t> | |||
<t> | <t> | |||
skipping to change at line 148 ¶ | skipping to change at line 143 ¶ | |||
<t> | <t> | |||
Party that receives the CWT containing the proof-of-possession key in formation from the presenter. | Party that receives the CWT containing the proof-of-possession key in formation from the presenter. | |||
</t> | </t> | |||
<t> | <t> | |||
In the context of OAuth, this party is also called the OAuth Resource Server. | In the context of OAuth, this party is also called the OAuth Resource Server. | |||
</t> | </t> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
<t> | <t> | |||
This specification provides examples in CBOR extended diagnostic | This specification provides examples in CBOR extended diagnostic | |||
notation, as defined in <xref target="RFC8610" | notation, as defined in <xref target="RFC8610" sectionFormat="of" section | |||
sectionFormat="of" section="G"/>. | ="G"/>. | |||
The examples include line breaks for readability. | The examples include line breaks for readability. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="PoP" numbered="true" toc="default"> | <section anchor="PoP" numbered="true" toc="default"> | |||
<name>Representations for Proof-of-Possession Keys</name> | <name>Representations for Proof-of-Possession Keys</name> | |||
<t> | <t> | |||
By including a <tt>cnf</tt> (confirmation) claim in a CWT, | By including a <tt>cnf</tt> (confirmation) claim in a CWT, | |||
the issuer of the CWT declares that the presenter possesses a particular key | the issuer of the CWT declares that the presenter possesses a particular key | |||
and that the recipient can cryptographically confirm that | and that the recipient can cryptographically confirm that | |||
the presenter has possession of that key. | the presenter has possession of that key. | |||
The value of the <tt>cnf</tt> claim is a CBOR map | The value of the <tt>cnf</tt> claim is a CBOR map | |||
(which is defined in <xref target="RFC7049" | (which is defined in <xref target="RFC7049" sectionFormat="of" section="2 | |||
sectionFormat="of" section="2.1"/>) | .1"/>) | |||
and the members of that map identify the proof-of-possession key. | and the members of that map identify the proof-of-possession key. | |||
</t> | </t> | |||
<t> | <t> | |||
The presenter can be identified in one of several ways by the CWT, | The presenter can be identified in one of several ways by the CWT, | |||
depending upon the application requirements. | depending upon the application requirements. | |||
For instance, some applications may use | For instance, some applications may use | |||
the CWT <tt>sub</tt> (subject) claim <xref target="RFC8392" format="defau lt"/> | the CWT <tt>sub</tt> (subject) claim <xref target="RFC8392" format="defau lt"/> | |||
to identify the presenter. | to identify the presenter. | |||
Other applications may use | Other applications may use | |||
the <tt>iss</tt> (issuer) claim <xref target="RFC8392" format="default"/> | the <tt>iss</tt> (issuer) claim <xref target="RFC8392" format="default"/> | |||
to identify the presenter. | to identify the presenter. | |||
In some applications, the subject identifier might be relative to | In some applications, the subject identifier might be relative to | |||
the issuer identified by the <tt>iss</tt> claim. | the issuer identified by the <tt>iss</tt> claim. | |||
The actual mechanism used is dependent upon the application. | The actual mechanism used is dependent upon the application. | |||
The case in which the presenter is the subject of the CWT is analogous to | The case in which the presenter is the subject of the CWT is analogous to | |||
Security Assertion Markup Language (SAML) 2.0 <xref | Security Assertion Markup Language (SAML) 2.0 <xref target="OASIS.saml-co | |||
target="OASIS.saml-core-2.0-os" format="default"/> SubjectConfirmation | re-2.0-os" format="default"/> SubjectConfirmation | |||
usage. | usage. | |||
</t> | </t> | |||
<section anchor="Confirmation" numbered="true" toc="default"> | <section anchor="Confirmation" numbered="true" toc="default"> | |||
<name>Confirmation Claim</name> | <name>Confirmation Claim</name> | |||
<t> | <t> | |||
The <tt>cnf</tt> claim in the CWT is used to carry confirmation methods. Some of | The <tt>cnf</tt> claim in the CWT is used to carry confirmation methods. Some of | |||
them use proof-of-possession keys, while others do not. This design is | them use proof-of-possession keys, while others do not. This design is | |||
analogous to the SAML 2.0 <xref target="OASIS.saml-core-2.0-os" format="default "/> SubjectConfirmation | analogous to the SAML 2.0 <xref target="OASIS.saml-core-2.0-os" format="default "/> SubjectConfirmation | |||
element in which a number of different subject confirmation methods can | element in which a number of different subject confirmation methods can | |||
be included (including proof-of-possession key information). | be included (including proof-of-possession key information). | |||
</t> | </t> | |||
<t> | <t> | |||
The set of confirmation members that a | The set of confirmation members that a | |||
CWT must contain to be considered valid is context dependent | CWT must contain to be considered valid is context dependent | |||
and is outside the scope of this specification. | and is outside the scope of this specification. | |||
Specific applications of CWTs will require implementations | Specific applications of CWTs will require implementations | |||
to understand and process some confirmation members in particular ways. | to understand and process some confirmation members in particular ways. | |||
However, in the absence of such requirements, all confirmation members | However, in the absence of such requirements, all confirmation members | |||
that are not understood by implementations <bcp14>MUST</bcp14> be ignor ed. | that are not understood by implementations <bcp14>MUST</bcp14> be ignor ed. | |||
</t> | </t> | |||
<t> | <t><xref target="CnfReg" format="default"/> establishes the | |||
<xref target="CnfReg" format="default"/> establishes the | ||||
IANA "CWT Confirmation Methods" registry for CWT <tt>cnf</tt> | IANA "CWT Confirmation Methods" registry for CWT <tt>cnf</tt> | |||
member values and registers the members defined by this specification. | member values and registers the members defined by this specification. | |||
Other specifications can register | Other specifications can register | |||
other members used for confirmation, including other members for | other members used for confirmation, including other members for | |||
conveying proof-of-possession keys using different key | conveying proof-of-possession keys using different key | |||
representations. | representations. | |||
</t> | </t> | |||
<t> | <t> | |||
The <tt>cnf</tt> claim value <bcp14>MUST</bcp14> represent only a single | The <tt>cnf</tt> claim value <bcp14>MUST</bcp14> represent only a single | |||
proof-of-possession key. At most one of the <tt>COSE_Key</tt> | proof-of-possession key. At most one of the <tt>COSE_Key</tt> | |||
skipping to change at line 224 ¶ | skipping to change at line 214 ¶ | |||
in <xref target="fig_cborMappings" format="default"/> may be | in <xref target="fig_cborMappings" format="default"/> may be | |||
present. Note that if an application | present. Note that if an application | |||
needs to represent multiple proof-of-possession keys in the same CWT, one way | needs to represent multiple proof-of-possession keys in the same CWT, one way | |||
for it to achieve this is to use other claim names (in addition t o | for it to achieve this is to use other claim names (in addition t o | |||
<tt>cnf</tt>) to hold the additional proof-of-possession | <tt>cnf</tt>) to hold the additional proof-of-possession | |||
key information. These claims could use the same syntax and seman tics as the | key information. These claims could use the same syntax and seman tics as the | |||
<tt>cnf</tt> claim. Those claims would be defined by | <tt>cnf</tt> claim. Those claims would be defined by | |||
applications or other specifications and could be registered in t he | applications or other specifications and could be registered in t he | |||
IANA "CBOR Web Token (CWT) Claims" registry <xref target="IANA.CW T.Claims" format="default"/>. | IANA "CBOR Web Token (CWT) Claims" registry <xref target="IANA.CW T.Claims" format="default"/>. | |||
</t> | </t> | |||
<table anchor="fig_cborMappings"> | <table anchor="fig_cborMappings"> | |||
<name>Summary of the <tt>cnf</tt> Names, Keys, and Value Types</name> | <name>Summary of the <tt>cnf</tt> Names, Keys, and Value Types</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th>Name</th> | <th>Name</th> | |||
<th>Key</th> | <th>Key</th> | |||
<th>Value type</th> | <th>Value type</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td>COSE_Key</td> | <td>COSE_Key</td> | |||
<td>1</td> | <td>1</td> | |||
<td>COSE_Key</td> | <td>COSE_Key</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Encrypted_COSE_Key</td> | <td>Encrypted_COSE_Key</td> | |||
<td>2</td> | <td>2</td> | |||
<td>COSE_Encrypt or COSE_Encrypt0</td> | <td>COSE_Encrypt or COSE_Encrypt0</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>kid</td> | <td>kid</td> | |||
<td>3</td> | <td>3</td> | |||
<td>binary string</td> | <td>binary string</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
<section anchor="PrivatePoP" numbered="true" toc="default"> | <section anchor="PrivatePoP" numbered="true" toc="default"> | |||
<name>Representation of an Asymmetric Proof-of-Possession Key</name> | <name>Representation of an Asymmetric Proof-of-Possession Key</name> | |||
<t> | <t> | |||
When the key held by the presenter is an asymmetric private key, | When the key held by the presenter is an asymmetric private key, | |||
the <tt>COSE_Key</tt> member | the <tt>COSE_Key</tt> member | |||
is a COSE_Key <xref target="RFC8152" format="default"/> | is a COSE_Key <xref target="RFC8152" format="default"/> | |||
representing the corresponding asymmetric public key. | representing the corresponding asymmetric public key. | |||
The following example demonstrates such a declaration | The following example demonstrates such a declaration | |||
in the CWT Claims Set of a CWT: | in the CWT Claims Set of a CWT: | |||
</t> | </t> | |||
<sourcecode type="cbor"><![CDATA[ | ||||
<sourcecode type="cbor"><![CDATA[ | ||||
{ | { | |||
/iss/ 1 : "coaps://server.example.com", | /iss/ 1 : "coaps://server.example.com", | |||
/aud/ 3 : "coaps://client.example.org", | /aud/ 3 : "coaps://client.example.org", | |||
/exp/ 4 : 1879067471, | /exp/ 4 : 1879067471, | |||
/cnf/ 8 :{ | /cnf/ 8 :{ | |||
/COSE_Key/ 1 :{ | /COSE_Key/ 1 :{ | |||
/kty/ 1 : /EC2/ 2, | /kty/ 1 : /EC2/ 2, | |||
/crv/ -1 : /P-256/ 1, | /crv/ -1 : /P-256/ 1, | |||
/x/ -2 : h'd7cc072de2205bdc1537a543d53c60a6acb62eccd890c7fa27c9 | /x/ -2 : h'd7cc072de2205bdc1537a543d53c60a6acb62eccd890c7fa27c9 | |||
e354089bbe13', | e354089bbe13', | |||
/y/ -3 : h'f95e1d4b851a2cc80fff87d8e23f22afb725d535e515d020731e | /y/ -3 : h'f95e1d4b851a2cc80fff87d8e23f22afb725d535e515d020731e | |||
79a3b4e47120' | 79a3b4e47120' | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t> | ||||
<t> | ||||
The COSE_Key <bcp14>MUST</bcp14> contain the required key members | The COSE_Key <bcp14>MUST</bcp14> contain the required key members | |||
for a COSE_Key of that key type | for a COSE_Key of that key type | |||
and <bcp14>MAY</bcp14> contain other COSE_Key members, | and <bcp14>MAY</bcp14> contain other COSE_Key members, | |||
including the <tt>kid</tt> (Key ID) member. | including the <tt>kid</tt> (Key ID) member. | |||
</t> | </t> | |||
<t> | <t> | |||
The <tt>COSE_Key</tt> member <bcp14>MAY</bcp14> also be used for a COSE _Key | The <tt>COSE_Key</tt> member <bcp14>MAY</bcp14> also be used for a COSE _Key | |||
representing a symmetric key, provided that the CWT is encrypted | representing a symmetric key, provided that the CWT is encrypted | |||
so that the key is not revealed to unintended parties. | so that the key is not revealed to unintended parties. | |||
The means of encrypting a CWT is explained in <xref target="RFC8392" fo rmat="default"/>. | The means of encrypting a CWT is explained in <xref target="RFC8392" fo rmat="default"/>. | |||
If the CWT is not encrypted, the symmetric key <bcp14>MUST</bcp14> | If the CWT is not encrypted, the symmetric key <bcp14>MUST</bcp14> | |||
be encrypted as described in <xref target="SymmetricPoP" | be encrypted as described in <xref target="SymmetricPoP" format="defaul | |||
format="default"/>. This procedure is equivalent to | t"/>. This procedure is equivalent to | |||
the one defined in <xref target="RFC7800" | the one defined in <xref target="RFC7800" sectionFormat="of" section="3 | |||
sectionFormat="of" section="3.3"/>. | .3"/>. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="SymmetricPoP" numbered="true" toc="default"> | <section anchor="SymmetricPoP" numbered="true" toc="default"> | |||
<name>Representation of an Encrypted Symmetric Proof-of-Possession Key</ name> | <name>Representation of an Encrypted Symmetric Proof-of-Possession Key</ name> | |||
<t> | <t> | |||
When the key held by the presenter is a symmetric key, | When the key held by the presenter is a symmetric key, | |||
the <tt>Encrypted_COSE_Key</tt> member | the <tt>Encrypted_COSE_Key</tt> member | |||
is an encrypted COSE_Key <xref target="RFC8152" format="default"/> | is an encrypted COSE_Key <xref target="RFC8152" format="default"/> | |||
representing the symmetric key | representing the symmetric key | |||
encrypted to a key known to the recipient | encrypted to a key known to the recipient | |||
using COSE_Encrypt or COSE_Encrypt0. | using COSE_Encrypt or COSE_Encrypt0. | |||
</t> | </t> | |||
<t> | <t> | |||
The following example | The following example | |||
illustrates a symmetric key that could subsequently be encrypted for us e in the | illustrates a symmetric key that could subsequently be encrypted for us e in the | |||
<tt>Encrypted_COSE_Key</tt> member: | <tt>Encrypted_COSE_Key</tt> member: | |||
</t> | </t> | |||
<sourcecode type="cbor"><![CDATA[ | <sourcecode type="cbor"><![CDATA[ | |||
{ | { | |||
/kty/ 1 : /Symmetric/ 4, | /kty/ 1 : /Symmetric/ 4, | |||
/alg/ 3 : /HMAC 256-256/ 5, | /alg/ 3 : /HMAC 256-256/ 5, | |||
/k/ -1 : h'6684523ab17337f173500e5728c628547cb37df | /k/ -1 : h'6684523ab17337f173500e5728c628547cb37df | |||
e68449c65f885d1b73b49eae1' | e68449c65f885d1b73b49eae1' | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t> | <t> | |||
The COSE_Key representation | The COSE_Key representation | |||
is used as the plaintext when encrypting the key. | is used as the plaintext when encrypting the key. | |||
</t> | </t> | |||
<t> | <t> | |||
The following example CWT Claims Set of a CWT | The following example CWT Claims Set of a CWT | |||
illustrates the use of an encrypted symmetric key as the | illustrates the use of an encrypted symmetric key as the | |||
<tt>Encrypted_COSE_Key</tt> member value: | <tt>Encrypted_COSE_Key</tt> member value: | |||
</t> | </t> | |||
<sourcecode type="cbor"><![CDATA[ | ||||
<sourcecode type="cbor"><![CDATA[ | ||||
{ | { | |||
/iss/ 1 : "coaps://server.example.com", | /iss/ 1 : "coaps://server.example.com", | |||
/sub/ 2 : "24400320", | /sub/ 2 : "24400320", | |||
/aud/ 3: "s6BhdRkqt3", | /aud/ 3: "s6BhdRkqt3", | |||
/exp/ 4 : 1311281970, | /exp/ 4 : 1311281970, | |||
/iat/ 5 : 1311280970, | /iat/ 5 : 1311280970, | |||
/cnf/ 8 : { | /cnf/ 8 : { | |||
/Encrypted_COSE_Key/ 2 : [ | /Encrypted_COSE_Key/ 2 : [ | |||
/protected header/ h'A1010A' /{ \alg\ 1:10 \AES-CCM-16-64-128\}/, | /protected header/ h'A1010A' /{ \alg\ 1:10 \AES-CCM-16-64-128\}/, | |||
/unprotected header/ { / iv / 5: h'636898994FF0EC7BFCF6D3F95B'}, | /unprotected header/ { / iv / 5: h'636898994FF0EC7BFCF6D3F95B'}, | |||
/ciphertext/ h'0573318A3573EB983E55A7C2F06CADD0796C9E584F1D0E3E | /ciphertext/ h'0573318A3573EB983E55A7C2F06CADD0796C9E584F1D0E3E | |||
A8C5B052592A8B2694BE9654F0431F38D5BBC8049FA7F13F' | A8C5B052592A8B2694BE9654F0431F38D5BBC8049FA7F13F' | |||
] | ] | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t> | <t> | |||
The example above was generated with the key: | The example above was generated with the key: | |||
</t> | </t> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
h'6162630405060708090a0b0c0d0e0f10' | h'6162630405060708090a0b0c0d0e0f10' | |||
]]></artwork> | ]]></artwork> | |||
</section> | </section> | |||
<section anchor="KidPoP" numbered="true" toc="default"> | <section anchor="KidPoP" numbered="true" toc="default"> | |||
<name>Representation of a Key ID for a Proof-of-Possession Key</name> | <name>Representation of a Key ID for a Proof-of-Possession Key</name> | |||
<t> | <t> | |||
The proof-of-possession key can also be identified using | The proof-of-possession key can also be identified using | |||
a Key ID instead of communicating the actual key, | a Key ID instead of communicating the actual key, | |||
provided the recipient is able to obtain the identified key | provided the recipient is able to obtain the identified key | |||
using the Key ID. | using the Key ID. | |||
skipping to change at line 376 ¶ | skipping to change at line 361 ¶ | |||
and that the recipient can cryptographically confirm | and that the recipient can cryptographically confirm | |||
the presenter's proof of possession of the key by including a | the presenter's proof of possession of the key by including a | |||
<tt>cnf</tt> claim in the CWT | <tt>cnf</tt> claim in the CWT | |||
whose value is a CBOR map containing a <tt>kid</tt> member | whose value is a CBOR map containing a <tt>kid</tt> member | |||
identifying the key. | identifying the key. | |||
</t> | </t> | |||
<t> | <t> | |||
The following example demonstrates such a declaration | The following example demonstrates such a declaration | |||
in the CWT Claims Set of a CWT: | in the CWT Claims Set of a CWT: | |||
</t> | </t> | |||
<sourcecode type="cbor"><![CDATA[ | <sourcecode type="cbor"><![CDATA[ | |||
{ | { | |||
/iss/ 1 : "coaps://as.example.com", | /iss/ 1 : "coaps://as.example.com", | |||
/aud/ 3 : "coaps://resource.example.org", | /aud/ 3 : "coaps://resource.example.org", | |||
/exp/ 4 : 1361398824, | /exp/ 4 : 1361398824, | |||
/cnf/ 8 : { | /cnf/ 8 : { | |||
/kid/ 3 : h'dfd1aa976d8d4575a0fe34b96de2bfad' | /kid/ 3 : h'dfd1aa976d8d4575a0fe34b96de2bfad' | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t> | <t> | |||
skipping to change at line 452 ¶ | skipping to change at line 436 ¶ | |||
<t> | <t> | |||
All the security considerations that | All the security considerations that | |||
are discussed in <xref target="RFC8392" format="default"/> also apply he re. | are discussed in <xref target="RFC8392" format="default"/> also apply he re. | |||
In addition, proof of possession introduces its own unique security issu es. | In addition, proof of possession introduces its own unique security issu es. | |||
Possessing a key is only valuable if it is kept secret. | Possessing a key is only valuable if it is kept secret. | |||
Appropriate means must be used to ensure that unintended parties | Appropriate means must be used to ensure that unintended parties | |||
do not learn private key or symmetric key values. | do not learn private key or symmetric key values. | |||
</t> | </t> | |||
<t> | <t> | |||
Applications utilizing proof of possession <bcp14>SHOULD</bcp14> also uti lize audience restriction, | Applications utilizing proof of possession <bcp14>SHOULD</bcp14> also uti lize audience restriction, | |||
as described in <xref target="RFC8392" | as described in <xref target="RFC8392" sectionFormat="of" section="3.1.3" | |||
sectionFormat="of" section="3.1.3"/>, | />, | |||
because it provides additional protections. | because it provides additional protections. | |||
Audience restriction can be used by recipients to reject messages intende d for different recipients. | Audience restriction can be used by recipients to reject messages intende d for different recipients. | |||
(Of course, applications not using proof of possession can also benefit | (Of course, applications not using proof of possession can also benefit | |||
from using audience restriction to reject messages intended for different recipients.) | from using audience restriction to reject messages intended for different recipients.) | |||
</t> | </t> | |||
<t> | <t> | |||
CBOR Web Tokens with proof-of-possession keys are used in context of an a rchitecture, | CBOR Web Tokens with proof-of-possession keys are used in context of an a rchitecture, | |||
such as the ACE OAuth Framework <xref target="I-D.ietf-ace-oauth-authz" f ormat="default"/>, | such as the ACE OAuth Framework <xref target="I-D.ietf-ace-oauth-authz" f ormat="default"/>, | |||
in which protocols are used by a presenter to request these tokens | in which protocols are used by a presenter to request these tokens | |||
and to subsequently use them with recipients. | and to subsequently use them with recipients. | |||
skipping to change at line 488 ¶ | skipping to change at line 471 ¶ | |||
learns about the entity that created the CWT, | learns about the entity that created the CWT, | |||
since this will be important for any policy decisions. | since this will be important for any policy decisions. | |||
Integrity protection prevents an adversary from changing | Integrity protection prevents an adversary from changing | |||
any elements conveyed within the CWT payload. | any elements conveyed within the CWT payload. | |||
Special care has to be applied when carrying symmetric keys inside the CW T | Special care has to be applied when carrying symmetric keys inside the CW T | |||
since those not only require integrity protection | since those not only require integrity protection | |||
but also confidentiality protection. | but also confidentiality protection. | |||
</t> | </t> | |||
<t> | <t> | |||
As described in Section <xref target="RFC7515" section="6" sectionFormat= "bare">Key | As described in Section <xref target="RFC7515" section="6" sectionFormat= "bare">Key | |||
Identification</xref> and Appendix <xref target="RFC7515" section="D" | Identification</xref> and Appendix <xref target="RFC7515" section="D" sec | |||
sectionFormat="bare">Notes on Key Selection</xref> of <xref | tionFormat="bare">Notes on Key Selection</xref> of <xref target="RFC7515"/>, it | |||
target="RFC7515"/>, it is important to make | is important to make | |||
explicit trust decisions about the keys. | explicit trust decisions about the keys. | |||
Proof-of-possession signatures made with keys | Proof-of-possession signatures made with keys | |||
not meeting the application's trust criteria <bcp14>MUST NOT</bcp14> be r elied upon. | not meeting the application's trust criteria <bcp14>MUST NOT</bcp14> be r elied upon. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="Privacy" numbered="true" toc="default"> | <section anchor="Privacy" numbered="true" toc="default"> | |||
<name>Privacy Considerations</name> | <name>Privacy Considerations</name> | |||
<t> | <t> | |||
A proof-of-possession key can be used as a correlation handle if the same key | A proof-of-possession key can be used as a correlation handle if the same key | |||
is used on multiple occasions. | is used on multiple occasions. | |||
skipping to change at line 601 ¶ | skipping to change at line 582 ¶ | |||
<li> | <li> | |||
Claim Key: 8 | Claim Key: 8 | |||
</li> | </li> | |||
<li> | <li> | |||
Claim Value Type(s): map | Claim Value Type(s): map | |||
</li> | </li> | |||
<li> | <li> | |||
Change Controller: IESG | Change Controller: IESG | |||
</li> | </li> | |||
<li> | <li> | |||
Specification Document(s): <xref target="Confirmation" | Specification Document(s): <xref target="Confirmation" format="de | |||
format="default"/> of RFC 8747 | fault"/> of RFC 8747 | |||
</li> | </li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="CnfReg" numbered="true" toc="default"> | <section anchor="CnfReg" numbered="true" toc="default"> | |||
<name>CWT Confirmation Methods Registry</name> | <name>CWT Confirmation Methods Registry</name> | |||
<t> | <t> | |||
This specification establishes the | This specification establishes the | |||
IANA "CWT Confirmation Methods" registry | IANA "CWT Confirmation Methods" registry | |||
for CWT <tt>cnf</tt> member values. | for CWT <tt>cnf</tt> member values. | |||
skipping to change at line 663 ¶ | skipping to change at line 643 ¶ | |||
preferably including URIs that | preferably including URIs that | |||
can be used to retrieve copies of the documents. | can be used to retrieve copies of the documents. | |||
An indication of the relevant | An indication of the relevant | |||
sections may also be included but is not required. | sections may also be included but is not required. | |||
Note that the designated experts and IANA must be able to obtain | Note that the designated experts and IANA must be able to obtain | |||
copies of the specification document(s) to perform their work. | copies of the specification document(s) to perform their work. | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="CnfContents" numbered="true" toc="default"> | <section anchor="CnfContents" numbered="true" toc="default"> | |||
<name>Initial Registry Contents</name> | <name>Initial Registry Contents</name> | |||
<ul spacing="compact"> | ||||
<ul spacing="compact"> | ||||
<li> | <li> | |||
Confirmation Method Name: <tt>COSE_Key</tt> | Confirmation Method Name: <tt>COSE_Key</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
Confirmation Method Description: COSE_Key Representing Public | Confirmation Method Description: COSE_Key Representing Public | |||
Key | Key | |||
</li> | </li> | |||
<li> | <li> | |||
JWT Confirmation Method Name: <tt>jwk</tt> | JWT Confirmation Method Name: <tt>jwk</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
Confirmation Key: 1 | Confirmation Key: 1 | |||
</li> | </li> | |||
<li> | <li> | |||
Confirmation Value Type(s): COSE_Key structure | Confirmation Value Type(s): COSE_Key structure | |||
</li> | </li> | |||
<li> | <li> | |||
Change Controller: IESG | Change Controller: IESG | |||
</li> | </li> | |||
<li> | <li> | |||
Specification Document(s): <xref target="PrivatePoP" | Specification Document(s): <xref target="PrivatePoP" format="def | |||
format="default"/> of RFC 8747 | ault"/> of RFC 8747 | |||
</li> | </li> | |||
</ul> | </ul> | |||
<ul spacing="compact"> | <ul spacing="compact"> | |||
<li> | <li> | |||
Confirmation Method Name: <tt>Encrypted_COSE_Key</tt> | Confirmation Method Name: <tt>Encrypted_COSE_Key</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
Confirmation Method Description: Encrypted COSE_Key | Confirmation Method Description: Encrypted COSE_Key | |||
</li> | </li> | |||
<li> | <li> | |||
JWT Confirmation Method Name: <tt>jwe</tt> | JWT Confirmation Method Name: <tt>jwe</tt> | |||
</li> | </li> | |||
skipping to change at line 712 ¶ | skipping to change at line 690 ¶ | |||
</li> | </li> | |||
<li> | <li> | |||
Confirmation Value Type(s): COSE_Encrypt or COSE_Encrypt0 | Confirmation Value Type(s): COSE_Encrypt or COSE_Encrypt0 | |||
structure (with an optional corresponding COSE_Encrypt or | structure (with an optional corresponding COSE_Encrypt or | |||
COSE_Encrypt0 tag) | COSE_Encrypt0 tag) | |||
</li> | </li> | |||
<li> | <li> | |||
Change Controller: IESG | Change Controller: IESG | |||
</li> | </li> | |||
<li> | <li> | |||
Specification Document(s): <xref target="SymmetricPoP" | Specification Document(s): <xref target="SymmetricPoP" format="d | |||
format="default"/> of RFC 8747 | efault"/> of RFC 8747 | |||
</li> | </li> | |||
</ul> | </ul> | |||
<ul spacing="compact"> | <ul spacing="compact"> | |||
<li> | <li> | |||
Confirmation Method Name: <tt>kid</tt> | Confirmation Method Name: <tt>kid</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
Confirmation Method Description: Key Identifier | Confirmation Method Description: Key Identifier | |||
</li> | </li> | |||
<li> | <li> | |||
skipping to change at line 736 ¶ | skipping to change at line 713 ¶ | |||
<li> | <li> | |||
Confirmation Key: 3 | Confirmation Key: 3 | |||
</li> | </li> | |||
<li> | <li> | |||
Confirmation Value Type(s): binary string | Confirmation Value Type(s): binary string | |||
</li> | </li> | |||
<li> | <li> | |||
Change Controller: IESG | Change Controller: IESG | |||
</li> | </li> | |||
<li> | <li> | |||
Specification Document(s): <xref target="KidPoP" | Specification Document(s): <xref target="KidPoP" format="default | |||
format="default"/> of RFC 8747 | "/> of RFC 8747 | |||
</li> | </li> | |||
</ul> | </ul> | |||
</section> | ||||
</section> | ||||
</section> | </section> | |||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<displayreference target="I-D.ietf-ace-oauth-authz" to="ACE-OAUTH"/> | <displayreference target="I-D.ietf-ace-oauth-authz" to="ACE-OAUTH"/> | |||
<displayreference target="RFC7515" to="JWS"/> | <displayreference target="RFC7515" to="JWS"/> | |||
<displayreference target="RFC7519" to="JWT"/> | <displayreference target="RFC7519" to="JWT"/> | |||
<references> | <references> | |||
<name>References</name> | <name>References</name> | |||
<references> | <references> | |||
<name>Normative References</name> | <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.2119.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.7049.xml"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.7049.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.8126.xml"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.8126.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.8152.xml"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.8152.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.8174.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.8392.xml"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.8392.xml"/> | |||
skipping to change at line 776 ¶ | skipping to change at line 751 ¶ | |||
</front> | </front> | |||
</reference> | </reference> | |||
</references> | </references> | |||
<references> | <references> | |||
<name>Informative References</name> | <name>Informative References</name> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.8259.xml"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.8259.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.7800.xml"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.7800.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.8610.xml"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.8610.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.7515.xml"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.7515.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.7519.xml"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.7519.xml"/> | |||
<reference anchor="OASIS.saml-core-2.0-os" target="http://docs.oasis-ope | ||||
<reference anchor="OASIS.saml-core-2.0-os" target="http://docs.oasis-open. | n.org/security/saml/v2.0/saml-core-2.0-os.pdf"> | |||
org/security/saml/v2.0/saml-core-2.0-os.pdf"> | ||||
<front> | <front> | |||
<title>Assertions and Protocol for the OASIS Security Assertion Mark up Language | <title>Assertions and Protocol for the OASIS Security Assertion Mark up Language | |||
(SAML) V2.0</title> | (SAML) V2.0</title> | |||
<author fullname="Scott Cantor" initials="S." surname="Cantor"> | <author fullname="Scott Cantor" initials="S." surname="Cantor"> | |||
<organization>Internet2</organization> | <organization>Internet2</organization> | |||
<address> | <address> | |||
<email>cantor.2@osu.edu</email> | <email>cantor.2@osu.edu</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="John Kemp" initials="J." surname="Kemp"> | <author fullname="John Kemp" initials="J." surname="Kemp"> | |||
skipping to change at line 807 ¶ | skipping to change at line 781 ¶ | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Eve Maler" initials="E." surname="Maler"> | <author fullname="Eve Maler" initials="E." surname="Maler"> | |||
<organization>Sun Microsystems</organization> | <organization>Sun Microsystems</organization> | |||
<address> | <address> | |||
<email>eve.maler@sun.com</email> | <email>eve.maler@sun.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2005" month="March"/> | <date year="2005" month="March"/> | |||
</front> | </front> | |||
<seriesInfo name="OASIS Standard" value="saml-core-2.0-os"/> | <seriesInfo name="OASIS Standard" value="saml-core-2.0-os"/> | |||
</reference> | </reference> | |||
<reference anchor="IANA.JWT" target="http://www.iana.org/assignments/jwt "> | <reference anchor="IANA.JWT" target="http://www.iana.org/assignments/jwt "> | |||
<front> | <front> | |||
<title>JSON Web Token (JWT)</title> | <title>JSON Web Token (JWT)</title> | |||
<author> | <author> | |||
<organization>IANA</organization> | <organization>IANA</organization> | |||
</author> | </author> | |||
<date/> | <date/> | |||
</front> | </front> | |||
</reference> | </reference> | |||
skipping to change at line 837 ¶ | skipping to change at line 810 ¶ | |||
<contact fullname="Christer Holmberg"/>, | <contact fullname="Christer Holmberg"/>, | |||
<contact fullname="Benjamin Kaduk"/>, | <contact fullname="Benjamin Kaduk"/>, | |||
<contact fullname="Mirja Kühlewind"/>, | <contact fullname="Mirja Kühlewind"/>, | |||
<contact fullname="Yoav Nir"/>, | <contact fullname="Yoav Nir"/>, | |||
<contact fullname="Michael Richardson"/>, | <contact fullname="Michael Richardson"/>, | |||
<contact fullname="Adam Roach"/>, | <contact fullname="Adam Roach"/>, | |||
<contact fullname="Éric Vyncke"/>, | <contact fullname="Éric Vyncke"/>, | |||
and | and | |||
<contact fullname="Jim Schaad"/>. | <contact fullname="Jim Schaad"/>. | |||
</t> | </t> | |||
<t><contact fullname="Ludwig Seitz"/> and <contact fullname="Göran | <t><contact fullname="Ludwig Seitz"/> and <contact fullname="Göran S | |||
Selander"/> worked on this document as part of | elander"/> worked on this document as part of | |||
the CelticPlus projects CyberWI and CRITISEC, with funding from Vinnova.</t> | the CelticPlus projects CyberWI and CRITISEC, with funding from Vinnova.</t> | |||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 29 change blocks. | ||||
86 lines changed or deleted | 75 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |