You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In general, this specification provides two ways by which a MUD URL transmission can be performed using an explicit MUD URL resource.
188
+
In general, this specification provides two ways by which a MUD URL transmission can be performed using a dedicated CoAP resource.
173
189
174
-
In environments where many Things need to be managed over several subnets and where multicast usage is not desirable, it can be advantageous if the MUD Receiver provides a CoAP resource to perform submissions to and the Things initiate the MUD URL submission.
190
+
In environments where many Things need to be managed over several subnets and where multicast usage is not desirable, it may be advantageous if MUD URLs are submitted by the Thing through a CoAP resource provided by the MUD Receiver.
175
191
This will be referred to as the "Thing-initiated" submission flow for the remainder of this specification.
176
192
177
-
Conversely, in environments where multicast is not an issue and things might be limited in their capabilities, it can be advantageous if MUD Receivers retrieve the MUD URL from a CoAP resource provided by the Things.
193
+
Conversely, in environments where multicast is not an issue and things might be limited in their capabilities, it may be easier for the MUD Receiver to retrieve the MUD URL from a CoAP resource provided by the Thing.
178
194
In this specification, this will be referred to as the "Receiver-initiated" submission flow.
179
195
180
196
### Using the MUD URL Resource (Receiver-initiated)
@@ -189,8 +205,7 @@ In general, the Receiver-initiated MUD URL flow can be divided into these steps:
189
205
This resource should provide the MUD URL in one of the formats specified in {{general_payloads}}.
190
206
It also makes this resource discoverable for MUD Receivers using the methods specified in {{general_discovery}}.
191
207
192
-
2. The MUD Receiver discovers the resource using the aforementioned methods.
193
-
Depending on the method of discovery, this could for example happen using a periodic scan for devices, e.g., by periodically requesting a well-known URI using multicast.
208
+
2. The MUD Receiver discovers the resource using the aforementioned methods, e.g., by periodically requesting a well-known URI using multicast.
194
209
195
210
3. The MUD Receiver retrieves the discovered resource for devices for which the MUD Controller does not have a current MUD URL.
196
211
To do so, it performs a CoAP request for the discovered MUD URL resource URI using the GET method, which is responded to with the appropriate payload.
@@ -214,8 +229,9 @@ This flow can be divided into these general steps:
214
229
3. The Thing submits the MUD URL to the previously discovered URI.
215
230
To do so, it performs a CoAP request to the discovered URI with the POST method.
216
231
The MUD URL is contained as the message payload in this request using one of the content formats defined in {{general_payloads}}.
217
-
Receivers MAY be configured to limit the accepted Content-Formats to ones that provide some level of authenticity for the MUD URL based on policy.
218
-
However, receiver implementations MUST also support unauthenticated MUD URL transmissions if no policy forbids it.
232
+
Receivers MAY be configured by the network administrator to limit the accepted Content-Formats to ones that provide some level of authenticity for the MUD URL.
233
+
However, receiver implementations MUST also support unauthenticated MUD URL transmissions unless said policy forbids it.
234
+
<!-- TODO s/MUST/SHOULD/g ? -->
219
235
<!-- TODO message response/response code indicating success? -->
220
236
221
237
<!-- TODO advantages/disadvantages? -->
@@ -233,45 +249,27 @@ CoAP requests and responses that use this format MUST use the Content-Format opt
233
249
### MUD URLs inside of CBOR Web Tokens
234
250
Previous methods of transmitting MUD URLs do not allow for authentication of supplied MUD URLs.
235
251
To accomodate for environments where authentication of MUD URLs is desired, it is also possible to include the MUD URL as a claim inside of a CBOR Web Token {{!RFC8392}}.
236
-
This allows for MUD Receivers or MUD Controllers to verify the authenticity of the provided MUD URL.
252
+
This allows for MUD Receivers or MUD Controllers to verify the authenticity of the provided MUD URL, given that the key used for signing the CWT is known to belong to the Thing's manufacturer.
237
253
238
254
CBOR Web Tokens that contain MUD URL information have the following properties:
239
255
240
-
- The MUD URL is contained as an ASCII-encoded string in the "mud-url" claim.
256
+
- The MUD URL is contained as an ASCII-encoded string in the `mud-url` claim.
241
257
- The Token MAY contain proof-of-possession claims {{!RFC8747}}.
242
-
If it does, the MUD Receiver MUST verify that the device is in possession of the key specified in the cnf claim.
243
-
Proof-of-Possession claims that are transmitted over CoAP without DTLS/TLS MUST represent public keys, Receivers MUST treat any symmetric keys sent over insecure channels as invalid/compromised.
258
+
If it does, the MUD Receiver MUST verify that the Thing is in possession of the key specified in the `cnf` claim (see {{general_pop}}).
244
259
- The Token MAY contain an expiry time.
245
260
If an expiry time is specified, the MUD URL should be resubmitted or requested again shortly before the original CWT expires.
246
261
Note that using an expiry time could cause problems if the device is unable to perform a refresh, e.g., due to a power outage.
247
262
248
-
CoAP requests and responses that use this format MUST use the Content-Format option with the value corresponding to the "application/mud-url+cwt" media type.
263
+
CoAP requests and responses that use this format MUST use the Content-Format option with the value corresponding to the `application/mud-url+cwt` media type.
249
264
250
265
## Proof-of-Possession for CBOR Web Tokens with MUD URLs {#general_pop}
251
-
If the MUD URL is transmitted as a CBOR Web Token that includes proof-of-possession claims, the proof-of-possession claim SHOULD be verified.
252
-
To do so, the following procedures SHOULD be used.
253
-
Both of the following procedures use the establishment of a DTLS session using the PoP key in order to prove the possession of the key, similarly to the procedures defined in {{!RFC9202}}.
266
+
If the MUD URL is transmitted as a CBOR Web Token that includes proof-of-possession claims, that claim MUST be verified.
267
+
In general, most already specified PoP methods aim to reduce overhead by combining proof-of-possession with the authenticity-, integrity-, and replay-protection of the underlying CoAP session.
268
+
Some examples of this approach may be found in the specifications for ACE-OAuth profiles found in {{!RFC9202}}, {{!RFC9203}}, and {{!RFC9431}}.
254
269
255
-
<!-- TODO required ciphers? -->
270
+
This specification provides two different methods for performing proof-of-possession in {{behavior_pop}}, which are adapted from the ACE-OAuth DTLS profile {{!RFC9202}} and OSCORE profile {{!RFC9203}}, respectively.
271
+
Additionally, we will describe the necessary steps required for defining additional proof-of-possession methods in TODO.
256
272
257
-
### For the Thing-initiated Flow
258
-
259
-
1. After submitting the MUD URL, the MUD Receiver parses the token.
260
-
If it detects proof-of-possession claims, the receiver MUST reply with a 4.01 (Unauthorized) CoAP response code and reject the token for now.
261
-
If the original submission request was not performed using CoAPS, the Receiver MUST also return a set of key information that can be used to establish a CoAP+DTLS session with it, as well as a CoAPS URI indicating the location of the secured submission resource.
262
-
<!-- TODO key format? -->
263
-
2. The Thing then repeats the submission request using its own key information, the Receiver's key information, and the provided URI.
264
-
3. During the DTLS handshake, the Receiver MUST require the Thing to use the proof-of-possession key included in the originally submitted token in order to successfully establish a DTLS session.
265
-
4. After the DTLS handshake, the Thing has proven possession of the key included in the CWT to the MUD Receiver, which can then treat the CWT as valid.
266
-
<!-- TODO do we still want to re-send the CWT? -->
267
-
268
-
### For the Receiver-initiated Flow
269
-
1. After receiving the MUD URL from a request (e.g., a multicast request), the MUD Receiver parses the token.
270
-
If it detects proof-of-possession claims, the receiver MUST continue with the following procedure before treating the CWT as valid.
271
-
2. The receiver repeats the MUD URL request, this time using DTLS.
272
-
During the DTLS handshake, the Receiver must require the Thing to use the proof-of-possession key included in the originally received token in order to successfully establish the DTLS session.
273
-
3. After the DTLS handshake, the Thing has proven possession of the key included in the CWT to the MUD Receiver, which can then treat the CWT as valid.
274
-
<!-- TODO Unsure if DTLS even works without mutual auth, but i dont see why it shouldn't -->
275
273
276
274
## Resource Discovery {#general_discovery}
277
275
@@ -308,6 +306,7 @@ A MUD manager itself MAY also act as a Resource Directory, directly applying the
308
306
In addition to the registration endpoint defined in {{?RFC9176}}, MUD managers MAY define a separate registration interface when acting as a CoRE RD.
309
307
310
308
# Obtaining a MUD URL in Constrained Environments
309
+
<!-- TODO: Maybe rename this section and make it specific to the dedicated CoAP resource, and then have a separate top-level section for the embedding into the CoRE Link Format -->
311
310
312
311
With the additional mechanisms for finding MUD URLs introduced in this document, MUD managers can be configured to play a more active role in discovering MUD-enabled devices.
313
312
Furthermore, IoT devices could identify their peers based on a MUD URL associated with these devices or perform a configuration process based on the linked MUD file's contents.
@@ -329,6 +328,8 @@ using the Accept option, if provided.
329
328
If the Thing supports resource discovery using a `/.well-known/core` resource,
330
329
MUD URL resources SHOULD be advertised there using the CoRE Link-Format
331
330
{{!RFC6690}}, indicating the available Content-Formats using the `ct` parameter.
331
+
<!-- TODO should there also be a method of not only referencing the dedicated MUD URL resource,
332
+
but also the actual MUD URL inside the CoRE Link Format resource directly? -->
332
333
333
334
### Registering MUD URLs with MUD Receivers
334
335
@@ -428,6 +429,52 @@ Regarding the actual MUD URL payload transmitted using CoAP, the following consi
428
429
- Signature Verification
429
430
-->
430
431
432
+
## Proof-of-Possession Methods {#behavior_pop}
433
+
434
+
TODO
435
+
436
+
<!-- TODO mention here that the CWT must be signed by the manufacturer, while the PoP key must be owned and specific to the device -->
437
+
438
+
### Requirements for Proof-of-Possession
439
+
<!-- TODO this may also be an appendix (cf. RFC 9200, Appendix C) -->
440
+
441
+
TODO
442
+
443
+
### Proof-of-Possession using DTLS
444
+
445
+
TODO
446
+
447
+
<!-- TODO: This is the old, original text, maybe we can reuse parts of this
448
+
449
+
Proof-of-Possession claims that are transmitted over CoAP without (D)TLS MUST represent public keys, Receivers MUST treat any symmetric keys sent over insecure channels as invalid/compromised.
450
+
To do so, the following procedures SHOULD be used.
451
+
Both of the following procedures use the establishment of a DTLS session using the PoP key in order to prove the possession of the key, similarly to the procedures defined in {{!RFC9202}}.
452
+
453
+
### For the Thing-initiated Flow
454
+
455
+
1. After submitting the MUD URL, the MUD Receiver parses the token.
456
+
If it detects proof-of-possession claims, the receiver MUST reply with a 4.01 (Unauthorized) CoAP response code and reject the token for now.
457
+
If the original submission request was not performed using CoAPS, the Receiver MUST also return a set of key information that can be used to establish a CoAP+DTLS session with it, as well as a CoAPS URI indicating the location of the secured submission resource.
458
+
TODO key format?
459
+
2. The Thing then repeats the submission request using its own key information, the Receiver's key information, and the provided URI.
460
+
3. During the DTLS handshake, the Receiver MUST require the Thing to use the proof-of-possession key included in the originally submitted token in order to successfully establish a DTLS session.
461
+
4. After the DTLS handshake, the Thing has proven possession of the key included in the CWT to the MUD Receiver, which can then treat the CWT as valid.
462
+
TODO do we still want to re-send the CWT?
463
+
464
+
### For the Receiver-initiated Flow
465
+
1. After receiving the MUD URL from a request (e.g., a multicast request), the MUD Receiver parses the token.
466
+
If it detects proof-of-possession claims, the receiver MUST continue with the following procedure before treating the CWT as valid.
467
+
2. The receiver repeats the MUD URL request, this time using DTLS.
468
+
During the DTLS handshake, the Receiver must require the Thing to use the proof-of-possession key included in the originally received token in order to successfully establish the DTLS session.
469
+
3. After the DTLS handshake, the Thing has proven possession of the key included in the CWT to the MUD Receiver, which can then treat the CWT as valid.
470
+
TODO Unsure if DTLS even works without mutual auth, but i dont see why it shouldn't
0 commit comments