-
Notifications
You must be signed in to change notification settings - Fork 17
/
rfc7517.ja.html
2918 lines (2233 loc) · 145 KB
/
rfc7517.ja.html
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en"><head><title>JSON Web Key (JWK)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="JSON Web Key (JWK)">
<meta name="keywords" content="JavaScript Object Notation, JSON, JSON Object Signing and Encryption, JOSE, JSON Web Signature, JWS, JSON Web Encryption, JWE, JSON Web Key, JWK, JSON Web Algorithms, JWA">
<meta name="generator" content="xml2rfc v1.37pre1 (http://xml.resource.org/)">
<style type='text/css'><!--
body {
font-family: verdana, charcoal, helvetica, arial, sans-serif;
font-size: small; color: #000; background-color: #FFF;
margin: 2em;
}
h1, h2, h3, h4, h5, h6 {
font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
font-weight: bold; font-style: normal;
}
h1 { color: #900; background-color: transparent; text-align: right; }
h3 { color: #333; background-color: transparent; }
td.RFCbug {
font-size: x-small; text-decoration: none;
width: 30px; height: 30px; padding-top: 2px;
text-align: justify; vertical-align: middle;
background-color: #000;
}
td.RFCbug span.RFC {
font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
font-weight: bold; color: #666;
}
td.RFCbug span.hotText {
font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
font-weight: normal; text-align: center; color: #FFF;
}
table.TOCbug { width: 30px; height: 15px; }
td.TOCbug {
text-align: center; width: 30px; height: 15px;
color: #FFF; background-color: #900;
}
td.TOCbug a {
font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
font-weight: bold; font-size: x-small; text-decoration: none;
color: #FFF; background-color: transparent;
}
td.header {
font-family: arial, helvetica, sans-serif; font-size: x-small;
vertical-align: top; width: 33%;
color: #FFF; background-color: #666;
}
td.author { font-weight: bold; font-size: x-small; margin-left: 4em; }
td.author-text { font-size: x-small; }
/* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
a.info {
/* This is the key. */
position: relative;
z-index: 24;
text-decoration: none;
}
a.info:hover {
z-index: 25;
color: #FFF; background-color: #900;
}
a.info span { display: none; }
a.info:hover span.info {
/* The span will display just on :hover state. */
display: block;
position: absolute;
font-size: smaller;
top: 2em; left: -5em; width: 15em;
padding: 2px; border: 1px solid #333;
color: #900; background-color: #EEE;
text-align: left;
}
a { font-weight: bold; }
a:link { color: #900; background-color: transparent; }
a:visited { color: #633; background-color: transparent; }
a:active { color: #633; background-color: transparent; }
p { margin-left: 2em; margin-right: 2em; }
p.copyright { font-size: x-small; }
p.toc { font-size: small; font-weight: bold; margin-left: 3em; }
table.toc { margin: 0 0 0 3em; padding: 0; border: 0; vertical-align: text-top; }
td.toc { font-size: small; font-weight: bold; vertical-align: text-top; }
ol.text { margin-left: 2em; margin-right: 2em; }
ul.text { margin-left: 2em; margin-right: 2em; }
li { margin-left: 3em; }
/* RFC-2629 <spanx>s and <artwork>s. */
em { font-style: italic; }
strong { font-weight: bold; }
dfn { font-weight: bold; font-style: normal; }
cite { font-weight: normal; font-style: normal; }
tt { color: #036; }
tt, pre, pre dfn, pre em, pre cite, pre span {
font-family: "Courier New", Courier, monospace; font-size: small;
}
pre {
text-align: left; padding: 4px;
color: #000; background-color: #CCC;
}
pre dfn { color: #900; }
pre em { color: #66F; background-color: #FFC; font-weight: normal; }
pre .key { color: #33C; font-weight: bold; }
pre .id { color: #900; }
pre .str { color: #000; background-color: #CFF; }
pre .val { color: #066; }
pre .rep { color: #909; }
pre .oth { color: #000; background-color: #FCF; }
pre .err { background-color: #FCC; }
/* RFC-2629 <texttable>s. */
table.all, table.full, table.headers, table.none {
font-size: small; text-align: center; border-width: 2px;
vertical-align: top; border-collapse: collapse;
}
table.all, table.full { border-style: solid; border-color: black; }
table.headers, table.none { border-style: none; }
th {
font-weight: bold; border-color: black;
border-width: 2px 2px 3px 2px;
}
table.all th, table.full th { border-style: solid; }
table.headers th { border-style: none none solid none; }
table.none th { border-style: none; }
table.all td {
border-style: solid; border-color: #333;
border-width: 1px 2px;
}
table.full td, table.headers td, table.none td { border-style: none; }
hr { height: 1px; }
hr.insert {
width: 80%; border-style: none; border-width: 0;
color: #CCC; background-color: #CCC;
}
--></style>
</head>
<body>
<table border="0" cellpadding="0" cellspacing="2" width="30" align="right">
<tr>
<td class="RFCbug">
<span class="RFC"> RFC </span><br /><span class="hotText"> 7517 </span>
</td>
</tr>
<tr><td class="TOCbug"><a href="#toc"> TOC </a><br /></td></tr>
</table>
<table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
<tr><td class="header">Internet Engineering Task Force (IETF)</td><td class="header">M. Jones</td></tr>
<tr><td class="header">Request for Comments: 7517</td><td class="header">Microsoft</td></tr>
<tr><td class="header">Category: Standards Track</td><td class="header">May 2015</td></tr>
<tr><td class="header">ISSN: 2070-1721</td><td class="header"> </td></tr>
</table></td></tr></table>
<h1><br />JSON Web Key (JWK)</h1>
<h3>Abstract</h3>
<p>
JSON Web Key (JWK) とは, 暗号鍵を表現するための Javascript Object Notation (JSON) データ構造である.
本仕様では, 複数の JWK のセットである JWK Set JSON データ構造も定義する.
本仕様で用いる暗号アルゴリズムおよびその識別子は, 別途 JSON Web Algorithms (JWA) 仕様に記載されており, JWA 仕様にて IANA レジストリが設立されている.
</p>
<h3>Status of This Memo</h3>
<p>
This is an Internet Standards Track document.</p>
<p>
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.</p>
<p>
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc7517.</p>
<h3>Copyright Notice</h3>
<p>
Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved.</p>
<p>
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://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 Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.</p>
<a name="toc"></a><hr />
<table border="0" cellpadding="0" cellspacing="2" width="30" align="right">
<tr>
<td class="RFCbug">
<span class="RFC"> RFC </span><br /><span class="hotText"> 7517 </span>
</td>
</tr>
<tr><td class="TOCbug"><a href="#toc"> TOC </a><br /></td></tr>
</table>
<h3>Table of Contents</h3>
<p class="toc">
<a href="#Introduction">1.</a>
Introduction<br />
<a href="#NotationalConventions">1.1.</a>
Notational Conventions<br />
<a href="#Terminology">2.</a>
Terminology<br />
<a href="#ExampleJWK">3.</a>
Example JWK<br />
<a href="#JWKFormat">4.</a>
JSON Web Key (JWK) Format<br />
<a href="#ktyDef">4.1.</a>
"kty" (Key Type) Parameter<br />
<a href="#useDef">4.2.</a>
"use" (Public Key Use) Parameter<br />
<a href="#key_opsDef">4.3.</a>
"key_ops" (Key Operations) Parameter<br />
<a href="#algDef">4.4.</a>
"alg" (Algorithm) Parameter<br />
<a href="#kidDef">4.5.</a>
"kid" (Key ID) Parameter<br />
<a href="#x5uDef">4.6.</a>
"x5u" (X.509 URL) Parameter<br />
<a href="#x5cDef">4.7.</a>
"x5c" (X.509 Certificate Chain) Parameter<br />
<a href="#x5tDef">4.8.</a>
"x5t" (X.509 Certificate SHA-1 Thumbprint) Parameter<br />
<a href="#x5tS256Def">4.9.</a>
"x5t#S256" (X.509 Certificate SHA-256 Thumbprint) Parameter<br />
<a href="#JWKSet">5.</a>
JWK Set Format<br />
<a href="#keysDef">5.1.</a>
"keys" Parameter<br />
<a href="#StringComparison">6.</a>
String Comparison Rules<br />
<a href="#EncryptedJWK">7.</a>
Encrypted JWK and Encrypted JWK Set Formats<br />
<a href="#IANA">8.</a>
IANA Considerations<br />
<a href="#JWKParamReg">8.1.</a>
JSON Web Key Parameters Registry<br />
<a href="#JWKTemplate">8.1.1.</a>
Registration Template<br />
<a href="#JWKContents">8.1.2.</a>
Initial Registry Contents<br />
<a href="#UseReg">8.2.</a>
JSON Web Key Use Registry<br />
<a href="#UseTemplate">8.2.1.</a>
Registration Template<br />
<a href="#UseContents">8.2.2.</a>
Initial Registry Contents<br />
<a href="#KeyOpsReg">8.3.</a>
JSON Web Key Operations Registry<br />
<a href="#KeyOpsTemplate">8.3.1.</a>
Registration Template<br />
<a href="#KeyOpsContents">8.3.2.</a>
Initial Registry Contents<br />
<a href="#JWKSetParamReg">8.4.</a>
JSON Web Key Set Parameters Registry<br />
<a href="#SetTemplate">8.4.1.</a>
Registration Template<br />
<a href="#SetContents">8.4.2.</a>
Initial Registry Contents<br />
<a href="#MediaReg">8.5.</a>
Media Type Registration<br />
<a href="#MediaContents">8.5.1.</a>
Registry Contents<br />
<a href="#Security">9.</a>
Security Considerations<br />
<a href="#KeyTrust">9.1.</a>
Key Provenance and Trust<br />
<a href="#PreventingDisclosure">9.2.</a>
Preventing Disclosure of Non-public Key Information<br />
<a href="#RSABlinding">9.3.</a>
RSA Private Key Representations and Blinding<br />
<a href="#KeyEntropy">9.4.</a>
Key Entropy and Random Values<br />
<a href="#rfc.references1">10.</a>
References<br />
<a href="#rfc.references1">10.1.</a>
Normative References<br />
<a href="#rfc.references2">10.2.</a>
Informative References<br />
<a href="#rfc.references3">10.3.</a>
翻訳プロジェクト<br />
<a href="#ExampleJWKSets">Appendix A.</a>
Example JSON Web Key Sets<br />
<a href="#PublicExample">A.1.</a>
Example Public Keys<br />
<a href="#PrivateExample">A.2.</a>
Example Private Keys<br />
<a href="#SymmetricExample">A.3.</a>
Example Symmetric Keys<br />
<a href="#x5cExample">Appendix B.</a>
Example Use of "x5c" (X.509 Certificate Chain) Parameter<br />
<a href="#example-encrypted-jwk">Appendix C.</a>
Example Encrypted RSA Private Key<br />
<a href="#example-privkey-plaintext">C.1.</a>
Plaintext RSA Private Key<br />
<a href="#example-privkey-header">C.2.</a>
JOSE Header<br />
<a href="#example-privkey-cek">C.3.</a>
Content Encryption Key (CEK)<br />
<a href="#example-privkey-keyderivation">C.4.</a>
Key Derivation<br />
<a href="#example-privkey-keyencrypt">C.5.</a>
Key Encryption<br />
<a href="#example-privkey-iv">C.6.</a>
Initialization Vector<br />
<a href="#example-privkey-adata">C.7.</a>
Additional Authenticated Data<br />
<a href="#example-privkey-contentencrypt">C.8.</a>
Content Encryption<br />
<a href="#example-privkey-complete">C.9.</a>
Complete Representation<br />
<a href="#Acknowledgements">Appendix D.</a>
Acknowledgements<br />
<a href="#Translator">Appendix E.</a>
翻訳者<br />
</p>
<br clear="all" />
<a name="Introduction"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.1"></a><h3>1.
Introduction</h3>
<p>
JSON Web Key (JWK) とは, 暗号鍵を表現するための Javascript Object Notation (JSON) <a class='info' href='#RFC7159'>[RFC7159]<span> (</span><span class='info'>Bray, T., Ed., “The JavaScript Object Notation (JSON) Data Interchange Format,” March 2014.</span><span>)</span></a> データ構造である.
本仕様では, 複数の JWK のセットである JWK Set JSON データ構造も定義する.
本仕様で用いる暗号アルゴリズムおよびその識別子は, 別途 JSON Web Algorithms (JWA) <a class='info' href='#JWA'>[JWA]<span> (</span><span class='info'>Jones, M., “JSON Web Algorithms (JWA),” May 2015.</span><span>)</span></a> 仕様に記載されており, JWA 仕様にて IANA レジストリが設立されている.
</p>
<p>
本仕様の目的は, 新種の Certificate Chain や Certified Key を表現することではなく, X.509 Certificate を置き換えるものでもない.
</p>
<p>
JWK および JWK Set は, JSON Web Signature <a class='info' href='#JWS'>[JWS]<span> (</span><span class='info'>Jones, M., Bradley, J., and N. Sakimura, “JSON Web Signature (JWS),” May 2015.</span><span>)</span></a> や JSON Web Encryption <a class='info' href='#JWE'>[JWE]<span> (</span><span class='info'>Jones, M. and J. Hildebrand, “JSON Web Encryption (JWE),” May 2015.</span><span>)</span></a> といった仕様の中で用いられるものである.
</p>
<p>
本仕様で定義される名称等は, 短縮された形式のものがおおい.
これにはデータをなるべくコンパクトにするという目的がある.
</p>
<a name="NotationalConventions"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.1.1"></a><h3>1.1.
Notational Conventions</h3>
<p>
本仕様で用いられる各キーワード「MUST (しなければならない)」, 「MUST NOT (してはならない)」, 「REQUIRED (必須である)」, 「SHALL (するものとする)」, 「SHALL NOT (しないものとする)」, 「SHOULD (すべきである)」, 「SHOULD NOT (すべきではない)」, 「RECOMMENDED (推奨される)」, 「MAY (してもよい)」, 「OPTIONAL (任意である)」は <a class='info' href='#RFC2119'>[RFC2119]<span> (</span><span class='info'>Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” March 1997.</span><span>)</span></a> で述べられている通りに解釈されるべきものである.
</p>
<p>
BASE64URL (OCTETS) は, <a class='info' href='#JWS'>[JWS]<span> (</span><span class='info'>Jones, M., Bradley, J., and N. Sakimura, “JSON Web Signature (JWS),” May 2015.</span><span>)</span></a> の Section 2 に定義される通り, OCTETS の Base64url エンコーディングを意味する.
</p>
<p>
UTF8 (STRING) は STRING の UTF-8 <a class='info' href='#RFC3629'>[RFC3629]<span> (</span><span class='info'>Yergeau, F., “UTF-8, a transformation format of ISO 10646,” November 2003.</span><span>)</span></a> 表現を意味する.
ここでは STRING はゼロ以上の Unicode <a class='info' href='#UNICODE'>[UNICODE]<span> (</span><span class='info'>The Unicode Consortium, “The Unicode Standard,” .</span><span>)</span></a> 文字の配列である.
</p>
<p>
ASCII (STRING) は STRING の ASCII <a class='info' href='#RFC20'>[RFC20]<span> (</span><span class='info'>Cerf, V., “ASCII format for Network Interchange,” October 1969.</span><span>)</span></a> 表現を意味する.
ここでは STRING はゼロ以上の ASCII 文字の配列である.
</p>
<p>
2つの値 A と B の連結は, A || B と表現する.
</p>
<a name="Terminology"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.2"></a><h3>2.
Terminology</h3>
<p>
"JSON Web Signature (JWS)",
"Base64url Encoding",
"Collision-Resistant Name",
"Header Parameter",
および "JOSE Header" という各用語は,
JWS 仕様 <a class='info' href='#JWS'>[JWS]<span> (</span><span class='info'>Jones, M., Bradley, J., and N. Sakimura, “JSON Web Signature (JWS),” May 2015.</span><span>)</span></a> で定義されている.
</p>
<p>
"JSON Web Encryption (JWE)",
"Additional Authenticated Data (AAD)",
"JWE Authentication Tag",
"JWE Ciphertext",
"JWE Compact Serialization",
"JWE Encrypted Key",
"JWE Initialization Vector",
および "JWE Protected Header" という各用語は,
JWE 仕様 <a class='info' href='#JWE'>[JWE]<span> (</span><span class='info'>Jones, M. and J. Hildebrand, “JSON Web Encryption (JWE),” May 2015.</span><span>)</span></a> で定義されている.
</p>
<p>
"Ciphertext",
"Digital Signature",
"Message Authentication Code (MAC)",
および "Plaintext" という各用語は,
<a class='info' href='#RFC4949'>"Internet Security Glossary, Version 2"<span> (</span><span class='info'>Shirey, R., “Internet Security Glossary, Version 2,” August 2007.</span><span>)</span></a> [RFC4949] で定義されている.
</p>
<p>
本仕様では以下の用語を定義する.
</p>
<p>
</p>
<blockquote class="text"><dl>
<dt>JSON Web Key (JWK)</dt>
<dd>
暗号鍵を表現する JSON オブジェクト.
このオブジェクトの各要素は, 鍵の各プロパティを表現する.
</dd>
<dt>JWK Set</dt>
<dd>
1セットの JWK の集合を表現する JSON オブジェクト.
この JSON オブジェクトは必ず <tt>keys</tt> という要素を含み (MUST), その要素は JWK の配列となる.
</dd>
</dl></blockquote><p>
</p>
<a name="ExampleJWK"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.3"></a><h3>3.
Example JWK</h3>
<p>
本 Section では JWK の例を示す.
以下の JWK サンプルは, P-256 Elliptic Curve の Elliptic Curve <a class='info' href='#DSS'>[DSS]<span> (</span><span class='info'>National Institute of Standards and Technology (NIST), “Digital Signature Standard (DSS),” July 2013.</span><span>)</span></a> 鍵を示し, x 座標と y 座標はそれぞれ base64url エンコードされている.
またこの鍵自身の識別子 (kid) も含まれる.
</p><div style='display: table; width: 0; margin-left: 3em; margin-right: auto'><pre>
{"kty":"EC",
"crv":"P-256",
"x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU",
"y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0",
"kid":"Public key used in JWS spec Appendix A.3 example"
}
</pre></div>
<p>
他にも <a class='info' href='#ExampleJWKSets'>Appendix A<span> (</span><span class='info'>Example JSON Web Key Sets</span><span>)</span></a> に JWK サンプルが示されている.
</p>
<a name="JWKFormat"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.4"></a><h3>4.
JSON Web Key (JWK) Format</h3>
<p>
JWK は暗号鍵を表現する JSON オブジェクトである.
JWK の要素は鍵のプロパティを表現する.
この JSON オブジェクトは, <a class='info' href='#RFC7159'>RFC 7159<span> (</span><span class='info'>Bray, T., Ed., “The JavaScript Object Notation (JSON) Data Interchange Format,” March 2014.</span><span>)</span></a> [RFC7159] の Section 2 に従って, 任意の JSON バリューや構造文字の前後に空白スペースや改行を含むことができる.
本仕様では, 暗号化アルゴリズムに依存しない鍵パラメータを定義する.
</p>
<p>
共通パラメータに加え, JWK は鍵タイプ固有の要素を含む.
これらの要素は鍵のパラメータを示す.
JSON Web Algorithm (JWA) <a class='info' href='#JWA'>[JWA]<span> (</span><span class='info'>Jones, M., “JSON Web Algorithms (JWA),” May 2015.</span><span>)</span></a> 仕様の Section 6 では, 複数種類の暗号鍵およびそれに紐付いた要素を定義する.
</p>
<p>
JWK の要素名はユニークでなければならない (MUST).
JWK パーサーは要素名の重複をリジェクトするか, ECMAScript 5.1 <a class='info' href='#ECMAScript'>[ECMAScript]<span> (</span><span class='info'>Ecma International, “ECMAScript Language Specification, 5.1 Edition,” June 2011.</span><span>)</span></a> Section 15.12 (The JSON Object) に従い辞書順で最後の重複要素名のみを返す JSON パーサーを利用しなければならない (MUST).
</p>
<p>
JSK にはその他の要素も含むことができる.
もし JWK 実装が理解できない要素に出くわした場合は, その要素を無視する事 (MUST).
異なる鍵タイプの鍵パラメータを示す要素名は, 重複を許す.
新しい要素名は, <a class='info' href='#JWKParamReg'>Section 8.1<span> (</span><span class='info'>JSON Web Key Parameters Registry</span><span>)</span></a> により設立される IANA "JSON Web Key Parameters" レジストリに登録するか, Collision-Resistant Name を含むようにすること.
</p>
<a name="ktyDef"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.4.1"></a><h3>4.1.
"kty" (Key Type) Parameter</h3>
<p>
<tt>kty</tt> (key type) パラメータは, <tt>RSA</tt> や <tt>EC</tt> といった暗号アルゴリズムファミリーを示す.
<tt>kty</tt> 値は, <a class='info' href='#JWA'>[JWA]<span> (</span><span class='info'>Jones, M., “JSON Web Algorithms (JWA),” May 2015.</span><span>)</span></a> で設立される IANA "JSON Web Key Types" レジストリに登録するか, Collision-Resistant Name を含むようにすること.
<tt>kty</tt> 値は大文字小文字を区別する.
JWK はこの要素を含まなければならない (MUST).
</p>
<p>
定義済みの <tt>kty</tt> 値は, <a class='info' href='#JWA'>[JWA]<span> (</span><span class='info'>Jones, M., “JSON Web Algorithms (JWA),” May 2015.</span><span>)</span></a> で設立される IANA "JSON Web Key Types" レジストリに登録されている.
当該レジストリの初期登録値は <a class='info' href='#JWA'>[JWA]<span> (</span><span class='info'>Jones, M., “JSON Web Algorithms (JWA),” May 2015.</span><span>)</span></a> Section 6.1 にある.
</p>
<p>
鍵タイプの定義はその鍵タイプで用いられる要素の定義も含む.
特定の <tt>kty</tt> に紐づく要素は, <a class='info' href='#JWKParamReg'>Section 8.1<span> (</span><span class='info'>JSON Web Key Parameters Registry</span><span>)</span></a> で設立する IANA "JSON Web Key Parameters" レジストリに登録されている.
</p>
<a name="useDef"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.4.2"></a><h3>4.2.
"use" (Public Key Use) Parameter</h3>
<p>
<tt>use</tt> (public key use) パラメータは当該公開鍵の用途を示す.
<tt>use</tt> パラメータは, その鍵が暗号化目的で提供されるのか, 署名検証目的で提供されるのかを示すために利用される.
</p>
<p>
本仕様で定義される値は以下の通りである.
</p>
<p>
</p>
<ul class="text">
<li><tt>sig</tt> (signature)
</li>
<li><tt>enc</tt> (encryption)
</li>
</ul><p>
</p>
<p>
上記以外の値も利用可能である (MAY).
<tt>use</tt> 値は大文字小文字を区別する文字列である.
<tt>use</tt> の利用は, アプリケーションが必須としない限りは OPTIONAL である.
</p>
<p>
ある鍵が他の鍵をラップするために用いられ, 最初の鍵に対する公開鍵用途の指定を行いたい場合は, <tt>enc</tt> (encryption) を指定すること.
鍵ラッピングは暗号化の一種である.
<tt>enc</tt> 値は鍵交換オペレーションのためにも利用可能である.
</p>
<p>
その他の <tt>use</tt> (public key use) 値も <a class='info' href='#UseReg'>Section 8.2<span> (</span><span class='info'>JSON Web Key Use Registry</span><span>)</span></a> で設立する "JSON Web Key Use" レジストリに登録することができる.
本仕様をオープンな環境で利用する場合, そこで利用される拡張値の登録を強く推奨する.
そういった環境では, 複数の組織がそこで利用される拡張に対して共通理解を持つ事が重要である.
クローズドな環境では, 未登録な拡張値を利用してもよい.
</p>
<a name="key_opsDef"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.4.3"></a><h3>4.3.
"key_ops" (Key Operations) Parameter</h3>
<p>
<tt>key_ops</tt> (key operations) パラメータは鍵の利用が想定されるオペレーションを示す.
<tt>key_ops</tt> は, 公開鍵, 暗号鍵, 共通鍵のいずれのユースケースをも想定して定義されている.
</p>
<p>
この値は鍵オペレーションを示す値の配列である.
本仕様で定義される値は以下の通りである.
</p>
<p>
</p>
<ul class="text">
<li><tt>sign</tt> (compute digital signature or MAC)
</li>
<li><tt>verify</tt> (verify digital signature or MAC)
</li>
<li><tt>encrypt</tt> (encrypt content)
</li>
<li><tt>decrypt</tt> (decrypt content and validate decryption, if applicable)
</li>
<li><tt>wrapKey</tt> (encrypt key)
</li>
<li><tt>unwrapKey</tt> (decrypt key and validate decryption, if applicable)
</li>
<li><tt>deriveKey</tt> (derive key)
</li>
<li><tt>deriveBits</tt> (derive bits not to be used as a key)
</li>
</ul><p>
</p>
<p>
(注: <tt>key_ops</tt> 値は <a class='info' href='#W3C.CR-WebCryptoAPI-20141211'>Web Cryptography API<span> (</span><span class='info'>Sleevi, R. and M. Watson, “Web Cryptography API,” December 2014.</span><span>)</span></a> [W3C.CR‑WebCryptoAPI‑20141211] 仕様で定義される <tt>KeyUsage</tt> 値と意図的に一致させてある.)
</p>
<p>
その他の値も利用可能である.
鍵オペレーション値は大文字小文字を区別する文字列である.
重複した鍵オペレーション値を同時に1つの配列に含めることはできない (MUST NOT).
<tt>key_ops</tt> の利用は, アプリケーションが必須としない限りは OPTIONAL である.
</p>
<p>
関連性のない複数の鍵オペレーションを1つの鍵に指定することは推奨しない (SHOULD NOT).
そういった行為は, 同じ鍵を複数のアルゴリズムで利用することに起因する, 潜在的な脆弱性につながる.
<tt>sign</tt> と <tt>verify</tt>,
<tt>encrypt</tt> と <tt>decrypt</tt>,
<tt>wrapKey</tt> と <tt>unwrapKey</tt>
といった組み合わせは許容されるが, その他の組み合わせは推奨しない (SHOULD NOT).
</p>
<p>
その他の <tt>key_ops</tt> (key operations) 値も <a class='info' href='#KeyOpsReg'>Section 8.3<span> (</span><span class='info'>JSON Web Key Operations Registry</span><span>)</span></a> で設立する IANA "JSON Web Key Operations" レジストリに登録することができる.
<tt>use</tt> のレジストリ登録時の考慮点を, <tt>key_ops</tt> のレジストリ登録時にも同様に考慮すること.
</p>
<p>
<tt>use</tt> と <tt>key_ops</tt> は同時に利用すべきではない (SHOULD NOT).
もし両者を同時に利用する場合は, 両者が矛盾しないようにすること.
どちらかの要素を利用する場合には, 当該アプリケーションでどちらが利用されるかをあらかじめ明示すべきである.
</p>
<a name="algDef"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.4.4"></a><h3>4.4.
"alg" (Algorithm) Parameter</h3>
<p>
<tt>alg</tt> (algorithm) パラメータはその鍵で利用されるアルゴリズムを示す.
この値は, <a class='info' href='#JWA'>[JWA]<span> (</span><span class='info'>Jones, M., “JSON Web Algorithms (JWA),” May 2015.</span><span>)</span></a> の設立する IANA "JSON Web Signature and Encryption Algorithms" レジストリに登録するか, Collision-Resistant Name を含めること.
<tt>alg</tt> 値は大文字小文字を区別する ASCII 文字列である.
この要素の利用は OPTIONAL である.
</p>
<a name="kidDef"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.4.5"></a><h3>4.5.
"kid" (Key ID) Parameter</h3>
<p>
<tt>kid</tt> (key ID) パラメータは特定の鍵を識別するために用いられる.
例えば, 鍵のロールオーバー時に JWK Set の中から必要な鍵を特定する, などの用途が考えられる.
<tt>kid</tt> 値の構造は未定義である.
<tt>kid</tt> を JWK Set 内で用いる場合, JWK Set 内の異なる鍵は異なる <tt>kid</tt> 値を持つべきである (SHOULD).
(異なる鍵が同じ <tt>kid</tt> 値を持つ例としては, <tt>kty</tt> (key type) は異なるが, アプリケーションからはそれらが互いに等価な代替手段であると考えられている場合などがあげられる.)
<tt>kid</tt> 値は大文字小文字を区別する文字列である.
この要素の利用は OPTIONAL である.
</p>
<p>
JWS や JWE とともに利用する場合, JWK の <tt>kid</tt> 値は JWS Header や JWE Header に含まれる <tt>kid</tt> 値と一致するようにすること.
</p>
<a name="x5uDef"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.4.6"></a><h3>4.6.
"x5u" (X.509 URL) Parameter</h3>
<p>
<tt>x5u</tt> (X.509 URL) パラメータは X.509 公開鍵証明書や証明書チェーン <a class='info' href='#RFC5280'>[RFC5280]<span> (</span><span class='info'>Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, “Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile,” May 2008.</span><span>)</span></a> といったリソースを指し示す URI <a class='info' href='#RFC3986'>[RFC3986]<span> (</span><span class='info'>Berners-Lee, T., Fielding, R., and L. Masinter, “Uniform Resource Identifier (URI): Generic Syntax,” January 2005.</span><span>)</span></a> である.
当該リソースは <a class='info' href='#RFC5280'>RFC 5280<span> (</span><span class='info'>Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, “Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile,” May 2008.</span><span>)</span></a> [RFC5280] を満たす PEM エンコード形式の証明書や証明書チェーンでなければならない (MUST).
各証明書は <a class='info' href='#RFC4945'>RFC 4945<span> (</span><span class='info'>Korver, B., “The Internet IP Security PKI Profile of IKEv1/ISAKMP, IKEv2, and PKIX,” August 2007.</span><span>)</span></a> [RFC4945] Section 6.1 に従い区切ること.
先頭の証明書に含まれる鍵は当該 JWK の示す公開鍵と一致すること (MUST).
当該リソースは完全性が保護された状態で提供されなければならない (MUST).
当該証明書への HTTP GET リクエストは TLS <a class='info' href='#RFC2818'>[RFC2818]<span> (</span><span class='info'>Rescorla, E., “HTTP Over TLS,” May 2000.</span><span>)</span></a> <a class='info' href='#RFC5246'>[RFC5246]<span> (</span><span class='info'>Dierks, T. and E. Rescorla, “The Transport Layer Security (TLS) Protocol Version 1.2,” August 2008.</span><span>)</span></a> の利用が必須である (MUST).
サーバー証明書の検証も <a class='info' href='#RFC6125'>RFC 6125<span> (</span><span class='info'>Saint-Andre, P. and J. Hodges, “Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS),” March 2011.</span><span>)</span></a> [RFC6125] Section 6 に従って行うこと (MUST).
この要素の利用は OPTIONAL である.
</p>
<p>
<tt>x5u</tt> を利用する場合, 鍵の利用用途やアルゴリズムなどの情報を示すその他の OPTIONAL な JWK 要素は必須ではないが, そういった要素を利用したほうが PKIX 証明書 <a class='info' href='#RFC5280'>[RFC5280]<span> (</span><span class='info'>Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, “Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile,” May 2008.</span><span>)</span></a> を扱わないアプリケーションに対する相互運用性向上につながるであろう.
そういったその他の要素を利用する場合は, その指し示すコンテンツは先頭の証明書の関連するフィールドと整合性を保つこと (MUST).
例えば <tt>use</tt> 要素を用いる場合, その値は証明書に含まれるその証明書の用途と一致しなければならない (MUST).
同様に <tt>alg</tt> 要素を用いる場合, その値は証明書に含まれるアルゴリズムと一致すること (MUST).
</p>
<a name="x5cDef"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.4.7"></a><h3>4.7.
"x5c" (X.509 Certificate Chain) Parameter</h3>
<p>
<tt>x5c</tt> (X.509 certificate chain) パラメータは, 1つ以上の PKIX 証明書 <a class='info' href='#RFC5280'>[RFC5280]<span> (</span><span class='info'>Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, “Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile,” May 2008.</span><span>)</span></a> からなるチェーンを示す.
証明書チェーンは証明書文字列の JSON 配列として表現される.
それぞれの証明書文字列は base64 エンコード (<a class='info' href='#RFC4648'>[RFC4648]<span> (</span><span class='info'>Josefsson, S., “The Base16, Base32, and Base64 Data Encodings,” October 2006.</span><span>)</span></a> Section 4 参照, base64url エンコードではない) された DER 形式の <a class='info' href='#ITU.X690.1994'>[ITU.X690.1994]<span> (</span><span class='info'>International Telecommunications Union, “Information Technology - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER),” 1994.</span><span>)</span></a> PKIX 証明書である.
当該 JWK の鍵を含む PKIX 証明書は先頭の証明書でなければならない (MUST).
その後には証明書を続けることもでき (MAY), その場合, 各証明書はその一つ前の証明書を証明する.
先頭の証明書に含まれる鍵は当該 JWK の示す公開鍵と一致すること (MUST).
この要素の利用は OPTIONAL である.
</p>
<p>
<tt>x5u</tt> 同様, <tt>x5c</tt> とともに鍵用途やアルゴリズムといったその他の情報も同じ JWK に含める事ができる (MAY).
他の要素が含まれる場合, それらは先頭の証明書との整合性をとること.
詳細は <a class='info' href='#x5uDef'>Section 4.6<span> (</span><span class='info'>"x5u" (X.509 URL) Parameter</span><span>)</span></a> の最後の一文を参照.
</p>
<a name="x5tDef"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.4.8"></a><h3>4.8.
"x5t" (X.509 Certificate SHA-1 Thumbprint) Parameter</h3>
<p>
<tt>x5t</tt> (X.509 certificate SHA-1 thumbprint) パラメータは, DER エンコードされた X.509 証明書 <a class='info' href='#RFC5280'>[RFC5280]<span> (</span><span class='info'>Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, “Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile,” May 2008.</span><span>)</span></a> の SHA-1 thumbprint (a.k.a. digest) の base64url エンコード値を示す.
証明書 thumbprint は証明書 fingerprint と呼ばれることもある.
当該証明書に含まれる鍵は当該 JWK の示す公開鍵と一致すること (MUST).
この要素の利用は OPTIONAL である.
</p>
<p>
<tt>x5u</tt> 同様, <tt>x5t</tt> とともに鍵用途やアルゴリズムといったその他の情報も同じ JWK に含める事ができる (MAY).
他の要素が含まれる場合, それらは当該証明書との整合性をとること.
詳細は <a class='info' href='#x5uDef'>Section 4.6<span> (</span><span class='info'>"x5u" (X.509 URL) Parameter</span><span>)</span></a> の最後の一文を参照.
</p>
<a name="x5tS256Def"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.4.9"></a><h3>4.9.
"x5t#S256" (X.509 Certificate SHA-256 Thumbprint) Parameter</h3>
<p>
<tt>x5t#S256</tt> (X.509 certificate SHA-256 thumbprint) パラメータは, DER エンコードされた X.509 証明書 <a class='info' href='#RFC5280'>[RFC5280]<span> (</span><span class='info'>Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, “Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile,” May 2008.</span><span>)</span></a> の SHA-256 thumbprint (a.k.a. digest) の base64url エンコード値を示す.
証明書 thumbprint は証明書 fingerprint と呼ばれることもある.
当該証明書に含まれる鍵は当該 JWK の示す公開鍵と一致すること (MUST).
この要素の利用は OPTIONAL である.
</p>
<p>
<tt>x5u</tt> 同様, <tt>x5t#S256</tt> とともに鍵用途やアルゴリズムといったその他の情報も同じ JWK に含める事ができる (MAY).
他の要素が含まれる場合, それらは当該証明書との整合性をとること.
詳細は <a class='info' href='#x5uDef'>Section 4.6<span> (</span><span class='info'>"x5u" (X.509 URL) Parameter</span><span>)</span></a> の最後の一文を参照.
</p>
<a name="JWKSet"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.5"></a><h3>5.
JWK Set Format</h3>
<p>
JWK Set は JWK のセットを表す JSON オブジェクトである.
この JSON オブジェクトは, その値が JWK 配列となる <tt>keys</tt> メンバを持たなければならない (MUST).
この JSON オブジェクトは空白および, または改行を含んでも良い (MAY).
</p>
<p>
単一の JWK Set の中においてメンバ名はユニークでなければならない (MUST);
JWK Set パーサーは重複するメンバ名を持つ JWK Set を拒否するか,
ECMAScript 5.1 <a class='info' href='#ECMAScript'>[ECMAScript]<span> (</span><span class='info'>Ecma International, “ECMAScript Language Specification, 5.1 Edition,” June 2011.</span><span>)</span></a> の Section 15.12 ("The JSON Object") で定義されている,
重複するメンバ名の最後の語彙のみを返却する JSON パーサーを使用しなければならない (MUST).
</p>
<p>
追加のメンバを JWK Set の中に表現することも可能である;
もし実装がそれらを解釈できない場合, それらは無視されなければならない (MUST).
JWK Set の追加プロパティを表すパラメータは <a class='info' href='#JWKSetParamReg'>Section 8.4<span> (</span><span class='info'>JSON Web Key Set Parameters Registry</span><span>)</span></a> に設立される
IANA "JSON Web Key Set Parameters" レジストリへ登録, もしくは衝突に耐えられる名称を含む値であるべきである.
</p>
<p>
実装は, JWK Set に含まれる JWK のうち, 解釈できない <tt>kty</tt> (key type) 値であったり,
必要なメンバが存在しなかったり, サポートされる範囲外のメンバー値を持つ JWK を無視するべきである (SHOULD).
</p>
<a name="keysDef"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.5.1"></a><h3>5.1.
"keys" Parameter</h3>
<p>
<tt>keys</tt> パラメータの値は JWK の値の配列である.
既定では, 配列の中の JWK の値の順序は優先順位を示さないが, 必要であれば
JWK Set の利用者は目的に沿って順序に意味を持たせることも可能である.
</p>
<a name="StringComparison"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.6"></a><h3>6.
String Comparison Rules</h3>
<p>
本仕様における文字列比較に関するルールは <a class='info' href='#JWS'>[JWS]<span> (</span><span class='info'>Jones, M., Bradley, J., and N. Sakimura, “JSON Web Signature (JWS),” May 2015.</span><span>)</span></a> の
Section 5.3 で定義されているものと同一である.
</p>
<a name="EncryptedJWK"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.7"></a><h3>7.
Encrypted JWK and Encrypted JWK Set Formats</h3>
<p>
非公開の鍵要素を含む JWK の, 非公開情報へのアクセスするための合理的な理由がないアクセスは防止されなくてはならない (MUST).
これは, そのような相手からの参照される可能性がある時,
秘密鍵もしくは対象鍵の値が公開されることを防ぐために,
JWK を暗号化することにより達成される.
この目的には, 暗号化された JWK (UTF-8 エンコードされた JWK をプレーンテキストの値として持つ JWE) の利用が推奨される.
暗号化された JWK の処理は, その他の JWE の処理と同一である.
<tt>jwk+json</tt> の <tt>cty</tt> (content type)
ヘッダパラメータの値は, アプリケーションがその暗号化されたコンテンツが別の意味合いや決まりにより JWK であることを知っていて,
<tt>cty</tt> の値が省略されている場合を除き, JWE のコンテンツが JWK であることを示さなければならない (MUST).
</p>
<p>
非公開の鍵情報を含む JWK Set もまた, 同様の事情により暗号化される必要がある.
この目的には, 暗号化された JWK Set (UTF-8 エンコードされた JWK Set をプレーンテキストの値として持つ JWE) の利用が推奨される.
暗号化された JWK Set の処理は, その他の JWE の処理と同一である.
<tt>jwk-set+json</tt> の <tt>cty</tt> (content type)
ヘッダ パラメータの値は, アプリケーションがその暗号化されたコンテンツが別の意味合いや決まりにより JWK Set であることを知っていて,
<tt>cty</tt> の値が省略されている場合を除き, JWE のコンテンツが JWK Set であることを示さなければならない (MUST).
</p>
<p>
暗号化された JWK のサンプルは <a class='info' href='#example-encrypted-jwk'>Appendix C<span> (</span><span class='info'>Example Encrypted RSA Private Key</span><span>)</span></a> を参照すること.
</p>
<a name="IANA"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.8"></a><h3>8.
IANA Considerations</h3>
<p>
以下の登録手続きは本仕様により確立されるすべてのレジストリに使用される.
</p>
<p>
値は, 1名以上の Designated Experts の勧告に従い, jose‑reg‑[email protected]
のメーリングリストで2週間の審査期間を経て, Specification Required <a class='info' href='#RFC5226'>[RFC5226]<span> (</span><span class='info'>Narten, T. and H. Alvestrand, “Guidelines for Writing an IANA Considerations Section in RFCs,” May 2008.</span><span>)</span></a>
な状態で登録される. しかしながら, 発行に先立ってそれらの値を用いることができるように,
Designated Experts はそれらの値が公開できる状態になった時点で登録を許可することもありうる.
</p>
<p>
登録要請は, 適切な件名 (例: "Request to register JWK parameter: example") でメーリングリストに通知しなければならない.
</p>
<p>
Designated Experts は審査期間内に登録を承認または拒否し, レビューが行われるメーリングリストおよび IANA へその決定を告げる.
要請が拒否された場合は, その理由が通知され, 可能な場合は承認に向けた提案が行われるべきである.
21日以上の期間にわたり未決定な登録要請は, 解決に向け ([email protected] メーリングリストを用い) IESG の留意事項へ持ち込むことが出来る.
</p>
<p>
審査は提案された登録が, 既存の機能と重複がないことや, 一般的な適用性があるのか, それとも特定のアプリケーションにとってのみ有用なのか,
登録の説明は明確なのかどうか, について検証を含め Designated Experts により承認されるべきである.
</p>
<p>
IANA は, Designated Experts からのレジストリ更新のみを受け付けなければならず, すべての登録要請をレビューメーリングリストに送信しなければならない.
</p>
<p>
本仕様を使用する異なるアプリケーションの視点を代表することのできる複数の Designated
Experts を指名することを提案する. これは登録決定のレビューを広く告知するためである.
登録決定が特定の Expert の興味分野に対して論争を起こす場合は, 当該の Expert は他の
Experts の決定に従うべきである.
</p>
<a name="JWKParamReg"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.8.1"></a><h3>8.1.
JSON Web Key Parameters Registry</h3>
<p>
本セクションは JWK パラメータ名のための IANA "JSON Web Key Parameters" レジストリを確立する.
レジストリはパラメータの名前, パラメータと共に使われる key type, 自身が定義される仕様への参照を記録する.
同様にレジストリは当該のパラメータが公開もしくは非公開の情報を伝えるかどうかについても記録する.
本セクションは <a class='info' href='#JWKFormat'>Section 4<span> (</span><span class='info'>JSON Web Key (JWK) Format</span><span>)</span></a> で定義されているパラメータ名を登録する.
同一の JWK パラメータ名を複数回登録しても良く, 重複するパラメータ登録は
key type に特化した JWK パラメータに限った目的のものである. この場合, 重複するパラメータ名の意味は JWK に含まれる
<tt>kty</tt> の値により曖昧さをなくされる.
</p>
<a name="JWKTemplate"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.8.1.1"></a><h3>8.1.1.
Registration Template</h3>
<p>
</p>
<blockquote class="text"><dl>
<dt>Parameter Name:</dt>
<dd>
要求された名前 (例, "kid").
本仕様の中核となる目標は表現の結果をコンパクトにすることであるため,
名前は短くすることを推奨する (RECOMMENDED). -- 特別な理由がない限り 8 文字を超えるべきではない.
名前は大文字, 小文字を区別する.
名前は Designated Experts が例外を許可する特別な理由があることを宣言した場合を除き,
他の登録された名前と大文字, 小文字の違いで重複させるべきではない.
しかしながら, パラメータ名が一緒に使用される <tt>kty</tt>
の値の付随セットが異なる場合においては, 同一の名前を登録してもよい.
<tt>kty</tt>の値のマッチングのため, "*" は全ての値にマッチする.
</dd>
<dt>Parameter Description:</dt>
<dd>
パラメータの簡単な説明 (例, "Key ID").
</dd>
<dt>Used with "kty" Value(s):</dt>
<dd>
パラメータの名前が一緒に利用する key type パラメータの値, もしくはパラメータの値がすべての key type で利用される場合は "*".
値は, 登録済みのパラメータ名が同一の際, 他の登録済みの <tt>kty</tt> の値と大文字,
小文字の区別をせずにマッチするべきではない (パラメータ名が大文字, 小文字の区別をせずにマッチしている場合を含む).
ただし, Designated Experts が例外を許可する特別な理由があることを宣言した場合を除く.
</dd>
<dt>Parameter Information Class:</dt>
<dd>
パラメータが公開もしくは非公開の情報を含むかどうかを登録する.
値は Public もしくは Private のどちらかでなければならない.
</dd>
<dt>Change Controller:</dt>
<dd>
RFC の標準に従う際は, "IETF" と記載する. それ以外の場合は, 責任ある団体の名称を記載する.
その他の詳細 (例えば, 郵便番号, メールアドレス, ホームページの URL) も記載してもよい.
</dd>
<dt>Specification Document(s):</dt>
<dd>
パラメータ仕様を記載したドキュメントへの参照を記載する. ドキュメントを取得することのできる URI が記載されていることが望ましい.
明確な記載箇所への参照が含まれることが望ましいが必須ではない.
</dd>
</dl></blockquote><p>