-
Notifications
You must be signed in to change notification settings - Fork 4
/
constrained-voucher-21.txt
4704 lines (3196 loc) · 181 KB
/
constrained-voucher-21.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
anima Working Group M. Richardson
Internet-Draft Sandelman Software Works
Updates: 8366, 8995 (if approved) P. van der Stok
Intended status: Standards Track vanderstok consultancy
Expires: 8 January 2024 P. Kampanakis
Cisco Systems
E. Dijk
IoTconsultancy.nl
7 July 2023
Constrained Bootstrapping Remote Secure Key Infrastructure (BRSKI)
draft-ietf-anima-constrained-voucher-21
Abstract
This document defines the Constrained Bootstrapping Remote Secure Key
Infrastructure (Constrained BRSKI) protocol, which provides a
solution for secure zero-touch bootstrapping of resource-constrained
(IoT) devices into the network of a domain owner. This protocol is
designed for constrained networks, which may have limited data
throughput or may experience frequent packet loss. Constrained BRSKI
is a variant of the BRSKI protocol, which uses an artifact signed by
the device manufacturer called the "voucher" which enables a new
device and the owner's network to mutually authenticate. While the
BRSKI voucher is typically encoded in JSON, Constrained BRSKI uses a
compact CBOR-encoded voucher. The BRSKI voucher is extended with new
data types that allow for smaller voucher sizes. The Enrollment over
Secure Transport (EST) protocol, used in BRSKI, is replaced with EST-
over-CoAPS; and HTTPS used in BRSKI is replaced with CoAPS. This
document Updates RFC 8366 and RFC 8995.
About This Document
This note is to be removed before publishing as an RFC.
Status information for this document may be found at
https://datatracker.ietf.org/doc/draft-ietf-anima-constrained-
voucher/.
Discussion of this document takes place on the anima Working Group
mailing list (mailto:[email protected]), which is archived at
https://mailarchive.ietf.org/arch/browse/anima/. Subscribe at
https://www.ietf.org/mailman/listinfo/anima/.
Source for this draft and an issue tracker can be found at
https://github.com/anima-wg/constrained-voucher.
Richardson, et al. Expires 8 January 2024 [Page 1]
Internet-Draft Constrained BRSKI July 2023
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on 8 January 2024.
Copyright Notice
Copyright (c) 2023 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components
extracted from this document must include Revised BSD License text as
described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Revised BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 5
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Requirements Language . . . . . . . . . . . . . . . . . . . . 6
4. Overview of Protocol . . . . . . . . . . . . . . . . . . . . 6
5. Updates to RFC8366 and RFC8995 . . . . . . . . . . . . . . . 8
6. BRSKI-EST Protocol . . . . . . . . . . . . . . . . . . . . . 9
6.1. DTLS Connection . . . . . . . . . . . . . . . . . . . . . 9
6.1.1. DTLS Version . . . . . . . . . . . . . . . . . . . . 9
6.1.2. TLS Client Certificates: IDevID authentication . . . 9
6.1.3. DTLS Handshake Fragmentation Considerations . . . . . 10
6.1.4. Registrar and the Server Name Indicator (SNI) . . . . 10
6.2. Resource Discovery, URIs and Content Formats . . . . . . 11
6.2.1. RFC8995 Telemetry Returns . . . . . . . . . . . . . . 14
6.3. Join Proxy options . . . . . . . . . . . . . . . . . . . 14
6.4. Extensions to BRSKI . . . . . . . . . . . . . . . . . . . 15
Richardson, et al. Expires 8 January 2024 [Page 2]
Internet-Draft Constrained BRSKI July 2023
6.4.1. CoAP EST Resource Discovery and BRSKI . . . . . . . . 15
6.4.2. CoAP responses . . . . . . . . . . . . . . . . . . . 16
6.5. Extensions to EST-coaps . . . . . . . . . . . . . . . . . 16
6.5.1. Pledge Extensions . . . . . . . . . . . . . . . . . . 17
6.5.2. EST-client Extensions . . . . . . . . . . . . . . . . 18
6.5.3. Registrar Extensions . . . . . . . . . . . . . . . . 20
7. BRSKI-MASA Protocol . . . . . . . . . . . . . . . . . . . . . 21
7.1. Protocol and Formats . . . . . . . . . . . . . . . . . . 21
7.2. Registrar Voucher Request . . . . . . . . . . . . . . . . 22
7.3. MASA and the Server Name Indicator (SNI) . . . . . . . . 22
7.3.1. Registrar Certificate Requirement . . . . . . . . . . 23
8. Pinning in Voucher Artifacts . . . . . . . . . . . . . . . . 23
8.1. Registrar Identity Selection and Encoding . . . . . . . . 23
8.2. MASA Pinning Policy . . . . . . . . . . . . . . . . . . . 24
8.3. Pinning of Raw Public Keys . . . . . . . . . . . . . . . 25
8.4. Considerations for use of IDevID-Issuer . . . . . . . . . 26
9. Artifacts . . . . . . . . . . . . . . . . . . . . . . . . . . 27
9.1. Example Artifacts . . . . . . . . . . . . . . . . . . . . 28
9.1.1. Example Pledge voucher request (PVR) artifact . . . . 28
9.1.2. Example Registrar voucher request (RVR) artifact . . 28
9.1.3. Example voucher artifacts . . . . . . . . . . . . . . 29
9.2. Signing voucher and voucher request artifacts with
COSE . . . . . . . . . . . . . . . . . . . . . . . . . . 30
9.2.1. Signing of Registrar Voucher Request (RVR) . . . . . 31
9.2.2. Signing of Pledge Voucher Request (PVR) . . . . . . . 32
9.2.3. Signing of voucher by MASA . . . . . . . . . . . . . 33
10. Extensions to Discovery . . . . . . . . . . . . . . . . . . . 34
10.1. Discovery operations by Pledge . . . . . . . . . . . . . 35
10.1.1. GRASP discovery . . . . . . . . . . . . . . . . . . 36
10.1.2. CoAP Discovery . . . . . . . . . . . . . . . . . . . 37
10.2. Discovery operations by Join Proxy . . . . . . . . . . . 37
10.2.1. GRASP Discovery . . . . . . . . . . . . . . . . . . 38
10.2.2. CoAP discovery . . . . . . . . . . . . . . . . . . . 38
11. Deployment-specific Discovery Considerations . . . . . . . . 38
11.1. 6TSCH Deployments . . . . . . . . . . . . . . . . . . . 39
11.2. Generic networks using GRASP . . . . . . . . . . . . . . 39
11.3. Generic networks using mDNS . . . . . . . . . . . . . . 39
11.4. Thread networks using Mesh Link Establishment (MLE) . . 39
12. Design Considerations . . . . . . . . . . . . . . . . . . . . 40
13. Raw Public Key Use Considerations . . . . . . . . . . . . . . 40
13.1. The Registrar Trust Anchor . . . . . . . . . . . . . . . 40
13.2. The Pledge Voucher Request . . . . . . . . . . . . . . . 41
13.3. The Voucher Response . . . . . . . . . . . . . . . . . . 41
14. Use of constrained vouchers with HTTPS . . . . . . . . . . . 41
15. Security Considerations . . . . . . . . . . . . . . . . . . . 42
15.1. Duplicate serial-numbers . . . . . . . . . . . . . . . . 42
15.2. IDevID security in Pledge . . . . . . . . . . . . . . . 43
15.3. Security of CoAP and UDP protocols . . . . . . . . . . . 44
Richardson, et al. Expires 8 January 2024 [Page 3]
Internet-Draft Constrained BRSKI July 2023
15.4. Registrar Certificate may be self-signed . . . . . . . . 45
15.5. Use of RPK alternatives to proximity-registrar-cert . . 45
15.6. MASA support of CoAPS . . . . . . . . . . . . . . . . . 45
16. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 46
16.1. GRASP Discovery Registry . . . . . . . . . . . . . . . . 46
16.2. Resource Type Registry . . . . . . . . . . . . . . . . . 46
16.3. Media Types Registry . . . . . . . . . . . . . . . . . . 47
16.3.1. application/voucher-cose+cbor . . . . . . . . . . . 47
16.4. CoAP Content-Format Registry . . . . . . . . . . . . . . 48
16.5. Update to BRSKI Parameters Registry . . . . . . . . . . 48
17. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 49
18. Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . 50
19. References . . . . . . . . . . . . . . . . . . . . . . . . . 50
19.1. Normative References . . . . . . . . . . . . . . . . . . 50
19.2. Informative References . . . . . . . . . . . . . . . . . 53
Appendix A. Library Support for BRSKI . . . . . . . . . . . . . 55
A.1. OpensSSL . . . . . . . . . . . . . . . . . . . . . . . . 56
A.2. mbedTLS . . . . . . . . . . . . . . . . . . . . . . . . . 57
Appendix B. Constrained BRSKI-EST Message Examples . . . . . . . 58
B.1. enrollstatus . . . . . . . . . . . . . . . . . . . . . . 58
B.2. voucher_status . . . . . . . . . . . . . . . . . . . . . 59
Appendix C. COSE-signed Voucher (Request) Examples . . . . . . . 60
C.1. Pledge, Registrar and MASA Keys . . . . . . . . . . . . . 60
C.1.1. Pledge IDevID private key . . . . . . . . . . . . . . 60
C.1.2. Registrar private key . . . . . . . . . . . . . . . . 61
C.1.3. MASA private key . . . . . . . . . . . . . . . . . . 61
C.2. Pledge, Registrar, Domain CA and MASA Certificates . . . 62
C.2.1. Pledge IDevID Certificate . . . . . . . . . . . . . . 62
C.2.2. Registrar Certificate . . . . . . . . . . . . . . . . 64
C.2.3. Domain CA Certificate . . . . . . . . . . . . . . . . 66
C.2.4. MASA Certificate . . . . . . . . . . . . . . . . . . 68
C.3. COSE-signed Pledge Voucher Request (PVR) . . . . . . . . 70
C.4. COSE-signed Registrar Voucher Request (RVR) . . . . . . . 71
C.5. COSE-signed Voucher from MASA . . . . . . . . . . . . . . 74
Appendix D. Generating Certificates with OpenSSL . . . . . . . . 77
Appendix E. Pledge Device Class Profiles . . . . . . . . . . . . 81
E.1. Minimal Pledge . . . . . . . . . . . . . . . . . . . . . 81
E.2. Typical Pledge . . . . . . . . . . . . . . . . . . . . . 82
E.3. Full-featured Pledge . . . . . . . . . . . . . . . . . . 82
E.4. Comparison Chart of Pledge Classes . . . . . . . . . . . 82
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 83
Richardson, et al. Expires 8 January 2024 [Page 4]
Internet-Draft Constrained BRSKI July 2023
1. Introduction
Secure enrollment of new nodes into constrained networks with
constrained nodes presents unique challenges. As explained in
[RFC7228], such networks may have limited data throughput or may
experience frequent packet loss. In addition, its nodes may be
constrained by energy availability, memory space, and code size.
The Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol
described in [RFC8995] provides a solution for secure zero-touch
(automated) bootstrap of new (unconfigured) devices. In it, new
devices, such as IoT devices, are called "pledges", and equipped with
a factory-installed Initial Device Identifier (IDevID) (see
[ieee802-1AR]), are enrolled into a network.
The BRSKI solution described in [RFC8995] was designed to be modular,
and this document describes a version scaled to the constraints of
IoT deployments.
Therefore, this document uses a constrained version of the voucher
and voucher request artifacts described in [RFC8366bis], along with a
constrained version of the BRSKI protocol. This Constrained BRSKI
protocol makes use of the constrained CoAP-based version of EST (EST-
coaps from [RFC9148]) rather than the EST over HTTPS [RFC7030].
Constrained BRSKI is itself scalable to multiple resource levels
through the definition of optional functions. Appendix E illustrates
this.
In BRSKI, the [RFC8366] voucher is by default serialized to JSON with
a signature in CMS [RFC5652]. This document uses the new CBOR
[RFC8949] voucher serialization, as defined by [RFC8366bis], and
applies a new COSE [RFC9052] signature format.
This COSE-signed CBOR-encoded voucher is transported using both
secured CoAP and HTTPS. The CoAP connection (between Pledge and
Registrar) is to be protected by either OSCORE+EDHOC
[I-D.ietf-lake-edhoc] or DTLS (CoAPS). The HTTP connection (between
Registrar and MASA) is to be protected using TLS (HTTPS).
2. Terminology
The following terms are defined in [RFC8366bis], and are used
identically as in that document: artifact, domain, imprint, Join
Registrar/Coordinator (JRC), Manufacturer Authorized Signing
Authority (MASA), Pledge, Registrar, Trust of First Use (TOFU), and
Voucher.
Richardson, et al. Expires 8 January 2024 [Page 5]
Internet-Draft Constrained BRSKI July 2023
The following terms from [RFC8995] are used identically as in that
document: Domain CA, enrollment, IDevID, Join Proxy, LDevID,
manufacturer, nonced, nonceless, PKIX.
The term Pledge Voucher Request, or acronym PVR, is introduced to
refer to the voucher request between the Pledge and the Registrar.
The term Registrar Voucher Request, or acronym RVR, is introduced to
refer to the voucher request between the Registrar and the MASA.
This document uses the term "PKIX Certificate" to refer to the
X.509v3 profile described in [RFC5280].
In code examples, the string "<CODE BEGINS>" denotes the start of a
code example and "<CODE ENDS>" the end of the code example. Four
dots ("....") in a CBOR diagnostic notation byte string denotes a
further sequence of bytes that is not shown for brevity.
3. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
4. Overview of Protocol
[RFC8366bis] defines a voucher that can assert proximity,
authenticates the Registrar, and can offer varying levels of anti-
replay protection. The proximity proof provided by a voucher is an
assertion that the Pledge and the Registrar are believed to be close
together, from a network topology point of view. Similar to BRSKI
[RFC8995], proximity is proven by making a DTLS connection between a
Pledge and a Registrar. The Pledge initiates this connection using a
link-local source address.
The secure DTLS connection is then used by the Pledge to make a
Pledge Voucher Request (PVR). The Registrar then includes the PVR
into its own Registrar Voucher Request (RVR), sent to an agent (MASA)
of the Pledge's manufacturer. The MASA verifies the PVR and RVR and
issues a signed voucher. The voucher provides an authorization
statement from the manufacturer indicating that the Registrar is the
intended owner of the Pledge. The voucher refers to the Registrar
through pinning of the Registrar's identity.
Richardson, et al. Expires 8 January 2024 [Page 6]
Internet-Draft Constrained BRSKI July 2023
After verification of the voucher, the Pledge enrolls into the
Registrar's domain by obtaining a certificate using the EST-coaps
[RFC9148] protocol, suitable for constrained devices. Once the
Pledge has obtained its domain identity (LDevID) in this manner, it
can use this identity to obtain network access credentials, to join
the local IP network. The method to obtain such credentials depends
on the particular network technology used and is outside the scope of
this document.
This document does not make any extensions to the semantic meaning of
vouchers, only the a new signature method based on COSE [RFC9052] is
defined to optimize for constrained devices and networks.
The two main parts of the BRSKI protocol are named separately in this
document: BRSKI-EST for the protocol between Pledge and Registrar,
and BRSKI-MASA for the protocol between the Registrar and the MASA.
Time-based vouchers are supported, but given that constrained devices
are extremely unlikely to have accurate time, their use will be
uncommon. Most Pledges using constrained vouchers will be online
during enrollment and will use live nonces to provide anti-replay
protection rather than expiry times.
[RFC8366bis] defines the two artifacts of a constrained voucher and a
constrained voucher request, which are used by Constrained BRSKI.
The constrained voucher request MUST be signed by the Pledge. It
signs using the private key associated with its IDevID certificate.
This also holds for the most constrained types of Pledges that are
unable to perform certain PKIX operations (such as certificate chain
validation). These types of Pledge still contain an IDevID identity
that is used for authentication. See Section 13 for additional
details on PKIX-less operations.
The constrained voucher MUST be signed by the MASA.
For the constrained voucher request (PVR) this document defines two
distinct methods for the Pledge to identify the Registrar: using
either the Registrar's full PKIX certificate, or using a Raw Public
Key (RPK). The method depends on which type of Registrar identity is
obtained by the Pledge during the DTLS handshake process. Normally,
the Pledge obtains the PKIX certificate. But when operating PKIX-
less as described in Section 13, the Registrar's RPK is obtained.
For the constrained voucher also both methods are supported to
indicate (pin) a trusted domain identity: using either a pinned
domain PKIX certificate, or a pinned RPK.
Richardson, et al. Expires 8 January 2024 [Page 7]
Internet-Draft Constrained BRSKI July 2023
The BRSKI architectures mandates that the MASA be aware of the
capabilities of the Pledge. This is not a drawback as a Pledge is
constructed by a manufacturer which also arranges for the MASA to be
aware of the inventory of devices. The MASA therefore knows if the
Pledge supports PKIX operations, or if it is limited to Raw Public
Key (RPK) operations only. Based upon this, the MASA can select
which attributes to use in the voucher for certain operations, like
the pinning of the Registrar identity.
5. Updates to RFC8366 and RFC8995
This section details the ways in which this document updates other
RFCs. The terminology for Updates is taken from
[I-D.kuehlewind-update-tag].
This document Updates [RFC8366]. It Extends [RFC8366] by creating a
new serialization format, and creates a mechanism to pin a Raw Public
Key (RPK).
This document Updates [RFC8995]. It Amends [RFC8995]
* by clarifying how pinning is done,
* adopts clearer explanation of the TLS Server Name Indicator (SNI),
see Section 6.1.4 and Section 7.3,
* clarifies when new trust anchors should be retrieved
(Section 6.5.1),
* clarifies what kinds of Extended Key Usage attributes are
appropriate for each certificate (Section 7.3.1).
It Extends [RFC8995] as follows:
* defines the CoAP version of the BRSKI protocol,
* makes some messages optional if the results can be inferred from
other validations (Section 6.5),
* provides the option to return trust anchors in a simpler format
(Section 6.5.3),
* extends the BRSKI-MASA protocol to carry the new voucher-cose+cbor
format.
Richardson, et al. Expires 8 January 2024 [Page 8]
Internet-Draft Constrained BRSKI July 2023
6. BRSKI-EST Protocol
This section describes the constrained BRSKI extensions to EST-coaps
[RFC9148] to transport the voucher between Registrar and Pledge
(optionally via a Join Proxy) over CoAP. The extensions are
targeting low-resource networks with small packets.
The constrained BRSKI-EST protocol described in this section is
between the Pledge and the Registrar only.
6.1. DTLS Connection
A DTLS connection is established between the Pledge and the
Registrar, similar to the TLS connection described in Section 5.1 of
[RFC8995]. This may occur via a Join Proxy as described in
Section 6.3. Regardless of the Join Proxy presence or particular
mechanism used, the DTLS connection should operate identically. The
Constrained BRSKI and EST-coaps requests and responses for
bootstrapping are carried over this DTLS connection.
6.1.1. DTLS Version
DTLS version 1.3 [RFC9147] SHOULD be used in any implementation of
this specification. An exception case where DTLS 1.2 [RFC6347] MAY
be used is in a Pledge that uses a software platform where a DTLS 1.3
client is not available (yet). This may occur for example if a
legacy device gets software-upgraded to support Constrained BRSKI.
For this reason, a Registrar MUST by default support both DTLS 1.3
and DTLS 1.2 client connections. However, for security reasons the
Registrar MAY be administratively configured to support only a
particular DTLS version or higher.
An EST-coaps server [RFC9148] that implements this specification also
MUST support both DTLS 1.3 and DTLS 1.2 client connections by
default. However, for security reasons the EST-coaps server MAY be
administratively configured to support only a particular DTLS version
or higher.
6.1.2. TLS Client Certificates: IDevID authentication
As described in Section 5.1 of [RFC8995], the Pledge makes a
connection to the Registrar using a TLS Client Certificate for
authentication. This is the Pledge's IDevID certificate.
Subsequently the Pledge will send a Pledge Voucher Request (PVR).
Further elements of Pledge authentication may be present in the PVR,
as detailed in Section 9.2.
Richardson, et al. Expires 8 January 2024 [Page 9]
Internet-Draft Constrained BRSKI July 2023
6.1.3. DTLS Handshake Fragmentation Considerations
DTLS includes a mechanism to fragment handshake messages. This is
described in Section 4.4 of [RFC9147]. Constrained BRSKI will often
be used with a Join Proxy, described in
[I-D.ietf-anima-constrained-join-proxy], which relays each DTLS
message to the Registrar. A stateless Join Proxy will need some
additional space to wrap each DTLS message inside a CoAP request,
while the wrapped result needs to fit in the maximum packet sized
guaranteed on 6LoWPAN networks, which is 1280 bytes.
For this reason it is RECOMMENDED that a PMTU of 1024 bytes be
assumed for the DTLS handshake and appropriate DTLS fragmentation is
used. It is unlikely that any Packet Too Big indications [RFC4443]
will be relayed by the Join Proxy back to the Pledge.
During the operation of the constrained BRSKI-EST protocol, the CoAP
Blockwise transfer mechanism will be used when message sizes exceed
the PMTU. A Pledge/EST-client on a constrained network MUST use the
(D)TLS maximum fragment length extension ("max_fragment_length")
defined in Section 4 of [RFC6066] with the maximum fragment length
set to a value of either 2^9 or 2^10.
6.1.4. Registrar and the Server Name Indicator (SNI)
The SNI issue described below affects [RFC8995] as well, and is
reported in errata: https://www.rfc-editor.org/errata/eid6648
As the Registrar is discovered by IP address, and typically connected
via a Join Proxy, the name of the Registrar is not known to the
Pledge. The Pledge will not know what the hostname for the Registrar
is, so it cannot do DNS-ID validation ([I-D.ietf-uta-rfc6125bis]) on
the Registrar's certificate. Instead, it must do validation using
the voucher.
As the Pledge does not know the name of the Registrar, the Pledge
cannot put any reasonable value into the [RFC6066] Server Name
Indicator (SNI). Threfore the Pledge SHOULD omit the SNI extension
as per Section 9.2 of [RFC8446].
In some cases, particularly while testing BRSKI, a Pledge may be
given the hostname of a particular Registrar to connect to directly.
Such a bypass of the discovery process may result in the Pledge
taking a different code branch to establish a DTLS connection, and
may result in the SNI being inserted by a library. The Registrar
MUST ignore any SNI seen.
Richardson, et al. Expires 8 January 2024 [Page 10]
Internet-Draft Constrained BRSKI July 2023
A primary motivation for making the SNI ubiquitous in the public web
is because it allows for multi-tenant hosting of HTTPS sites on a
single (scarce) IPv4 address. This consideration does not apply to
the server function in the Registrar because:
* it uses DTLS and CoAP, not HTTPS
* it typically uses IPv6, often [RFC4193] Unique Local Address,
which are plentiful
* the server port number is typically discovered, so multiple
tenants can be accomodated via unique port numbers.
As per Section 3.6.1 of [RFC7030], the Registrar certificate MUST
have the Extended Key Usage (EKU) id-kp-cmcRA. This certificate is
also used as a TLS Server Certificate, so it MUST also have the EKU
id-kp-serverAuth. See Appendix C.2.2 for an example of a Registrar
certificate with these EKUs set.
6.2. Resource Discovery, URIs and Content Formats
To keep the protocol messages small the EST-coaps and Constrained
BRSKI URIs are shorter than the respective EST and BRSKI URIs.
The EST-coaps server URIs differ from the EST URIs by replacing the
scheme https by coaps and by specifying shorter resource path names.
Below are some examples; the first two using a discovered short path
name and the last one using the well-known URI of EST which requires
no resource discovery by the EST client.
coaps://estserver.example.com/est/<short-name>
coaps://estserver.example.com/e/<short-name>
coaps://estserver.example.com/.well-known/est/<short-name>
Similarly the constrained BRSKI Registrar URIs differ from the RFC
8995 BRSKI URIs by replacing the scheme https by coaps and by
specifying shorter resource path names. Below are some examples; the
first two are using a discovered short path name and the last one is
using the well-known URI prefix which requires no resource discovery
by the Pledge. This is the same "/.well-known/brski" prefix as
defined in Section 5 of [RFC8995].
coaps://registrar.example.com/brski/<short-name>
coaps://registrar.example.com/b/<short-name>
coaps://registrar.example.com/.well-known/brski/<short-name>
Richardson, et al. Expires 8 January 2024 [Page 11]
Internet-Draft Constrained BRSKI July 2023
Figure 5 in Section 3.2.2 of [RFC7030] enumerates the operations
supported by EST, for which Table 1 in Section 5.1 of [RFC9148]
enumerates the corresponding EST-coaps short path names. Similarly,
Table 1 below provides the mapping from the supported BRSKI extension
URI paths to the Constrained BRSKI URI paths.
+=================+============================+
| BRSKI resource | Constrained BRSKI resource |
+=================+============================+
| /requestvoucher | /rv |
+-----------------+----------------------------+
| /voucher_status | /vs |
+-----------------+----------------------------+
| /enrollstatus | /es |
+-----------------+----------------------------+
Table 1: BRSKI URI paths mapping to
Constrained BRSKI URI paths
Note that /requestvoucher occurs between the Pledge and Registrar (in
scope of the BRSKI-EST protocol), but it also occurs between
Registrar and MASA. However, as described in Section 6, this section
and above table addresses only the BRSKI-EST protocol.
Pledges that wish to discover the available BRSKI bootstrap options/
formats, or reduce the size of the CoAP headers by eliminating the
"/.well-known/brski" path, can do a discovery operation using
Section 4 of [RFC6690] by sending a discovery query to the Registrar
over the secured DTLS connection.
For example, if the Registrar supports a short BRSKI URL (/b) and
supports the voucher format "application/voucher-cose+cbor" (836),
and status reporting in both CBOR and JSON formats, a CoAP resource
discovery request and response may look as follows:
REQ: GET /.well-known/core?rt=brski*
RES: 2.05 Content
Content-Format: 40
Payload:
</b>;rt=brski,
</b/rv>;rt=brski.rv;ct=836,
</b/vs>;rt=brski.vs;ct="50 60",
</b/es>;rt=brski.es;ct="50 60"
The Registrar is under no obligation to provide shorter URLs, and MAY
respond to this query with only the "/.well-known/brski/<short-name>"
resources for the short names as defined in Table 1.
Richardson, et al. Expires 8 January 2024 [Page 12]
Internet-Draft Constrained BRSKI July 2023
When responding to a discovery request for BRSKI resources, the
Registrar MAY in addition return the full resource paths and the
content types which are supported by these resources as shown in
above example. This is useful when multiple content types are
specified for a particular resource on the Registrar.
Registrars that have implemented shorter URLs MUST also respond in
equivalent ways to the corresponding "/.well-known/brski/<short-
name>" URLs, and MUST NOT distinguish between them. In particular, a
Pledge MAY use the longer (e.g. well-known) and shorter URLs in any
combination.
In case the client queries for only rt=brski type resources, the
Registrar responds with only the root path for the BRSKI resources
(rt=brski, resource /b in above example) and no others. (So, a query
for rt=brski, without the wildcard character.) This is shown in the
below example. The Pledge requests only the BRSKI root resource of
type rt=brski to check if short names are supported or not. In this
case, the Pledge is not interested to check what voucher request
formats, or status telemetry formats -- other than the mandatory
default formats -- are supported. The compact response then shows
that the Registrar indeed supports a short-name BRSKI resource at /b:
REQ: GET /.well-known/core?rt=brski
RES: 2.05 Content
Content-Format: 40
Payload:
</b>;rt=brski
In above example, the well-known resource present under /.well-known/
brski is not returned because this is assumed to be well-known to the
Pledge and would not require discovery anyway. Effectively, the
client is guided to preferably use the short names under resource /b
instead.
Without discovery, a Pledge can only use the longer well-known URI
for its voucher request, such as:
REQ: GET /.well-known/brski/rv
while with discovery of shorter URLs, a request such as:
REQ: GET /b/rv
is possible.
Richardson, et al. Expires 8 January 2024 [Page 13]
Internet-Draft Constrained BRSKI July 2023
The return of multiple content-types in the "ct" attribute allows the
Pledge to choose the most appropriate one for a particular operation,
and allows extension with new voucher (request) formats. Note that
only Content-Format 836 ("application/voucher-cose+cbor") is defined
in this document for the voucher request resource (/rv).
Content-Format 836 MUST be supported by the Registrar for the /rv
resource. If the "ct" attribute is not indicated for the /rv
resource in the link format description, this implies that at least
format 836 is supported.
Note that this specification allows for voucher-cose+cbor format
requests and vouchers to be transmitted over HTTPS, as well as for
voucher-cms+json and other formats yet to be defined over CoAP. The
burden for this flexibility is placed upon the Registrar. A Pledge
on constrained hardware is expected to support a single format only.
The Pledge and MASA need to support one or more formats (at least
format 836) for the voucher and for the voucher request. The MASA
needs to support all formats that the Pledge supports.
Section 11 details how the Pledge discovers the Registrar and Join
Proxy in different deployment scenarios.
6.2.1. RFC8995 Telemetry Returns
[RFC8995] defines two telemetry returns from the Pledge which are
sent to the Registrar. These are the BRSKI Status Telemetry
[RFC8995], Section 5.7 and the Enrollment Status Telemetry [RFC8995],
Section 5.9.4. These are two POST operations made the by Pledge at
two key steps in the process.
[RFC8995] defines the content of these POST operations in CDDL, which
are serialized as JSON. This document extends the list of acceptable
formats to CBOR as well as JSON, using the rules from [RFC8610].
The existing JSON format is described as CoAP Content-Format 50
("application/json"), and it MAY be supported. The new CBOR format
described as CoAP Content-Format 60 ("application/cbor"), MUST be
supported by the Registrar for both the /vs and /es resources.
6.3. Join Proxy options
[I-D.ietf-anima-constrained-join-proxy] specifies the details for a
stateful and stateless constrained Join Proxy which is equivalent to
[RFC8995], Section 4.
Richardson, et al. Expires 8 January 2024 [Page 14]
Internet-Draft Constrained BRSKI July 2023
6.4. Extensions to BRSKI
The following section explains extension within the BRSKI/CoAP
connection itself. Section 10 explains ways in which a pledge may
discover the capability to use constrained vouchers, and to use the
CoAPS transport.
6.4.1. CoAP EST Resource Discovery and BRSKI
Once the Pledge discovers an IP address and port number that connects
to the Registrar (probably via a Join Proxy), and it establishes a
DTLS connection.
No further discovery of hosts or port numbers is required, but a
pledge that can do more than one kind of enrollment (future work
offers protocols other than [RFC9148]), then a pledge may need to use
CoAP Discovery to determine what other protocols are available.
A Pledge that only supports the EST-coaps enrollment method SHOULD
NOT use CoAP discovery for BRSKI/EST resources. It is more efficient
to just try the supported enrollment method via the well-known BRSKI/
EST-coaps resources. This also avoids the Pledge having to do any
CoRE Link Format parsing, which is specified in [RFC9148],
Section 4.1.
The Registrar MUST support all of the EST resources at their default
".well-known" locations (on the specified port) as well as any
server-specific shorter form that might also be supported.
However, if discovery is done by the Pledge, it is possible for the
Registrar to return references to resources which are on different
port numbers. The Registrar SHOULD NOT use different ports numbers
by default, because a Pledge that is connected via a Join Proxy can
only access a single UDP port.
A Pledge that receives different port numbers or names SHOULD ignore
those port numbers and continue to use the DTLS connection that it
has already created. Or it MAY fail the entire transaction and look
for another Join Proxy/Registrar to do onboarding with. (If the
resources without the port numbers do not work, then the Pledge will
fail anyway)
A Registrar configured to never use Join Proxies MAY be configured to
use multiple port numbers. Therefore a Registrar MUST host all
discoverable BRSKI resources on the same (UDP) server port that the
Pledge's DTLS connection is using. However, using the same UDP
server port for all resources allows the Pledge to continue via the
same DTLS connection which is more efficient.
Richardson, et al. Expires 8 January 2024 [Page 15]
Internet-Draft Constrained BRSKI July 2023
6.4.2. CoAP responses
[RFC8995], Section 5 defines a number of HTTP response codes that the
Registrar is to return when certain conditions occur.
The 401, 403, 404, 406 and 415 response codes map directly to CoAP
codes 4.01, 4.03, 4.04, 4.06 and 4.15.
The 202 Retry process which occurs in the voucher request, is to be
handled in the same way as Section 5.7 of [RFC9148] process for
Delayed Responses.
6.5. Extensions to EST-coaps
This document extends [RFC9148], and it inherits the functions
described in that document: specifically, the mandatory Simple
(Re-)Enrollment (/sen and /sren) and Certification Authority
certificates request (/crts). Support for CSR Attributes Request
(/att) and server-side key generation (/skg, /skc) remains optional
for the EST server.
Collecting the resource definitions from both [RFC8995], [RFC7030],
and [RFC9148] results in the following shorter forms of URI paths for
the commonly used resources:
+=================+=========================+===============+
| BRSKI + EST | Constrained BRSKI + EST | Well-known |
| | | URI namespace |
+=================+=========================+===============+
| /requestvoucher | /rv | brski |
+-----------------+-------------------------+---------------+
| /voucher_status | /vs | brski |
+-----------------+-------------------------+---------------+
| /csrattrs | /att | est |
+-----------------+-------------------------+---------------+
| /simpleenroll | /sen | est |
+-----------------+-------------------------+---------------+
| /cacerts | /crts | est |
+-----------------+-------------------------+---------------+
| /enrollstatus | /es | brski |
+-----------------+-------------------------+---------------+
| /simplereenroll | /sren | est |
+-----------------+-------------------------+---------------+
Table 2: BRSKI/EST URI paths mapping to Constrained
BRSKI/EST short URI paths
Richardson, et al. Expires 8 January 2024 [Page 16]
Internet-Draft Constrained BRSKI July 2023
6.5.1. Pledge Extensions
This section defines extensions to the BRSKI Pledge, which are
applicable during the BRSKI bootstrap procedure. A Pledge which only
supports the EST-coaps enrollment method, SHOULD NOT use discovery
for EST-coaps resources, because it is more efficient to enroll (e.g.
/sen) via the well-known EST resource on the current DTLS connection.
This avoids an additional round-trip of packets and avoids the Pledge
having to unnecessarily implement CoRE Link Format parsing.
A constrained Pledge SHOULD NOT perform the optional EST "CSR
attributes request" (/att) to minimize network traffic. The Pledge
selects which attributes to include in the CSR.
One or more Subject Distinguished Name fields MUST be included. If
the Pledge has no specific information on what attributes/fields are
desired in the CSR, it MUST use the Subject Distinguished Name fields
from its IDevID unmodified. The Pledge can receive such information
via the voucher (encoded in a vendor-specific way) or via some other,
out-of-band means.
A constrained Pledge MAY use the following optimized EST-coaps
procedure to minimize network traffic.
1. if the voucher, that validates the current Registrar, contains a
single pinned domain CA certificate, the Pledge provisionally
considers this certificate as the EST trust anchor, as if it were
the result of "CA certificates request" (/crts) to the Registrar.
2. Using this CA certificate as trust anchor it proceeds with EST
simple enrollment (/sen) to obtain its provisionally trusted
LDevID certificate.
3. If the Pledge validates that the trust anchor CA was used to sign
its LDevID certificate, the Pledge accepts the pinned domain CA
certificate as the legitimate trust anchor CA for the Registrar's
domain and accepts the associated LDevID certificate.
4. If the trust anchor CA was NOT used to sign its LDevID
certificate, the Pledge MUST perform an actual "CA certificates
request" (/crts) to the EST server to obtain the EST CA trust
anchor(s) since these can differ from the (temporary) pinned
domain CA.
Richardson, et al. Expires 8 January 2024 [Page 17]
Internet-Draft Constrained BRSKI July 2023
5. When doing this /crts request, the Pledge MAY use a CoAP Accept
Option with value 287 ("application/pkix-cert") to limit the
number of returned EST CA trust anchors to only one. A
constrained Pledge MAY support only this format in a /crts
response, per Section 5.3 of [RFC9148].
6. If the Pledge cannot obtain the single CA certificate or the
finally validated CA certificate cannot be chained to the LDevID
certificate, then the Pledge MUST abort the enrollment process
and report the error using the enrollment status telemetry (/es).
Note that even though the Pledge may avoid performing any /crts
request using the above EST-coaps procedure during bootstrap, it
SHOULD support retrieval of the trust anchor CA periodically as
detailed in the next section.
6.5.2. EST-client Extensions
This section defines extensions to EST-coaps clients, used after the
BRSKI bootstrap procedure is completed. (Note that such client is
not called "Pledge" in this section, since it is already enrolled
into the domain.) A constrained EST-coaps client MAY support only
the Content-Format 287 ("application/pkix-cert") in a /crts response,
per Section 5.3 of [RFC9148]. In this case, it can only store one
trust anchor of the domain.
An EST-coaps client that has an idea of the current time (internally,
or via NTP) SHOULD consider the validity time of the trust anchor CA,
and MAY begin requesting a new trust anchor CA using the /crts
request when the CA has 50% of it's validity time (notAfter -
notBefore) left. A client without access to the current time cannot
decide if the trust anchor CA has expired, and SHOULD poll
periodically for a new trust anchor using the /crts request at an
interval of approximately 1 month. An EST-coaps server SHOULD
include the CoAP ETag Option in every response to a /crts request, to
enable clients to perform low-overhead validation whether their trust
anchor CA is still valid. The EST-coaps client SHOULD store the ETag
resulting from a /crts response in memory and SHOULD use this value
in an ETag Option in its next GET /crts request.
The above-mentioned limitation that an EST-coaps client may support
only one trust anchor CA is not an issue in case the domain trust
anchor remains stable. However, special consideration is needed for
cases where the domain trust anchor can change over time. Such a