rfc9668v1.txt   rfc9668.txt 
Internet Engineering Task Force (IETF) F. Palombini Internet Engineering Task Force (IETF) F. Palombini
Request for Comments: 9668 Ericsson Request for Comments: 9668 Ericsson AB
Category: Standards Track M. Tiloca Category: Standards Track M. Tiloca
ISSN: 2070-1721 R. Höglund ISSN: 2070-1721 R. Höglund
RISE AB RISE AB
S. Hristozov S. Hristozov
Fraunhofer AISEC Fraunhofer AISEC
G. Selander G. Selander
Ericsson Ericsson
October 2024 October 2024
Using Ephemeral Diffie-Hellman Over COSE (EDHOC) with the Constrained Using Ephemeral Diffie-Hellman Over COSE (EDHOC) with the Constrained
skipping to change at line 69 skipping to change at line 69
Table of Contents Table of Contents
1. Introduction 1. Introduction
1.1. Terminology 1.1. Terminology
2. EDHOC Overview 2. EDHOC Overview
3. EDHOC Combined with OSCORE 3. EDHOC Combined with OSCORE
3.1. EDHOC Option 3.1. EDHOC Option
3.2. Client Processing 3.2. Client Processing
3.2.1. Processing of the EDHOC + OSCORE Request 3.2.1. Processing of the EDHOC + OSCORE Request
3.2.2. Supporting Block-Wise 3.2.2. Supporting Block-Wise Transfers
3.3. Server Processing 3.3. Server Processing
3.3.1. Processing of the EDHOC + OSCORE Request 3.3.1. Processing of the EDHOC + OSCORE Request
3.3.2. Supporting Block-Wise 3.3.2. Supporting Block-Wise Transfers
3.4. Example of the EDHOC + OSCORE Request 3.4. Example of the EDHOC + OSCORE Request
4. Use of EDHOC Connection Identifiers with OSCORE 4. Use of EDHOC Connection Identifiers with OSCORE
4.1. Additional Processing of EDHOC Messages 4.1. Additional Processing of EDHOC Messages
4.1.1. Initiator Processing of Message 1 4.1.1. Initiator Processing of Message 1
4.1.2. Responder Processing of Message 2 4.1.2. Responder Processing of Message 2
4.1.3. Initiator Processing of Message 2 4.1.3. Initiator Processing of Message 2
5. Extension and Consistency of Application Profiles 5. Extension and Consistency of Application Profiles
6. Web Linking 6. Web Linking
7. Security Considerations 7. Security Considerations
8. IANA Considerations 8. IANA Considerations
skipping to change at line 130 skipping to change at line 130
The minimum number of two round trips can be achieved only if the The minimum number of two round trips can be achieved only if the
default forward message flow of EDHOC is used, i.e., when a CoAP default forward message flow of EDHOC is used, i.e., when a CoAP
client acts as EDHOC Initiator and a CoAP server acts as EDHOC client acts as EDHOC Initiator and a CoAP server acts as EDHOC
Responder. The performance advantage of using this optimization can Responder. The performance advantage of using this optimization can
be lost when used in combination with Block-wise transfers [RFC7959] be lost when used in combination with Block-wise transfers [RFC7959]
that rely on specific parameter values and block sizes. that rely on specific parameter values and block sizes.
Furthermore, this document defines a number of parameters Furthermore, this document defines a number of parameters
corresponding to different information elements of an EDHOC corresponding to different information elements of an EDHOC
application profile (see Section 6). These can be specified as application profile (see Section 6). These parameters can be
target attributes in the link to an EDHOC resource associated with specified as target attributes in the link to an EDHOC resource
that application profile, thus enabling an enhanced discovery of such associated with that application profile, thus enabling an enhanced
a resource for CoAP clients. discovery of such a resource for CoAP clients.
1.1. Terminology 1.1. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
The reader is expected to be familiar with terms and concepts defined The reader is expected to be familiar with terms and concepts defined
in CoAP [RFC7252], Concise Binary Object Representation (CBOR) in CoAP [RFC7252], Concise Binary Object Representation (CBOR)
[RFC8949], OSCORE [RFC8613], and EDHOC [RFC9528]. [RFC8949], OSCORE [RFC8613], and EDHOC [RFC9528].
2. EDHOC Overview 2. EDHOC Overview
This section is not normative and summarizes what is specified in This section is not normative and summarizes what is specified in
[RFC9528] (specifically Appendix A.2 of [RFC9528]). Thus, it [RFC9528] (specifically Appendix A.2 of [RFC9528]). Thus, it
provides a baseline for the enhancements in the subsequent sections. provides a baseline for the enhancements in the subsequent sections.
The EDHOC protocol specified in [RFC9528] allows two peers to agree The EDHOC protocol specified in [RFC9528] allows two peers to agree
on a cryptographic secret in a mutually authenticated way and by on a cryptographic secret in a mutually-authenticated way and
using Diffie-Hellman ephemeral keys to achieve forward secrecy. The achieves forward secrecy by using Diffie-Hellman ephemeral keys. The
two peers are denoted as the "Initiator" and "Responder", as the one two peers are denoted as the "Initiator" and "Responder", as the one
sending or receiving the initial EDHOC message_1, respectively. sending or receiving the initial EDHOC message_1, respectively.
After successful processing of EDHOC message_3, both peers agree on a After successful processing of EDHOC message_3, both peers agree on a
cryptographic secret that can be used to derive further security cryptographic secret that can be used to derive further security
material and establish an OSCORE Security Context [RFC8613]. The material and establish an OSCORE Security Context [RFC8613]. The
Responder can also send an optional EDHOC message_4 to achieve key Responder can also send an optional EDHOC message_4 in order for the
confirmation, e.g., in deployments where no protected application Initiator to achieve key confirmation, e.g., in deployments where no
message is sent from the Responder to the Initiator. protected application message is sent from the Responder to the
Initiator.
Appendix A.2 of [RFC9528] specifies how to transfer EDHOC over CoAP. Appendix A.2 of [RFC9528] specifies how to transfer EDHOC over CoAP.
That is, the EDHOC data (i.e., the EDHOC message possibly with a That is, the EDHOC data (i.e., the EDHOC message possibly with a
prepended connection identifier) is transported in the payload of prepended connection identifier) is transported in the payload of
CoAP requests and responses. The default forward message flow of CoAP requests and responses. The default forward message flow of
EDHOC consists in the CoAP client acting as Initiator and the CoAP EDHOC consists in the CoAP client acting as Initiator and the CoAP
server acting as Responder (see Appendix A.2.1 of [RFC9528]). server acting as Responder (see Appendix A.2.1 of [RFC9528]).
Alternatively, the two roles can be reversed as per the reverse Alternatively, the two roles can be reversed as per the reverse
message flow of EDHOC (see Appendix A.2.2 of [RFC9528]). In the rest message flow of EDHOC (see Appendix A.2.2 of [RFC9528]). In the rest
of this document, EDHOC messages are considered to be transferred of this document, EDHOC messages are considered to be transferred
over CoAP. over CoAP.
Figure 1 shows a successful execution of EDHOC, with a CoAP client Figure 1 shows a successful execution of EDHOC, with a CoAP client
and a CoAP server running EDHOC as Initiator and Responder, and a CoAP server running EDHOC as Initiator and Responder,
respectively. In particular, it extends Figure 10 from respectively. In particular, it extends Figure 10 from
Appendix A.2.1 of [RFC9528] by highlighting when the two peers Appendix A.2.1 of [RFC9528] by highlighting when the two peers
perform EDHOC verification and establish the OSCORE Security Context, perform EDHOC verification and establish the OSCORE Security Context,
and by adding an exchange of OSCORE-protected CoAP messages after and by adding an exchange of OSCORE-protected CoAP messages after
completing the EDHOC execution. completing the EDHOC execution.
That is, the client sends a POST request to a reserved _EDHOC That is, the client sends a POST request to a reserved EDHOC resource
resource_ at the server by default at the Uri-Path "/.well-known/ at the server, by default at the Uri-Path "/.well-known/edhoc". The
edhoc". The request payload consists of the CBOR simple value true request payload consists of the CBOR simple value true (0xf5)
(0xf5) concatenated with EDHOC message_1, which also includes the concatenated with EDHOC message_1, which also includes the EDHOC
EDHOC connection identifier C_I of the client encoded as per connection identifier C_I of the client encoded as per Section 3.3 of
Section 3.3 of [RFC9528]. The request has Content-Format [RFC9528]. The request has Content-Format application/cid-
application/cid-edhoc+cbor-seq. edhoc+cbor-seq.
This triggers the EDHOC execution at the server, which replies with a This triggers the EDHOC execution at the server, which replies with a
2.04 (Changed) response. The response payload consists of EDHOC 2.04 (Changed) response. The response payload consists of EDHOC
message_2, which also includes the EDHOC connection identifier C_R of message_2, which also includes the EDHOC connection identifier C_R of
the server encoded as per Section 3.3 of [RFC9528]. The response has the server encoded as per Section 3.3 of [RFC9528]. The response has
Content-Format application/edhoc+cbor-seq. Content-Format application/edhoc+cbor-seq.
Finally, the client sends a POST request to the same EDHOC resource Finally, the client sends a POST request to the same EDHOC resource
used earlier when it sent EDHOC message_1. The request payload used earlier when it sent EDHOC message_1. The request payload
consists of the EDHOC connection identifier C_R encoded as per consists of the EDHOC connection identifier C_R encoded as per
Section 3.3 of [RFC9528] concatenated with EDHOC message_3. The Section 3.3 of [RFC9528] concatenated with EDHOC message_3. The
request has Content-Format application/cid-edhoc+cbor-seq. request has Content-Format application/cid-edhoc+cbor-seq.
After this exchange takes place, and after successful verifications After this exchange takes place, and after successful verifications
as specified in the EDHOC protocol, the client and server can derive as specified in the EDHOC protocol, the client and server can derive
an OSCORE Security Context as defined in Appendix A.1 of [RFC9528]. an OSCORE Security Context as defined in Appendix A.1 of [RFC9528].
After that, the client and server can use OSCORE to protect their After that, the client and server can use OSCORE to protect their
communications as per [RFC8613]. Note that the EDHOC Connection communications as per [RFC8613]. Note that the EDHOC connection
Identifier C_R is used as the OSCORE Sender ID of the client (see identifier C_R is used as the OSCORE Sender ID of the client (see
Appendix A.1 of [RFC9528]). Therefore, C_R is transported in the Appendix A.1 of [RFC9528]). Therefore, C_R is transported in the
'kid' field of the OSCORE Option of the OSCORE Request (see 'kid' field of the OSCORE option of the OSCORE Request (see
Section 6.1 of [RFC8613]). Section 6.1 of [RFC8613]).
The client and server are required to agree in advance on certain The client and server are required to agree in advance on certain
information and parameters describing how they should use EDHOC. information and parameters describing how they should use EDHOC.
These are specified in an application profile associated with the These are specified in an application profile associated with the
EDHOC resource addressed (see Section 3.9 of [RFC9528]). EDHOC resource addressed (see Section 3.9 of [RFC9528]).
CoAP client CoAP server CoAP client CoAP server
(EDHOC Initiator) (EDHOC Responder) (EDHOC Initiator) (EDHOC Responder)
| | | |
skipping to change at line 267 skipping to change at line 268
| Header: 0.02 (POST) | | Header: 0.02 (POST) |
| OSCORE: { ... ; kid: C_R } | | OSCORE: { ... ; kid: C_R } |
| Payload: OSCORE-protected data | | Payload: OSCORE-protected data |
| | | |
| <--------------- OSCORE Response ----------------- | | <--------------- OSCORE Response ----------------- |
| Header: 2.04 (Changed) | | Header: 2.04 (Changed) |
| OSCORE: { ... } | | OSCORE: { ... } |
| Payload: OSCORE-protected data | | Payload: OSCORE-protected data |
| | | |
Figure 1: EDHOC and OSCORE run sequentially. The optional Figure 1: Sequential Flow of EDHOC and OSCORE with the Optional
message_4 is included in this example. message_4 Included
As shown in Figure 1, this sequential flow where EDHOC is run first The sequential flow of EDHOC and OSCORE (where EDHOC runs first and
and then OSCORE is used takes three round trips to complete. OSCORE is used after) takes three round trips to complete, as shown
in Figure 1.
Section 3 defines an optimization for combining EDHOC with the first Section 3 defines an optimization for combining EDHOC with the first
OSCORE transaction. This reduces the number of round trips required OSCORE transaction. This reduces the number of round trips required
to set up an OSCORE Security Context and complete an OSCORE to set up an OSCORE Security Context and complete an OSCORE
transaction using that Security Context. transaction using that Security Context.
3. EDHOC Combined with OSCORE 3. EDHOC Combined with OSCORE
This section defines an optimization for combining the EDHOC message This section defines an optimization for combining the EDHOC message
exchange with the first OSCORE transaction, thus minimizing the exchange with the first OSCORE transaction, thus minimizing the
skipping to change at line 309 skipping to change at line 311
CoAP client CoAP server CoAP client CoAP server
(EDHOC Initiator) (EDHOC Responder) (EDHOC Initiator) (EDHOC Responder)
| | | |
| ------------------ EDHOC Request -----------------> | | ------------------ EDHOC Request -----------------> |
| Header: 0.02 (POST) | | Header: 0.02 (POST) |
| Uri-Path: "/.well-known/edhoc" | | Uri-Path: "/.well-known/edhoc" |
| Content-Format: application/cid-edhoc+cbor-seq | | Content-Format: application/cid-edhoc+cbor-seq |
| Payload: true, EDHOC message_1 | | Payload: true, EDHOC message_1 |
| | | |
| <----------------- EDHOC Response------------------ | | <----------------- EDHOC Response------------------ |
| Header: Changed (2.04) | | Header: 2.04 (Changed) |
| Content-Format: application/edhoc+cbor-seq | | Content-Format: application/edhoc+cbor-seq |
| Payload: EDHOC message_2 | | Payload: EDHOC message_2 |
| | | |
EDHOC verification | EDHOC verification |
+ | + |
OSCORE Sec Ctx | OSCORE Sec Ctx |
Derivation | Derivation |
| | | |
| -------------- EDHOC + OSCORE Request ------------> | | -------------- EDHOC + OSCORE Request ------------> |
| Header: 0.02 (POST) | | Header: 0.02 (POST) |
skipping to change at line 343 skipping to change at line 345
Figure 2: EDHOC and OSCORE Combined Figure 2: EDHOC and OSCORE Combined
To this end, the specific approach defined in this section consists To this end, the specific approach defined in this section consists
of sending a single EDHOC + OSCORE request, which conveys the pair of sending a single EDHOC + OSCORE request, which conveys the pair
(C_R, EDHOC message_3) within an OSCORE-protected CoAP message. (C_R, EDHOC message_3) within an OSCORE-protected CoAP message.
That is, the EDHOC + OSCORE request is composed of the following two That is, the EDHOC + OSCORE request is composed of the following two
parts combined together in a single CoAP message. The steps for parts combined together in a single CoAP message. The steps for
processing the EDHOC + OSCORE request and the two parts combined in processing the EDHOC + OSCORE request and the two parts combined in
there are defined in Sections 3.2.1 and 3.3.1. the request itself are defined in Sections 3.2.1 and 3.3.1.
* The OSCORE Request from Figure 1, which, in this case, is also * The OSCORE Request from Figure 1, which, in this case, is also
sent to a protected resource with the correct CoAP method and sent to a protected resource with the correct CoAP method and
options intended for accessing that resource. options intended for accessing that resource.
* EDHOC data consisting of the pair (C_R, EDHOC message_3) required * EDHOC data consisting of the pair (C_R, EDHOC message_3) required
for completing the EDHOC session transported as follows: for completing the EDHOC session transported as follows:
- C_R is the OSCORE Sender ID of the client; hence, it is - C_R is the OSCORE Sender ID of the client; hence, it is
transported in the 'kid' field of the OSCORE Option (see transported in the 'kid' field of the OSCORE option (see
Section 6.1 of [RFC8613]). Unlike the sequential workflow Section 6.1 of [RFC8613]). Unlike the sequential workflow
shown in Figure 1, C_R is not transported in the payload of the shown in Figure 1, C_R is not transported in the payload of the
EDHOC + OSCORE request. EDHOC + OSCORE request.
- EDHOC message_3 is transported in the payload of the EDHOC + - EDHOC message_3 is transported in the payload of the EDHOC +
OSCORE request and prepended to the payload of the OSCORE OSCORE request and prepended to the payload of the OSCORE
Request. This is because EDHOC message_3 may be too large to Request. This is because EDHOC message_3 may be too large to
be included in a CoAP Option, e.g., when conveying a large be included in a CoAP option, e.g., when conveying a large
public key certificate chain such as ID_CRED_I (see public key certificate chain in the ID_CRED_I field (see
Section 3.5.3 of [RFC9528]), or when conveying large External Section 3.5.3 of [RFC9528]), or when conveying large External
Authorization Data such as EAD_3 (see Section 3.8 of Authorization Data in the EAD_3 field (see Section 3.8 of
[RFC9528]). [RFC9528]).
The rest of this section specifies how to transport the data in the The rest of this section specifies how to transport the data in the
EDHOC + OSCORE request and their processing order. In particular, EDHOC + OSCORE request and their processing order. In particular,
the use of this approach is explicitly signalled by including an the use of this approach is explicitly signalled by including an
EDHOC Option (Section 3.1) in the EDHOC + OSCORE request. The EDHOC option (Section 3.1) in the EDHOC + OSCORE request. The
processing of the EDHOC + OSCORE request is specified in Section 3.2 processing of the EDHOC + OSCORE request is specified in Section 3.2
for the client side and in Section 3.3 for the server side. for the client side and in Section 3.3 for the server side.
3.1. EDHOC Option 3.1. EDHOC Option
This section defines the EDHOC Option. This option is used in a CoAP This section defines the EDHOC option. This option is used in a CoAP
request to signal that the request payload conveys both an EDHOC request to signal that the request payload conveys both an EDHOC
message_3 and OSCORE-protected data: combined together. message_3 and OSCORE-protected data combined together.
The EDHOC Option has the properties summarized in Table 1, which The EDHOC option has the properties summarized in Table 1, which
extends Table 4 of [RFC7252]. The option is Critical, Safe-to- extends Table 4 of [RFC7252]. The option is Critical, Safe-to-
Forward, and part of the Cache-Key. The option MUST occur at most Forward, and part of the Cache-Key. The option MUST occur at most
once and MUST be empty. If any value is sent, the recipient MUST once and MUST be empty. If any value is sent, the recipient MUST
ignore it. (Future documents may update the definition of the option ignore it. (Future documents may update the definition of the option
by expanding its semantics and specifying admitted values.) The by expanding its semantics and specifying admitted values.) The
option is intended only for CoAP requests and is of Class U for option is intended only for CoAP requests and is of Class U for
OSCORE [RFC8613]. OSCORE [RFC8613].
+=====+===+===+===+===+=======+========+========+=========+ +=====+===+===+===+===+=======+========+========+=========+
| No. | C | U | N | R | Name | Format | Length | Default | | No. | C | U | N | R | Name | Format | Length | Default |
+=====+===+===+===+===+=======+========+========+=========+ +=====+===+===+===+===+=======+========+========+=========+
| 21 | x | | | | EDHOC | Empty | 0 | (none) | | 21 | x | | | | EDHOC | Empty | 0 | (none) |
+-----+---+---+---+---+-------+--------+--------+---------+ +-----+---+---+---+---+-------+--------+--------+---------+
Table 1: The EDHOC Option Table 1: The EDHOC Option. C=Critical, U=Unsafe,
N=NoCacheKey, R=Repeatable
C=Critical
U=Unsafe
N=NoCacheKey
R=Repeatable
The presence of this option means that the message payload also The presence of this option means that the message payload also
contains EDHOC data that must be extracted and processed as defined contains EDHOC data that must be extracted and processed as defined
in Section 3.3 before the rest of the message can be processed. in Section 3.3 before the rest of the message can be processed.
Figure 3 shows an example of a CoAP message that is transported over Figure 3 shows an example of a CoAP message that is transported over
UDP and that contains both the EDHOC data and the OSCORE ciphertext UDP and that contains both the EDHOC data and the OSCORE ciphertext
using the newly defined EDHOC option for signalling. using the newly defined EDHOC option for signalling.
0 1 2 3 0 1 2 3
skipping to change at line 424 skipping to change at line 422
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Token (if any, TKL bytes) ... | Token (if any, TKL bytes) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Observe Option| OSCORE Option ... | Observe Option| OSCORE Option ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| EDHOC Option | Other Options (if any) ... | EDHOC Option | Other Options (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 1 1 1 1 1 1 1| Payload ... |1 1 1 1 1 1 1 1| Payload ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3: Example of CoAP Message Transported over UDP Combining Figure 3: Example of a CoAP Message Containing the Combined EDHOC
EDHOC Data and OSCORE Data as Signalled with the EDHOC Option and OSCORE Data, Signalled by the EDHOC Option and Transported
over UDP
3.2. Client Processing 3.2. Client Processing
This section describes the processing on the client side. This section describes the processing on the client side.
3.2.1. Processing of the EDHOC + OSCORE Request 3.2.1. Processing of the EDHOC + OSCORE Request
The client prepares an EDHOC + OSCORE request as follows. The client prepares an EDHOC + OSCORE request as follows.
Step 1. Compose EDHOC message_3 into EDHOC_MSG_3 as per Step 1. Compose EDHOC message_3 into EDHOC_MSG_3 as per
skipping to change at line 467 skipping to change at line 466
* OSCORE_PAYLOAD is the OSCORE ciphertext of the OSCORE- * OSCORE_PAYLOAD is the OSCORE ciphertext of the OSCORE-
protected CoAP request resulting from Step 2. protected CoAP request resulting from Step 2.
Step 4. Compose the EDHOC + OSCORE request, as the OSCORE-protected Step 4. Compose the EDHOC + OSCORE request, as the OSCORE-protected
CoAP request resulting from Step 2, where the payload is CoAP request resulting from Step 2, where the payload is
replaced with COMB_PAYLOAD built at Step 3. replaced with COMB_PAYLOAD built at Step 3.
Note that the new payload includes EDHOC message_3, but it Note that the new payload includes EDHOC message_3, but it
does not include the EDHOC connection identifier C_R. As does not include the EDHOC connection identifier C_R. As
the client is the EDHOC Initiator, C_R is the OSCORE Sender the client is the EDHOC Initiator, C_R is the OSCORE Sender
ID of the client, which is already specified as 'kid' in the ID of the client, which is already specified as the value of
OSCORE Option of the request from Step 2, hence of the EDHOC the 'kid' field in the OSCORE option of the request from
+ OSCORE request. Step 2; hence, C_R is specified as the value of the 'kid'
field of the EDHOC + OSCORE request.
Step 5. Include the new EDHOC Option defined in Section 3.1 into the Step 5. Include the new EDHOC option defined in Section 3.1 into the
EDHOC + OSCORE request. EDHOC + OSCORE request.
The application/cid-edhoc+cbor-seq media type does not apply The application/cid-edhoc+cbor-seq media type does not apply
to this message, whose media type is unnamed. to this message, whose media type is unnamed.
Step 6. Send the EDHOC + OSCORE request to the server. Step 6. Send the EDHOC + OSCORE request to the server.
With the same server, the client SHOULD NOT have multiple With the same server, the client SHOULD NOT have multiple
simultaneous outstanding interactions (see Section 4.7 of [RFC7252]), simultaneous outstanding interactions (see Section 4.7 of [RFC7252]),
such that they consist of an EDHOC + OSCORE request and their EDHOC such that they consist of an EDHOC + OSCORE request and their EDHOC
data pertains to the EDHOC session with the same connection data pertains to the EDHOC session with the same connection
identifier C_R. identifier C_R.
An exception might apply for clients that operate under particular An exception might apply for clients that operate under particular
time constraints over particularly unreliable networks, thus raising time constraints over particularly unreliable networks, thus raising
the chances to promptly complete the EDHOC execution with the server the chances to promptly complete the EDHOC execution with the server
through multiple simultaneous EDHOC + OSCORE requests. As discussed through multiple simultaneous EDHOC + OSCORE requests. As discussed
in Section 7, this does not have any impact in terms of security. in Section 7, this does not have any impact in terms of security.
3.2.2. Supporting Block-Wise 3.2.2. Supporting Block-Wise Transfers
If Block-wise [RFC7959] is supported, the client may fragment the If Block-wise transfers [RFC7959] are supported, the client may
first application CoAP request before protecting it as an original fragment the first CoAP application request before protecting it as
message with OSCORE as defined in Section 4.1.3.4.1 of [RFC8613]. an original message with OSCORE as defined in Section 4.1.3.4.1 of
[RFC8613].
In such a case, the OSCORE processing in Step 2 of Section 3.2.1 is In such a case, the OSCORE processing in Step 2 of Section 3.2.1 is
performed on each inner block of the first application CoAP request. performed on each inner block of the first CoAP application request.
The following also applies. The following also applies.
* The client takes the following additional step between Steps 2 and * The client takes the following additional step between Steps 2 and
3 of Section 3.2.1. 3 of Section 3.2.1.
- If the OSCORE-protected request from Step 2 conveys a non-first Step 2.1. If the OSCORE-protected request from Step 2 conveys a
inner block of the first application CoAP request (i.e., the non-first inner block of the first CoAP application
Block1 Option processed at Step 2 had NUM different than 0), request (i.e., the Block1 option processed at Step 2 had
then the client skips the following steps and sends the OSCORE- NUM different than 0), then the client skips the
protected request to the server. In particular, the client following steps and sends the OSCORE-protected request
MUST NOT include the EDHOC Option in the OSCORE-protected to the server. In particular, the client MUST NOT
request. include the EDHOC option in the OSCORE-protected
request.
* The client takes the following additional step between Steps 3 and * The client takes the following additional step between Steps 3 and
4 of Section 3.2.1. 4 of Section 3.2.1.
- If the size of COMB_PAYLOAD exceeds MAX_UNFRAGMENTED_SIZE (see Step 3.1. If the size of COMB_PAYLOAD exceeds
Section 4.1.3.4.2 of [RFC8613]), the client MUST stop MAX_UNFRAGMENTED_SIZE (see Section 4.1.3.4.2 of
processing the request and MUST abandon the Block-wise [RFC8613]), the client MUST stop processing the request
transfer. Then, the client can continue by switching to the and MUST abandon the Block-wise transfer. Then, the
sequential workflow shown in Figure 1. That is, the client client can continue by switching to the sequential
first sends EDHOC message_3 prepended by the EDHOC Connection workflow shown in Figure 1. That is, the client first
Identifier C_R encoded as per Section 3.3 of [RFC9528]. Then, sends EDHOC message_3 prepended by the EDHOC connection
the client sends the OSCORE-protected CoAP request once the identifier C_R encoded as per Section 3.3 of [RFC9528].
EDHOC execution is completed. Then, the client sends the OSCORE-protected CoAP request
once the EDHOC execution is completed.
The performance advantage of using the EDHOC + OSCORE request can be The performance advantage of using the EDHOC + OSCORE request can be
lost when used in combination with Block-wise transfers that rely on lost when used in combination with Block-wise transfers that rely on
specific parameter values and block sizes. Application policies at specific parameter values and block sizes. Application policies at
the CoAP client can define when and how to detect whether the the CoAP client can define when and how to detect whether the
performance advantage is lost. If that is the case, they can also performance advantage is lost. If that is the case, they can also
define whether to appropriately adjust the parameter values and block define whether to appropriately adjust the parameter values and block
sizes or to fall back on the sequential workflow of EDHOC. sizes or to fall back on the sequential workflow of EDHOC.
3.3. Server Processing 3.3. Server Processing
skipping to change at line 552 skipping to change at line 555
Step 1. Check that the EDHOC + OSCORE request includes the OSCORE Step 1. Check that the EDHOC + OSCORE request includes the OSCORE
option and that the request payload has the format defined option and that the request payload has the format defined
at Step 3 of Section 3.2.1 for COMB_PAYLOAD. If this is not at Step 3 of Section 3.2.1 for COMB_PAYLOAD. If this is not
the case, the server MUST stop processing the request and the case, the server MUST stop processing the request and
MUST reply with a 4.00 (Bad Request) error response. MUST reply with a 4.00 (Bad Request) error response.
Step 2. Extract EDHOC message_3 from the payload COMB_PAYLOAD of the Step 2. Extract EDHOC message_3 from the payload COMB_PAYLOAD of the
EDHOC + OSCORE request as the first element EDHOC_MSG_3 (see EDHOC + OSCORE request as the first element EDHOC_MSG_3 (see
Step 3 of Section 3.2.1). Step 3 of Section 3.2.1).
Step 3. Take the value of 'kid' from the OSCORE option of the EDHOC Step 3. Take the value of the 'kid' field from the OSCORE option of
+ OSCORE request (i.e., the OSCORE Sender ID of the client), the EDHOC + OSCORE request (i.e., the OSCORE Sender ID of
and use it as the EDHOC connection identifier C_R. the client), and use it as the EDHOC connection identifier
C_R.
Step 4. Retrieve the correct EDHOC session by using the connection Step 4. Retrieve the correct EDHOC session by using the connection
identifier C_R from Step 3. identifier C_R from Step 3.
If the application profile used in the EDHOC session If the application profile used in the EDHOC session
specifies that EDHOC message_4 shall be sent, the server specifies that EDHOC message_4 shall be sent, the server
MUST stop the EDHOC processing and consider it failed due to MUST stop the EDHOC processing and consider it failed due to
a client error. a client error.
Otherwise, perform the EDHOC processing on the EDHOC Otherwise, perform the EDHOC processing on the EDHOC
skipping to change at line 624 skipping to change at line 628
OSCORE. As per Section 9.5 of [RFC9528], the server has to make sure OSCORE. As per Section 9.5 of [RFC9528], the server has to make sure
that the error message does not reveal sensitive information. The that the error message does not reveal sensitive information. The
CoAP response conveying the EDHOC error message MUST have Content- CoAP response conveying the EDHOC error message MUST have Content-
Format set to application/edhoc+cbor-seq registered in Section 10.9 Format set to application/edhoc+cbor-seq registered in Section 10.9
of [RFC9528]. of [RFC9528].
If Step 4 (EDHOC processing) is successfully completed but Step 8 If Step 4 (EDHOC processing) is successfully completed but Step 8
(OSCORE processing) fails, the same OSCORE error handling as defined (OSCORE processing) fails, the same OSCORE error handling as defined
in Section 8.2 of [RFC8613] applies. in Section 8.2 of [RFC8613] applies.
3.3.2. Supporting Block-Wise 3.3.2. Supporting Block-Wise Transfers
If Block-wise [RFC7959] is supported, the server takes the additional If Block-wise transfers [RFC7959] are supported, the server takes the
following step before any other in Section 3.3.1. additional following step before any other in Section 3.3.1.
* If Block-wise is present in the request, then process the Outer Step 0. If a Block option is present in the request, then process
Block options according to [RFC7959] until all blocks of the the Outer Block options according to [RFC7959] until all
request have been received (see Section 4.1.3.4 of [RFC8613]). blocks of the request have been received (see
Section 4.1.3.4 of [RFC8613]).
3.4. Example of the EDHOC + OSCORE Request 3.4. Example of the EDHOC + OSCORE Request
Figure 4 shows an example of an EDHOC + OSCORE Request transported Figure 4 shows an example of an EDHOC + OSCORE request transported
over UDP. In particular, the example assumes that: over UDP. In particular, the example assumes that:
* The OSCORE Partial IV in use is 0 consistently with the first * The OSCORE Partial IV in use is 0 consistently with the first
request protected with the new OSCORE Security Context. request protected with the new OSCORE Security Context.
* The OSCORE Sender ID of the client is 0x01. * The OSCORE Sender ID of the client is 0x01.
As per Section 3.3.3 of [RFC9528], this straightforwardly As per Section 3.3.3 of [RFC9528], this straightforwardly
corresponds to the EDHOC connection identifier C_R 0x01. corresponds to the EDHOC connection identifier C_R 0x01.
skipping to change at line 662 skipping to change at line 667
This results in the following components shown in Figure 4: This results in the following components shown in Figure 4:
OSCORE option value: 0x090001 (3 bytes) OSCORE option value: 0x090001 (3 bytes)
EDHOC option value: - (0 bytes) EDHOC option value: - (0 bytes)
EDHOC message_3: 0x52d5535f3147e85f1cfacd9e78abf9e0a81bbf (19 bytes) EDHOC message_3: 0x52d5535f3147e85f1cfacd9e78abf9e0a81bbf (19 bytes)
OSCORE ciphertext: 0x612f1092f1776f1c1668b3825e (13 bytes) OSCORE ciphertext: 0x612f1092f1776f1c1668b3825e (13 bytes)
Protected CoAP request (OSCORE message): See Figure 4. 0x44025d1f ; CoAP 4-byte Header
0x44025d1f ; CoAP 4-byte header
00003974 ; Token 00003974 ; Token
93 090001 ; OSCORE Option 93 090001 ; OSCORE Option
c0 ; EDHOC Option c0 ; EDHOC Option
ff 52d5535f3147e85f1cfacd9e78abf9e0a81bbf ff 52d5535f3147e85f1cfacd9e78abf9e0a81bbf
612f1092f1776f1c1668b3825e 612f1092f1776f1c1668b3825e
(46 bytes) (46 bytes)
Figure 4: Example of CoAP Message Transported over UDP, Combining Figure 4: Example of a Protected CoAP Request Combining EDHOC and
EDHOC Data and OSCORE Data as Signalled with the EDHOC Option OSCORE Data
4. Use of EDHOC Connection Identifiers with OSCORE 4. Use of EDHOC Connection Identifiers with OSCORE
The OSCORE Sender/Recipient IDs are the EDHOC connection identifiers The OSCORE Sender/Recipient IDs are the EDHOC connection identifiers
(see Section 3.3.3 of [RFC9528]). This applies also to the optimized (see Section 3.3.3 of [RFC9528]). This applies also to the optimized
workflow defined in Section 3 of this document. workflow defined in Section 3 of this document.
Note that the value of 'kid' in the OSCORE Option of the EDHOC + Note that the value of the 'kid' field in the OSCORE option of the
OSCORE request is both the server's Recipient ID (i.e., the client's EDHOC + OSCORE request is both the server's Recipient ID (i.e., the
Sender ID) and the EDHOC Connection Identifier C_R of the server at client's Sender ID) and the EDHOC connection identifier C_R of the
Step 3 of Section 3.3.1. server at Step 3 of Section 3.3.1.
4.1. Additional Processing of EDHOC Messages 4.1. Additional Processing of EDHOC Messages
When using EDHOC to establish an OSCORE Security Context, the client When using EDHOC to establish an OSCORE Security Context, the client
and server MUST perform the following additional steps during an and server MUST perform the following additional steps during an
EDHOC execution, thus extending Section 5 of [RFC9528]. EDHOC execution, thus extending Section 5 of [RFC9528].
4.1.1. Initiator Processing of Message 1 4.1.1. Initiator Processing of Message 1
The Initiator selects an EDHOC Connection Identifier C_I as follows. The Initiator selects an EDHOC connection identifier C_I as follows.
The Initiator MUST choose a C_I that is neither used in any current The Initiator MUST choose a C_I that is neither used in any current
EDHOC session as this peer's EDHOC Connection Identifier nor the EDHOC session as this peer's EDHOC connection identifier nor the
Recipient ID in a current OSCORE Security Context where the ID Recipient ID in a current OSCORE Security Context where the ID
Context is not present. Context is not present.
The chosen C_I SHOULD NOT be the Recipient ID of any current OSCORE The chosen C_I SHOULD NOT be the Recipient ID of any current OSCORE
Security Context. Note that, unless the two peers concurrently use Security Context. Note that, unless the two peers concurrently use
alternative methods to establish OSCORE Security Contexts, this alternative methods to establish OSCORE Security Contexts, this
allows the Responder to always omit the 'kid context' in the OSCORE allows the Responder to always omit the 'kid context' in the OSCORE
Option of its messages sent to the Initiator when protecting those option of its messages sent to the Initiator when protecting those
with an OSCORE Security Context where C_I is the Responder's OSCORE with an OSCORE Security Context where C_I is the Responder's OSCORE
Sender ID (see Section 6.1 of [RFC8613]). Sender ID (see Section 6.1 of [RFC8613]).
4.1.2. Responder Processing of Message 2 4.1.2. Responder Processing of Message 2
The Responder selects an EDHOC Connection Identifier C_R as follows. The Responder selects an EDHOC connection identifier C_R as follows.
The Responder MUST choose a C_R that is none of the following: The Responder MUST choose a C_R that is none of the following:
* used in any current EDHOC session as this peer's EDHOC Connection * used in any current EDHOC session as this peer's EDHOC connection
Identifier, identifier,
* equal to the EDHOC Connection Identifier C_I specified in the * equal to the EDHOC connection identifier C_I specified in the
EDHOC message_1 of the present EDHOC session, or EDHOC message_1 of the present EDHOC session, or
* the Recipient ID in a current OSCORE Security Context where the ID * the Recipient ID in a current OSCORE Security Context where the ID
Context is not present. Context is not present.
The chosen C_R SHOULD NOT be the Recipient ID of any current OSCORE The chosen C_R SHOULD NOT be the Recipient ID of any current OSCORE
Security Context. Note that, for a reason analogous to the one given Security Context. Note that, for a reason analogous to the one given
above with C_I, this allows the Initiator to always omit the 'kid in Section 4.1.1 with C_I, this allows the Initiator to always omit
context' in the OSCORE Option of its messages sent to the Responder the 'kid context' in the OSCORE option of its messages sent to the
when protecting those with an OSCORE Security Context where C_R is Responder when protecting those with an OSCORE Security Context where
the Initiator's OSCORE Sender ID (see Section 6.1 of [RFC8613]). C_R is the Initiator's OSCORE Sender ID (see Section 6.1 of
[RFC8613]).
4.1.3. Initiator Processing of Message 2 4.1.3. Initiator Processing of Message 2
If the EDHOC Connection Identifier C_I is equal to the EDHOC If the EDHOC connection identifier C_I is equal to the EDHOC
Connection Identifier C_R specified in EDHOC message_2, then the connection identifier C_R specified in EDHOC message_2, then the
Initiator MUST abort the session and reply with an EDHOC error Initiator MUST abort the session and reply with an EDHOC error
message with error code 1 formatted as defined in Section 6.2 of message with error code 1 formatted as defined in Section 6.2 of
[RFC9528]. [RFC9528].
5. Extension and Consistency of Application Profiles 5. Extension and Consistency of Application Profiles
It is possible to include the information below in the application It is possible to include the information below in the application
profile referred by the client and server according to the specified profile referred by the client and server according to the specified
consistency rules. consistency rules.
If the server supports the EDHOC + OSCORE request within an EDHOC If the server supports the EDHOC + OSCORE request within an EDHOC
execution started at a certain EDHOC resource, then the application execution started at a certain EDHOC resource, then the application
profile associated with that resource SHOULD explicitly specify profile associated with that resource SHOULD explicitly specify
support for the EDHOC + OSCORE request. support for the EDHOC + OSCORE request.
In the case where the application profile indicates that the server In the case where the application profile indicates that the server
supports the optional EDHOC message_4 (see Section 5.5 of [RFC9528]), supports the optional EDHOC message_4 (see Section 5.5 of [RFC9528]),
it is still possible to use the optimized workflow based on the EDHOC it is still possible to use the optimized workflow based on the EDHOC
+ OSCORE request. However, this means the server is not going to + OSCORE request. However, this means that the server is not going
send EDHOC message_4 since it is not applicable to the optimized to send EDHOC message_4 since it is not applicable to the optimized
workflow (see Section 3.3.1). workflow (see Section 3.3.1).
Also, in the case where the application profile indicates that the Also, in the case where the application profile indicates that the
server shall send EDHOC message_4, the application profile MUST NOT server shall send EDHOC message_4, the application profile MUST NOT
specify support for the EDHOC + OSCORE request. There is no point specify support for the EDHOC + OSCORE request. There is no point
for the client to use the optimized workflow that is bound to fail for the client to use the optimized workflow that is bound to fail
(see Section 3.3.1). (see Section 3.3.1).
6. Web Linking 6. Web Linking
skipping to change at line 791 skipping to change at line 795
That is, while discovering an EDHOC resource, a client can That is, while discovering an EDHOC resource, a client can
contextually obtain relevant pieces of information from the contextually obtain relevant pieces of information from the
application profile associated with that resource. The resource application profile associated with that resource. The resource
discovery can occur by means of a direct interaction with the server discovery can occur by means of a direct interaction with the server
or by means of the CoRE Resource Directory [RFC9176] where the server or by means of the CoRE Resource Directory [RFC9176] where the server
may have registered the links to its resources. may have registered the links to its resources.
In order to enable the above, this section defines a number of In order to enable the above, this section defines a number of
parameters, each of which can be optionally specified as a target parameters, each of which can be optionally specified as a target
attribute with the same name in the link to the respective EDHOC attribute with the same name in the link to the respective EDHOC
resource or as filter criteria in a discovery request from the resource or as filter criterion in a discovery request from the
client. When specifying these parameters in a link to an EDHOC client. When specifying these parameters in a link to an EDHOC
resource, the target attribute rt="core.edhoc" MUST be included and resource, the target attribute rt="core.edhoc" MUST be included and
the same consistency rules defined in Section 5 for the corresponding the same consistency rules defined in Section 5 for the corresponding
information elements of an application profile MUST be followed. information elements of an application profile MUST be followed.
The following parameters are defined. The following parameters are defined.
'ed-i': If present, specifies that the server supports the EDHOC 'ed-i': If present, specifies that the server supports the EDHOC
Initiator role, hence the reverse message flow of EDHOC. A value Initiator role, hence the reverse message flow of EDHOC. A value
MUST NOT be given to this parameter and any present value MUST be MUST NOT be given to this parameter and any present value MUST be
skipping to change at line 839 skipping to change at line 843
'ed-idcred-t': Specifies a type of identifier supported by the 'ed-idcred-t': Specifies a type of identifier supported by the
server for identifying authentication credentials. This parameter server for identifying authentication credentials. This parameter
MUST specify a single value, which is taken from the 'Label' MUST specify a single value, which is taken from the 'Label'
column of the "COSE Header Parameters" registry column of the "COSE Header Parameters" registry
[COSE.Header.Parameters]. This parameter MAY occur multiple [COSE.Header.Parameters]. This parameter MAY occur multiple
times, with each occurrence specifying a type of identifier for times, with each occurrence specifying a type of identifier for
authentication credentials. authentication credentials.
Note that the values in the 'Label' column of the "COSE Header Note that the values in the 'Label' column of the "COSE Header
Parameters" registry are strongly typed. On the contrary, Link Parameters" registry are strongly typed. On the contrary, CoRE
Format is weakly typed; thus, it does not distinguish between, for Link Format is weakly typed; thus, it does not distinguish
instance, the string value -10 and the integer value -10. between, for instance, the string value "-10" and the integer
Therefore, if responses in Link Format are returned, string values value -10. Therefore, if responses in CoRE Link Format are
that look like an integer are not supported. Thus, such values returned, string values that look like an integer are not
MUST NOT be used in the 'ed-idcred-t' parameter. supported. Thus, such values MUST NOT be used in the 'ed-idcred-
t' parameter.
'ed-ead': Specifies the support of the server for an External 'ed-ead': Specifies the support of the server for an External
Authorization Data (EAD) item (see Section 3.8 of [RFC9528]). Authorization Data (EAD) item (see Section 3.8 of [RFC9528]).
This parameter MUST specify a single value, which is taken from This parameter MUST specify a single value, which is taken from
the 'Label' column of the "EDHOC External Authorization Data" the 'Label' column of the "EDHOC External Authorization Data"
registry defined in Section 10.5 of [RFC9528]. This parameter MAY registry defined in Section 10.5 of [RFC9528]. This parameter MAY
occur multiple times, with each occurrence specifying the occur multiple times, with each occurrence specifying the
'ead_label' of an EAD item that the server supports. ead_label of an EAD item that the server supports.
'ed-comb-req': If present, specifies that the server supports the 'ed-comb-req': If present, specifies that the server supports the
EDHOC + OSCORE request defined in Section 3. A value MUST NOT be EDHOC + OSCORE request defined in Section 3. A value MUST NOT be
given to this parameter and any present value MUST be ignored by given to this parameter and any present value MUST be ignored by
the recipient. the recipient.
Future documents may update the definition of the parameters 'ed-i', Future documents may update the definition of the parameters 'ed-i',
'ed-r', and 'ed-comb-req' by expanding their semantics and specifying 'ed-r', and 'ed-comb-req' by expanding their semantics and specifying
what they can take as value. what they can take as value.
The example in Figure 5 shows how a client discovers one EDHOC The example in Figure 5 shows how a client discovers one EDHOC
resource at a server and obtains information elements from the resource at a server and obtains information elements from the
respective application profile. The Link-Format notation from respective application profile. The CoRE Link Format notation from
Section 5 of [RFC6690] is used. Section 5 of [RFC6690] is used.
REQ: GET /.well-known/core REQ: GET /.well-known/core
RES: 2.05 Content RES: 2.05 Content
</sensors/temp>;osc, </sensors/temp>;osc,
</sensors/light>;if=sensor, </sensors/light>;if=sensor,
</.well-known/edhoc>;rt=core.edhoc;ed-csuite=0;ed-csuite=2; </.well-known/edhoc>;rt=core.edhoc;ed-csuite=0;ed-csuite=2;
ed-method=0;ed-cred-t=1;ed-cred-t=3;ed-idcred-t=4; ed-method=0;ed-cred-t=0;ed-cred-t=1;ed-idcred-t=4;
ed-i;ed-r;ed-comb-req ed-i;ed-r;ed-comb-req
Figure 5: The Web Link Figure 5: The Web Link
7. Security Considerations 7. Security Considerations
The same security considerations from OSCORE [RFC8613] and EDHOC The same security considerations from OSCORE [RFC8613] and EDHOC
[RFC9528] hold for this document. In addition, the following [RFC9528] hold for this document. In addition, the following
considerations also apply. considerations apply.
Section 3.2.1 specifies that a client SHOULD NOT have multiple Section 3.2.1 specifies that a client SHOULD NOT have multiple
outstanding EDHOC + OSCORE requests pertaining to the same EDHOC outstanding EDHOC + OSCORE requests pertaining to the same EDHOC
session. Even if a client did not fulfill this requirement, it would session. Even if a client did not fulfill this requirement, it would
not have any impact in terms of security. That is, the server would not have any impact in terms of security. That is, the server would
still not process different instances of the same EDHOC message_3 still not process different instances of the same EDHOC message_3
more than once in the same EDHOC session (see Section 5.1 of more than once in the same EDHOC session (see Section 5.1 of
[RFC9528]) and would still enforce replay protection of the OSCORE- [RFC9528]) and would still enforce replay protection of the OSCORE-
protected request (see Sections 7.4 and 8.2 of [RFC8613]). protected request (see Sections 7.4 and 8.2 of [RFC8613]).
skipping to change at line 931 skipping to change at line 936
That is, the rebuilt OSCORE-protected application request from Step 7 That is, the rebuilt OSCORE-protected application request from Step 7
in Section 3.3.1 MUST undergo the same access-control checks that in Section 3.3.1 MUST undergo the same access-control checks that
would be performed on a traditional OSCORE-protected application would be performed on a traditional OSCORE-protected application
request sent individually as shown in Figure 1. request sent individually as shown in Figure 1.
To this end, validated information to perform access-control checks To this end, validated information to perform access-control checks
(e.g., an access token issued by a trusted party) has to be available (e.g., an access token issued by a trusted party) has to be available
at the server before starting to process the rebuilt OSCORE-protected at the server before starting to process the rebuilt OSCORE-protected
application request. Such information may have been provided to the application request. Such information may have been provided to the
server separately before starting the EDHOC execution altogether, or server separately before starting the EDHOC execution altogether, or
instead, as External Authorization Data during the EDHOC execution instead as External Authorization Data during the EDHOC execution
(see Section 3.8 of [RFC9528]). (see Section 3.8 of [RFC9528]).
Thus, a successful completion of the EDHOC protocol and the following Thus, a successful completion of the EDHOC protocol and the following
derivation of the OSCORE Security Context at the server do not play a derivation of the OSCORE Security Context at the server do not play a
role in determining whether the rebuilt OSCORE-protected request is role in determining whether the rebuilt OSCORE-protected request is
authorized to access the target protected resource at the server. authorized to access the target protected resource at the server.
8. IANA Considerations 8. IANA Considerations
This document has the following actions for IANA. This document has the following actions for IANA.
skipping to change at line 965 skipping to change at line 970
Table 2: Registration in Table 2: Registration in
the "CoAP Option Numbers" the "CoAP Option Numbers"
Registry Registry
8.2. Target Attributes Registry 8.2. Target Attributes Registry
IANA has registered the following entries in the "Target Attributes" IANA has registered the following entries in the "Target Attributes"
registry [CORE.Target.Attributes] within the "Constrained RESTful registry [CORE.Target.Attributes] within the "Constrained RESTful
Environments (CoRE) Parameters" registry group as per [RFC9423]. For Environments (CoRE) Parameters" registry group as per [RFC9423]. For
all entries, the Change Controller is "IETF" and the reference is all entries, the Change Controller is "IETF" and the reference is
"RFC 9668". "[RFC 9668]".
+================+=============================================+ +================+=============================================+
| Attribute Name | Brief Description | | Attribute Name | Brief Description |
+================+=============================================+ +================+=============================================+
| ed-i | Hint: support for the EDHOC Initiator role | | ed-i | Hint: support for the EDHOC Initiator role |
+----------------+---------------------------------------------+ +----------------+---------------------------------------------+
| ed-r | Hint: support for the EDHOC Responder role | | ed-r | Hint: support for the EDHOC Responder role |
+----------------+---------------------------------------------+ +----------------+---------------------------------------------+
| ed-method | A supported authentication method for EDHOC | | ed-method | A supported authentication method for EDHOC |
+----------------+---------------------------------------------+ +----------------+---------------------------------------------+
skipping to change at line 999 skipping to change at line 1004
+----------------+---------------------------------------------+ +----------------+---------------------------------------------+
Table 3: Registrations in the "Target Attributes" Registry Table 3: Registrations in the "Target Attributes" Registry
8.3. EDHOC Authentication Credential Types Registry 8.3. EDHOC Authentication Credential Types Registry
IANA has created the "EDHOC Authentication Credential Types" registry IANA has created the "EDHOC Authentication Credential Types" registry
within the "Ephemeral Diffie-Hellman Over COSE (EDHOC)" registry within the "Ephemeral Diffie-Hellman Over COSE (EDHOC)" registry
group defined in [RFC9528]. group defined in [RFC9528].
The registration policy is either "Standards Action with Expert The registration policy is either "Private Use", "Standards Action
Review" or "Specification Required" per [RFC8126]. "Expert Review" with Expert Review", or "Specification Required" per [RFC8126].
guidelines are provided in Section 8.4. "Expert Review" guidelines are provided in Section 8.4.
All assignments according to "Standards Action with Expert Review" All assignments according to "Standards Action with Expert Review"
are made on a "Standards Action" basis per Section 4.9 of [RFC8126] are made on a "Standards Action" basis per Section 4.9 of [RFC8126]
with "Expert Review" additionally required per Section 4.5 of with "Expert Review" additionally required per Section 4.5 of
[RFC8126]. The procedure for early IANA allocation of "standards [RFC8126]. The procedure for early IANA allocation of "standards
track code points" defined in [RFC7120] also applies. When such a track code points" defined in [RFC7120] also applies. When such a
procedure is used, review and approval by the designated expert are procedure is used, IANA will ask the designated expert(s) to approve
also required in order for the working group chairs to determine that the early allocation before registration. In addition, working group
the conditions for early allocation are met (see Step 2 in chairs are encouraged to consult the expert(s) early during the
Section 3.1 of [RFC7120]). process outlined in Section 3.1 of [RFC7120].
The columns of this registry are: The columns of this registry are:
Value: This field contains the value used to identify the type of Value: This field contains the value used to identify the type of
authentication credential. These values MUST be unique. The authentication credential. These values MUST be unique. The
value can be an unsigned integer or a negative integer in the value can be an unsigned integer or a negative integer. Different
range from -65536 to 65535. Different ranges of values use ranges of values use different registration policies:
different registration policies:
* Integer values from -24 to 23 are designated as "Standards * Integer values from -24 to 23 are designated as "Standards
Action With Expert Review". Action With Expert Review".
* Integer values from -65536 to -25 and from 24 to 65535 are * Integer values from -65536 to -25 and from 24 to 65535 are
designated as "Specification Required". designated as "Specification Required".
* Integer values smaller than -65536 and greater than 65535 are * Integer values smaller than -65536 and greater than 65535 are
marked as "Private Use". marked as "Private Use".
skipping to change at line 1055 skipping to change at line 1059
| | claims. CCS is defined in RFC 8392. | | | | claims. CCS is defined in RFC 8392. | |
+-------+--------------------------------------------+-----------+ +-------+--------------------------------------------+-----------+
| 2 | X.509 certificate | [RFC5280] | | 2 | X.509 certificate | [RFC5280] |
+-------+--------------------------------------------+-----------+ +-------+--------------------------------------------+-----------+
Table 4: Initial Entries in the "EDHOC Authentication Table 4: Initial Entries in the "EDHOC Authentication
Credential Types" Registry Credential Types" Registry
8.4. Expert Review Instructions 8.4. Expert Review Instructions
The IANA registry established in Section 8.3 is defined as using "Standards Action with Expert Review" and "Specification Required"
"Standards Action with Expert Review" or "Specification Required" as are two of the registration policies defined for the IANA registry
a Registration Procedure depending on the range of values for which established in Section 8.3. This section gives some general
an assignment is requested. This section gives some general
guidelines for what the experts should be looking for; however, they guidelines for what the experts should be looking for; however, they
are being designated as experts for a reason, so they should be given are being designated as experts for a reason, so they should be given
substantial latitude. substantial latitude.
Expert reviewers should take into consideration the following points: Expert reviewers should take into consideration the following points:
* Clarity and correctness of registrations. Experts are expected to * Clarity and correctness of registrations. Experts are expected to
check the clarity of purpose and use of the requested entries. check the clarity of purpose and use of the requested entries.
Experts need to make sure that registered identifiers indicate a Experts need to make sure that registered identifiers indicate a
type of authentication credential whose format and encoding is type of authentication credential whose format and encoding is
skipping to change at line 1090 skipping to change at line 1093
* Specifications are required for the "Standards Action With Expert * Specifications are required for the "Standards Action With Expert
Review" range of point assignment. Specifications should exist Review" range of point assignment. Specifications should exist
for "Specification Required" ranges, but early assignment before a for "Specification Required" ranges, but early assignment before a
specification is available is considered to be permissible. When specification is available is considered to be permissible. When
specifications are not provided, the description provided needs to specifications are not provided, the description provided needs to
have sufficient information to identify what the point is being have sufficient information to identify what the point is being
used for. used for.
* Experts should take into account the expected usage of fields when * Experts should take into account the expected usage of fields when
approving point assignment. The fact that there is a range for approving point assignment. Documents published via Standards
Standards Track documents does not mean that a Standards Track Action can also register points outside the Standards Action
document cannot have points assigned outside of that range. The range. The length of the encoded value should be weighed against
length of the encoded value should be weighed against how many how many code points of that length are left, the size of device
code points of that length are left, the size of device it will be it will be used on, and the number of code points left that encode
used on, and the number of code points left that encode to that to that size.
size.
9. References 9. References
9.1. Normative References 9.1. Normative References
[CORE.Target.Attributes] [CORE.Target.Attributes]
IANA, "Target Attributes", IANA, "Target Attributes",
<https://www.iana.org/assignments/core-parameters>. <https://www.iana.org/assignments/core-parameters>.
[COSE.Header.Parameters] [COSE.Header.Parameters]
skipping to change at line 1192 skipping to change at line 1194
Acknowledgments Acknowledgments
The authors sincerely thank Christian Amsüss, Emmanuel Baccelli, The authors sincerely thank Christian Amsüss, Emmanuel Baccelli,
Carsten Bormann, Roman Danyliw, Esko Dijk, Joel Halpern, Wes Carsten Bormann, Roman Danyliw, Esko Dijk, Joel Halpern, Wes
Hardaker, Klaus Hartke, John Preuß Mattsson, David Navarro, Shuping Hardaker, Klaus Hartke, John Preuß Mattsson, David Navarro, Shuping
Peng, Jim Schaad, Jürgen Schönwälder, John Scudder, Orie Steele, Peng, Jim Schaad, Jürgen Schönwälder, John Scudder, Orie Steele,
Gunter Van de Velde, Mališa Vučinić, and Paul Wouters for their Gunter Van de Velde, Mališa Vučinić, and Paul Wouters for their
feedback and comments. feedback and comments.
The work on this document has been partly supported by VINNOVA and The work on this document has been partly supported by the Sweden's
the Celtic-Next project CRITISEC and by the H2020 project SIFIS-Home Innovation Agency VINNOVA and the Celtic-Next project CRITISEC, and
(Grant agreement 952652). by the H2020 project SIFIS-Home (Grant agreement 952652).
Authors' Addresses Authors' Addresses
Francesca Palombini Francesca Palombini
Ericsson Ericsson AB
Torshamnsgatan 23
SE-164 40 Kista
Sweden
Email: francesca.palombini@ericsson.com Email: francesca.palombini@ericsson.com
Marco Tiloca Marco Tiloca
RISE AB RISE AB
Isafjordsgatan 22 Isafjordsgatan 22
SE-16440 Stockholm Kista SE-164 40 Kista
Sweden Sweden
Email: marco.tiloca@ri.se Email: marco.tiloca@ri.se
Rikard Höglund Rikard Höglund
RISE AB RISE AB
Isafjordsgatan 22 Isafjordsgatan 22
SE-16440 Stockholm Kista SE-16440 Stockholm Kista
Sweden Sweden
Email: rikard.hoglund@ri.se Email: rikard.hoglund@ri.se
 End of changes. 62 change blocks. 
142 lines changed or deleted 147 lines changed or added

This html diff was produced by rfcdiff 1.48.