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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
|
Internet Engineering Task Force (IETF) S. Farrell
Request for Comments: 6920 Trinity College Dublin
Category: Standards Track D. Kutscher
ISSN: 2070-1721 NEC
C. Dannewitz
University of Paderborn
B. Ohlman
A. Keranen
Ericsson
P. Hallam-Baker
Comodo Group Inc.
April 2013
Naming Things with Hashes
Abstract
This document defines a set of ways to identify a thing (a digital
object in this case) using the output from a hash function. It
specifies a new URI scheme for this purpose, a way to map these to
HTTP URLs, and binary and human-speakable formats for these names.
The various formats are designed to support, but not require, a
strong link to the referenced object, such that the referenced object
may be authenticated to the same degree as the reference to it. The
reason for this work is to standardise current uses of hash outputs
in URLs and to support new information-centric applications and other
uses of hash outputs in protocols.
Status of This Memo
This is an Internet Standards Track document.
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.
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/rfc6920.
Farrell, et al. Standards Track [Page 1]
^L
RFC 6920 Naming Things with Hashes April 2013
Copyright Notice
Copyright (c) 2013 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
(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.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Hashes Are What Count . . . . . . . . . . . . . . . . . . . . 4
3. Named Information (ni) URI Format . . . . . . . . . . . . . . 6
3.1. Content Type Query String Attribute . . . . . . . . . . . 8
4. .well-known URI . . . . . . . . . . . . . . . . . . . . . . . 9
5. URL Segment Format . . . . . . . . . . . . . . . . . . . . . . 10
6. Binary Format . . . . . . . . . . . . . . . . . . . . . . . . 10
7. Human-Speakable (nih) URI Format . . . . . . . . . . . . . . . 11
8. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
8.1. Hello World! . . . . . . . . . . . . . . . . . . . . . . . 13
8.2. Public Key Examples . . . . . . . . . . . . . . . . . . . 13
8.3. nih Usage Example . . . . . . . . . . . . . . . . . . . . 14
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15
9.1. Assignment of ni URI Scheme . . . . . . . . . . . . . . . 15
9.2. Assignment of nih URI Scheme . . . . . . . . . . . . . . . 15
9.3. Assignment of .well-known 'ni' URI . . . . . . . . . . . . 16
9.4. Creation of Named Information Hash Algorithm Registry . . 16
9.5. Creation of Named Information Parameter Registry . . . . . 18
10. Security Considerations . . . . . . . . . . . . . . . . . . . 18
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 20
12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 20
12.1. Normative References . . . . . . . . . . . . . . . . . . . 20
12.2. Informative References . . . . . . . . . . . . . . . . . . 21
Farrell, et al. Standards Track [Page 2]
^L
RFC 6920 Naming Things with Hashes April 2013
1. Introduction
Identifiers -- names or locators -- are used in various protocols to
identify resources. In many scenarios, those identifiers contain
values that are obtained from hash functions. Different deployments
have chosen different ways to include the hash function outputs in
their identifiers, resulting in interoperability problems.
This document defines the "Named Information" identifier, which
provides a set of standard ways to use hash function outputs in
names. We begin with a few example uses for various ways to include
hash function output in a name, with the specifics defined later in
this document. Figure 1 shows an example of the Named Information
(ni) URI scheme that this document defines.
ni:///sha-256;UyaQV-Ev4rdLoHyJJWCi11OHfrYv9E1aGQAlMO2X_-Q
Figure 1: Example ni URI
Hash function outputs can be used to ensure uniqueness in terms of
mapping URIs [RFC3986] to a specific resource or to make URIs hard to
guess for security reasons. Since there is no standard way to
interpret those strings today, in general only the creator of the URI
knows how to use the hash function output. Other protocols, such as
application-layer protocols for accessing "smart objects" in
constrained environments, also require more compact (e.g., binary)
forms of such identifiers. In yet other situations, people may have
to speak such values, e.g., in a voice call (see Section 8.3), in
order to confirm the presence or absence of a resource.
As another example, protocols for accessing in-network storage
servers need a way to identify stored resources uniquely and in a
location-independent way so that replicas on different servers can be
accessed by the same name. Also, such applications may require
verification that a resource representation that has been obtained
actually corresponds to the name that was used to request the
resource, i.e., verifying the binding between the data and the name,
which is here termed "name-data integrity".
Similarly, in the context of information-centric networking
[NETINF-ARCHITECTURE] [CCN] and elsewhere, there is value in being
able to compare a presented resource against the URI that was used to
access that resource. If a cryptographically strong comparison
function can be used, then this allows for many forms of in-network
storage, without requiring as much trust in the infrastructure used
to present the resource. The outputs of hash functions can be used
in this manner, if they are presented in a standard way.
Farrell, et al. Standards Track [Page 3]
^L
RFC 6920 Naming Things with Hashes April 2013
Additional applications might include creating references from web
pages delivered over HTTP/TLS; DNS resource records signed using
DNSSEC or data values embedded in certificates, Certificate
Revocation Lists (CRLs), or other signed data objects.
The Named Identifier can be represented in a number of ways: using
the ni URI scheme that we specifically define for the name (which is
very similar to the "magnet link" that is informally defined in other
protocols [Magnet]), or using other mechanisms also defined herein.
However it is represented, the Named Identifier *names* a resource,
and the mechanism used to dereference the name and to *locate* the
named resource needs to be known by the entity that dereferences it.
Media content-type, alternative locations for retrieval, and other
additional information about a resource named using this scheme can
be provided using a query string. "The Named Information (ni) URI
Scheme: Optional Features" [DECPARAMS] describes specific values that
can be used in such query strings for these various purposes and
other extensions to this basic format specification.
In addition, we define a ".well-known" URL equivalent, a way to
include a hash as a segment of an HTTP URL, a binary format for use
in protocols that require more compact names, and a human-speakable
text form that could be used, e.g., for reading out (parts of) the
name over a voice connection.
Not all uses of these names require use of the full hash output --
truncated hashes can be safely used in some environments. For this
reason, we define a new IANA registry for hash functions to be used
with this specification so as not to mix strong and weak (truncated)
hash algorithms in other protocol registries.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
Syntax definitions in this memo are specified according to ABNF
[RFC5234].
2. Hashes Are What Count
This section contains basic considerations related to how we use hash
function outputs that are common to all formats.
When comparing two names of the form defined here, an implementation
MUST only consider the digest algorithm and the digest value, i.e.,
it MUST NOT consider other fields defined below (such as an authority
field from a URI or any parameters). Implementations MUST consider
Farrell, et al. Standards Track [Page 4]
^L
RFC 6920 Naming Things with Hashes April 2013
two hashes identical, regardless of encoding, if the decoded hashes
are based on the same algorithm and have the same length and the same
binary value. In that case, the two names can be treated as
referring to the same thing.
The sha-256 algorithm as specified in [SHA-256] is mandatory to
implement; that is, implementations MUST be able to generate/send and
to accept/process names based on a sha-256 hash. However,
implementations MAY support additional hash algorithms and MAY use
those for specific names, for example, in a constrained environment
where sha-256 is non-optimal or where truncated names are needed to
fit into corresponding protocols (when a higher collision probability
can be tolerated).
Truncated hashes MAY be supported. When a hash value is truncated,
the name MUST indicate this. Therefore, we use different hash
algorithm strings in these cases, such as sha-256-32 for a 32-bit
truncation of a sha-256 output. A 32-bit truncated hash is
essentially useless for security in almost all cases but might be
useful for naming. With current best practices [RFC3766], very few,
if any, applications making use of names with less than 100-bit
hashes will have useful security properties.
When a hash value is truncated to N bits, the leftmost N bits (that
is, the most significant N bits in network byte order) from the
binary representation of the hash value MUST be used as the truncated
value. An example of a 128-bit hash output truncated to 32 bits is
shown in Figure 2.
128-bit hash: 0x265357902fe1b7e2a04b897c6025d7a2
32-bit truncated hash: 0x26535790
Figure 2: Example of Truncated Hash
When the input to the hash algorithm is a public key value, as may be
used by various security protocols, the hash SHOULD be calculated
over the public key in an X.509 SubjectPublicKeyInfo structure
(Section 4.1 of [RFC5280]). This input has been chosen primarily for
compatibility with the DANE TSLA protocol [RFC6698] but also includes
any relevant public key parameters in the hash input, which is
sometimes necessary for security reasons. This does not force use of
X.509 or full compliance with [RFC5280] since formatting any public
key as a SubjectPublicKeyInfo is relatively straightforward and well
supported by libraries.
Any of the formats defined below can be used to represent the
resulting name for a public key.
Farrell, et al. Standards Track [Page 5]
^L
RFC 6920 Naming Things with Hashes April 2013
Other than in the aforementioned special case where public keys are
used, we do not specify the hash function input here. Other
specifications are expected to define this.
3. Named Information (ni) URI Format
A Named Information (ni) URI consists of the following nine
components:
Scheme Name: The scheme name is 'ni'.
Colon and Slashes: The literal "://"
Authority: The optional authority component may assist applications
in accessing the object named by an ni URI. There is no default
value for the authority field. (See Section 3.2.2 of [RFC3986]
for details.) While ni names with and without an authority differ
syntactically from ni names with different authorities, all three
refer to the same object if and only if the digest algorithm,
length, and value are the same.
One slash: The literal "/"
Digest Algorithm: The name of the digest algorithm, as specified in
the IANA registry defined in Section 9.4 below.
Separator: The literal ";"
Digest Value: The digest value MUST be encoded using the base64url
[RFC4648] encoding, with no "=" padding characters.
Query Parameter separator '?': The query parameter separator acts as
a separator between the digest value and the query parameters (if
specified). For compatibility with Internationalized Resource
Identifiers (IRIs), non-ASCII characters in the query part MUST be
encoded as UTF-8, and the resulting octets MUST be percent-encoded
(see [RFC3986], Section 2.1).
Query Parameters: A "tag=value" list of optional query parameters as
are used with HTTP URLs [RFC2616] with a separator character '&'
between each. For example, "foo=bar&baz=bat".
It is OPTIONAL for implementations to check the integrity of the URI/
resource mapping when sending, receiving, or processing ni URIs.
Escaping of characters follows the rules in RFC 3986. This means
that percent-encoding is used to distinguish between reserved and
unreserved functions of the same character in the same URI component.
Farrell, et al. Standards Track [Page 6]
^L
RFC 6920 Naming Things with Hashes April 2013
As an example, an ampersand ('&') is used in the query part to
separate attribute-value pairs; therefore, an ampersand in a value
has to be escaped as '%26'. Note that the set of reserved characters
differs for each component. As an example, a slash ('/') does not
have any reserved function in a query part and therefore does not
have to be escaped. However, it can still appear escaped as '%2f' or
'%2F', and implementations have to be able to understand such escaped
forms. Also note that any characters outside those allowed in the
respective URI component have to be escaped.
The Named Information URI adapts the URI definition from the URI
Generic Syntax [RFC3986]. We start with the base URI production:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
; from RFC 3986
Figure 3: URI Syntax
Then, we adapt that for the Named Information URI:
NI-URI = ni-scheme ":" ni-hier-part [ "?" query ]
; adapted from "URI" in RFC 3986
; query is from RFC 3986, Section 3.4
ni-scheme = "ni"
ni-hier-part = "//" [ authority ] "/" alg-val
; authority is from RFC 3986, Section 3.2
alg-val = alg ";" val
; adapted from "hier-part" in RFC 3986
alg = 1*unreserved
val = 1*unreserved
; unreserved is from RFC 3986, Section 2.3
Figure 4: ni Name Syntax
The "val" field MUST contain the output of base64url encoding (with
no "=" padding characters), the result of applying the hash function
("alg") to its defined input, which defaults to the object bytes that
are expected to be returned when the URI is dereferenced.
Relative ni URIs can occur. In such cases, the algorithm in Section
5 of [RFC3986] applies. As an example, in Figure 5, the absolute URI
for "this third document" is "ni://example.com/sha-256-128;...".
Farrell, et al. Standards Track [Page 7]
^L
RFC 6920 Naming Things with Hashes April 2013
<html>
<head>
<title>ni: relative URI test</title>
<base href="ni://example.com">
</head>
<body>
<p>Please check <a href="sha-256;f4OxZX...">this document</a>.
and <a href="sha-256;UyaQV...">this other document</a>.
and <a href="sha-256-128;...">this third document</a>.
</p>
</body>
</html>
Figure 5: Example HTML with Relative ni URI
The authority field in an ni URI is not quite the same as that from
an HTTP URL, even though the same values (e.g., DNS names) may be
usefully used in both. For an ni URI, the authority does not control
nearly as much of the structure of the "right-hand side" of the URI.
With ni URIs we also define standard query string attributes and, of
course, have a strictly defined way to include the hash value.
Internationalisation of strings within ni names is handled exactly as
for http URIs -- see [RFC2616], Section 3.2.3.
3.1. Content Type Query String Attribute
The semantics of a digest being used to establish a secure reference
from an authenticated source to an external source may be a function
of associated metadata such as the Content Type. The Content Type
"ct" parameter specifies the MIME Content Type of the associated data
as defined in [RFC6838]. See Section 9.5 for the associated IANA
registry for ni parameter names as shown in Figure 6.
Implementations of this specification MUST support parsing the "ct="
query string attribute name.
ni:///sha-256-32;f4OxZQ?ct=text/plain
Figure 6: Example ni URI with Content Type
Protocols making use of ni URIs will need to specify how to verify
name-data integrity for the MIME Content Types that they need to
process and will need to take into account possible Content-Transfer-
Encodings and other aspects of MIME encoding.
Farrell, et al. Standards Track [Page 8]
^L
RFC 6920 Naming Things with Hashes April 2013
Implementations of this specification SHOULD support name-data
integrity validation for at least the application/octet-stream
Content Type, with no explicit Content-Transfer-Encoding (which is
equivalent to binary). Additional Content Types and Content-
Transfer-Encodings can of course also be supported, but are OPTIONAL.
Note that the hash is calculated after the Content-Transfer-Encoding
is removed so it is applied to the raw data.
If a) the user agent is sensitive to the Content Type and b) the ni
name used has a "ct=" query string attribute and c) the object is
retrieved (from a server) using a protocol that specifies a Content
Type, then, if the two Content Types match, all is well. If, in this
situation, the Content Types do not match, then the client SHOULD
handle that situation as a potential security error. Content Type
matching rules are defined in [RFC2045], Section 5.1.
4. .well-known URI
We define a mapping between URIs following the ni URI scheme and HTTP
[RFC2616] or HTTPS [RFC2818] URLs that makes use of the .well-known
URI [RFC5785] by defining an "ni" suffix (see Section 9).
The HTTP(S) mapping MAY be used in any context where clients with
support for ni URIs are not available.
Since the .well-known name-space is not intended for general
information retrieval, if an application dereferences a
.well-known/ni URL via HTTP(S), then it will often receive a 3xx HTTP
redirection response. A server responding to a request for a
.well-known/ni URL will often therefore return a 3xx response, and a
client sending such a request MUST be able to handle that, as should
any fully compliant HTTP [RFC2616] client.
For an ni name of the form "ni://n-authority/alg;val?query-string"
the corresponding HTTP(S) URL produced by this mapping is
"http://h-authority/.well-known/ni/alg/val?query-string", where
"h-authority" is derived as follows: If the ni name has a specified
authority (i.e., the n-authority is non-empty), then the h-authority
MUST have the same value. If the ni name has no authority specified
(i.e., the n-authority string is empty), a h-authority value MAY be
derived from the application context. For example, if the mapping is
being done in the context of a web page, then the origin [RFC6454]
for that web site can be used. Of course, in general there are no
guarantees that the object named by the ni URI will be available via
the corresponding HTTP(S) URL. But in the case that any data is
returned, the retriever can determine whether or not it is content
that matches the ni URI.
Farrell, et al. Standards Track [Page 9]
^L
RFC 6920 Naming Things with Hashes April 2013
If an application is presented with an HTTP(S) URL with
"/.well-known/ni/" as the start of its pathname component, then the
reverse mapping to an ni URI either including or excluding the
authority might produce an ni URI that is meaningful. However, there
is no guarantee that this will be the case.
When mapping from an ni URI to a .well-known URL, an implementation
will have to decide between choosing an "http" or "https" URL. If
the object referenced does in fact match the hash in the URL, then
there is arguably no need for additional data integrity, if the ni
URI or .well-known URL was received "securely." However, TLS also
provides confidentiality, so there can still be reasons to use the
"https" URL scheme even in this case. Additionally, web server
policy such as [RFC6797] may dictate that data only be available over
"https". In general, however, whether to use "http" or "https" is
something that needs to be decided by the application.
5. URL Segment Format
Some applications may benefit from using hashes in existing HTTP URLs
or other URLs. To do this, one simply uses the "alg-val" production
from the ni name scheme ABNF, which may be included, for example, in
the pathname, query string, or even fragment components of HTTP URLs
[RFC2616]. In such cases, there is nothing present in the URL that
ensures that a client can depend on compliance with this
specification, so clients MUST NOT assume that any URL with a
pathname component that matches the "alg-val" production was in fact
produced as a result of this specification. That URL might or might
not be related to this specification, only the context will tell.
6. Binary Format
If a more space-efficient version of the name is needed, the
following binary format can be used. The binary format name consists
of two fields: a header and the hash value. The header field defines
how the identifier has been created, and the hash value contains a
(possibly truncated) result of a one-way hash over whatever is being
identified by the hash value. The binary format of a name is shown
in Figure 7.
Farrell, et al. Standards Track [Page 10]
^L
RFC 6920 Naming Things with Hashes April 2013
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Res| Suite ID | Hash Value /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ ... /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ ... |
+-+-+-+-+-+-+-+-+
Figure 7: Binary Name Format
The Res field is a reserved 2-bit field for future use and MUST be
set to zero for this specification and ignored on receipt.
The hash algorithm and truncation length are specified by the Suite
ID. For maintaining efficient encoding for the binary format, only a
few hash algorithms and truncation lengths are supported. See
Section 9.4 for details.
A hash value that is truncated to 120 bits will result in the overall
name being a 128-bit value, which may be useful for protocols that
can easily use 128-bit identifiers.
7. Human-Speakable (nih) URI Format
Sometimes a resource may need to be referred to via a name in a
format that is easy for humans to read out and less likely to be
ambiguous when heard. This is intended to be usable, for example,
over the phone in order to confirm the (current or future) presence
or absence of a resource. This "confirmation" use-case described
further in Section 8.3 is the main current use-case for Named
Information for Humans (nih) URIs. ("nih" also means "Not Invented
Here", which is clearly false, and therefore worth including
[RFC5513]. :-)
The ni URI format is not well-suited for this, as, for example,
base64url uses both uppercase and lowercase, which can easily cause
confusion. For this particular purpose ("speaking" the value of a
hash output), the more verbose but less ambiguous (when spoken) nih
URI scheme is defined.
The justification for nih being a URI scheme is that it can help a
user agent for the speaker to better display the value or help a
machine to better speak or recognise the value when spoken. We do
not include the query string since there is no way to ensure that its
value might be spoken unambiguously and similarly for the authority,
where, e.g., some internationalised forms of domain name might not be
Farrell, et al. Standards Track [Page 11]
^L
RFC 6920 Naming Things with Hashes April 2013
easy to speak and comprehend easily. This leaves the hash value as
the only part of the ni URI that we feel can be usefully included.
But since speakers or listeners (or speech recognition) may err, we
also include a checkdigit to catch common errors and allow for the
inclusion of "-" separators to make nih URIs easier to read out.
Fields in nih URIs are separated by a semicolon (;) character. The
first field is a hash algorithm string, as in the ni URI format. The
hash value is represented using lowercase ASCII hex characters; for
example, an octet with the decimal value 58 (0x3A) is encoded as
'3a'. This is the same as base16 encoding as defined in RFC 4648
[RFC4648] except using lowercase letters. Separators ("-"
characters) MAY be interspersed in the hash value in any way to make
those easier to read, typically grouping four or six characters with
a separator between.
The hash value MAY be followed by a semicolon ';' then a checkdigit.
The checkdigit MUST be calculated using Luhn's mod N algorithm (with
N=16) as defined in [ISOIEC7812] (see also [Luhn]). The input to the
calculation is the ASCII hex-encoded hash value (i.e., "sepval" in
the ABNF production below) but with all "-" separator characters
first stripped out. This maps the ASCII hex so that '0'=0, ...'9'=9,
'a'=10, ...'f'=15. None of the other fields, nor any "-" separators,
are input when calculating the checkdigit.
humanname = "nih:" alg-sepval [ ";" checkdigit ]
alg-sepval = alg ";" sepval
sepval = 1*(ahlc / "-")
ahlc = DIGIT / "a" / "b" / "c" / "d" / "e" / "f"
; DIGIT is defined in RFC 5234 and is 0-9
checkdigit = ahlc
Figure 8: Human-Speakable Syntax
For algorithms that have a Suite ID reserved (see Figure 11), the alg
field MAY contain the ID value as an ASCII-encoded decimal number
instead of the hash name string (for example, "3" instead of
"sha-256-120"). Implementations MUST be able to match the decimal ID
values for the algorithms and hash lengths that they support, even if
they do not support the binary format.
There is no such thing as a relative nih URI.
Farrell, et al. Standards Track [Page 12]
^L
RFC 6920 Naming Things with Hashes April 2013
8. Examples
8.1. Hello World!
The following ni URI is generated from the text "Hello World!" (12
characters without the quotes), using the sha-256 algorithm shown
with and without an authority field:
ni:///sha-256;f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk
ni://example.com/sha-256;f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk
The following HTTP URL represents a mapping from the previous ni name
based on the algorithm outlined above.
http://example.com/.well-known/ni/sha-256/
f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk
8.2. Public Key Examples
Given the DER-encoded SubjectPublicKeyInfo in Figure 9, we derive the
names shown in Figure 10 for this value.
0000000 30 82 01 22 30 0d 06 09 2a 86 48 86 f7 0d 01 01
0000020 01 05 00 03 82 01 0f 00 30 82 01 0a 02 82 01 01
0000040 00 a2 5f 83 da 9b d9 f1 7a 3a 36 67 ba fd 5a 94
0000060 0e cf 16 d5 5a 55 3a 5e d4 03 b1 65 8e 6d cf a3
0000100 b7 db a4 e7 cc 0f 52 c6 7d 35 1d c4 68 c2 bd 7b
0000120 9d db e4 0a d7 10 cd f9 53 20 ee 0d d7 56 6e 5b
0000140 7a ae 2c 5f 83 0a 19 3c 72 58 96 d6 86 e8 0e e6
0000160 94 eb 5c f2 90 3e f3 a8 8a 88 56 b6 cd 36 38 76
0000200 22 97 b1 6b 3c 9c 07 f3 4f 97 08 a1 bc 29 38 9b
0000220 81 06 2b 74 60 38 7a 93 2f 39 be 12 34 09 6e 0b
0000240 57 10 b7 a3 7b f2 c6 ee d6 c1 e5 ec ae c5 9c 83
0000260 14 f4 6b 58 e2 de f2 ff c9 77 07 e3 f3 4c 97 cf
0000300 1a 28 9e 38 a1 b3 93 41 75 a1 a4 76 3f 4d 78 d7
0000320 44 d6 1a e3 ce e2 5d c5 78 4c b5 31 22 2e c7 4b
0000340 8c 6f 56 78 5c a1 c4 c0 1d ca e5 b9 44 d7 e9 90
0000360 9c bc ee b0 a2 b1 dc da 6d a0 0f f6 ad 1e 2c 12
0000400 a2 a7 66 60 3e 36 d4 91 41 c2 f2 e7 69 39 2c 9d
0000420 d2 df b5 a3 44 95 48 7c 87 64 89 dd bf 05 01 ee
0000440 dd 02 03 01 00 01
0000000 53 26 90 57 e1 2f e2 b7 4b a0 7c 89 25 60 a2 d7
0000020 53 87 7e b6 2f f4 4d 5a 19 00 25 30 ed 97 ff e4
Figure 9: A SubjectPublicKeyInfo Used in Examples
and Its sha-256 Hash
Farrell, et al. Standards Track [Page 13]
^L
RFC 6920 Naming Things with Hashes April 2013
+-------------------------------------------------------------------+
| URI: |
| ni:///sha-256;UyaQV-Ev4rdLoHyJJWCi11OHfrYv9E1aGQAlMO2X_-Q |
+-------------------------------------------------------------------+
| .well-known URL (split over 2 lines): |
| http://example.com/.well-known/ni/sha256/ |
| UyaQV-Ev4rdLoHyJJWCi11OHfrYv9E1aGQAlMO2X_-Q |
+-------------------------------------------------------------------+
| URL Segment: |
| sha-256;UyaQV-Ev4rdLoHyJJWCi11OHfrYv9E1aGQAlMO2X_-Q |
+-------------------------------------------------------------------+
| Binary name (ASCII hex encoded) with 120-bit truncated hash value |
| which is Suite ID 0x03: |
| 0353 2690 57e1 2fe2 b74b a07c 8925 60a2 |
+-------------------------------------------------------------------+
| Human-speakable form of a name for this key (truncated to 120 bits|
| in length) with checkdigit: |
| nih:sha-256-120;5326-9057-e12f-e2b7-4ba0-7c89-2560-a2;f |
+-------------------------------------------------------------------+
| Human-speakable form of a name for this key (truncated to 32 bits |
| in length) with checkdigit and no "-" separators: |
| nih:sha-256-32;53269057;b |
+-------------------------------------------------------------------+
| Human-speakable form using decimal presentation of the |
| algorithm ID (sha-256-120) with checkdigit: |
| nih:3;532690-57e12f-e2b74b-a07c89-2560a2;f |
+-------------------------------------------------------------------+
Figure 10: Example Names
8.3. nih Usage Example
Alice has set up a server node with an RSA key pair. She uses an ni
URI as the name for the public key that corresponds to the private
key on that box. Alice's node might identify itself using that ni
URI in some protocol.
Bob would like to believe that it's really Alice's node when his node
interacts with the network and asks his friend Alice to tell him what
public key she uses. Alice hits the "tell someone the name of the
public key" button on her admin user interface and that displays the
nih URI and says "tell this to your buddy". She phones Bob and reads
the nih URI to him.
Farrell, et al. Standards Track [Page 14]
^L
RFC 6920 Naming Things with Hashes April 2013
Bob types that in to his "manage known nodes" admin application (or
lets that application listen to part of the call), which can
regenerate the ni URI and store that or some equivalent. Then when
Bob's node interacts with Alice's node, it can more safely accept a
signature or encrypt data to Alice's node.
9. IANA Considerations
9.1. Assignment of ni URI Scheme
The procedures for registration of a URI scheme are specified in RFC
4395 [RFC4395]. The following assignment has been made.
URI scheme name: ni
Status: Permanent
URI scheme syntax: See Section 3.
URI scheme semantics: See Section 3.
Encoding considerations: See Section 3.
Applications/protocols that use this URI scheme name:
General applicability.
Interoperability considerations: Defined here.
Security considerations: See Section 10.
Contact: Stephen Farrell, stephen.farrell@cs.tcd.ie
Author/Change controller: IETF
References: As specified in this document
9.2. Assignment of nih URI Scheme
The procedures for registration of a URI scheme are specified in RFC
4395 [RFC4395]. The following assignment has been made.
URI scheme name: nih
Status: Permanent
URI scheme syntax: See Section 7.
Farrell, et al. Standards Track [Page 15]
^L
RFC 6920 Naming Things with Hashes April 2013
URI scheme semantics: See Section 7.
Encoding considerations: See Section 7.
Applications/protocols that use this URI scheme name:
General applicability.
Interoperability considerations: Defined here.
Security considerations: See Section 10.
Contact: Stephen Farrell, stephen.farrell@cs.tcd.ie
Author/Change controller: IETF
References: As specified in this document
9.3. Assignment of .well-known 'ni' URI
The procedures for registration of a Well-Known URI entry are
specified in RFC 5785 [RFC5785]. The following assignment has been
made.
URI suffix: ni
Change controller: IETF
Specification document(s): This document
Related information: None
9.4. Creation of Named Information Hash Algorithm Registry
IANA has created a new registry for hash algorithms as used in the
name formats specified here; it is called the "Named Information Hash
Algorithm Registry". Future assignments are to be made through
Expert Review [RFC5226]. This registry has five fields: the suite
ID, the hash algorithm name string, the truncation length, the
underlying algorithm reference, and a status field that indicates if
the algorithm is current or deprecated and should no longer be used.
The status field can have the value "current" or "deprecated". Other
values are reserved for possible future definition.
If the status is "current", then that does not necessarily mean that
the algorithm is "good" for any particular purpose, since the
cryptographic strength requirements will be set by other applications
or protocols.
Farrell, et al. Standards Track [Page 16]
^L
RFC 6920 Naming Things with Hashes April 2013
A request to mark an entry as "deprecated" can be done by sending a
mail to the Designated Expert. Before approving the request, the
community MUST be consulted via a "call for comments" of at least two
weeks by sending a mail to the IETF discussion list.
Initial values are specified below. The Designated Expert SHOULD
generally approve additions that reference hash algorithms that are
widely used in other IETF protocols. In addition, the Designated
Expert SHOULD NOT accept additions where the underlying hash function
(with no truncation) is considered weak for collisions. Part of the
reasoning behind this last point is that inclusion of code for weak
hash functions, e.g., the MD5 algorithm, can trigger costly false
positives if code is audited for inclusion of obsolete ciphers. See
[RFC6149], [RFC6150], and [RFC6151] for examples of some hash
functions that are considered obsolete in this sense.
The suite ID field ("ID") can be empty or can have values between 0
and 63, inclusive. Because there are only 64 possible values, this
field is OPTIONAL (leaving it empty if omitted). Where the binary
format is not expected to be used for a given hash algorithm, this
field SHOULD be omitted. If an entry is registered without a suite
ID, the Designated Expert MAY allow for later allocation of a suite
ID, if that appears warranted. The Designated Expert MAY consult the
community via a "call for comments" by sending a mail to the IETF
discussion list before allocating a suite ID.
ID Hash Name String Value Length Reference Status
0 Reserved
1 sha-256 256 bits [SHA-256] current
2 sha-256-128 128 bits [SHA-256] current
3 sha-256-120 120 bits [SHA-256] current
4 sha-256-96 96 bits [SHA-256] current
5 sha-256-64 64 bits [SHA-256] current
6 sha-256-32 32 bits [SHA-256] current
32 Reserved
Figure 11: Suite Identifiers
The Suite ID value 32 is reserved for compatibility with IPv6
addresses from the Special Purpose Address Registry [RFC4773], such
as Overlay Routable Cryptographic Hash Identifiers (ORCHIDs)
[RFC4843].
The referenced hash algorithm matching the Suite ID, truncated to the
length indicated, according to the description given in Section 2, is
used for generating the hash. The Designated Expert is responsible
for ensuring that the document referenced for the hash algorithm
meets the "specification required" rule.
Farrell, et al. Standards Track [Page 17]
^L
RFC 6920 Naming Things with Hashes April 2013
9.5. Creation of Named Information Parameter Registry
IANA has created a new registry entitled "Named Information URI
Parameter Definitions".
The policy for future assignments to the registry is Expert Review,
and as for the ni Hash Algorithm Registry above, the Designated
Expert is responsible for ensuring that the document referenced for
the parameter definition meets the "specification required" rule.
The fields in this registry are the parameter name, a description,
and a reference. The parameter name MUST be such that it is suitable
for use as a query string parameter name in an ni URI. (See
Section 3.)
The initial contents of the registry are:
Parameter Meaning Reference
----------- -------------------------------------------- ---------
ct Content Type [RFC6920]
10. Security Considerations
No secret information is required to generate or verify a name of the
form described here. Therefore, a name like this can only provide
evidence for the integrity of the referenced object, and the proof of
integrity provided is only as good as the proof of integrity for the
name from which we started. In other words, the hash value can
provide a name-data integrity binding between the name and the bytes
returned when the name is dereferenced using some protocol.
Disclosure of a name value does not necessarily entail disclosure of
the referenced object but may enable an attacker to determine the
contents of the referenced object by reference to a search engine or
other data repository or, for a highly formatted object with little
variation, by simply guessing the value and checking if the digest
value matches. So, the fact that these names contain hashes does not
protect the confidentiality of the object that was input to the hash.
The integrity of the referenced content would be compromised if a
weak hash function were used. SHA-256 is currently our preferred
hash algorithm; this is why we've added only SHA-256-based suites to
the initial IANA registry.
If a truncated hash value is used, certain security properties will
be affected. In general, a hash algorithm is designed to produce
sufficient bits to prevent a 'birthday attack' collision occurring.
Ensuring that the difficulty of discovering two pieces of content
Farrell, et al. Standards Track [Page 18]
^L
RFC 6920 Naming Things with Hashes April 2013
that result in the same digest with a work factor O(2^x) by brute
force requires a digest length of 2x. Many security applications
only require protection against a second pre-image attack, which only
requires a digest length of x to achieve the same work factor.
Basically, the shorter the hash value used, the less security benefit
you can possibly get.
An important thing to keep in mind is not to make the mistake of
thinking two names are the same when they aren't. For example, a
name with a 32-bit truncated sha-256 hash is not the same as a name
with the full 256 bits of hash output, even if the hash value for one
is a prefix of that for the other.
The reason for this is that if an application treats these as the
same name, then that might open up a number of attacks. For example,
if I publish an object with the full hash, then I probably (in
general) don't want some other application to treat a name with just
the first 32 bits of that as referring to the same thing, since the
32-bit name will have lots of colliding objects. If ni or nih URIs
become widely used, there will be many cases where names will occur
more than once in application protocols, and it'll be unpredictable
which instance of the name would be used for name-data integrity
checking, thus leading to threats. For this reason, we require that
the algorithm, length, and value all match before we consider two
names to be the same.
The fact that an ni URI includes a domain name in the authority field
by itself implies nothing about the relationship between the owner of
the domain name and any content referenced by that URI. While a
name-data integrity service can be provided using ni URIs, that does
not in any sense validate the authority part of the name. For
example, there is nothing to stop anyone from creating an ni URI
containing a hash of someone else's content. Application developers
MUST NOT assume any relationship between the registrant of the domain
name that is part of an ni URI and some matching content just because
the ni URI matches that content.
If name-data integrity is successfully validated, and the hash is
strong and long enough, then the "web origin" [RFC6454] for the bytes
of the named object is really going to be the place from which you
get the ni name and not the place from which you get the bytes of the
object. This appears to offer a potential benefit if using ni names
for scripts included from a HTML page accessed via server-
authenticated https, for example. If name-data integrity is not
validated (and it is optional) or fails, then the web origin is, as
usual, the place from which the object bytes were received.
Applications making use of ni names SHOULD take this into account in
their trust models.
Farrell, et al. Standards Track [Page 19]
^L
RFC 6920 Naming Things with Hashes April 2013
Some implementations might mishandle ni URIs that include non-base64
characters, whitespace, or other non-conforming strings, and that
could lead to erroneously considering names to be the same when they
are not. An ni URI that is malformed in such ways MUST NOT be
treated as matching any other ni URI. Implementers need to check the
behaviour of libraries for such parsing problems.
11. Acknowledgments
This work has been supported by the EU FP7 project SAIL. The authors
would like to thank SAIL participants to our naming discussions,
especially Jean-Francois Peltier, for their input.
The authors would also like to thank Carsten Bormann, Martin Duerst,
Tobias Heer, Bjoern Hoehrmann, Tero Kivinen, Barry Leiba, Larry
Masinter, David McGrew, Alexey Melnikov, Bob Moskowitz, Jonathan
Rees, Eric Rescorla, Zach Shelby, and Martin Thomas for their
comments and input to the document. Thanks, in particular, to James
Manger for correcting the examples.
12. References
12.1. Normative References
[ISOIEC7812]
ISO, "Identification cards -- Identification of issuers --
Part 1: Numbering system", ISO/IEC 7812-1:2006,
October 2006, <http://www.iso.org/iso/iso_catalogue/
catalogue_tc/catalogue_detail.htm?csnumber=39698>.
[RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part One: Format of Internet Message
Bodies", RFC 2045, November 1996.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66,
RFC 3986, January 2005.
Farrell, et al. Standards Track [Page 20]
^L
RFC 6920 Naming Things with Hashes April 2013
[RFC4395] Hansen, T., Hardie, T., and L. Masinter, "Guidelines and
Registration Procedures for New URI Schemes", BCP 35,
RFC 4395, February 2006.
[RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data
Encodings", RFC 4648, October 2006.
[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", STD 68, RFC 5234, January 2008.
[RFC5280] 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", RFC 5280, May 2008.
[RFC5785] Nottingham, M. and E. Hammer-Lahav, "Defining Well-Known
Uniform Resource Identifiers (URIs)", RFC 5785,
April 2010.
[RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type
Specifications and Registration Procedures", BCP 13,
RFC 6838, January 2013.
[SHA-256] NIST, "Secure Hash Standard", FIPS 180-3, October 2008,
<http://csrc.nist.gov/publications/fips/fips180-3/
fips180-3_final.pdf>.
12.2. Informative References
[CCN] Jacobson, V., Smetters, D., Thornton, J., Plass, M.,
Briggs, N., and R. Braynard, "Networking Named Content",
Proceedings of the 5th international conference on
Emerging networking experiments and technologies (CoNEXT
'09), December 2009.
[DECPARAMS]
Hallam-Baker, P., Stradling, R., Farrell, S., Kutscher,
D., and B. Ohlman, "The Named Information (ni) URI Scheme:
Optional Features", Work in Progress, June 2012.
[Luhn] Wikipedia, "Luhn mod N algorithm", September 2011,
<http://en.wikipedia.org/w/
index.php?title=Luhn_mod_N_algorithm&oldid=449928878>.
[Magnet] Wikipedia, "Magnet URI scheme", March 2013,
<http://en.wikipedia.org/w/
index.php?title=Magnet_URI_scheme&oldid=546892719>.
Farrell, et al. Standards Track [Page 21]
^L
RFC 6920 Naming Things with Hashes April 2013
[NETINF-ARCHITECTURE]
Dannewitz, C., Kutscher, D., Ohlman, B., Farrell, S.,
Ahlgren, B., and M. Karl, "Network of Information (NetInf)
- An information-centric networking architecture",
Computer Communications, Volume 36, Issue 7, pages
721-735, ISSN 0140-3664, 1 April 2013,
<http://www.sciencedirect.com/science/article/pii/
S0140366413000364>.
[RFC3766] Orman, H. and P. Hoffman, "Determining Strengths For
Public Keys Used For Exchanging Symmetric Keys", BCP 86,
RFC 3766, April 2004.
[RFC4773] Huston, G., "Administration of the IANA Special Purpose
IPv6 Address Block", RFC 4773, December 2006.
[RFC4843] Nikander, P., Laganier, J., and F. Dupont, "An IPv6 Prefix
for Overlay Routable Cryptographic Hash Identifiers
(ORCHID)", RFC 4843, April 2007.
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", BCP 26, RFC 5226,
May 2008.
[RFC5513] Farrel, A., "IANA Considerations for Three Letter
Acronyms", RFC 5513, April 1 2009.
[RFC6149] Turner, S. and L. Chen, "MD2 to Historic Status",
RFC 6149, March 2011.
[RFC6150] Turner, S. and L. Chen, "MD4 to Historic Status",
RFC 6150, March 2011.
[RFC6151] Turner, S. and L. Chen, "Updated Security Considerations
for the MD5 Message-Digest and the HMAC-MD5 Algorithms",
RFC 6151, March 2011.
[RFC6454] Barth, A., "The Web Origin Concept", RFC 6454,
December 2011.
[RFC6698] Hoffman, P. and J. Schlyter, "The DNS-Based Authentication
of Named Entities (DANE) Transport Layer Security (TLS)
Protocol: TLSA", RFC 6698, August 2012.
[RFC6797] Hodges, J., Jackson, C., and A. Barth, "HTTP Strict
Transport Security (HSTS)", RFC 6797, November 2012.
Farrell, et al. Standards Track [Page 22]
^L
RFC 6920 Naming Things with Hashes April 2013
Authors' Addresses
Stephen Farrell
Trinity College Dublin
Dublin, 2
Ireland
Phone: +353-1-896-2354
EMail: stephen.farrell@cs.tcd.ie
Dirk Kutscher
NEC
Kurfuersten-Anlage 36
Heidelberg
Germany
EMail: kutscher@neclab.eu
Christian Dannewitz
University of Paderborn
Paderborn
Germany
EMail: cdannewitz@googlemail.com
Borje Ohlman
Ericsson
Stockholm S-16480
Sweden
EMail: Borje.Ohlman@ericsson.com
Ari Keranen
Ericsson
Jorvas 02420
Finland
EMail: ari.keranen@ericsson.com
Phillip Hallam-Baker
Comodo Group Inc.
EMail: philliph@comodo.com
Farrell, et al. Standards Track [Page 23]
^L
|