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
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
|
Network Working Group J. Peterson
Request for Comments: 4474 NeuStar
Category: Standards Track C. Jennings
Cisco Systems
August 2006
Enhancements for Authenticated Identity Management in the
Session Initiation Protocol (SIP)
Status of This Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2006).
Abstract
The existing security mechanisms in the Session Initiation Protocol
(SIP) are inadequate for cryptographically assuring the identity of
the end users that originate SIP requests, especially in an
interdomain context. This document defines a mechanism for securely
identifying originators of SIP messages. It does so by defining two
new SIP header fields, Identity, for conveying a signature used for
validating the identity, and Identity-Info, for conveying a reference
to the certificate of the signer.
Peterson & Jennings Standards Track [Page 1]
^L
RFC 4474 SIP Identity August 2006
Table of Contents
1. Introduction ....................................................3
2. Terminology .....................................................3
3. Background ......................................................3
4. Overview of Operations ..........................................6
5. Authentication Service Behavior .................................7
5.1. Identity within a Dialog and Retargeting ..................10
6. Verifier Behavior ..............................................11
7. Considerations for User Agent ..................................12
8. Considerations for Proxy Servers ...............................13
9. Header Syntax ..................................................13
10. Compliance Tests and Examples .................................16
10.1. Identity-Info with a Singlepart MIME body ................17
10.2. Identity for a Request with No MIME Body or Contact ......20
11. Identity and the TEL URI Scheme ...............................22
12. Privacy Considerations ........................................23
13. Security Considerations .......................................24
13.1. Handling of digest-string Elements .......................24
13.2. Display-Names and Identity ...............................27
13.3. Securing the Connection to the Authentication Service ....28
13.4. Domain Names and Subordination ...........................29
13.5. Authorization and Transitional Strategies ................30
14. IANA Considerations ...........................................31
14.1. Header Field Names .......................................31
14.2. 428 'Use Identity Header' Response Code ..................32
14.3. 436 'Bad Identity-Info' Response Code ....................32
14.4. 437 'Unsupported Certificate' Response Code ..............32
14.5. 438 'Invalid Identity Header' Response Code ..............33
14.6. Identity-Info Parameters .................................33
14.7. Identity-Info Algorithm Parameter Values .................33
Appendix A. Acknowledgements ......................................34
Appendix B. Bit-Exact Archive of Examples of Messages .............34
B.1. Encoded Reference Files ...................................35
Appendix C. Original Requirements .................................38
References ........................................................39
Normative References ...........................................39
Informative References .........................................39
Peterson & Jennings Standards Track [Page 2]
^L
RFC 4474 SIP Identity August 2006
1. Introduction
This document provides enhancements to the existing mechanisms for
authenticated identity management in the Session Initiation Protocol
(SIP, RFC 3261 [1]). An identity, for the purposes of this document,
is defined as a SIP URI, commonly a canonical address-of-record (AoR)
employed to reach a user (such as 'sip:alice@atlanta.example.com').
RFC 3261 stipulates several places within a SIP request where a user
can express an identity for themselves, notably the user-populated
From header field. However, the recipient of a SIP request has no
way to verify that the From header field has been populated
appropriately, in the absence of some sort of cryptographic
authentication mechanism.
RFC 3261 specifies a number of security mechanisms that can be
employed by SIP user agents (UAs), including Digest, Transport Layer
Security (TLS), and S/MIME (implementations may support other
security schemes as well). However, few SIP user agents today
support the end-user certificates necessary to authenticate
themselves (via S/MIME, for example), and furthermore Digest
authentication is limited by the fact that the originator and
destination must share a prearranged secret. It is desirable for SIP
user agents to be able to send requests to destinations with which
they have no previous association -- just as in the telephone network
today, one can receive a call from someone with whom one has no
previous association, and still have a reasonable assurance that the
person's displayed Caller-ID is accurate. A cryptographic approach,
like the one described in this document, can probably provide a much
stronger and less-spoofable assurance of identity than the telephone
network provides today.
2. Terminology
In this document, the key words "MUST", "MUST NOT", "REQUIRED",
"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT
RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as
described in RFC 2119 [2] and indicate requirement levels for
compliant SIP implementations.
3. Background
The usage of many SIP applications and services is governed by
authorization policies. These policies may be automated, or they may
be applied manually by humans. An example of the latter would be an
Internet telephone application that displays the Caller-ID of a
caller, which a human may review before answering a call. An example
of the former would be a presence service that compares the identity
Peterson & Jennings Standards Track [Page 3]
^L
RFC 4474 SIP Identity August 2006
of potential subscribers to a whitelist before determining whether it
should accept or reject the subscription. In both of these cases,
attackers might attempt to circumvent these authorization policies
through impersonation. Since the primary identifier of the sender of
a SIP request, the From header field, can be populated arbitrarily by
the controller of a user agent, impersonation is very simple today.
The mechanism described in this document aspires to provide a strong
identity system for SIP in which authorization policies cannot be
circumvented by impersonation.
All RFC 3261-compliant user agents support Digest authentication,
which utilizes a shared secret, as a means for authenticating
themselves to a SIP registrar. Registration allows a user agent to
express that it is an appropriate entity to which requests should be
sent for a particular SIP AoR URI (e.g.,
'sip:alice@atlanta.example.com').
By the definition of identity used in this document, registration is
a proof of the identity of the user to a registrar. However, the
credentials with which a user agent proves its identity to a
registrar cannot be validated by just any user agent or proxy server
-- these credentials are only shared between the user agent and their
domain administrator. So this shared secret does not immediately
help a user to authenticate to a wide range of recipients.
Recipients require a means of determining whether or not the 'return
address' identity of a non-REGISTER request (i.e., the From header
field value) has legitimately been asserted.
The AoR URI used for registration is also the URI with which a UA
commonly populates the From header field of requests in order to
provide a 'return address' identity to recipients. From an
authorization perspective, if you can prove you are eligible to
register in a domain under a particular AoR, you can prove you can
legitimately receive requests for that AoR, and accordingly, when you
place that AoR in the From header field of a SIP request other than a
registration (like an INVITE), you are providing a 'return address'
where you can legitimately be reached. In other words, if you are
authorized to receive requests for that 'return address', logically,
it follows that you are also authorized to assert that 'return
address' in your From header field. This is of course only one
manner in which a domain might determine how a particular user is
authorized to populate the From header field; as an aside, for other
sorts of URIs in the From (like anonymous URIs), other authorization
policies would apply.
Ideally, then, SIP user agents should have some way of proving to
recipients of SIP requests that their local domain has authenticated
them and authorized the population of the From header field. This
Peterson & Jennings Standards Track [Page 4]
^L
RFC 4474 SIP Identity August 2006
document proposes a mediated authentication architecture for SIP in
which requests are sent to a server in the user's local domain, which
authenticates such requests (using the same practices by which the
domain would authenticate REGISTER requests). Once a message has
been authenticated, the local domain then needs some way to
communicate to other SIP entities that the sending user has been
authenticated and its use of the From header field has been
authorized. This document addresses how that imprimatur of
authentication can be shared.
RFC 3261 already describes an architecture very similar to this in
Section 26.3.2.2, in which a user agent authenticates itself to a
local proxy server, which in turn authenticates itself to a remote
proxy server via mutual TLS, creating a two-link chain of transitive
authentication between the originator and the remote domain. While
this works well in some architectures, there are a few respects in
which this is impractical. For one, transitive trust is inherently
weaker than an assertion that can be validated end-to-end. It is
possible for SIP requests to cross multiple intermediaries in
separate administrative domains, in which case transitive trust
becomes even less compelling.
One solution to this problem is to use 'trusted' SIP intermediaries
that assert an identity for users in the form of a privileged SIP
header. A mechanism for doing so (with the P-Asserted-Identity
header) is given in [12]. However, this solution allows only hop-
by-hop trust between intermediaries, not end-to-end cryptographic
authentication, and it assumes a managed network of nodes with strict
mutual trust relationships, an assumption that is incompatible with
widespread Internet deployment.
Accordingly, this document specifies a means of sharing a
cryptographic assurance of end-user SIP identity in an interdomain or
intradomain context that is based on the concept of an
'authentication service' and a new SIP header, the Identity header.
Note that the scope of this document is limited to providing this
identity assurance for SIP requests; solving this problem for SIP
responses is more complicated and is a subject for future work.
This specification allows either a user agent or a proxy server to
provide identity services and to verify identities. To maximize
end-to-end security, it is obviously preferable for end-users to
acquire their own certificates and corresponding private keys; if
they do, they can act as an authentication service. However, end-
user certificates may be neither practical nor affordable, given the
difficulties of establishing a Public Key Infrastructure (PKI) that
extends to end-users, and moreover, given the potentially large
number of SIP user agents (phones, PCs, laptops, PDAs, gaming
Peterson & Jennings Standards Track [Page 5]
^L
RFC 4474 SIP Identity August 2006
devices) that may be employed by a single user. In such
environments, synchronizing keying material across multiple devices
may be very complex and requires quite a good deal of additional
endpoint behavior. Managing several certificates for the various
devices is also quite problematic and unpopular with users.
Accordingly, in the initial use of this mechanism, it is likely that
intermediaries will instantiate the authentication service role.
4. Overview of Operations
This section provides an informative (non-normative) high-level
overview of the mechanisms described in this document.
Imagine the case where Alice, who has the home proxy of example.com
and the address-of-record sip:alice@example.com, wants to communicate
with sip:bob@example.org.
Alice generates an INVITE and places her identity in the From header
field of the request. She then sends an INVITE over TLS to an
authentication service proxy for her domain.
The authentication service authenticates Alice (possibly by sending a
Digest authentication challenge) and validates that she is authorized
to assert the identity that is populated in the From header field.
This value may be Alice's AoR, or it may be some other value that the
policy of the proxy server permits her to use. It then computes a
hash over some particular headers, including the From header field
and the bodies in the message. This hash is signed with the
certificate for the domain (example.com, in Alice's case) and
inserted in a new header field in the SIP message, the 'Identity'
header.
The proxy, as the holder of the private key of its domain, is
asserting that the originator of this request has been authenticated
and that she is authorized to claim the identity (the SIP address-
of-record) that appears in the From header field. The proxy also
inserts a companion header field, Identity-Info, that tells Bob how
to acquire its certificate, if he doesn't already have it.
When Bob's domain receives the request, it verifies the signature
provided in the Identity header, and thus can validate that the
domain indicated by the host portion of the AoR in the From header
field authenticated the user, and permitted the user to assert that
From header field value. This same validation operation may be
performed by Bob's user agent server (UAS).
Peterson & Jennings Standards Track [Page 6]
^L
RFC 4474 SIP Identity August 2006
5. Authentication Service Behavior
This document defines a new role for SIP entities called an
authentication service. The authentication service role can be
instantiated by a proxy server or a user agent. Any entity that
instantiates the authentication service role MUST possess the private
key of a domain certificate. Intermediaries that instantiate this
role MUST be capable of authenticating one or more SIP users that can
register in that domain. Commonly, this role will be instantiated by
a proxy server, since these entities are more likely to have a static
hostname, hold a corresponding certificate, and have access to SIP
registrar capabilities that allow them to authenticate users in their
domain. It is also possible that the authentication service role
might be instantiated by an entity that acts as a redirect server,
but that is left as a topic for future work.
SIP entities that act as an authentication service MUST add a Date
header field to SIP requests if one is not already present (see
Section 9 for information on how the Date header field assists
verifiers). Similarly, authentication services MUST add a Content-
Length header field to SIP requests if one is not already present;
this can help verifiers to double-check that they are hashing exactly
as many bytes of message-body as the authentication service when they
verify the message.
Entities instantiating the authentication service role perform the
following steps, in order, to generate an Identity header for a SIP
request:
Step 1:
The authentication service MUST extract the identity of the sender
from the request. The authentication service takes this value from
the From header field; this AoR will be referred to here as the
'identity field'. If the identity field contains a SIP or SIP Secure
(SIPS) URI, the authentication service MUST extract the hostname
portion of the identity field and compare it to the domain(s) for
which it is responsible (following the procedures in RFC 3261,
Section 16.4, used by a proxy server to determine the domain(s) for
which it is responsible). If the identity field uses the TEL URI
scheme, the policy of the authentication service determines whether
or not it is responsible for this identity; see Section 11 for more
information. If the authentication service is not responsible for
the identity in question, it SHOULD process and forward the request
normally, but it MUST NOT add an Identity header; see below for more
information on authentication service handling of an existing
Identity header.
Peterson & Jennings Standards Track [Page 7]
^L
RFC 4474 SIP Identity August 2006
Step 2:
The authentication service MUST determine whether or not the sender
of the request is authorized to claim the identity given in the
identity field. In order to do so, the authentication service MUST
authenticate the sender of the message. Some possible ways in which
this authentication might be performed include:
If the authentication service is instantiated by a SIP
intermediary (proxy server), it may challenge the request with
a 407 response code using the Digest authentication scheme (or
viewing a Proxy-Authentication header sent in the request,
which was sent in anticipation of a challenge using cached
credentials, as described in RFC 3261, Section 22.3). Note
that if that proxy server is maintaining a TLS connection with
the client over which the client had previously authenticated
itself using Digest authentication, the identity value obtained
from that previous authentication step can be reused without an
additional Digest challenge.
If the authentication service is instantiated by a SIP user
agent, a user agent can be said to authenticate its user on the
grounds that the user can provision the user agent with the
private key of the domain, or preferably by providing a
password that unlocks said private key.
Authorization of the use of a particular username in the From header
field is a matter of local policy for the authentication service, one
that depends greatly on the manner in which authentication is
performed. For example, one policy might be as follows: the username
given in the 'username' parameter of the Proxy-Authorization header
MUST correspond exactly to the username in the From header field of
the SIP message. However, there are many cases in which this is too
limiting or inappropriate; a realm might use 'username' parameters in
Proxy-Authorization that do not correspond to the user-portion of SIP
From headers, or a user might manage multiple accounts in the same
administrative domain. In this latter case, a domain might maintain
a mapping between the values in the 'username' parameter of Proxy-
Authorization and a set of one or more SIP URIs that might
legitimately be asserted for that 'username'. For example, the
username can correspond to the 'private identity' as defined in Third
Generation Partnership Project (3GPP), in which case the From header
field can contain any one of the public identities associated with
this private identity. In this instance, another policy might be as
follows: the URI in the From header field MUST correspond exactly to
one of the mapped URIs associated with the 'username' given in the
Proxy-Authorization header. Various exceptions to such policies
might arise for cases like anonymity; if the AoR asserted in the From
Peterson & Jennings Standards Track [Page 8]
^L
RFC 4474 SIP Identity August 2006
header field uses a form like 'sip:anonymous@example.com', then the
'example.com' proxy should authenticate that the user is a valid user
in the domain and insert the signature over the From header field as
usual.
Note that this check is performed on the addr-spec in the From header
field (e.g., the URI of the sender, like
'sip:alice@atlanta.example.com'); it does not convert the display-
name portion of the From header field (e.g., 'Alice Atlanta').
Authentication services MAY check and validate the display-name as
well, and compare it to a list of acceptable display-names that may
be used by the sender; if the display-name does not meet policy
constraints, the authentication service MUST return a 403 response
code. The reason phrase should indicate the nature of the problem;
for example, "Inappropriate Display Name". However, the display-name
is not always present, and in many environments the requisite
operational procedures for display-name validation may not exist.
For more information, see Section 13.2.
Step 3:
The authentication service SHOULD ensure that any preexisting Date
header in the request is accurate. Local policy can dictate
precisely how accurate the Date must be; a RECOMMENDED maximum
discrepancy of ten minutes will ensure that the request is unlikely
to upset any verifiers. If the Date header contains a time different
by more than ten minutes from the current time noted by the
authentication service, the authentication service SHOULD reject the
request. This behavior is not mandatory because a user agent client
(UAC) could only exploit the Date header in order to cause a request
to fail verification; the Identity header is not intended to provide
a source of non-repudiation or a perfect record of when messages are
processed. Finally, the authentication service MUST verify that the
Date header falls within the validity period of its certificate. For
more information on the security properties associated with the Date
header field value, see Section 9.
Step 4:
The authentication service MUST form the identity signature and add
an Identity header to the request containing this signature. After
the Identity header has been added to the request, the authentication
service MUST also add an Identity-Info header. The Identity-Info
header contains a URI from which its certificate can be acquired.
Details on the generation of both of these headers are provided in
Section 9.
Peterson & Jennings Standards Track [Page 9]
^L
RFC 4474 SIP Identity August 2006
Finally, the authentication service MUST forward the message
normally.
5.1. Identity within a Dialog and Retargeting
Retargeting is broadly defined as the alteration of the Request-URI
by intermediaries. More specifically, retargeting supplants the
original target URI with one that corresponds to a different user, a
user that is not authorized to register under the original target
URI. By this definition, retargeting does not include translation of
the Request-URI to a contact address of an endpoint that has
registered under the original target URI, for example.
When a dialog-forming request is retargeted, this can cause a few
wrinkles for the Identity mechanism when it is applied to requests
sent in the backwards direction within a dialog. This section
provides some non-normative considerations related to this case.
When a request is retargeted, it may reach a SIP endpoint whose user
is not identified by the URI designated in the To header field value.
The value in the To header field of a dialog-forming request is used
as the From header field of requests sent in the backwards direction
during the dialog, and is accordingly the header that would be signed
by an authentication service for requests sent in the backwards
direction. In retargeting cases, if the URI in the From header does
not identify the sender of the request in the backwards direction,
then clearly it would be inappropriate to provide an Identity
signature over that From header. As specified above, if the
authentication service is not responsible for the domain in the From
header field of the request, it MUST NOT add an Identity header to
the request, and it should process/forward the request normally.
Any means of anticipating retargeting, and so on, is outside the
scope of this document, and likely to have equal applicability to
response identity as it does to requests in the backwards direction
within a dialog. Consequently, no special guidance is given for
implementers here regarding the 'connected party' problem;
authentication service behavior is unchanged if retargeting has
occurred for a dialog-forming request. Ultimately, the
authentication service provides an Identity header for requests in
the backwards dialog when the user is authorized to assert the
identity given in the From header field, and if they are not, an
Identity header is not provided.
For further information on the problems of response identity and the
potential solution spaces, see [15].
Peterson & Jennings Standards Track [Page 10]
^L
RFC 4474 SIP Identity August 2006
6. Verifier Behavior
This document introduces a new logical role for SIP entities called a
server. When a verifier receives a SIP message containing an
Identity header, it may inspect the signature to verify the identity
of the sender of the message. Typically, the results of a
verification are provided as input to an authorization process that
is outside the scope of this document. If an Identity header is not
present in a request, and one is required by local policy (for
example, based on a per-sending-domain policy, or a per-sending-user
policy), then a 428 'Use Identity Header' response MUST be sent.
In order to verify the identity of the sender of a message, an entity
acting as a verifier MUST perform the following steps, in the order
here specified.
Step 1:
The verifier MUST acquire the certificate for the signing domain.
Implementations supporting this specification SHOULD have some means
of retaining domain certificates (in accordance with normal practices
for certificate lifetimes and revocation) in order to prevent
themselves from needlessly downloading the same certificate every
time a request from the same domain is received. Certificates cached
in this manner should be indexed by the URI given in the Identity-
Info header field value.
Provided that the domain certificate used to sign this message is not
previously known to the verifier, SIP entities SHOULD discover this
certificate by dereferencing the Identity-Info header, unless they
have some more efficient implementation-specific way of acquiring
certificates for that domain. If the URI scheme in the Identity-Info
header cannot be dereferenced, then a 436 'Bad Identity-Info'
response MUST be returned. The verifier processes this certificate
in the usual ways, including checking that it has not expired, that
the chain is valid back to a trusted certification authority (CA),
and that it does not appear on revocation lists. Once the
certificate is acquired, it MUST be validated following the
procedures in RFC 3280 [9]. If the certificate cannot be validated
(it is self-signed and untrusted, or signed by an untrusted or
unknown certificate authority, expired, or revoked), the verifier
MUST send a 437 'Unsupported Certificate' response.
Step 2:
The verifier MUST follow the process described in Section 13.4 to
determine if the signer is authoritative for the URI in the From
header field.
Peterson & Jennings Standards Track [Page 11]
^L
RFC 4474 SIP Identity August 2006
Step 3:
The verifier MUST verify the signature in the Identity header field,
following the procedures for generating the hashed digest-string
described in Section 9. If a verifier determines that the signature
on the message does not correspond to the reconstructed digest-
string, then a 438 'Invalid Identity Header' response MUST be
returned.
Step 4:
The verifier MUST validate the Date, Contact, and Call-ID headers in
the manner described in Section 13.1; recipients that wish to verify
Identity signatures MUST support all of the operations described
there. It must furthermore ensure that the value of the Date header
falls within the validity period of the certificate whose
corresponding private key was used to sign the Identity header.
7. Considerations for User Agent
This mechanism can be applied opportunistically to existing SIP
deployments; accordingly, it requires no change to SIP user agent
behavior in order for it to be effective. However, because this
mechanism does not provide integrity protection between the UAC and
the authentication service, a UAC SHOULD implement some means of
providing this integrity. TLS would be one such mechanism, which is
attractive because it MUST be supported by SIP proxy servers, but is
potentially problematic because it is a hop-by-hop mechanism. See
Section 13.3 for more information about securing the channel between
the UAC and the authentication service.
When a UAC sends a request, it MUST accurately populate the From
header field with a value corresponding to an identity that it
believes it is authorized to claim. In a request, it MUST set the
URI portion of its From header to match a SIP, SIPS, or TEL URI AoR
that it is authorized to use in the domain (including anonymous URIs,
as described in RFC 3323 [3]). In general, UACs SHOULD NOT use the
TEL URI form in the From header field (see Section 11).
Note that this document defines a number of new 4xx response codes.
If user agents support these response codes, they will be able to
respond intelligently to Identity-based error conditions.
The UAC MUST also be capable of sending requests, including mid-call
requests, through an 'outbound' proxy (the authentication service).
The best way to accomplish this is using pre-loaded Route headers and
loose routing. For a given domain, if an entity that can instantiate
the authentication service role is not in the path of dialog-forming
Peterson & Jennings Standards Track [Page 12]
^L
RFC 4474 SIP Identity August 2006
requests, identity for mid-dialog requests in the backwards direction
cannot be provided.
As a recipient of a request, a user agent that can verify signed
identities should also support an appropriate user interface to
render the validity of identity to a user. User agent
implementations SHOULD differentiate signed From header field values
from unsigned From header field values when rendering to an end-user
the identity of the sender of a request.
8. Considerations for Proxy Servers
Domain policy may require proxy servers to inspect and verify the
identity provided in SIP requests. A proxy server may wish to
ascertain the identity of the sender of the message to provide spam
prevention or call control services. Even if a proxy server does not
act as an authentication service, it MAY validate the Identity header
before it makes a forwarding decision for a request. Proxy servers
MUST NOT remove or modify an existing Identity or Identity-Info
header in a request.
9. Header Syntax
This document specifies two new SIP headers: Identity and Identity-
Info. Each of these headers can appear only once in a SIP message.
The grammar for these two headers is (following the ABNF [6] in RFC
3261 [1]):
Identity = "Identity" HCOLON signed-identity-digest
signed-identity-digest = LDQUOT 32LHEX RDQUOT
Identity-Info = "Identity-Info" HCOLON ident-info
*( SEMI ident-info-params )
ident-info = LAQUOT absoluteURI RAQUOT
ident-info-params = ident-info-alg / ident-info-extension
ident-info-alg = "alg" EQUAL token
ident-info-extension = generic-param
The signed-identity-digest is a signed hash of a canonical string
generated from certain components of a SIP request. To create the
contents of the signed-identity-digest, the following elements of a
SIP message MUST be placed in a bit-exact string in the order
specified here, separated by a vertical line, "|" or %x7C, character:
o The AoR of the UA sending the message, or addr-spec of the From
header field (referred to occasionally here as the 'identity
field').
Peterson & Jennings Standards Track [Page 13]
^L
RFC 4474 SIP Identity August 2006
o The addr-spec component of the To header field, which is the AoR
to which the request is being sent.
o The callid from Call-Id header field.
o The digit (1*DIGIT) and method (method) portions from CSeq header
field, separated by a single space (ABNF SP, or %x20). Note that
the CSeq header field allows linear whitespace (LWS) rather than
SP to separate the digit and method portions, and thus the CSeq
header field may need to be transformed in order to be
canonicalized. The authentication service MUST strip leading
zeros from the 'digit' portion of the Cseq before generating the
digest-string.
o The Date header field, with exactly one space each for each SP and
the weekday and month items case set as shown in BNF in RFC 3261.
RFC 3261 specifies that the BNF for weekday and month is a choice
amongst a set of tokens. The RFC 2234 rules for the BNF specify
that tokens are case sensitive. However, when used to construct
the canonical string defined here, the first letter of each week
and month MUST be capitalized, and the remaining two letters must
be lowercase. This matches the capitalization provided in the
definition of each token. All requests that use the Identity
mechanism MUST contain a Date header.
o The addr-spec component of the Contact header field value. If the
request does not contain a Contact header, this field MUST be
empty (i.e., there will be no whitespace between the fourth and
fifth "|" characters in the canonical string).
o The body content of the message with the bits exactly as they are
in the Message (in the ABNF for SIP, the message-body). This
includes all components of multipart message bodies. Note that
the message-body does NOT include the CRLF separating the SIP
headers from the message-body, but does include everything that
follows that CRLF. If the message has no body, then message-body
will be empty, and the final "|" will not be followed by any
additional characters.
For more information on the security properties of these headers, and
why their inclusion mitigates replay attacks, see Section 13 and [5].
The precise formulation of this digest-string is, therefore
(following the ABNF [6] in RFC 3261 [1]):
digest-string = addr-spec "|" addr-spec "|" callid "|"
1*DIGIT SP Method "|" SIP-date "|" [ addr-spec ] "|"
message-body
Note again that the first addr-spec MUST be taken from the From
header field value, the second addr-spec MUST be taken from the To
header field value, and the third addr-spec MUST be taken from the
Contact header field value, provided the Contact header is present in
the request.
Peterson & Jennings Standards Track [Page 14]
^L
RFC 4474 SIP Identity August 2006
After the digest-string is formed, it MUST be hashed and signed with
the certificate for the domain. The hashing and signing algorithm is
specified by the 'alg' parameter of the Identity-Info header (see
below for more information on Identity-Info header parameters). This
document defines only one value for the 'alg' parameter: 'rsa-sha1';
further values MUST be defined in a Standards Track RFC, see Section
14.7 for more information. All implementations of this specification
MUST support 'rsa-sha1'. When the 'rsa-sha1' algorithm is specified
in the 'alg' parameter of Identity-Info, the hash and signature MUST
be generated as follows: compute the results of signing this string
with sha1WithRSAEncryption as described in RFC 3370 [7] and base64
encode the results as specified in RFC 3548 [8]. A 1024-bit or
longer RSA key MUST be used. The result is placed in the Identity
header field. For detailed examples of the usage of this algorithm,
see Section 10.
The 'absoluteURI' portion of the Identity-Info header MUST contain a
URI which dereferences to a resource containing the certificate of
the authentication service. All implementations of this
specification MUST support the use of HTTP and HTTPS URIs in the
Identity-Info header. Such HTTP and HTTPS URIs MUST follow the
conventions of RFC 2585 [10], and for those URIs the indicated
resource MUST be of the form 'application/pkix-cert' described in
that specification. Note that this introduces key lifecycle
management concerns; were a domain to change the key available at the
Identity-Info URI before a verifier evaluates a request signed by an
authentication service, this would cause obvious verifier failures.
When a rollover occurs, authentication services SHOULD thus provide
new Identity-Info URIs for each new certificate, and SHOULD continue
to make older key acquisition URIs available for a duration longer
than the plausible lifetime of a SIP message (an hour would most
likely suffice).
The Identity-Info header field MUST contain an 'alg' parameter. No
other parameters are defined for the Identity-Info header in this
document. Future Standards Track RFCs may define additional
Identity-Info header parameters.
Peterson & Jennings Standards Track [Page 15]
^L
RFC 4474 SIP Identity August 2006
This document adds the following entries to Table 2 of RFC 3261 [1]:
Header field where proxy ACK BYE CAN INV OPT REG
------------ ----- ----- --- --- --- --- --- ---
Identity R a o o - o o o
SUB NOT REF INF UPD PRA
--- --- --- --- --- ---
o o o o o o
Header field where proxy ACK BYE CAN INV OPT REG
------------ ----- ----- --- --- --- --- --- ---
Identity-Info R a o o - o o o
SUB NOT REF INF UPD PRA
--- --- --- --- --- ---
o o o o o o
Note, in the table above, that this mechanism does not protect the
CANCEL method. The CANCEL method cannot be challenged, because it is
hop-by-hop, and accordingly authentication service behavior for
CANCEL would be significantly limited. Note as well that the
REGISTER method uses Contact header fields in very unusual ways that
complicate its applicability to this mechanism, and the use of
Identity with REGISTER is consequently a subject for future study,
although it is left as optional here for forward-compatibility
reasons. The Identity and Identity-Info header MUST NOT appear in
CANCEL.
10. Compliance Tests and Examples
The examples in this section illustrate the use of the Identity
header in the context of a SIP transaction. Implementers are advised
to verify their compliance with the specification against the
following criteria:
o Implementations of the authentication service role MUST generate
identical base64 identity strings to the ones shown in the
Identity headers in these examples when presented with the source
message and utilizing the appropriate supplied private key for the
domain in question.
o Implementations of the verifier role MUST correctly validate the
given messages containing the Identity header when utilizing the
supplied certificates (with the caveat about self-signed
certificates below).
Peterson & Jennings Standards Track [Page 16]
^L
RFC 4474 SIP Identity August 2006
Note that the following examples use self-signed certificates, rather
than certificates issued by a recognized certificate authority. The
use of self-signed certificates for this mechanism is NOT
RECOMMENDED, and it appears here only for illustrative purposes.
Therefore, in compliance testing, implementations of verifiers SHOULD
generate appropriate warnings about the use of self-signed
certificates. Also, the example certificates in this section have
placed their domain name subject in the subjectAltName field; in
practice, certificate authorities may place domain names in other
locations in the certificate (see Section 13.4 for more information).
Note that all examples in this section use the 'rsa-sha1' algorithm.
Bit-exact reference files for these messages and their various
transformations are supplied in Appendix B.
10.1. Identity-Info with a Singlepart MIME body
Consider the following private key and certificate pair assigned to
'atlanta.example.com' (rendered in OpenSSL format).
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDPPMBtHVoPkXV+Z6jq1LsgfTELVWpy2BVUffJMPH06LL0cJSQO
aIeVzIojzWtpauB7IylZKlAjB5f429tRuoUiedCwMLKblWAqZt6eHWpCNZJ7lONc
IEwnmh2nAccKk83Lp/VH3tgAS/43DQoX2sndnYh+g8522Pzwg7EGWspzzwIDAQAB
AoGBAK0W3tnEFD7AjVQAnJNXDtx59Aa1Vu2JEXe6oi+OrkFysJjbZJwsLmKtrgtt
PXOU8t2mZpi0wK4hX4tZhntiwGKkUPC3h9Bjp+GerifP341RMyMO+6fPgjqOzUDw
+rPjjMpwD7AkcEcqDgbTrZnWv/QnCSaaF3xkUGfFkLx5OKcRAkEA7UxnsE8XaT30
tP/UUc51gNk2KGKgxQQTHopBcew9yfeCRFhvdL7jpaGatEi5iZwGGQQDVOVHUN1H
0YLpHQjRowJBAN+R2bvA/Nimq464ZgnelEDPqaEAZWaD3kOfhS9+vL7oqES+u5E0
J7kXb7ZkiSVUg9XU/8PxMKx/DAz0dUmOL+UCQH8C9ETUMI2uEbqHbBdVUGNk364C
DFcndSxVh+34KqJdjiYSx6VPPv26X9m7S0OydTkSgs3/4ooPxo8HaMqXm80CQB+r
xbB3UlpOohcBwFK9mTrlMB6Cs9ql66KgwnlL9ukEhHHYozGatdXeoBCyhUsogdSU
6/aSAFcvWEGtj7/vyJECQQCCS1lKgEXoNQPqONalvYhyyMZRXFLdD4gbwRPK1uXK
Ypk3CkfFzOyfjeLcGPxXzq2qzuHzGTDxZ9PAepwX4RSk
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIC3TCCAkagAwIBAgIBADANBgkqhkiG9w0BAQUFADBZMQswCQYDVQQGEwJVUzEL
MAkGA1UECAwCR0ExEDAOBgNVBAcMB0F0bGFudGExDTALBgNVBAoMBElFVEYxHDAa
BgNVBAMME2F0bGFudGEuZXhhbXBsZS5jb20wHhcNMDUxMDI0MDYzNjA2WhcNMDYx
MDI0MDYzNjA2WjBZMQswCQYDVQQGEwJVUzELMAkGA1UECAwCR0ExEDAOBgNVBAcM
B0F0bGFudGExDTALBgNVBAoMBElFVEYxHDAaBgNVBAMME2F0bGFudGEuZXhhbXBs
ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM88wG0dWg+RdX5nqOrU
uyB9MQtVanLYFVR98kw8fTosvRwlJA5oh5XMiiPNa2lq4HsjKVkqUCMHl/jb21G6
hSJ50LAwspuVYCpm3p4dakI1knuU41wgTCeaHacBxwqTzcun9Ufe2ABL/jcNChfa
yd2diH6DznbY/PCDsQZaynPPAgMBAAGjgbQwgbEwHQYDVR0OBBYEFNmU/MrbVYcE
KDr/20WISrG1j1rNMIGBBgNVHSMEejB4gBTZlPzK21WHBCg6/9tFiEqxtY9azaFd
pFswWTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkdBMRAwDgYDVQQHDAdBdGxhbnRh
Peterson & Jennings Standards Track [Page 17]
^L
RFC 4474 SIP Identity August 2006
MQ0wCwYDVQQKDARJRVRGMRwwGgYDVQQDDBNhdGxhbnRhLmV4YW1wbGUuY29tggEA
MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEADdQYtswBDmTSTq0mt211
7alm/XGFrb2zdbU0vorxRdOZ04qMyrIpXG1LEmnEOgcocyrXRBvq5p6WbZAcEQk0
DsE3Ve0Nc8x9nmvljW7GsMGFCnCuo4ODTf/1lGdVr9DeCzcj10YUQ3MRemDMXhY2
CtDisLWl7SXOORcZAi1oU9w=
-----END CERTIFICATE-----
A user of atlanta.example.com, Alice, wants to send an INVITE to
bob@biloxi.example.org. She therefore creates the following INVITE
request, which she forwards to the atlanta.example.org proxy server
that instantiates the authentication service role:
INVITE sip:bob@biloxi.example.org SIP/2.0
Via: SIP/2.0/TLS pc33.atlanta.example.com;branch=z9hG4bKnashds8
To: Bob <sip:bob@biloxi.example.org>
From: Alice <sip:alice@atlanta.example.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Max-Forwards: 70
Date: Thu, 21 Feb 2002 13:02:03 GMT
Contact: <sip:alice@pc33.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=UserA 2890844526 2890844526 IN IP4 pc33.atlanta.example.com
s=Session SDP
c=IN IP4 pc33.atlanta.example.com
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
When the authentication service receives the INVITE, it authenticates
Alice by sending a 407 response. As a result, Alice adds an
Authorization header to her request, and resends to the
atlanta.example.com authentication service. Now that the service is
sure of Alice's identity, it calculates an Identity header for the
request. The canonical string over which the identity signature will
be generated is the following (note that the first line wraps because
of RFC editorial conventions):
sip:alice@atlanta.example.com|sip:bob@biloxi.example.org|
a84b4c76e66710|314159 INVITE|Thu, 21 Feb 2002 13:02:03 GMT|
sip:alice@pc33.atlanta.example.com|v=0
o=UserA 2890844526 2890844526 IN IP4 pc33.atlanta.example.com
s=Session SDP
c=IN IP4 pc33.atlanta.example.com
t=0 0
Peterson & Jennings Standards Track [Page 18]
^L
RFC 4474 SIP Identity August 2006
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
The resulting signature (sha1WithRsaEncryption) using the private RSA
key given above, with base64 encoding, is the following:
ZYNBbHC00VMZr2kZt6VmCvPonWJMGvQTBDqghoWeLxJfzB2a1pxAr3VgrB0SsSAa
ifsRdiOPoQZYOy2wrVghuhcsMbHWUSFxI6p6q5TOQXHMmz6uEo3svJsSH49thyGn
FVcnyaZ++yRlBYYQTLqWzJ+KVhPKbfU/pryhVn9Yc6U=
Accordingly, the atlanta.example.com authentication service will
create an Identity header containing that base64 signature string
(175 bytes). It will also add an HTTPS URL where its certificate is
made available. With those two headers added, the message looks like
the following:
INVITE sip:bob@biloxi.example.org SIP/2.0
Via: SIP/2.0/TLS pc33.atlanta.example.com;branch=z9hG4bKnashds8
To: Bob <sip:bob@biloxi.example.org>
From: Alice <sip:alice@atlanta.example.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Max-Forwards: 70
Date: Thu, 21 Feb 2002 13:02:03 GMT
Contact: <sip:alice@pc33.atlanta.example.com>
Identity:
"ZYNBbHC00VMZr2kZt6VmCvPonWJMGvQTBDqghoWeLxJfzB2a1pxAr3VgrB0SsSAa
ifsRdiOPoQZYOy2wrVghuhcsMbHWUSFxI6p6q5TOQXHMmz6uEo3svJsSH49thyGn
FVcnyaZ++yRlBYYQTLqWzJ+KVhPKbfU/pryhVn9Yc6U="
Identity-Info: <https://atlanta.example.com/atlanta.cer>;alg=rsa-sha1
Content-Type: application/sdp
Content-Length: 147
v=0
o=UserA 2890844526 2890844526 IN IP4 pc33.atlanta.example.com
s=Session SDP
c=IN IP4 pc33.atlanta.example.com
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
atlanta.example.com then forwards the request normally. When Bob
receives the request, if he does not already know the certificate of
atlanta.example.com, he dereferences the URL in the Identity-Info
header to acquire the certificate. Bob then generates the same
canonical string given above, from the same headers of the SIP
request. Using this canonical string, the signed digest in the
Identity header, and the certificate discovered by dereferencing the
Peterson & Jennings Standards Track [Page 19]
^L
RFC 4474 SIP Identity August 2006
Identity-Info header, Bob can verify that the given set of headers
and the message body have not been modified.
10.2. Identity for a Request with No MIME Body or Contact
Consider the following private key and certificate pair assigned to
"biloxi.example.org".
-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQC/obBYLRMPjskrAqWOiGPAUxI3/m2ti7ix4caqCTAuFX5cLegQ
7nmquLOHfIhxVIqT2f06UA0lOo2NVofK9G7MTkVbVNiyAlLYUDEj7XWLDICf3ZHL
6Fr/+CF7wrQ9r4kv7XiJKxodVCCd/DhCT9Gp+VDoe8HymqOW/KsneriyIwIDAQAB
AoGBAJ7fsFIKXKkjWgj8ksGOthS3Sn19xPSCyEdBxfEm2Pj7/Nzzeli/PcOaic0k
JALBcnqN2fHEeIGK/9xUBxTufgQYVJqvyHERs6rXX/iT4Ynm9t1905EiQ9ZpHsrI
/AMMUYA1QrGgAIHvZLVLzq+9KLDEZ+HQbuCLJXF+6bl0Eb5BAkEA636oMANp0Qa3
mYWEQ2utmGsYxkXSfyBb18TCOwCty0ndBR24zyOJF2NbZS98Lz+Ga25hfIGw/JHK
nD9bOE88UwJBANBRSpd4bmS+m48R/13tRESAtHqydNinX0kS/RhwHr7mkHTU3k/M
FxQtx34I3GKzaZxMn0A66KS9v/SHdnF+ePECQQCGe7QshyZ8uitLPtZDclCWhEKH
qAQHmUEZvUF2VHLrbukLLOgHUrHNa24cILv4d3yaCVUetymNcuyTwhKj24wFAkAO
z/jx1EplN3hwL+NsllZoWI58uvu7/Aq2c3czqaVGBbb317sHCYgKk0bAG3kwO3mi
93/LXWT1cdiYVpmBcHDBAkEAmpgkFj+xZu5gWASY5ujv+FCMP0WwaH5hTnXu+tKe
PJ3d2IJZKxGnl6itKRN7GeRh9PSK0kZSqGFeVrvsJ4Nopg==
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIC1jCCAj+gAwIBAgIBADANBgkqhkiG9w0BAQUFADBXMQswCQYDVQQGEwJVUzEL
MAkGA1UECAwCTVMxDzANBgNVBAcMBkJpbG94aTENMAsGA1UECgwESUVURjEbMBkG
A1UEAwwSYmlsb3hpLmV4YW1wbGUuY29tMB4XDTA1MTAyNDA2NDAyNloXDTA2MTAy
NDA2NDAyNlowVzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAk1TMQ8wDQYDVQQHDAZC
aWxveGkxDTALBgNVBAoMBElFVEYxGzAZBgNVBAMMEmJpbG94aS5leGFtcGxlLmNv
bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAv6GwWC0TD47JKwKljohjwFMS
N/5trYu4seHGqgkwLhV+XC3oEO55qrizh3yIcVSKk9n9OlANJTqNjVaHyvRuzE5F
W1TYsgJS2FAxI+11iwyAn92Ry+ha//ghe8K0Pa+JL+14iSsaHVQgnfw4Qk/RqflQ
6HvB8pqjlvyrJ3q4siMCAwEAAaOBsTCBrjAdBgNVHQ4EFgQU0Z+RL47W/APDtc5B
fSoQXuEFE/wwfwYDVR0jBHgwdoAU0Z+RL47W/APDtc5BfSoQXuEFE/yhW6RZMFcx
CzAJBgNVBAYTAlVTMQswCQYDVQQIDAJNUzEPMA0GA1UEBwwGQmlsb3hpMQ0wCwYD
VQQKDARJRVRGMRswGQYDVQQDDBJiaWxveGkuZXhhbXBsZS5jb22CAQAwDAYDVR0T
BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQBiyKHIt8TXfGNfpnJXi5jCizOxmY8Y
gln8tyPFaeyq95TGcvTCWzdoBLVpBD+fpRWrX/II5sE6VHbbAPjjVmKbZwzQAtpp
P2Fauj28t94ZeDHN2vqzjfnHjCO24kG3Juf2T80ilp9YHcDwxjUFrt86UnlC+yid
yaTeusW5Gu7v1g==
-----END CERTIFICATE-----
Bob (bob@biloxi.example.org) now wants to send a BYE request to Alice
at the end of the dialog initiated in the previous example. He
therefore creates the following BYE request, which he forwards to the
'biloxi.example.org' proxy server that instantiates the
authentication service role:
Peterson & Jennings Standards Track [Page 20]
^L
RFC 4474 SIP Identity August 2006
BYE sip:alice@pc33.atlanta.example.com SIP/2.0
Via: SIP/2.0/TLS 192.0.2.4;branch=z9hG4bKnashds10
Max-Forwards: 70
From: Bob <sip:bob@biloxi.example.org>;tag=a6c85cf
To: Alice <sip:alice@atlanta.example.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 231 BYE
Content-Length: 0
When the authentication service receives the BYE, it authenticates
Bob by sending a 407 response. As a result, Bob adds an
Authorization header to his request, and resends to the
biloxi.example.org authentication service. Now that the service is
sure of Bob's identity, it prepares to calculate an Identity header
for the request. Note that this request does not have a Date header
field. Accordingly, the biloxi.example.org will add a Date header to
the request before calculating the identity signature. If the
Content-Length header were not present, the authentication service
would add it as well. The baseline message is thus:
BYE sip:alice@pc33.atlanta.example.com SIP/2.0
Via: SIP/2.0/TLS 192.0.2.4;branch=z9hG4bKnashds10
Max-Forwards: 70
From: Bob <sip:bob@biloxi.example.org>;tag=a6c85cf
To: Alice <sip:alice@atlanta.example.com>;tag=1928301774
Date: Thu, 21 Feb 2002 14:19:51 GMT
Call-ID: a84b4c76e66710
CSeq: 231 BYE
Content-Length: 0
Also note that this request contains no Contact header field.
Accordingly, biloxi.example.org will place no value in the canonical
string for the addr-spec of the Contact address. Also note that
there is no message body, and accordingly, the signature string will
terminate, in this case, with two vertical bars. The canonical
string over which the identity signature will be generated is the
following (note that the first line wraps because of RFC editorial
conventions):
sip:bob@biloxi.example.org|sip:alice@atlanta.example.com|
a84b4c76e66710|231 BYE|Thu, 21 Feb 2002 14:19:51 GMT||
The resulting signature (sha1WithRsaEncryption) using the private RSA
key given above for biloxi.example.org, with base64 encoding, is the
following:
Peterson & Jennings Standards Track [Page 21]
^L
RFC 4474 SIP Identity August 2006
sv5CTo05KqpSmtHt3dcEiO/1CWTSZtnG3iV+1nmurLXV/HmtyNS7Ltrg9dlxkWzo
eU7d7OV8HweTTDobV3itTmgPwCFjaEmMyEI3d7SyN21yNDo2ER/Ovgtw0Lu5csIp
pPqOg1uXndzHbG7mR6Rl9BnUhHufVRbp51Mn3w0gfUs=
Accordingly, the biloxi.example.org authentication service will
create an Identity header containing that base64 signature string.
It will also add an HTTPS URL where its certificate is made
available. With those two headers added, the message looks like the
following:
BYE sip:alice@pc33.atlanta.example.com SIP/2.0
Via: SIP/2.0/TLS 192.0.2.4;branch=z9hG4bKnashds10
Max-Forwards: 70
From: Bob <sip:bob@biloxi.example.org>;tag=a6c85cf
To: Alice <sip:alice@atlanta.example.com>;tag=1928301774
Date: Thu, 21 Feb 2002 14:19:51 GMT
Call-ID: a84b4c76e66710
CSeq: 231 BYE
Identity:
"sv5CTo05KqpSmtHt3dcEiO/1CWTSZtnG3iV+1nmurLXV/HmtyNS7Ltrg9dlxkWzo
eU7d7OV8HweTTDobV3itTmgPwCFjaEmMyEI3d7SyN21yNDo2ER/Ovgtw0Lu5csIp
pPqOg1uXndzHbG7mR6Rl9BnUhHufVRbp51Mn3w0gfUs="
Identity-Info: <https://biloxi.example.org/biloxi.cer>;alg=rsa-sha1
Content-Length: 0
biloxi.example.org then forwards the request normally.
11. Identity and the TEL URI Scheme
Since many SIP applications provide a Voice over IP (VoIP) service,
telephone numbers are commonly used as identities in SIP deployments.
In the majority of cases, this is not problematic for the identity
mechanism described in this document. Telephone numbers commonly
appear in the username portion of a SIP URI (e.g.,
'sip:+17005551008@chicago.example.com;user=phone'). That username
conforms to the syntax of the TEL URI scheme (RFC 3966 [13]). For
this sort of SIP address-of-record, chicago.example.com is the
appropriate signatory.
It is also possible for a TEL URI to appear in the SIP To or From
header field outside the context of a SIP or SIPS URI (e.g.,
'tel:+17005551008'). In this case, it is much less clear which
signatory is appropriate for the identity. Fortunately for the
identity mechanism, this form of the TEL URI is more common for the
To header field and Request-URI in SIP than in the From header field,
since the UAC has no option but to provide a TEL URI alone when the
remote domain to which a request is sent is unknown. The local
domain, however, is usually known by the UAC, and accordingly it can
Peterson & Jennings Standards Track [Page 22]
^L
RFC 4474 SIP Identity August 2006
form a proper From header field containing a SIP URI with a username
in TEL URI form. Implementations that intend to send their requests
through an authentication service SHOULD put telephone numbers in the
From header field into SIP or SIPS URIs whenever possible.
If the local domain is unknown to a UAC formulating a request, it
most likely will not be able to locate an authentication service for
its request, and therefore the question of providing identity in
these cases is somewhat moot. However, an authentication service MAY
sign a request containing a TEL URI in the From header field. This
is permitted in this specification strictly for forward compatibility
purposes. In the longer-term, it is possible that ENUM [14] may
provide a way to determine which administrative domain is responsible
for a telephone number, and this may aid in the signing and
verification of SIP identities that contain telephone numbers. This
is a subject for future work.
12. Privacy Considerations
The identity mechanism presented in this document is compatible with
the standard SIP practices for privacy described in RFC 3323 [3]. A
SIP proxy server can act both as a privacy service and as an
authentication service. Since a user agent can provide any From
header field value that the authentication service is willing to
authorize, there is no reason why private SIP URIs that contain
legitimate domains (e.g., sip:anonymous@example.com) cannot be signed
by an authentication service. The construction of the Identity
header is the same for private URIs as it is for any other sort of
URIs.
Note, however, that an authentication service must possess a
certificate corresponding to the host portion of the addr-spec of the
From header field of any request that it signs; accordingly, using
domains like 'anonymous.invalid' will not be possible for privacy
services that also act as authentication services. The assurance
offered by the usage of anonymous URIs with a valid domain portion is
"this is a known user in my domain that I have authenticated, but I
am keeping its identity private". The use of the domain
'anonymous.invalid' entails that no corresponding authority for the
domain can exist, and as a consequence, authentication service
functions are meaningless.
The "header" level of privacy described in RFC 3323 requests that a
privacy service alter the Contact header field value of a SIP
message. Since the Contact header field is protected by the
signature in an Identity header, privacy services cannot be applied
after authentication services without a resulting integrity
violation.
Peterson & Jennings Standards Track [Page 23]
^L
RFC 4474 SIP Identity August 2006
RFC 3325 [12] defines the "id" priv-value token, which is specific to
the P-Asserted-Identity header. The sort of assertion provided by
the P-Asserted-Identity header is very different from the Identity
header presented in this document. It contains additional
information about the sender of a message that may go beyond what
appears in the From header field; P-Asserted-Identity holds a
definitive identity for the sender that is somehow known to a closed
network of intermediaries that presumably the network will use this
identity for billing or security purposes. The danger of this
network-specific information leaking outside of the closed network
motivated the "id" priv-value token. The "id" priv-value token has
no implications for the Identity header, and privacy services MUST
NOT remove the Identity header when a priv-value of "id" appears in a
Privacy header.
Finally, note that unlike RFC 3325, the mechanism described in this
specification adds no information to SIP requests that has privacy
implications.
13. Security Considerations
13.1. Handling of digest-string Elements
This document describes a mechanism that provides a signature over
the Contact, Date, Call-ID, CSeq, To, and From header fields of SIP
requests. While a signature over the From header field would be
sufficient to secure a URI alone, the additional headers provide
replay protection and reference integrity necessary to make sure that
the Identity header will not be used in cut-and-paste attacks. In
general, the considerations related to the security of these headers
are the same as those given in RFC 3261 for including headers in
tunneled 'message/sip' MIME bodies (see Section 23 in particular).
The following section details the individual security properties
obtained by including each of these header fields within the
signature; collectively, this set of header fields provides the
necessary properties to prevent impersonation.
The From header field indicates the identity of the sender of the
message, and the SIP address-of-record URI in the From header field
is the identity of a SIP user, for the purposes of this document.
The To header field provides the identity of the SIP user that this
request targets. Providing the To header field in the Identity
signature serves two purposes: first, it prevents cut-and-paste
attacks in which an Identity header from legitimate request for one
user is cut-and-pasted into a request for a different user; second,
it preserves the starting URI scheme of the request, which helps
prevent downgrade attacks against the use of SIPS.
Peterson & Jennings Standards Track [Page 24]
^L
RFC 4474 SIP Identity August 2006
The Date and Contact headers provide reference integrity and replay
protection, as described in RFC 3261, Section 23.4.2.
Implementations of this specification MUST NOT deem valid a request
with an outdated Date header field (the RECOMMENDED interval is that
the Date header must indicate a time within 3600 seconds of the
receipt of a message). Implementations MUST also record Call-IDs
received in valid requests containing an Identity header, and MUST
remember those Call-IDs for at least the duration of a single Date
interval (i.e., commonly 3600 seconds). Because a SIP-compliant UA
never generates the same Call-ID twice, verifiers can use the Call-ID
to recognize cut-and-paste attacks; the Call-ID serves as a nonce.
The result of this is that if an Identity header is replayed within
the Date interval, verifiers will recognize that it is invalid
because of a Call-ID duplication; if an Identity header is replayed
after the Date interval, verifiers will recognize that it is invalid
because the Date is stale. The CSeq header field contains a numbered
identifier for the transaction, and the name of the method of the
request; without this information, an INVITE request could be cut-
and-pasted by an attacker and transformed into a BYE request without
changing any fields covered by the Identity header, and moreover
requests within a certain transaction could be replayed in
potentially confusing or malicious ways.
The Contact header field is included to tie the Identity header to a
particular user agent instance that generated the request. Were an
active attacker to intercept a request containing an Identity header,
and cut-and-paste the Identity header field into its own request
(reusing the From, To, Contact, Date, and Call-ID fields that appear
in the original message), the attacker would not be eligible to
receive SIP requests from the called user agent, since those requests
are routed to the URI identified in the Contact header field.
However, the Contact header is only included in dialog-forming
requests, so it does not provide this protection in all cases.
It might seem attractive to provide a signature over some of the
information present in the Via header field value(s). For example,
without a signature over the sent-by field of the topmost Via header,
an attacker could remove that Via header and insert its own in a
cut-and-paste attack, which would cause all responses to the request
to be routed to a host of the attacker's choosing. However, a
signature over the topmost Via header does not prevent attacks of
this nature, since the attacker could leave the topmost Via intact
and merely insert a new Via header field directly after it, which
would cause responses to be routed to the attacker's host "on their
way" to the valid host, which has exactly the same end result.
Although it is possible that an intermediary-based authentication
service could guarantee that no Via hops are inserted between the
sending user agent and the authentication service, it could not
Peterson & Jennings Standards Track [Page 25]
^L
RFC 4474 SIP Identity August 2006
prevent an attacker from adding a Via hop after the authentication
service, and thereby preempting responses. It is necessary for the
proper operation of SIP for subsequent intermediaries to be capable
of inserting such Via header fields, and thus it cannot be prevented.
As such, though it is desirable, securing Via is not possible through
the sort of identity mechanism described in this document; the best
known practice for securing Via is the use of SIPS.
This mechanism also provides a signature over the bodies of SIP
requests. The most important reason for doing so is to protect
Session Description Protocol (SDP) bodies carried in SIP requests.
There is little purpose in establishing the identity of the user that
originated a SIP request if this assurance is not coupled with a
comparable assurance over the media descriptors. Note, however, that
this is not perfect end-to-end security. The authentication service
itself, when instantiated at a intermediary, could conceivably change
the SDP (and SIP headers, for that matter) before providing a
signature. Thus, while this mechanism reduces the chance that a
replayer or man-in-the-middle will modify SDP, it does not eliminate
it entirely. Since it is a foundational assumption of this mechanism
that the users trust their local domain to vouch for their security,
they must also trust the service not to violate the integrity of
their message without good reason. Note that RFC 3261, Section 16.6,
states that SIP proxy servers "MUST NOT add to, modify, or remove the
message body."
In the end analysis, the Identity and Identity-Info headers cannot
protect themselves. Any attacker could remove these headers from a
SIP request, and modify the request arbitrarily afterwards. However,
this mechanism is not intended to protect requests from men-in-the-
middle who interfere with SIP messages; it is intended only to
provide a way that SIP users can prove definitively that they are who
they claim to be. At best, by stripping identity information from a
request, a man-in-the-middle could make it impossible to distinguish
any illegitimate messages he would like to send from those messages
sent by an authorized user. However, it requires a considerably
greater amount of energy to mount such an attack than it does to
mount trivial impersonations by just copying someone else's From
header field. This mechanism provides a way that an authorized user
can provide a definitive assurance of his identity that an
unauthorized user, an impersonator, cannot.
One additional respect in which the Identity-Info header cannot
protect itself is the 'alg' parameter. The 'alg' parameter is not
included in the digest-string, and accordingly, a man-in-the-middle
might attempt to modify the 'alg' parameter. However, it is
important to note that preventing men-in-the-middle is not the
primary impetus for this mechanism. Moreover, changing the 'alg'
Peterson & Jennings Standards Track [Page 26]
^L
RFC 4474 SIP Identity August 2006
would at worst result in some sort of bid-down attack, and at best
cause a failure in the verifier. Note that only one valid 'alg'
parameter is defined in this document and that thus there is
currently no weaker algorithm to which the mechanism can be bid down.
'alg' has been incorporated into this mechanism for forward-
compatibility reasons in case the current algorithm exhibits
weaknesses, and requires swift replacement, in the future.
13.2. Display-Names and Identity
As a matter of interface design, SIP user agents might render the
display-name portion of the From header field of a caller as the
identity of the caller; there is a significant precedent in email
user interfaces for this practice. As such, it might seem that the
lack of a signature over the display-name is a significant omission.
However, there are several important senses in which a signature over
the display-name does not prevent impersonation. In the first place,
a particular display-name, like "Jon Peterson", is not unique in the
world; many users in different administrative domains might
legitimately claim that name. Furthermore, enrollment practices for
SIP-based services might have a difficult time discerning the
legitimate display-name for a user; it is safe to assume that
impersonators will be capable of creating SIP accounts with arbitrary
display-names. The same situation prevails in email today. Note
that an impersonator who attempted to replay a message with an
Identity header, changing only the display-name in the From header
field, would be detected by the other replay protection mechanisms
described in Section 13.1.
Of course, an authentication service can enforce policies about the
display-name even if the display-name is not signed. The exact
mechanics for creating and operationalizing such policies is outside
the scope of this document. The effect of this policy would not be
to prevent impersonation of a particular unique identifier like a SIP
URI (since display-names are not unique identifiers), but to allow a
domain to manage the claims made by its users. If such policies are
enforced, users would not be free to claim any display-name of their
choosing. In the absence of a signature, man-in-the-middle attackers
could conceivably alter the display-names in a request with impunity.
Note that the scope of this specification is impersonation attacks,
however, and that a man-in-the-middle might also strip the Identity
and Identity-Info headers from a message.
There are many environments in which policies regarding the display-
name aren't feasible. Distributing bit-exact and internationalizable
display-names to end-users as part of the enrollment or registration
process would require mechanisms that are not explored in this
Peterson & Jennings Standards Track [Page 27]
^L
RFC 4474 SIP Identity August 2006
document. In the absence of policy enforcement regarding domain
names, there are conceivably attacks that an adversary could mount
against SIP systems that rely too heavily on the display-name in
their user interface, but this argues for intelligent interface
design, not changes to the mechanisms. Relying on a non-unique
identifier for identity would ultimately result in a weak mechanism.
13.3. Securing the Connection to the Authentication Service
The assurance provided by this mechanism is strongest when a user
agent forms a direct connection, preferably one secured by TLS, to an
intermediary-based authentication service. The reasons for this are
twofold:
If a user does not receive a certificate from the authentication
service over this TLS connection that corresponds to the expected
domain (especially when the user receives a challenge via a
mechanism such as Digest), then it is possible that a rogue server
is attempting to pose as an authentication service for a domain
that it does not control, possibly in an attempt to collect shared
secrets for that domain.
Without TLS, the various header field values and the body of the
request will not have integrity protection when the request
arrives at an authentication service. Accordingly, a prior
legitimate or illegitimate intermediary could modify the message
arbitrarily.
Of these two concerns, the first is most material to the intended
scope of this mechanism. This mechanism is intended to prevent
impersonation attacks, not man-in-the-middle attacks; integrity over
the header and bodies is provided by this mechanism only to prevent
replay attacks. However, it is possible that applications relying on
the presence of the Identity header could leverage this integrity
protection, especially body integrity, for services other than replay
protection.
Accordingly, direct TLS connections SHOULD be used between the UAC
and the authentication service whenever possible. The opportunistic
nature of this mechanism, however, makes it very difficult to
constrain UAC behavior, and moreover there will be some deployment
architectures where a direct connection is simply infeasible and the
UAC cannot act as an authentication service itself. Accordingly,
when a direct connection and TLS are not possible, a UAC should use
the SIPS mechanism, Digest 'auth-int' for body integrity, or both
when it can. The ultimate decision to add an Identity header to a
Peterson & Jennings Standards Track [Page 28]
^L
RFC 4474 SIP Identity August 2006
request lies with the authentication service, of course; domain
policy must identify those cases where the UAC's security association
with the authentication service is too weak.
13.4. Domain Names and Subordination
When a verifier processes a request containing an Identity-Info
header, it must compare the domain portion of the URI in the From
header field of the request with the domain name that is the subject
of the certificate acquired from the Identity-Info header. While it
might seem that this should be a straightforward process, it is
complicated by two deployment realities. In the first place,
certificates have varying ways of describing their subjects, and may
indeed have multiple subjects, especially in 'virtual hosting' cases
where multiple domains are managed by a single application.
Secondly, some SIP services may delegate SIP functions to a
subordinate domain and utilize the procedures in RFC 3263 [4] that
allow requests for, say, 'example.com' to be routed to
'sip.example.com'. As a result, a user with the AoR
'sip:jon@example.com' may process its requests through a host like
'sip.example.com', and it may be that latter host that acts as an
authentication service.
To meet the second of these problems, a domain that deploys an
authentication service on a subordinate host MUST be willing to
supply that host with the private keying material associated with a
certificate whose subject is a domain name that corresponds to the
domain portion of the AoRs that the domain distributes to users.
Note that this corresponds to the comparable case of routing inbound
SIP requests to a domain. When the NAPTR and SRV procedures of RFC
3263 are used to direct requests to a domain name other than the
domain in the original Request-URI (e.g., for 'sip:jon@example.com',
the corresponding SRV records point to the service
'sip1.example.org'), the client expects that the certificate passed
back in any TLS exchange with that host will correspond exactly with
the domain of the original Request-URI, not the domain name of the
host. Consequently, in order to make inbound routing to such SIP
services work, a domain administrator must similarly be willing to
share the domain's private key with the service. This design
decision was made to compensate for the insecurity of the DNS, and it
makes certain potential approaches to DNS-based 'virtual hosting'
unsecurable for SIP in environments where domain administrators are
unwilling to share keys with hosting services.
A verifier MUST evaluate the correspondence between the user's
identity and the signing certificate by following the procedures
defined in RFC 2818 [11], Section 3.1. While RFC 2818 deals with the
use of HTTP in TLS, the procedures described are applicable to
Peterson & Jennings Standards Track [Page 29]
^L
RFC 4474 SIP Identity August 2006
verifying identity if one substitutes the "hostname of the server" in
HTTP for the domain portion of the user's identity in the From header
field of a SIP request with an Identity header.
Because the domain certificates that can be used by authentication
services need to assert only the hostname of the authentication
service, existing certificate authorities can provide adequate
certificates for this mechanism. However, not all proxy servers and
user agents will be able to support the root certificates of all
certificate authorities, and moreover there are some significant
differences in the policies by which certificate authorities issue
their certificates. This document makes no recommendations for the
usage of particular certificate authorities, nor does it describe any
particular policies that certificate authorities should follow, but
it is anticipated that operational experience will create de facto
standards for authentication services. Some federations of service
providers, for example, might only trust certificates that have been
provided by a certificate authority operated by the federation. It
is strongly RECOMMENDED that self-signed domain certificates should
not be trusted by verifiers, unless some previous key exchange has
justified such trust.
For further information on certificate security and practices, see
RFC 3280 [9]. The Security Considerations of RFC 3280 are applicable
to this document.
13.5. Authorization and Transitional Strategies
Ultimately, the worth of an assurance provided by an Identity header
is limited by the security practices of the domain that issues the
assurance. Relying on an Identity header generated by a remote
administrative domain assumes that the issuing domain used its
administrative practices to authenticate its users. However, it is
possible that some domains will implement policies that effectively
make users unaccountable (e.g., ones that accept unauthenticated
registrations from arbitrary users). The value of an Identity header
from such domains is questionable. While there is no magic way for a
verifier to distinguish "good" from "bad" domains by inspecting a SIP
request, it is expected that further work in authorization practices
could be built on top of this identity solution; without such an
identity solution, many promising approaches to authorization policy
are impossible. That much said, it is RECOMMENDED that
authentication services based on proxy servers employ strong
authentication practices such as token-based identifiers.
One cannot expect the Identity and Identity-Info headers to be
supported by every SIP entity overnight. This leaves the verifier in
a compromising position; when it receives a request from a given SIP
Peterson & Jennings Standards Track [Page 30]
^L
RFC 4474 SIP Identity August 2006
user, how can it know whether or not the sender's domain supports
Identity? In the absence of ubiquitous support for identity, some
transitional strategies are necessary.
A verifier could remember when it receives a request from a domain
that uses Identity, and in the future, view messages received from
that domain without Identity headers with skepticism.
A verifier could query the domain through some sort of callback
system to determine whether or not it is running an authentication
service. There are a number of potential ways in which this could
be implemented; use of the SIP OPTIONS method is one possibility.
This is left as a subject for future work.
In the long term, some sort of identity mechanism, either the one
documented in this specification or a successor, must become
mandatory-to-use for the SIP protocol; that is the only way to
guarantee that this protection can always be expected by verifiers.
Finally, it is worth noting that the presence or absence of the
Identity headers cannot be the sole factor in making an authorization
decision. Permissions might be granted to a message on the basis of
the specific verified Identity or really on any other aspect of a SIP
request. Authorization policies are outside the scope of this
specification, but this specification advises any future
authorization work not to assume that messages with valid Identity
headers are always good.
14. IANA Considerations
This document requests changes to the header and response-code sub-
registries of the SIP parameters IANA registry, and requests the
creation of two new registries for parameters for the Identity-Info
header.
14.1. Header Field Names
This document specifies two new SIP headers: Identity and Identity-
Info. Their syntax is given in Section 9. These headers are defined
by the following information, which has been added to the header
sub-registry under http://www.iana.org/assignments/sip-parameters.
Header Name: Identity
Compact Form: y
Header Name: Identity-Info
Compact Form: n
Peterson & Jennings Standards Track [Page 31]
^L
RFC 4474 SIP Identity August 2006
14.2. 428 'Use Identity Header' Response Code
This document registers a new SIP response code, which is described
in Section 6. It is sent when a verifier receives a SIP request that
lacks an Identity header in order to indicate that the request should
be re-sent with an Identity header. This response code is defined by
the following information, which has been added to the method and
response-code sub-registry under
http://www.iana.org/assignments/sip-parameters.
Response Code Number: 428
Default Reason Phrase: Use Identity Header
14.3. 436 'Bad Identity-Info' Response Code
This document registers a new SIP response code, which is described
in Section 6. It is used when the Identity-Info header contains a
URI that cannot be dereferenced by the verifier (either the URI
scheme is unsupported by the verifier, or the resource designated by
the URI is otherwise unavailable). This response code is defined by
the following information, which has been added to the method and
response-code sub-registry under
http://www.iana.org/assignments/sip-parameters.
Response Code Number: 436
Default Reason Phrase: Bad Identity-Info
14.4. 437 'Unsupported Certificate' Response Code
This document registers a new SIP response code, which is described
in Section 6. It is used when the verifier cannot validate the
certificate referenced by the URI of the Identity-Info header,
because, for example, the certificate is self-signed, or signed by a
root certificate authority for whom the verifier does not possess a
root certificate. This response code is defined by the following
information, which has been added to the method and response-code
sub-registry under http://www.iana.org/assignments/sip-parameters.
Response Code Number: 437
Default Reason Phrase: Unsupported Certificate
Peterson & Jennings Standards Track [Page 32]
^L
RFC 4474 SIP Identity August 2006
14.5. 438 'Invalid Identity Header' Response Code
This document registers a new SIP response code, which is described
in Section 6. It is used when the verifier receives a message with
an Identity signature that does not correspond to the digest-string
calculated by the verifier. This response code is defined by the
following information, which has been added to the method and
response-code sub-registry under
http://www.iana.org/assignments/sip-parameters.
Response Code Number: 438
Default Reason Phrase: Invalid Identity Header
14.6. Identity-Info Parameters
The IANA has created a new registry for Identity-Info headers. This
registry is to be prepopulated with a single entry for a parameter
called 'alg', which describes the algorithm used to create the
signature that appears in the Identity header. Registry entries must
contain the name of the parameter and the specification in which the
parameter is defined. New parameters for the Identity-Info header
may be defined only in Standards Track RFCs.
14.7. Identity-Info Algorithm Parameter Values
The IANA has created a new registry for Identity-Info 'alg' parameter
values. This registry is to be prepopulated with a single entry for
a value called 'rsa-sha1', which describes the algorithm used to
create the signature that appears in the Identity header. Registry
entries must contain the name of the 'alg' parameter value and the
specification in which the value is described. New values for the
'alg' parameter may be defined only in Standards Track RFCs.
Peterson & Jennings Standards Track [Page 33]
^L
RFC 4474 SIP Identity August 2006
Appendix A. Acknowledgements
The authors would like to thank Eric Rescorla, Rohan Mahy, Robert
Sparks, Jonathan Rosenberg, Mark Watson, Henry Sinnreich, Alan
Johnston, Patrik Faltstrom, Paul Kyzviat, Adam Roach, John Elwell,
Aki Niemi, and Jim Schaad for their comments. Jonathan Rosenberg
provided detailed fixes to innumerable sections of the document. The
bit-archive presented in Appendix B follows the pioneering example of
RFC 4475 [16]. Thanks to Hans Persson and Tao Wan for thorough nit
reviews.
Appendix B. Bit-Exact Archive of Examples of Messages
The following text block is an encoded, gzip-compressed TAR archive
of files that represent the transformations performed on the examples
of messages discussed in Section 10. It includes for each example:
o (foo).message: the original message
o (foo).canonical: the canonical string constructed from that
message
o (foo).sha1: the SHA1 hash of the canonical string (hexadecimal)
o (foo).signed: the RSA-signed SHA1 hash of the canonical string
(binary)
o (foo).signed.enc: the base64 encoding of the RSA-signed SHA1 hash
of the canonical string as it would appear in the request
o (foo).identity: the original message with the Identity and
Identity-Info headers added
Also included in the archive are two public key/certificate pairs,
for atlanta.example.com and biloxi.example.org, respectively,
including:
o (foo).cer: the certificate of the domain
o (foo).privkey: the private key of the domain
o (foo).pubkey: the public key of the domain, extracted from the
cert file for convenience
To recover the compressed archive file intact, the text of this
document may be passed as input to the following Perl script (the
output should be redirected to a file or piped to "tar -xzvf -").
Peterson & Jennings Standards Track [Page 34]
^L
RFC 4474 SIP Identity August 2006
#!/usr/bin/perl
use strict;
my $bdata = "";
use MIME::Base64;
while(<>) {
if (/-- BEGIN MESSAGE ARCHIVE --/ .. /-- END MESSAGE ARCHIVE --/) {
if ( m/^\s*[^\s]+\s*$/) {
$bdata = $bdata . $_;
}
}
}
print decode_base64($bdata);
Alternatively, the base-64 encoded block can be edited by hand to
remove document structure lines and fed as input to any base-64
decoding utility.
B.1. Encoded Reference Files
-- BEGIN MESSAGE ARCHIVE --
H4sICFfaz0QCA25ld2lkZW50LnRhcgDsW0us5NhZ7gUSwqiF2CAhFikiIQhFt992
+U46it+u8qPK5Uc9WPlVfj/KdpXtomEDCxaAhFggISE2WSHCIoIFioQQC8gqAhRA
QQTY8JJAbMgGIYTv7b7T09PT0xNl+mqS3F8qVd3jY/uc85//+87/nXOLoIv9oGjB
B2/PIAiDSBwfv1GERInxG8EwAh6/37UHMIQRKIljCI4+gGCUGKtP8Ad3YKemderJ
5EFSBW1QN2Xxmnp5GtblqXqUPfIffBdZcet/p82conUee0H9sfsfhiACw17nfwQa
y+Dra+MkQGFkrI+TOPJgAt37/63bo2tjeHGuTVh+bc6FOUub/E0poM7nLGqyLJ06
Id3NGTocPxytMWF6jNJYpDqIoXVLoDlmr+pNx+o7ztZ1ke8WtnXhFUClU5GGLZ6l
O3YN8T3P0Usm1GyG9lQGEiBXFE6+yPecSSvPykuV4TPB5ne9xNEO8KxQVXnk3cqn
/TaK3C3T7A08cRGokyJPUzmrV7k5pHK7i5bQyOambNcDLxUmH9zMD2sl8FGa+WGt
BG6bGe5nHafvFnK5n0dnT6N1nmF0mgt3EK3OxQVdiuMzZrNOhPxNOF37W7w4LmsL
OA0Mpeqt7RTKTrDX1CztZgezbM7rLlvQeBnhWzWOV5qDZEdMahLZTo8Wq0oZOL4X
FgkgMhY4pNBdU53sHVvlaIX5TjqH0+JkYXAXmmzgSI7H9N3RvHingrIOAUIzCph4
GhsdHGDwET+WCO5SuDtwxXKNvneGYrWiQ5WhaTEJXb0LXb6Trgd2DS0ZZscLWm6B
au3aO48HZK4GEWgzN2oRTuBaG/vLXA+aZKh8kDBYyJj7bHWREXgjMWxIgFQrxPyx
b3eUc3EEH6iEptuYL1zFRCpr22rPXujFs9EPx0s+o67pbhzRa/eOjvEZX+wjt1hH
gKpDHdvdXJA5er1Y22tRXXed+KwyxzFadFtZyW1st4E7V7ROO4Rqw5Cnx6ncXb/Z
5ztdUOmx34dX3Ck8cydPc76+a5uO4XLTMI9Q3iIwDJBOloNbUahd5OK7FnQu637t
L/cQdlSHel5tRVjh84Jfhl7pDfV2zZyPeEVs3D3t8XoKAVzDo3YAad6sp4r8nCUb
UmxUUWAL9lRiS848gHAm+nZNcQF78RIY2lk6qq6DnFO30Q4B2JaLG2WTkcZ2uVx7
ezqGS4vqngA30c5r3KsI8ODevsvtFf6v6vicBsMd8j+ME+Qt/0PjAnCsT5AQes//
d8z/a4OerNZze4z+iczvXqwBtvrI+7TMhDq3WqlMK9nlKt3a0z2RHGGlCQ8jMtub
akAY2zocFupKgghFgbyFoS8BZx7Yl3mZXDZt5ZwYcj5kezmjEwY/YCO4rk+lFQc+
26mK7GYb+rhviUDaVKy2X5DZUvOAOd8VeYQUtOfJ6QxVKtCW0DakDRBDOb3cIk3h
F7toGs5wBFldupDkxU1TXS7dnKN1mgFumFWGNmhb8AJH0omt08VC23Jtj1O0A9sn
ZMFvA6KMp8s6FYZmkbj7RdcoudzWYdsCq+3SmrVIvq9iqJOxaIu1+6ho406UU2vF
ohHFJNVUDOr4sEIxeK0O6nJKHFZhclxeLK4DpvUqSdSqG1+eerx35ELXrPfF5gzq
BWs4joD2qSUehFTp8aXsremUp0mrLxp+tnVMFALaFWhZHg6HWorIohz2um5KZcV4
QUcNh4BdC9HZV8ikckSn5WM83neiONKavbQlS4MlANoplaQn67JbMLQ2XSPumQa1
Peterson & Jennings Standards Track [Page 35]
^L
RFC 4474 SIP Identity August 2006
OD9iBLYPiyDjudXR4en9xuHQdHmIDGp6VsjyyBvTE85DwIJMty65T2PDtkJqa4Gz
Va/KPcjRF8i38qUytVhdmrEUb1rqHDnx7lFyGd+2RC1FCYwFOMErfKO3oymKyceF
n8Q7oyfs1eqMEFsqJw1oOfhmaoQNCmJluerLmeSox20+g1idmdZA7zKolVXLMvKY
TpCp3KwzlSHYhjpmBCGHXZEp1CnlI0nalZdxHPxtUDLsEFlNGfqGBRCgY9CCd97w
YpuQ4HlY8Kyus6wBZ3LIb0tNXx2XmpOdd9EwqPv1VlB8Dgvdbr2S4dNWBnZVirLp
Qbgsh0MSKJ646reXI3K8nKSLaHL9nlrRQdVtsbWRviDVDwyrTzD+n9yPGf7fhP8j
5kO3+I/AN/k/gZHYPf7fMf6vLEaZs++FfvGg0pDIGkfRmLsj2PLX6R5NY6JGcywT
6x9OCcDrOOGjUgLwOk74qJQAvJYT3o3O93f6e3b958ZZ2cdvQ/55s/6DvEf/QbBr
/YeAifv4/yToP3DCsnQyfZP+s32j/mOO6Tp3ub75uf6TLipXpDDH5DWVbp7VCzve
sGxrnfDuWEEErgvprjN2eda4aFS9PzVXGWzLmTSsmvSgcTQyfgYtK6/LkOsy4D2F
nX15k4AAm6p+k9Y/FxD2LOBs+nMgph+o/YgXev+u9pM/746BZ4EotJ7YZ0qunQHX
ZJni8v5B4wWaXjKJTnfhLmWvRYMzIXYbFjI5jFzInZwlZZR0gmoAGoi39e6ENYEk
HsO0UyJ7umXRkl/i+LGOLxE6zD3bkFOqoJYZrS3Mo5bYjjSc16cLjwvABjZ3Tbgw
EIHu51MYjruBLihkPUwjBwTDKJjJ0MqZLpQpjMVG40i2HhaHDtNTcH08ZDpASGdm
Vh2T7DzUC/SINbE6epSnaWfJNGP36oT2b+QcHeOFULeg/XStYOQGpFdc6+EMcDBK
fXviBR7sukN3IxIljBR2fkm/UvlF3SHaEOu9Kng98MJNO5PObPM9s20E9IU2zrbV
NVXduLbrRP35fLmVfYCXdZ9mrHGr+yzi5y5+n7CIsCNRdBx901oTYGirG/vMgJcP
mP/XeqHOxIMszduZuT2I2qEqFtsYT9j4suzz3WwHhFkxa4eV4ATDkcJN0Tub7Obi
l4xiVww3PVTrTb0F53O84Qlbcl16TBnsXHb33UWn26oCVojgnBJk1lLYPuAkDTkf
L8mhkBJ2iWCpiC5OB8ScQXFWUTvJ47o+sYS6nRFWkbHTIfaBwTGDU7PBxRN5hsMn
97rPvb3K/29B/nmz/kOit/wPI+NaYFz/49j9/s8nR/8Jb/UfFixdZqes1VXSpDV9
3CxjcUVb/RwFc6SNybjHPOfImvRJ2OKeEoQ6QBb58aQspcM86u350UQOEGHRULYs
Ec0uDzIlkqqZ2q6txQOdKTuL4xNyu1G4OXtA95ICEEINTlmB7GqdqrH0TG7jhdyX
vs2yPshFrEmJ1dTmymAmDflxuQHlpgjqeJi/pP8syEMjzOWtnCabMJmljbhsIwM1
CpjqVwY78D7TH/gcWSUkqF0uQRaDK2/pxB6UAouR+r3iqCEHiQ/mogxSvcX05ukQ
6jt7cTwPEr9uiHq7BWMT2xU51cIUhPOxTu0rqannADguEKwdDeu1GNJz6bxXbOVy
nFKywvH7qaS7J1ZZbIUp4WYQ7+LMtf5DoESp0loF6Q4K5LsNryOnNhebXZ9ujcPA
uPDMZJcd2w5Q4TNrBLsMy4WAaO7eoGbKZSo6CB4d5mIHLiQZKDjKXfKzmXWj/zBr
o/IxNzemOTZbgzDarnmDbqXj4GtxsYVSA1xHnVSTeSqZFpqCKiD0etuj2BwV5Yuz
79UCoglCNqgzaEh+IUyD1Y2YIgak3kTDfnaKW2XV7jkvYzcRL0vAkdal3OL3Z0tA
bEmp3VOqKMtQsmpJcxDMmytnzEcHh7WtoB1yzTsNZhfJCYJ1Ap3SS+ACJj3MV5mG
Rp0y1Zos25ebOT47nU8kSB8RD/UuR8cWGddFYbKR2F0op5BLi2jaLdE8BigUVLYb
E/b8eGdXOeNJ3M1I51WYCsm035/wcEMbO/yUnKcCq66gTedIeGQW29O0lQNgtUB9
ZL7Yy71YZETcymuNFIN1RK0MGUr3Y5osBHZ9bhaYVlYvEewnVwN6Bf8/fvnnW9N/
yBv9B8Wge/z/jtB/Xk8JwOs44aNSAvA6TviolAC8lhPu9Z9X4n8IHntOURax52R3
G//jAvD5+S8MxbGb9R8K38f/nVgTV1du6X7+OfwHvZNXWfC4rMOn15ecLPaCz9/u
Ddxe9cr8qTPDXMwjiYAgRtx+iqDwhNnxT83o9DMTBJ4IgTtBRkdPYOwKpq5weCKq
5tOn9wnXJzn+b37F7cdM/2/M/2AUe3H+E7vZ/0eg+/2fO7ExZicvAr3yUPTxB0T7
xJivQOQx9BCwY+fq9i/QVIwJTI2/HiOPsXfc2im86MmFikTMlQunifwGHm9Rnf6R
UNadU/vN1YQcS4S6zK8mTOlOPvt6/PncO60TPnEIb4Z7h4eAWV5N6OtGPrvntcD0
7LaxVTMUgkkSewhwThtcTT4UmB4CrJNlj+bc1eRlXBsvGMHxavIc3h4C8+chcjX5
dHPGWbOEcPlYGXkrtajv8fEShNmNaezbQkRjewoX+alWtjYo5e2gGaTS1iHlZ326
uZQPgckLCyzSJ5f2TOoC0+RK10bj1szDVccKicPn6sDPUZ80Bg2BB40rEX4NLs9h
20HKCfeaefXSw6rVcRnCp23hXyRXJPM1sc4oprAi6XSw126Fw2qBdlB4sJonn37R
p0fz4jCO8mejtq2aKxB81Sfv2SX63DtOFj6pG+dREznwOE5l0Y6PeaQERdhGV5Nx
6O7R9TsM//OgaZwwuOP9Pwh7cf57hH7i5vw3gd/j/z3+fyz4/1Gh/XsSwV6K/2sk
fwvveFP8QyRxm/9hY43r+Efg+/Ofd2KGRMM/9VLu/5knkwM5IyjUP6A4jPuI5wfU
GEw4jsEocX2ghnQdGMbgA3bP8N9l8R+HReDfefwj7/7/H0ZCOPHs/A95H/93YV/6
Peterson & Jennings Standards Track [Page 36]
^L
RFC 4474 SIP Identity August 2006
P0b7Veqnf3f9W3/5n9/42+/75f/65g/4f3X4+p/9w0/8wt8Mv/97f/jX/zt88Stf
+/Ljv/unb379+OvZvw3aN/7jn59+6vt/Q7n6sU3/RS36oT/5cS+a/8pXGLL7gy+R
eY1dET/8qa/+8Q9Wf/HlP6r/9DNf+J9f+8Wf/c3f/vs/z4p/Eb8Q/PePfu2Xfu53
rB/59381fvIfH05+Xr6PwE9c/D8OCu9u4/+F/nt9BOBG/yXuz//djf77bYoYwLcr
XADfilhxv+B4a/EfF+e4fTtbQG+Kfxy6Pv+D4SiMosTN+V9yzAnu4/9O4v9DN3k+
ZHfoffs/6JgQ4NRkrtlz84N2gdArCLmC0JtdoDfrDU/PT8bsu3xiNUFN/3875/Pa
NBiH8Yt6CBS0Q2SDYcYEkSl9k75Nmkmn7ebWde2WLm3646Jp2q7FtU2btq496EGc
KMgu4sH5a4dN8NccCMLYP6AMwcv+Bg/e1NMuZimTdlvXyWxx4/s5pQ0N5SXPk/d9
nrclaSuHrBhbaKb6cHiUHOYxWe8SBkK1CTFVTWbSpDDAGwjZ1vATeRvaWPWnbFIh
msyQmKNYmhz38Sa7yG+ckGy5vJKSlF5E8v0ev8mq3bwHPCTYqv9mVEAN9//p+Z+m
f9qCMMvqv/+k4fnfEiqCJbcJfVPnuyR/9XS0YxBorSR4jTK/zWywKUlfjUftlEvW
a4qqzKsSE0pyvrf629Ubir6awigcGnVEnP0IiZ5wjr4ezjNiqr/IZ9IBl2eo6PU5
BrITiUwg5p5yxcsOWqKUKXvOLE7kHEhQBbtU0/Ek4+p4NDnGZ7zh0FiJvpETJxKF
hKx6Is6AXxicGmYUJmvxjXmDTk+qzBSuZMxq0aUKTszlE6WhdM3FBkU5XZLCPT2l
8UlHKOT1ubOBsqtnREzwI5G436TkSgkxzYVkxr9bYbTDCFT/r0y9yshXUrRhlxRF
G0sprxm2SY0q2/NYCrMGwkDAo6GZ/t+MCqhh/4/MVf2Pvv7DDMz/wP8Pg/+DyQEH
yP+bUQE23P+JqD/zfxpZ9P5fewv8vwXo/d/W7OecjaRZhGWaZq04LtGUjCPIwkUQ
krUXmI1xEstIUQmbOVD/IdN/EyrAPfZ/Ff2z+v5P7RD03wpit+2TyoevQvtisv3j
fJz48e1pxN3xs+1I74vpO89MxqurnY/XnlxeLFx702lcIjvurZ8ods/MHQtevPD+
bbBr+dR5amnN25XtflV+/fCLPbs62/fO+OD7yqzx9EzqbtfLk4GznxZurp+JHZ0+
7l5+tPr8vtj2OfXr0sLKnHgrqM6DAv9H/f/bCnCP/Z+ufzOm9PyfhfVfS9hvJkXs
N4ci/iZ7gtkGAAAAAAAAAAAAAAAAAAAAAAAAAABAPX4DY+BfEQB4AAA=
-- END MESSAGE ARCHIVE --
Peterson & Jennings Standards Track [Page 37]
^L
RFC 4474 SIP Identity August 2006
Appendix C. Original Requirements
The following requirements were crafted throughout the development of
the mechanism described in this document. They are preserved here
for historical reasons.
o The mechanism must allow a UAC or a proxy server to provide a
strong cryptographic identity assurance in a request that can be
verified by a proxy server or UAS.
o User agents that receive identity assurances must be able to
validate these assurances without performing any network lookup.
o User agents that hold certificates on behalf of their user must be
capable of adding this identity assurance to requests.
o Proxy servers that hold certificates on behalf of their domain
must be capable of adding this identity assurance to requests; a
UAC is not required to support this mechanism in order for an
identity assurance to be added to a request in this fashion.
o The mechanism must prevent replay of the identity assurance by an
attacker.
o In order to provide full replay protection, the mechanism must be
capable of protecting the integrity of SIP message bodies (to
ensure that media offers and answers are linked to the signaling
identity).
o It must be possible for a user to have multiple AoRs (i.e.,
accounts or aliases) that it is authorized to use within a
domain, and for the UAC to assert one identity while
authenticating itself as another, related, identity, as permitted
by the local policy of the domain.
Peterson & Jennings Standards Track [Page 38]
^L
RFC 4474 SIP Identity August 2006
References
Normative References
[1] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP:
Session Initiation Protocol", RFC 3261, June 2002.
[2] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997.
[3] Peterson, J., "A Privacy Mechanism for the Session Initiation
Protocol (SIP)", RFC 3323, November 2002.
[4] Rosenberg, J. and H. Schulzrinne, "Session Initiation Protocol
(SIP): Locating SIP Servers", RFC 3263, June 2002.
[5] Peterson, J., "Session Initiation Protocol (SIP) Authenticated
Identity Body (AIB) Format", RFC 3893, September 2004.
[6] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", RFC 4234, October 2005.
[7] Housley, R., "Cryptographic Message Syntax (CMS) Algorithms",
RFC 3370, August 2002.
[8] Josefsson, S., "The Base16, Base32, and Base64 Data Encodings",
RFC 3548, July 2003.
[9] Housley, R., Polk, W., Ford, W., and D. Solo, "Internet X.509
Public Key Infrastructure Certificate and Certificate
Revocation List (CRL) Profile", RFC 3280, April 2002.
[10] Housley, R. and P. Hoffman, "Internet X.509 Public Key
Infrastructure Operational Protocols: FTP and HTTP", RFC 2585,
May 1999.
[11] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.
Informative References
[12] Jennings, C., Peterson, J., and M. Watson, "Private Extensions
to the Session Initiation Protocol (SIP) for Asserted Identity
within Trusted Networks", RFC 3325, November 2002.
[13] Schulzrinne, H., "The tel URI for Telephone Numbers", RFC 3966,
December 2004.
Peterson & Jennings Standards Track [Page 39]
^L
RFC 4474 SIP Identity August 2006
[14] Faltstrom, P. and M. Mealling, "The E.164 to Uniform Resource
Identifiers (URI) Dynamic Delegation Discovery System (DDDS)
Application (ENUM)", RFC 3761, April 2004.
[15] Peterson, J., "Retargeting and Security in SIP: A Framework and
Requirements", Work in Progress, February 2005.
[16] Sparks, R., Ed., Hawrylyshen, A., Johnston, A., Rosenberg, J.,
and H. Schulzrinne, "Session Initiation Protocol (SIP) Torture
Test Messages, RFC 4475, May 2006.
Authors' Addresses
Jon Peterson
NeuStar, Inc.
1800 Sutter St
Suite 570
Concord, CA 94520
US
Phone: +1 925/363-8720
EMail: jon.peterson@neustar.biz
URI: http://www.neustar.biz/
Cullen Jennings
Cisco Systems
170 West Tasman Drive
MS: SJC-21/2
San Jose, CA 95134
USA
Phone: +1 408 902-3341
EMail: fluffy@cisco.com
Peterson & Jennings Standards Track [Page 40]
^L
RFC 4474 SIP Identity August 2006
Full Copyright Statement
Copyright (C) The Internet Society (2006).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Acknowledgement
Funding for the RFC Editor function is provided by the IETF
Administrative Support Activity (IASA).
Peterson & Jennings Standards Track [Page 41]
^L
|