-
Notifications
You must be signed in to change notification settings - Fork 4
/
constrained-voucher-24.txt
4928 lines (3358 loc) · 193 KB
/
constrained-voucher-24.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: 8995, 9148 (if approved) P. van der Stok
Intended status: Standards Track vanderstok consultancy
Expires: 4 September 2024 P. Kampanakis
Cisco Systems
E. Dijk
IoTconsultancy.nl
3 March 2024
Constrained Bootstrapping Remote Secure Key Infrastructure (cBRSKI)
draft-ietf-anima-constrained-voucher-24
Abstract
This document defines the Constrained Bootstrapping Remote Secure Key
Infrastructure (cBRSKI) protocol, which provides a solution for
secure zero-touch onboarding 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. cBRSKI 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 data is
encoded in JSON, cBRSKI uses a compact CBOR-encoded voucher. The
BRSKI voucher data definition 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 DTLS-secured CoAP
(CoAPS). This document Updates RFC 8995 and RFC 9148.
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:anima@ietf.org), 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 4 September 2024 [Page 1]
Internet-Draft Constrained BRSKI (cBRSKI) March 2024
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 4 September 2024.
Copyright Notice
Copyright (c) 2024 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 . . . . . . . . . . . . . . . . . . . . . . . . . 6
3. Requirements Language . . . . . . . . . . . . . . . . . . . . 6
4. Overview of Protocol . . . . . . . . . . . . . . . . . . . . 7
5. Updates to RFC 8995 and RFC 9148 . . . . . . . . . . . . . . 8
6. BRSKI-EST Protocol . . . . . . . . . . . . . . . . . . . . . 9
6.1. DTLS Connection . . . . . . . . . . . . . . . . . . . . . 10
6.1.1. DTLS Version . . . . . . . . . . . . . . . . . . . . 10
6.1.2. TLS Client Certificates: IDevID authentication . . . 10
6.1.3. DTLS Handshake Fragmentation Considerations . . . . . 10
6.1.4. Registrar and the Server Name Indicator (SNI) . . . . 11
6.1.5. Registrar Server Certificate Requirements . . . . . . 12
6.2. cBRSKI Join Proxy . . . . . . . . . . . . . . . . . . . . 12
6.3. Request URIs, Resource Discovery and Content Formats . . 12
6.3.1. RFC8995 Telemetry Returns . . . . . . . . . . . . . . 14
Richardson, et al. Expires 4 September 2024 [Page 2]
Internet-Draft Constrained BRSKI (cBRSKI) March 2024
6.3.2. CoAP Resources Table . . . . . . . . . . . . . . . . 14
6.4. CoAP Responses . . . . . . . . . . . . . . . . . . . . . 15
6.5. Extensions to EST-coaps . . . . . . . . . . . . . . . . . 15
6.5.1. Pledge enrollment procedure . . . . . . . . . . . . . 16
6.5.2. Renewal of CA certificates . . . . . . . . . . . . . 17
6.5.3. Change of domain trust anchor(s) . . . . . . . . . . 17
6.5.4. Re-enrollment procedure . . . . . . . . . . . . . . . 17
6.5.5. Multipart Content Format for CA certificates (/crts)
Resource . . . . . . . . . . . . . . . . . . . . . . 19
6.6. Registrar Extensions . . . . . . . . . . . . . . . . . . 20
7. BRSKI-MASA Protocol . . . . . . . . . . . . . . . . . . . . . 20
7.1. Protocol and Formats . . . . . . . . . . . . . . . . . . 20
7.2. Registrar Voucher Request . . . . . . . . . . . . . . . . 21
7.3. MASA and the Server Name Indicator (SNI) . . . . . . . . 21
7.4. Registrar Client Certificate Requirement . . . . . . . . 22
8. Pinning in Voucher Artifacts . . . . . . . . . . . . . . . . 22
8.1. Registrar Identity Selection and Encoding . . . . . . . . 22
8.2. MASA Pinning Policy . . . . . . . . . . . . . . . . . . . 23
8.3. Pinning of Raw Public Keys . . . . . . . . . . . . . . . 24
8.4. Considerations for use of IDevID-Issuer . . . . . . . . . 25
9. Artifacts . . . . . . . . . . . . . . . . . . . . . . . . . . 26
9.1. Example Artifacts . . . . . . . . . . . . . . . . . . . . 27
9.1.1. Example Pledge voucher request (PVR) artifact . . . . 27
9.1.2. Example Registrar voucher request (RVR) artifact . . 27
9.1.3. Example voucher artifacts . . . . . . . . . . . . . . 28
9.2. Signing voucher and voucher request artifacts with
COSE . . . . . . . . . . . . . . . . . . . . . . . . . . 29
9.2.1. Signing of Registrar Voucher Request (RVR) . . . . . 30
9.2.2. Signing of Pledge Voucher Request (PVR) . . . . . . . 31
9.2.3. Signing of voucher by MASA . . . . . . . . . . . . . 32
10. Extensions to Discovery . . . . . . . . . . . . . . . . . . . 33
10.1. Discovery Operations by a Pledge . . . . . . . . . . . . 34
10.1.1. Examples . . . . . . . . . . . . . . . . . . . . . . 35
10.2. Discovery Operations by a Join Proxy . . . . . . . . . . 36
11. Deployment-specific Discovery Considerations . . . . . . . . 36
11.1. 6TiSCH Deployments . . . . . . . . . . . . . . . . . . . 36
11.2. IP networks using GRASP . . . . . . . . . . . . . . . . 36
11.3. IP networks using mDNS . . . . . . . . . . . . . . . . . 37
11.4. Thread networks using Mesh Link Establishment (MLE) . . 37
12. Design and Implementation Considerations . . . . . . . . . . 37
12.1. Voucher Format and Encoding . . . . . . . . . . . . . . 38
12.2. Use of cBRSKI with HTTPS . . . . . . . . . . . . . . . . 38
13. Raw Public Key Variant . . . . . . . . . . . . . . . . . . . 39
13.1. Introduction and Scope . . . . . . . . . . . . . . . . . 39
13.2. The Registrar Trust Anchor . . . . . . . . . . . . . . . 40
13.3. The Pledge Voucher Request . . . . . . . . . . . . . . . 40
13.4. The Voucher Response . . . . . . . . . . . . . . . . . . 40
13.5. The Enrollment Phase . . . . . . . . . . . . . . . . . . 41
Richardson, et al. Expires 4 September 2024 [Page 3]
Internet-Draft Constrained BRSKI (cBRSKI) March 2024
14. Pledge Discovery of Onboarding and Enrollment Options . . . . 41
14.1. Pledge Discovery Query for All BRSKI Resources . . . . . 41
14.2. Pledge Discovery Query for the Root BRSKI Resource . . . 43
14.3. Usage of ct Attribute . . . . . . . . . . . . . . . . . 43
14.4. EST-coaps Resource Discovery . . . . . . . . . . . . . . 44
15. Security Considerations . . . . . . . . . . . . . . . . . . . 45
15.1. Duplicate serial-numbers . . . . . . . . . . . . . . . . 45
15.2. IDevID security in Pledge . . . . . . . . . . . . . . . 46
15.3. Security of CoAP and UDP protocols . . . . . . . . . . . 47
15.4. Registrar Certificate may be self-signed . . . . . . . . 48
15.5. Use of RPK alternatives to proximity-registrar-cert . . 48
15.6. MASA support of CoAPS . . . . . . . . . . . . . . . . . 48
16. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 49
16.1. Resource Type Link Target Attribute Values Registry . . 49
16.2. Media Types Registry . . . . . . . . . . . . . . . . . . 49
16.2.1. application/voucher+cose . . . . . . . . . . . . . . 50
16.3. CoAP Content-Format Registry . . . . . . . . . . . . . . 50
16.4. Update to BRSKI Parameters Registry . . . . . . . . . . 50
16.5. Structured Syntax Suffixes Registry . . . . . . . . . . 51
17. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 52
18. Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . 53
19. References . . . . . . . . . . . . . . . . . . . . . . . . . 54
19.1. Normative References . . . . . . . . . . . . . . . . . . 54
19.2. Informative References . . . . . . . . . . . . . . . . . 57
Appendix A. Library Support for BRSKI . . . . . . . . . . . . . 60
A.1. OpensSSL . . . . . . . . . . . . . . . . . . . . . . . . 61
A.2. mbedTLS . . . . . . . . . . . . . . . . . . . . . . . . . 62
Appendix B. cBRSKI Message Examples . . . . . . . . . . . . . . 63
B.1. enrollstatus . . . . . . . . . . . . . . . . . . . . . . 63
B.2. voucher_status . . . . . . . . . . . . . . . . . . . . . 65
Appendix C. COSE-signed Voucher (Request) Examples . . . . . . . 66
C.1. Pledge, Registrar and MASA Keys . . . . . . . . . . . . . 66
C.1.1. Pledge IDevID private key . . . . . . . . . . . . . . 66
C.1.2. Registrar private key . . . . . . . . . . . . . . . . 66
C.1.3. MASA private key . . . . . . . . . . . . . . . . . . 67
C.2. Pledge, Registrar, Domain CA and MASA Certificates . . . 67
C.2.1. Pledge IDevID Certificate . . . . . . . . . . . . . . 67
C.2.2. Registrar Certificate . . . . . . . . . . . . . . . . 69
C.2.3. Domain CA Certificate . . . . . . . . . . . . . . . . 71
C.2.4. MASA Certificate . . . . . . . . . . . . . . . . . . 73
C.3. COSE-signed Pledge Voucher Request (PVR) . . . . . . . . 75
C.4. COSE-signed Registrar Voucher Request (RVR) . . . . . . . 76
C.5. COSE-signed Voucher from MASA . . . . . . . . . . . . . . 79
Appendix D. Generating Certificates with OpenSSL . . . . . . . . 81
Appendix E. Pledge Device Class Profiles . . . . . . . . . . . . 85
E.1. Minimal Pledge . . . . . . . . . . . . . . . . . . . . . 85
E.2. Typical Pledge . . . . . . . . . . . . . . . . . . . . . 86
E.3. Full-featured Pledge . . . . . . . . . . . . . . . . . . 86
Richardson, et al. Expires 4 September 2024 [Page 4]
Internet-Draft Constrained BRSKI (cBRSKI) March 2024
E.4. Comparison Chart of Pledge Classes . . . . . . . . . . . 86
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 88
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) onboarding of new (unconfigured) devices. In it, these
new devices are called "pledges", equipped with a factory-installed
Initial Device Identifier (IDevID) (see [ieee802-1AR]). Using the
IDevID the pledges are securely 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 the constrained voucher artifact and
voucher request artifact defined in [RFC8366bis] and specifies a
constrained version of the BRSKI protocol: cBRSKI. The cBRSKI
protocol uses the CoAP-based version of EST (EST-coaps from
[RFC9148]) rather than the EST over HTTPS [RFC7030]. cBRSKI is
itself scalable to multiple resource levels through the definition of
optional functions. Appendix E illustrates this.
In BRSKI, the [RFC8366] voucher data is by default serialized to JSON
with a signature in CMS [RFC5652]. This document uses the new CBOR
[RFC8949] voucher data serialization, as defined by [RFC8366bis], and
applies a new COSE [RFC9052] signature format as defined in
Section 9.
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 DTLS (CoAPS). The HTTP connection
(between Registrar and MASA) is to be protected using TLS (HTTPS).
Section 4 to Section 10 define the default cBRSKI protocol, by means
of additions to and modifications of regular BRSKI. Section 11
considers some variations of the protocol, specific to particular
deployments or IoT networking technologies. Next in Section 12, some
considerations for the design and implementation of cBRSKI components
are provided.
Richardson, et al. Expires 4 September 2024 [Page 5]
Internet-Draft Constrained BRSKI (cBRSKI) March 2024
Section 13 introduces a variant of cBRSKI for the most-constrained
Pledges: the use of Raw Public Keys (RPK). This variant achieves
smaller sizes of data objects and avoids doing certain costly PKIX
verification operations on the Pledge.
Section 14 provides more details on how a Pledge may discover the
various onboarding/enrollment options that a Registrar provides.
Implementing these methods is optional for a Pledge.
2. Terminology
The following terms are defined in [RFC8366bis], and are used
identically as in that document: artifact, domain, Join Registrar/
Coordinator (JRC), malicious Registrar, Manufacturer Authorized
Signing Authority (MASA), Pledge, Registrar, Onboarding, Owner,
Voucher Data and Voucher.
The following terms from [RFC8995] are used identically as in that
document: Domain CA, enrollment, IDevID, Join Proxy, LDevID,
manufacturer, nonced, nonceless, PKIX.
The following terms from [RFC7030] are used identically as in that
document: Explicit Trust Anchor (TA), Explicit TA database, Third-
party TA.
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. The
ellipsis ("...") in a CBOR diagnostic notation byte string denotes a
further sequence of bytes that is not shown for brevity. This
notation is defined in [I-D.ietf-cbor-edn-literals].
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.
Richardson, et al. Expires 4 September 2024 [Page 6]
Internet-Draft Constrained BRSKI (cBRSKI) March 2024
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.
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, though 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 (Section 6) for the protocol between Pledge and
Registrar, and BRSKI-MASA (Section 7) for the protocol between the
Registrar and the MASA.
Time-based vouchers are supported, but given that constrained devices
are 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 CBOR voucher data encoding for the
constrained voucher and the constrained voucher request, which are
used by cBRSKI.
Richardson, et al. Expires 4 September 2024 [Page 7]
Internet-Draft Constrained BRSKI (cBRSKI) March 2024
The constrained voucher request MUST be signed by the Pledge. COSE
[RFC9052] is used for signing as defined in Section 9.2. It signs
using the private key associated with its IDevID certificate.
The constrained voucher MUST be signed by the MASA. Also in this
case, COSE is used for signing.
For the constrained voucher request (PVR) the default method for the
Pledge to identify the Registrar is using the Registrar's full PKIX
certificate. But when operating PKIX-less as described in
Section 13, the Registrar's Raw Public Key (RPK) is used for this.
For the constrained voucher the default method to indicate ("pin") a
trusted domain identity is the domain's PKIX CA certificate, but when
operating PKIX-less instead the RPK of the Registrar is pinned.
For certificates, cBRSKI currently uses the X.509 format, like BRSKI.
The protocol and data formats are defined such that future extension
to other certificate formats is enabled. For example, CBOR-encoded
and COSE-signed C509 certificates ([I-D.ietf-cose-cbor-encoded-cert])
may provide data size savings as well as code sharing benefits with
CBOR/COSE libraries, when applied to cBRSKI.
The BRSKI architecture 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 RPK
operations only. Based upon this, the MASA can select which
attributes to use in the voucher data for certain operations, like
the pinning of the Registrar or domain identity.
5. Updates to RFC 8995 and RFC 9148
This section details the ways in which this document updates other
RFCs. The terminology for Updates, Amends and Extends is taken from
[I-D.kuehlewind-update-tag].
This document Updates [RFC8995]. It Amends [RFC8995] because it:
* clarifies how pinning in vouchers is done (Section 8),
* adopts clearer explanation of the TLS Server Name Indicator (SNI)
in Section 6.1.4 and Section 7.3,
* clarifies when new trust anchors should be retrieved by a Pledge
(Section 6.5.1),
Richardson, et al. Expires 4 September 2024 [Page 8]
Internet-Draft Constrained BRSKI (cBRSKI) March 2024
* clarifies what kinds of Extended Key Usage attributes are
appropriate for each certificate (Section 6.1.5, Section 7.4).
It Extends [RFC8995] as follows:
* defines the use of CoAP for the BRSKI protocol,
* makes some messages optional if the results can be inferred from
other validations (Section 6.5),
* extends the BRSKI-EST protocol (Section 6, Section 9.2) to carry
the new "application/voucher+cose" format.
* extends the BRSKI-MASA protocol (Section 7, Section 9.2) to carry
the new "application/voucher+cose" format.
This document Updates [RFC9148]. It Amends [RFC9148] because it:
* defines stricter DTLS requirements (Section 6.1)),
* details how an EST-coaps client handles certificate renewal and
re-enrollment (Section 6.5),
* details how an EST-coaps server processes a "CA certificates"
request for content format 287 ("application/pkix-cert")
(Section 6.6).
It Extends [RFC9148] as follows:
* adds enrollment status telemetry to the certificate renewal
procedure (Section 6.5.4),
* adds a new media type for the CA certificates (/crts) resource
(Section 6.5.5).
6. BRSKI-EST Protocol
This section describes the extensions to both BRSKI [RFC8995] and
EST-coaps [RFC9148] protocol operations between Pledge and Registrar.
The extensions are targeting low-resource networks with small
packets, based on CoAP and DTLS.
Richardson, et al. Expires 4 September 2024 [Page 9]
Internet-Draft Constrained BRSKI (cBRSKI) March 2024
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.2. Regardless of the Join Proxy presence or particular
mechanism used, the DTLS connection should operate identically. The
cBRSKI and EST-coaps requests and responses for onboarding 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 cBRSKI. 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] (as a separate entity from above
Registrar) 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.
6.1.3. DTLS Handshake Fragmentation Considerations
DTLS includes a mechanism to fragment handshake messages. This is
described in Section 4.4 of [RFC9147]. cBRSKI will often be used with
a Join Proxy, described in Section 6.2, 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 IPv6 MTU
guaranteed on 6LoWPAN networks, which is 1280 bytes.
Richardson, et al. Expires 4 September 2024 [Page 10]
Internet-Draft Constrained BRSKI (cBRSKI) March 2024
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 EST-coaps protocol, the CoAP Block-wise
transfer mechanism [RFC7959] will be automatically 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, when
operating as a DTLS 1.2 client.
A Pledge/EST-client operating as DTLS 1.3 client, MUST use the (D)TLS
record size limit extensions ("record_size_limit") defined in
Section 4 of [RFC8449], with RecordSizeLimit set to a value between
512 and 1024.
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 ([RFC9525]) 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 it receives from a Pledge.
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
Richardson, et al. Expires 4 September 2024 [Page 11]
Internet-Draft Constrained BRSKI (cBRSKI) March 2024
* 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.
6.1.5. Registrar Server Certificate Requirements
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. See Section 6.1.5 for Registrar client certificate
requirements.
6.2. cBRSKI Join Proxy
[I-D.ietf-anima-constrained-join-proxy] specifies the details for a
stateful and stateless constrained Join Proxy which is equivalent to
the Proxy defined in [RFC8995], Section 4. See also Section 10 for
more details on discovery of a Join Proxy by a Pledge, and discovery
of a Registrar by a Join Proxy.
6.3. Request URIs, Resource Discovery and Content Formats
cBRSKI operates using CoAP over DTLS, with request URIs using the
coaps scheme. The Pledge operates in CoAP client role. To keep the
protocol messages small the EST-coaps and cBRSKI request URIs are
shorter than the respective EST and BRSKI URIs.
During the BRSKI onboarding on an IPv6 network these request URIs
have the following form:
coaps://[<link-local-ipv6>]:<port>/.well-known/brski/<short-name>
coaps://[<link-local-ipv6>]:<port>/.well-known/est/<short-name>
where <link-local-ipv6> is the discovered link-local IPv6 address of
a Join Proxy, and <port> is the discovered port of the Join Proxy
that is used to offer the BRSKI proxy functionality.
<short-name> is the short resource name for the cBRSKI and EST-coaps
resources. For EST-coaps, Section 5.1 of [RFC9148] defines the CoAP
<short-name> resource names. For cBRSKI, this document defines the
short resource names based on the [RFC8995] long HTTP resource names.
See Table 1 for a summary of these resource names.
Richardson, et al. Expires 4 September 2024 [Page 12]
Internet-Draft Constrained BRSKI (cBRSKI) March 2024
Section 11 details how the Pledge discovers a Join Proxy link-local
address and port in different deployment scenarios.
The request URI formats defined above enable the Pledge to perform
onboarding/enrollment without requiring to perform any discovery of
the available onboarding options, voucher formats, BRSKI/EST
resources, enrollment protocols, and so on. This is helpful for a
majority of constrained Pledges that would support only a single set
of options. However, for Pledges that do support multiple options,
sending CoAP discovery queries to the Registrar is supported as
defined in Section 14.
Because a Pledge only has indirect access to the Registrar via a
single port on the Join Proxy, the Registrar MUST host all BRSKI/EST-
coaps resources on the same (UDP) server IP address and port. This
is the address and port where a Join Proxy would relay DTLS records
from the Pledge to.
Although the request URI templates include IP address, scheme and
port, in practice the CoAP request sent over the secure DTLS
connection only encodes the request URI. For example, a Pledge that
skips resource discovery operations just sends the initial CoAP
voucher request as follows:
REQ: POST /.well-known/brski/rv
Content-Format: 836
Payload : (COSE-signed Pledge Voucher Request, PVR)
Note that only Content-Format 836 ("application/voucher+cose") is
defined in this document for the payload sent to the voucher request
resource (/rv). Content-Format 836 MUST be supported by the
Registrar for the /rv resource and it MAY support additional formats.
The Pledge MAY also indicate in the request the desired format of the
(voucher) response, using the Accept Option. An example of using
this option in the request is as follows:
REQ: POST /.well-known/brski/rv
Content-Format: 836
Accept : 836
Payload : (COSE-signed Pledge Voucher Request, PVR)
If the Accept Option is omitted in the request, the response format
follows from the request payload format (which is 836).
Richardson, et al. Expires 4 September 2024 [Page 13]
Internet-Draft Constrained BRSKI (cBRSKI) March 2024
Note that this specification allows for voucher+cose 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.
6.3.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 CoAP POST request 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 this with an
additional CBOR format, derived using the CDDL rules from [RFC8610].
The new CBOR format has CoAP Content-Format 60 ("application/cbor")
and MUST be supported by the Registrar for both the /vs and /es
resources. The existing JSON format has CoAP Content-Format 50
("application/json") and also MUST be supported by the Registrar. A
Pledge MUST support at least the new CBOR format and it MAY support
the JSON format.
6.3.2. CoAP Resources Table
This document inherits EST-coaps [RFC9148] functions: 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-coaps server.
Table 1 summarizes the resources used in cBRSKI. It includes both
the short-name BRSKI resources and the EST-coaps resources.
Richardson, et al. Expires 4 September 2024 [Page 14]
Internet-Draft Constrained BRSKI (cBRSKI) March 2024
+=================+====================+===============+============+
| BRSKI + EST | cBRSKI + EST-coaps | Well-known | Required |
| | <short-name> | URI | for |
| | | namespace | Registrar? |
+=================+====================+===============+============+
| /enrollstatus | /es | brski | MUST |
+-----------------+--------------------+---------------+------------+
| /requestvoucher | /rv | brski | MUST |
+-----------------+--------------------+---------------+------------+
| /voucher_status | /vs | brski | MUST |
+-----------------+--------------------+---------------+------------+
| /cacerts | /crts | est | MUST |
+-----------------+--------------------+---------------+------------+
| /csrattrs | /att | est | MAY |
+-----------------+--------------------+---------------+------------+
| /simpleenroll | /sen | est | MUST |
+-----------------+--------------------+---------------+------------+
| /simplereenroll | /sren | est | MUST |
+-----------------+--------------------+---------------+------------+
| /serverkeygen | /skg | est | MAY |
+-----------------+--------------------+---------------+------------+
| /serverkeygen | /skc | est | MAY |
+-----------------+--------------------+---------------+------------+
Table 1: BRSKI/EST resource name mapping to cBRSKI/EST-coaps
short resource name
6.4. 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 the Section 5.7 of [RFC9148] process for
Delayed Responses.
6.5. Extensions to EST-coaps
This section defines extensions to EST-coaps for Pledges (during
initial onboarding), EST-coaps clients (after initial onboarding) and
Registrars (that implement an EST-coaps server). Note that a device
that is already onboarded is not called "Pledge" in this section: it
now acts in the role of an EST-coaps client.
Richardson, et al. Expires 4 September 2024 [Page 15]
Internet-Draft Constrained BRSKI (cBRSKI) March 2024
6.5.1. Pledge enrollment procedure
This section defines optimizations for the EST-coaps protocol as used
by a Pledge. These aim to reduce payload sizes and the number of
messages (round-trips) required for the initial EST enrollment.
A Pledge SHOULD NOT perform the optional EST-coaps "CSR attributes
request" (/att). Instead, the Pledge selects the attributes to
include in the CSR as specified below.
One or more Subject Distinguished Name fields MUST be included in the
CSR. If the Pledge has no specific information on what attributes/
fields are desired in the CSR, which is the common case, it MUST use
the Subject Distinguished Name fields from its IDevID unmodified.
Note that a Pledge MAY receive such specific information via the
voucher data (encoded in a vendor-specific way) or via some other,
out-of-band means.
A Pledge uses the following optimized EST-coaps procedure:
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 a "CA certificates request" (/crts) to the
Registrar.
2. Using this CA certificate as trust anchor it proceeds with EST
simple enrollment (/sen) to obtain a provisionally trusted LDevID
certificate.
3. If the Pledge determines that the pinned domain CA is (1) a root
CA certificate and (2) signer of the LDevID certificate, the
Pledge accepts the pinned domain CA certificate as the legitimate
trust anchor root CA for the Registrar's domain. It also accepts
the LDevID certificate as its new LDevID identity. And steps 4
and 5 are skipped.
4. Otherwise, if the step 3 condition was not met, the Pledge MUST
perform a "CA certificates request" (/crts) to the EST server to
obtain the full set of EST CA trust anchors. It then MUST
attempt to chain the LDevID certificate to one of the CAs in the
set.
5. If the Pledge cannot obtain the set of CA certificates, or it is
unable to create the chain as defined in step 4, the Pledge MUST
abort the enrollment process and report the error using the
enrollment status telemetry (/es).
Richardson, et al. Expires 4 September 2024 [Page 16]
Internet-Draft Constrained BRSKI (cBRSKI) March 2024
6.5.2. Renewal of CA certificates
An EST-coaps client that has an idea of the current time (internally,
or via Network Time Protocol) SHOULD consider the validity time of
the trust anchor CA(s), and MAY begin requesting new trust anchor
certificates(s) 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 trust anchor CA(s) have expired,
and SHOULD poll periodically for a new trust anchor certificate(s)
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.
6.5.3. Change of domain trust anchor(s)
The domain trust anchor(s) may change over time. Such a change may
happen due to relocation of the client device to a new domain, a new
subdomain, or due to a key update of a trust anchor as described in
[RFC4210], Section 4.4.
From the client's viewpoint, a trust anchor change happens during
EST-coaps re-enrollment: since a change of domain CA requires all
devices operating under the old domain CA to acquire a new LDevID
certificate issued by the new domain CA. A client's re-enrollment
may be triggered by various events, such as an instruction to re-
enroll sent by a domain entity, or an imminent expiry of its LDevID
certificate, or other. How the re-enrollment is explicitly triggered
on the client by a domain entity, such as a commissioner or a
Registrar, is out of scope of this specification.
The mechanism described in [RFC7030], Section 4.1.3 and [RFC4210],
Section 4.4 for Root CA key update requires four certificates:
OldWithOld, OldWithNew, NewWithOld, and NewWithNew. Of these four,
the OldWithOld certificate is already stored in the client's Explicit
TA database. The other certificates will be provided to the client
in a /crts response, during the EST-coaps re-enrollment procedure.
6.5.4. Re-enrollment procedure
For re-enrollment, the EST-coaps client MUST support the following
EST-coaps procedure. During this procedure the EST-coaps server MAY
re-enroll the client into a new domain or into a new sub-CA within a
domain.
Richardson, et al. Expires 4 September 2024 [Page 17]
Internet-Draft Constrained BRSKI (cBRSKI) March 2024
1. The client connects with DTLS to the EST-coaps server, and
authenticates with its present domain certificate (LDevID) as
usual. The EST-coaps server authenticates itself with its domain
RA certificate that is currently trusted by the client, i.e. it
chains to a trust anchor CA that the client has stored in its
Explicit TA database. This is the OldWithOld trust anchor. The
client checks that the server is a Registration Authority (RA) of
the domain as required by Section 3.6.1 of [RFC7030] before
proceeding.
2. The client performs the simple re-enrollment request (/sren) and
upon success it obtains a new LDevID certificate.
3. The client verifies the new LDevID certificate against its
Explicit TA database. If the new LDevID chains successfully to a
TA, this means trust anchors did not significantly change and the
client MAY skip retrieving the current CA certificates using the
"CA certificates request" (/crts). If it does not chain
successfully, it means trust anchor(s) were changed significantly
and the client MUST retrieve the new domain trust anchors using
the "CA certificates request" (/crts).
4. If the client retrieved new trust anchor(s) in step 3, then it
MUST verify that the new LDevID certificate it obtained in step 2
chains with the new trust anchor(s). If it chains successfully,
the client stores the new trust anchor(s) in its Explicit TA
database, accepts the new LDevID certificate and stops using its
prior LDevID certificate. If it does not chain successfully, the
client MUST NOT update its LDevID certificate, and it MUST NOT
update its Explicit TA database, and the client MUST abort the
enrollment process and MUST attempt to report the error to the
EST-coaps server using enrollment status telemetry (/es).
Note that even though the EST-coaps client may skip the /crts request
in step 3 at this time, it SHOULD still support retrieval of the
trust anchors periodically as detailed in Section 6.5.2.
Note that an EST-coaps server that is also a Registrar will already
support the enrollment status telemetry resource (/es) in step 4,
while an EST-coaps server that purely implements [RFC9148], and not
the present specification, will not support this resource.