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 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461
|
<pre>Network Working Group F. Andreasen
Request for Comments: 4568 M. Baugher
Category: Standards Track D. Wing
Cisco Systems
July 2006
<span class="h1">Session Description Protocol (SDP)</span>
<span class="h1">Security Descriptions for Media Streams</span>
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
This document defines a Session Description Protocol (SDP)
cryptographic attribute for unicast media streams. The attribute
describes a cryptographic key and other parameters that serve to
configure security for a unicast media stream in either a single
message or a roundtrip exchange. The attribute can be used with a
variety of SDP media transports, and this document defines how to use
it for the Secure Real-time Transport Protocol (SRTP) unicast media
streams. The SDP crypto attribute requires the services of a data
security protocol to secure the SDP message.
Table of Contents
<a href="#section-1">1</a>. Introduction ....................................................<a href="#page-3">3</a>
<a href="#section-2">2</a>. Notational Conventions ..........................................<a href="#page-5">5</a>
<a href="#section-3">3</a>. Applicability ...................................................<a href="#page-5">5</a>
<a href="#section-4">4</a>. SDP "Crypto" Attribute and Parameters ...........................<a href="#page-5">5</a>
<a href="#section-4.1">4.1</a>. Tag ........................................................<a href="#page-6">6</a>
<a href="#section-4.2">4.2</a>. Crypto-Suite ...............................................<a href="#page-6">6</a>
<a href="#section-4.3">4.3</a>. Key Parameters .............................................<a href="#page-7">7</a>
<a href="#section-4.4">4.4</a>. Session Parameters .........................................<a href="#page-8">8</a>
<a href="#section-4.5">4.5</a>. Example ....................................................<a href="#page-8">8</a>
<a href="#section-5">5</a>. General Use of the crypto Attribute .............................<a href="#page-9">9</a>
<a href="#section-5.1">5.1</a>. Use with Offer/Answer ......................................<a href="#page-9">9</a>
<a href="#section-5.1.1">5.1.1</a>. Generating the Initial Offer - Unicast Streams ......<a href="#page-9">9</a>
<span class="grey">Andreasen, et al. Standards Track [Page 1]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-2" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
<a href="#section-5.1.2">5.1.2</a>. Generating the Initial Answer - Unicast Streams ....<a href="#page-10">10</a>
5.1.3. Processing of the Initial Answer - Unicast
Streams ............................................<a href="#page-11">11</a>
<a href="#section-5.1.4">5.1.4</a>. Modifying the Session ..............................<a href="#page-11">11</a>
<a href="#section-5.2">5.2</a>. Use Outside Offer/Answer ..................................<a href="#page-11">11</a>
<a href="#section-5.3">5.3</a>. General Backwards Compatibility Considerations ............<a href="#page-12">12</a>
<a href="#section-6">6</a>. SRTP Security Descriptions .....................................<a href="#page-12">12</a>
<a href="#section-6.1">6.1</a>. SRTP Key Parameter ........................................<a href="#page-13">13</a>
<a href="#section-6.2">6.2</a>. Crypto-Suites .............................................<a href="#page-16">16</a>
<a href="#section-6.2.1">6.2.1</a>. AES_CM_128_HMAC_SHA1_80 ............................<a href="#page-16">16</a>
<a href="#section-6.2.2">6.2.2</a>. AES_CM_128_HMAC_SHA1_32 ............................<a href="#page-17">17</a>
<a href="#section-6.2.3">6.2.3</a>. F8_128_HMAC_SHA1_80 ................................<a href="#page-17">17</a>
<a href="#section-6.2.4">6.2.4</a>. Adding New Crypto-Suite Definitions ................<a href="#page-17">17</a>
<a href="#section-6.3">6.3</a>. Session Parameters ........................................<a href="#page-17">17</a>
<a href="#section-6.3.1">6.3.1</a>. KDR=n ..............................................<a href="#page-18">18</a>
<a href="#section-6.3.2">6.3.2</a>. UNENCRYPTED_SRTCP and UNENCRYPTED_SRTP .............<a href="#page-18">18</a>
<a href="#section-6.3.3">6.3.3</a>. UNAUTHENTICATED_SRTP ...............................<a href="#page-18">18</a>
<a href="#section-6.3.4">6.3.4</a>. FEC_ORDER=order ....................................<a href="#page-19">19</a>
<a href="#section-6.3.5">6.3.5</a>. FEC_KEY=key-params .................................<a href="#page-19">19</a>
<a href="#section-6.3.6">6.3.6</a>. Window Size Hint (WSH) .............................<a href="#page-19">19</a>
<a href="#section-6.3.7">6.3.7</a>. Defining New SRTP Session Parameters ...............<a href="#page-20">20</a>
<a href="#section-6.4">6.4</a>. SRTP Crypto Context Initialization ........................<a href="#page-20">20</a>
6.4.1. Late Binding of One or More SSRCs to a
Crypto Context .....................................<a href="#page-21">21</a>
6.4.2. Sharing Cryptographic Contexts among
Sessions or SSRCs ..................................<a href="#page-22">22</a>
<a href="#section-6.5">6.5</a>. Removal of Crypto Contexts ................................<a href="#page-23">23</a>
<a href="#section-7">7</a>. SRTP-Specific Use of the Crypto Attribute ......................<a href="#page-23">23</a>
<a href="#section-7.1">7.1</a>. Use with Offer/Answer .....................................<a href="#page-23">23</a>
<a href="#section-7.1.1">7.1.1</a>. Generating the Initial Offer - Unicast Streams .....<a href="#page-23">23</a>
<a href="#section-7.1.2">7.1.2</a>. Generating the Initial Answer - Unicast Streams ....<a href="#page-24">24</a>
7.1.3. Processing of the Initial Answer - Unicast
Streams ............................................<a href="#page-25">25</a>
<a href="#section-7.1.4">7.1.4</a>. Modifying the Session ..............................<a href="#page-25">25</a>
<a href="#section-7.1.5">7.1.5</a>. Offer/Answer Example ...............................<a href="#page-27">27</a>
<a href="#section-7.2">7.2</a>. SRTP-Specific Use Outside Offer/Answer ....................<a href="#page-28">28</a>
<a href="#section-7.3">7.3</a>. Support for SIP Forking ...................................<a href="#page-28">28</a>
<a href="#section-7.4">7.4</a>. SRTP-Specific Backwards Compatibility Considerations ......<a href="#page-29">29</a>
<a href="#section-7.5">7.5</a>. Operation with KEYMGT= and k= lines .......................<a href="#page-29">29</a>
<a href="#section-8">8</a>. Security Considerations ........................................<a href="#page-29">29</a>
<a href="#section-8.1">8.1</a>. Authentication of Packets .................................<a href="#page-30">30</a>
<a href="#section-8.2">8.2</a>. Keystream Reuse ...........................................<a href="#page-30">30</a>
<a href="#section-8.3">8.3</a>. Signaling Authentication and Signaling Encryption .........<a href="#page-31">31</a>
<a href="#section-9">9</a>. Grammar ........................................................<a href="#page-32">32</a>
<a href="#section-9.1">9.1</a>. Generic "Crypto" Attribute Grammar ........................<a href="#page-32">32</a>
<a href="#section-9.2">9.2</a>. SRTP "Crypto" Attribute Grammar ...........................<a href="#page-32">32</a>
<a href="#section-10">10</a>. IANA Considerations ...........................................<a href="#page-34">34</a>
<a href="#section-10.1">10.1</a>. Registration of the "crypto" Attribute ...................<a href="#page-34">34</a>
<span class="grey">Andreasen, et al. Standards Track [Page 2]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-3" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
<a href="#section-10.2">10.2</a>. New IANA Registries and Registration Procedures ..........<a href="#page-34">34</a>
<a href="#section-10.2.1">10.2.1</a>. Key Method Registry and Registration ..............<a href="#page-34">34</a>
<a href="#section-10.2.2">10.2.2</a>. Media Stream Transport Registry and Registration ..35
<a href="#section-10.3">10.3</a>. Initial Registrations ....................................<a href="#page-35">35</a>
<a href="#section-10.3.1">10.3.1</a>. Key Method ........................................<a href="#page-35">35</a>
<a href="#section-10.3.2">10.3.2</a>. SRTP Media Stream Transport .......................<a href="#page-35">35</a>
10.3.2.1. SRTP Crypto Suite Registry and
Registration .............................<a href="#page-35">35</a>
<a href="#section-10.3.2.2">10.3.2.2</a>. SRTP Session Parameter Registration ......<a href="#page-36">36</a>
<a href="#section-11">11</a>. Acknowledgements ..............................................<a href="#page-36">36</a>
<a href="#section-12">12</a>. Normative References ..........................................<a href="#page-36">36</a>
<a href="#section-13">13</a>. Informative References ........................................<a href="#page-37">37</a>
<a href="#appendix-A">Appendix A</a> - Rationale for Keying Material Directionality .........<a href="#page-40">40</a>
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
The Session Description Protocol (SDP) [<a href="./rfc4566" title=""SDP: Session Description Protocol"">RFC4566</a>] describes multimedia
sessions, which can be audio, video, whiteboard, fax, modem, and
other media streams. Security services such as data origin
authentication, integrity, and confidentiality are often needed for
those streams. The Secure Real-time Transport Protocol (SRTP)
[<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>] provides security services for RTP media and is signaled by
use of secure RTP transport (e.g., "RTP/SAVP" or "RTP/SAVPF") in an
SDP media (m=) line. However, there are no means within SDP itself
to configure SRTP beyond using default values. This document
specifies a new SDP attribute called "crypto", which is used to
signal and negotiate cryptographic parameters for media streams in
general, and for SRTP in particular. The definition of the crypto
attribute in this document is limited to two-party unicast media
streams where each source has a unique cryptographic key; support for
multicast media streams or multipoint unicast streams is for further
study.
The crypto attribute is defined in a generic way to enable its use
with SRTP and any other secure transports that can establish
cryptographic parameters with only a single message or in a single
round-trip exchange using the offer/answer model [<a href="./rfc3264" title=""An Offer/Answer Model with Session Description Protocol (SDP)"">RFC3264</a>].
Extensions to transports other than SRTP, however, is beyond the
scope of this document. Each type of secure media transport needs
its own specification for the crypto-attribute parameter. These
definitions are frequently unique to the particular type of transport
and must be specified in a Standards-Track RFC and registered with
IANA according to the procedures defined in <a href="#section-10">Section 10</a>. This
document defines the security parameters and keying material for SRTP
only.
<span class="grey">Andreasen, et al. Standards Track [Page 3]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-4" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
It would be self-defeating not to secure cryptographic keys and other
parameters at least as well as the data are secured. Data security
protocols such as SRTP rely upon a separate key management system to
securely establish encryption and/or authentication keys. Key
management protocols provide authenticated key establishment (AKE)
procedures to authenticate the identity of each endpoint and protect
against man-in-the-middle, reflection/replay, connection hijacking,
and some denial-of-service attacks [<a href="#ref-skeme" title=""SKEME: A Versatile Secure Key Exchange Mechanism for the Internet"">skeme</a>]. Along with the key, an
AKE protocol such as MIKEY [<a href="#ref-mikey" title=""MIKEY: Multimedia Internet KEYing"">mikey</a>], GDOI [<a href="#ref-GDOI" title=""The Group Domain of Interpretation"">GDOI</a>], KINK [<a href="#ref-kink" title=""Kerberized Internet Negotiation of Keys (KINK)"">kink</a>], IKE
[<a href="#ref-ike" title=""Internet Key Exchange (IKEv2) Protocol"">ike</a>], Secure Multiparts [s/mime, pgp/mime], or TLS [<a href="#ref-TLS" title=""The TLS Protocol Version 1.0"">TLS</a>] securely
disseminates information describing both the key and the data-
security session. AKE is needed because it is pointless to provide a
key over a medium where an attacker can snoop the key, alter the
definition of the key to render it useless, or change the parameters
of the security session to gain unauthorized access to session-
related information.
SDP, however, was not designed to provide AKE services, and the media
security descriptions defined in this document do not add AKE
services to SDP. This specification is no replacement for a key
management protocol or for the conveyance of key management messages
in SDP [<a href="#ref-keymgt" title=""Key Management Extensions for Session Description Protocol (SDP) and Real Time Streaming Protocol (RTSP)"">keymgt</a>]. The SDP security descriptions defined here are
suitable for restricted cases only where IPsec, TLS, or some other
encapsulating data-security protocol (e.g., SIP S/MIME) protects the
SDP message. This document adds security descriptions to those
encrypted and/or authenticated SDP messages through the new SDP
"crypto" attribute, which provides the cryptographic parameters of a
media stream.
The "crypto" attribute can be adapted to any media transport, but its
precise definition is unique to a particular transport.
In <a href="#section-2">Section 2</a>, we provide notational conventions followed by an
applicability statement for the crypto attribute in Section 3. In
<a href="#section-4">Section 4</a>, we introduce the general SDP crypto attribute, and in
<a href="#section-5">Section 5</a>, we define how it is used with and without the offer/answer
model. In <a href="#section-6">Section 6</a>, we define the crypto attribute details needed
for SRTP, and in <a href="#section-7">Section 7</a>, we define SRTP-specific use of the
attribute with and without the offer/answer model. <a href="#section-8">Section 8</a> recites
security considerations, and <a href="#section-9">Section 9</a> gives an Augmented-BNF grammar
for the general crypto attribute as well as the SRTP-specific use of
the crypto attribute. IANA considerations are provided in <a href="#section-10">Section</a>
<a href="#section-10">10</a>.
<span class="grey">Andreasen, et al. Standards Track [Page 4]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-5" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Notational Conventions</span>
The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT",
"RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
interpreted as described in [<a href="./rfc2119" title=""Key words for use in RFCs to Indicate Requirement Levels"">RFC2119</a>]. The terminology in this
document conforms to [<a href="./rfc2828" title=""Internet Security Glossary"">RFC2828</a>], "Internet Security Glossary".
n^r is exponentiation, where n is multiplied by itself r times; n and
r are integers. 0..k is an integer range of all integers from 0
through k, inclusive.
The terms 'transport' and 'media transport' are used to mean
'transport protocol' as defined in <a href="./rfc4566">RFC 4566</a>.
Explanatory notes are provided in several places throughout the
document; these notes are indented three spaces from the surrounding
text.
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. Applicability</span>
<a href="./rfc4567">RFC 4567</a> provides similar cryptographic key distribution capabilities
and is intended for use when the signaling is to be confidential
and/or integrity-protected separately from the keying material.
In contrast, this specification carries the keying material within
the SDP message, and it is intended for use when the keying material
is protected along with the signaling. Implementations MUST employ
security mechanisms that provide confidentiality and integrity for
the keying material. When this specification is used in the context
of SIP [<a href="./rfc3261" title=""SIP: Session Initiation Protocol"">RFC3261</a>], the application SHOULD employ either the SIPS URI
or S/MIME to provide protection for the SDP message and the keying
material that it contains. The use of transport layer or IP layer
security in lieu of the SIPS URI or S/MIME protection is NOT
RECOMMENDED since the protection of the SDP message and the keying
material that it contains cannot be ensured through all intermediate
entities such as SIP proxies.
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. SDP "Crypto" Attribute and Parameters</span>
A new media-level SDP attribute called "crypto" describes the
cryptographic suite, key parameters, and session parameters for the
preceding unicast media line. The "crypto" attribute MUST only
appear at the SDP media level (not at the session level). The
"crypto" attribute follows the format (see <a href="#section-9.1">Section 9.1</a> for the formal
ABNF grammar):
a=crypto:<tag> <crypto-suite> <key-params> [<session-params>]
<span class="grey">Andreasen, et al. Standards Track [Page 5]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-6" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
The fields tag, crypto-suite, key-params, and session-params are
described in the following sub-sections. The values of each of these
fields is case-insensitive, unless otherwise noted. However,
implementers are encouraged to use the actual case shown in this
document and any extensions to it. Note that per normal SDP rules,
the "crypto" attribute name itself is case-sensitive. Below, we show
an example of the crypto attribute for the "RTP/SAVP" transport,
i.e., the secure RTP extension to the Audio/Video Profile [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>].
In the following, newlines are included for formatting reasons only:
a=crypto:1 AES_CM_128_HMAC_SHA1_80
inline:PS1uQCVeeCFCanVmcjkpPywjNWhcYD0mXXtxaVBR|2^20|1:32
The crypto-suite is AES_CM_128_HMAC_SHA1_80, key-params is defined by
the text starting with "inline:", and session-params is omitted.
<span class="h3"><a class="selflink" id="section-4.1" href="#section-4.1">4.1</a>. Tag</span>
The tag is a decimal number used as an identifier for a particular
crypto attribute (see <a href="#section-9.1">Section 9.1</a> for details); leading zeroes MUST
NOT be used. The tag MUST be unique among all crypto attributes for
a given media line. It is used with the offer/answer model to
determine which of several offered crypto attributes were chosen by
the answerer (see <a href="#section-5.1">Section 5.1</a>).
In the offer/answer model, the tag is a negotiated parameter.
<span class="h3"><a class="selflink" id="section-4.2" href="#section-4.2">4.2</a>. Crypto-Suite</span>
The crypto-suite field is an identifier that describes the encryption
and authentication algorithms (e.g., AES_CM_128_HMAC_SHA1_80) for the
transport in question (see <a href="#section-9.1">Section 9.1</a> for details). The possible
values for the crypto-suite parameter are defined within the context
of the transport, i.e., each transport defines a separate namespace
for the set of crypto-suites. For example, the crypto-suite
"AES_CM_128_HMAC_SHA1_80" defined within the context "RTP/SAVP"
transport applies to Secure RTP only; the string may be reused for
another transport (e.g., "RTP/SAVPF" [<a href="#ref-srtpf" title=""Extended Secure RTP Profile for RTCP-based Feedback (RTP/SAVPF)"">srtpf</a>]), but a separate
definition would be needed.
In the offer/answer model, the crypto-suite is a negotiated
parameter.
<span class="grey">Andreasen, et al. Standards Track [Page 6]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-7" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
<span class="h3"><a class="selflink" id="section-4.3" href="#section-4.3">4.3</a>. Key Parameters</span>
The key-params field provides one or more sets of keying material for
the crypto-suite in question. The field consists of a method
indicator followed by a colon, and the actual keying information as
shown below (the formal grammar is provided in <a href="#section-9.1">Section 9.1</a>):
key-params = <key-method> ":" <key-info>
Keying material might be provided by different means from that for
key-params; however, this is out of scope. Only one method is
defined in this document, namely, "inline", which indicates that the
actual keying material is provided in the key-info field itself.
There is a single name space for the key-method, i.e., the key-method
is transport independent. New key-methods (e.g., use of a URL) may
be defined in a Standards-Track RFC in the future. Although the
key-method itself may be generic, the accompanying key-info
definition is specific not only to the key-method, but also to the
transport in question. Key-info encodes keying material for a crypto
suite, which defines that keying material. New key methods MUST be
registered with the IANA according to the procedures defined in
<a href="#section-10.2.1">Section 10.2.1</a>.
Key-info is defined as a general octet string (see <a href="#section-9.1">Section 9.1</a> for
details); further transport and key-method specific syntax and
semantics MUST be provided in a Standards-Track RFC for each
combination of transport and key-method that uses it; definitions for
SRTP are provided in <a href="#section-6">Section 6</a>. Note that such definitions are
provided within the context of both a particular transport (e.g.,
"RTP/SAVP") and a specific key-method (e.g., "inline"). IANA will
register the list of supported key methods for each transport.
When multiple keys are included in the key parameters, it MUST be
possible to determine which of the keys is being used in a given
media packet by a simple inspection of the media packet received; a
trial-and-error approach between the possible keys MUST NOT be
performed.
For SRTP, this could be achieved by use of Master Key Identifiers
(MKI) [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>]. Use of <"From, "To"> values are not supported in
SRTP security descriptions for reasons explained in <a href="#section-6.1">Section 6.1</a>,
below.
In the offer/answer model, the key parameter is a declarative
parameter.
<span class="grey">Andreasen, et al. Standards Track [Page 7]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-8" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
<span class="h3"><a class="selflink" id="section-4.4" href="#section-4.4">4.4</a>. Session Parameters</span>
Session parameters are specific to a given transport and use of them
is OPTIONAL in the security descriptions framework, where they are
just defined as general character strings. If session parameters are
to be used for a given transport, then transport-specific syntax and
semantics MUST be provided in a Standards-Track RFC; definitions for
SRTP are provided in <a href="#section-6">Section 6</a>.
In the offer/answer model, session parameters may be either
negotiated or declarative; the definition of specific session
parameters MUST indicate whether they are negotiated or declarative.
Negotiated parameters apply to data sent in both directions, whereas
declarative parameters apply only to media sent by the entity that
generated the SDP. Thus, a declarative parameter in an offer applies
to media sent by the offerer, whereas a declarative parameter in an
answer applies to media sent by the answerer.
<span class="h3"><a class="selflink" id="section-4.5" href="#section-4.5">4.5</a>. Example</span>
This example shows use of the crypto attribute for the "RTP/SAVP"
media transport type (as defined in <a href="#section-5">Section 5</a>). The "a=crypto" line
is actually one long line; it is shown as two lines due to page
formatting.
v=0
o=jdoe 2890844526 2890842807 IN IP4 10.47.16.5
s=SDP Seminar
i=A Seminar on the session description protocol
u=http://www.example.com/seminars/sdp.pdf
e=j.doe@example.com (Jane Doe)
c=IN IP4 161.44.17.12/127
t=2873397496 2873404696
m=video 51372 RTP/SAVP 31
a=crypto:1 AES_CM_128_HMAC_SHA1_80
inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32
m=audio 49170 RTP/SAVP 0
a=crypto:1 AES_CM_128_HMAC_SHA1_32
inline:NzB4d1BINUAvLEw6UzF3WSJ+PSdFcGdUJShpX1Zj|2^20|1:32
m=application 32416 udp wb
a=orient:portrait
This SDP message describes three media streams, two of which use the
"RTP/SAVP" transport. Each has a crypto attribute for the "RTP/SAVP"
transport. These secure-RTP specific descriptions are defined in
<a href="#section-6">Section 6</a>.
<span class="grey">Andreasen, et al. Standards Track [Page 8]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-9" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. General Use of the crypto Attribute</span>
In this section, we describe the general use of the crypto attribute
outside of any transport or key-method specific rules.
<span class="h3"><a class="selflink" id="section-5.1" href="#section-5.1">5.1</a>. Use with Offer/Answer</span>
The general offer/answer rules for the crypto attribute are in
addition to the rules specified in <a href="./rfc3264">RFC 3264</a>, which MUST be followed,
unless otherwise noted. <a href="./rfc3264">RFC 3264</a> defines operation for both unicast
and multicast streams; the sections below describe operation for
two-party unicast streams only, since support for multicast streams
(and multipoint unicast streams) is for further study.
<span class="h4"><a class="selflink" id="section-5.1.1" href="#section-5.1.1">5.1.1</a>. Generating the Initial Offer - Unicast Streams</span>
When generating an initial offer for a unicast stream, there MUST be
one or more crypto attributes present for each media stream for which
security is desired. Each crypto attribute for a given media stream
MUST contain a unique tag.
The ordering of multiple "a=crypto" lines is significant: the most
preferred crypto line is listed first. Each crypto attribute
describes the crypto-suite, key(s), and possibly session parameters
offered for the media stream. In general, a "more preferred"
crypto-suite SHOULD be cryptographically stronger than a "less
preferred" crypto-suite.
The crypto-suite always applies to media in the directions supported
by the media stream (e.g., send and receive). The key(s), however,
apply to data packets (e.g., SRTP and SRTCP packets) that will be
sent by the same party that generated the SDP. That is, each
endpoint determines its own transmission keys and sends those keys,
in SDP, to the other endpoint.
This is done for consistency. Also, in the case of SRTP, for
example, secure RTCP will still be flowing in both the send and
receive direction for a unidirectional stream.
The inline parameter conveys the keying material used by an endpoint
to encrypt the media streams transmitted by that endpoint. The same
keying material is used by the recipient to decrypt those streams.
The offer may include session parameters. There are no general offer
rules for the session parameters; instead, specific rules may be
provided as part of the transport-specific definitions of any session
parameters.
<span class="grey">Andreasen, et al. Standards Track [Page 9]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-10" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
When issuing an offer, the offerer MUST be prepared to support media
security in accordance with any of the crypto attributes included in
the offer. There are, however, two problems associated with this.
First of all, the offerer does not know which key the answerer will
be using for media sent to the offerer. Second, the offerer may not
be able to deduce which of the offered crypto attributes were
accepted. Since media may arrive prior to the answer, delay or
clipping can occur. If this is unacceptable to the offerer, the
offerer SHOULD use a mechanism outside the scope of this document to
prevent the above problem.
For example, in SIP [<a href="./rfc3261" title=""SIP: Session Initiation Protocol"">RFC3261</a>], a "security" precondition as
defined in [<a href="#ref-sprecon" title=""Security Preconditions for Session Description Protocol Media Streams"">sprecon</a>] could solve the above problem.
<span class="h4"><a class="selflink" id="section-5.1.2" href="#section-5.1.2">5.1.2</a>. Generating the Initial Answer - Unicast Streams</span>
When the answerer receives the initial offer with one or more crypto
attributes for a given unicast media stream, the answerer MUST either
accept exactly one of the offered crypto attributes, or the offered
stream MUST be rejected.
If the answerer wishes to indicate support for other crypto
attributes, those can be listed by use of the SDP Simple
Capability Declaration [<a href="./rfc3407" title=""Session Description Protocol (SDP) Simple Capability Declaration"">RFC3407</a>] extensions.
Only crypto attributes that are valid can be accepted; valid
attributes do not violate any of the general rules defined for
security descriptions, nor any specific rules defined for the
transport and key-method in question. When selecting one of the
valid crypto attributes, the answerer SHOULD select the most
preferred crypto attribute it can support, i.e., the first valid
supported crypto attribute in the list, according to the answerer's
capabilities and security policies.
If there are one or more crypto attributes in the offer, but none of
them are valid or none of the valid ones are supported, the offered
media stream MUST be rejected.
When an offered crypto attribute is accepted, the crypto attribute in
the answer MUST contain the following:
* The tag and crypto-suite from the accepted crypto attribute in the
offer (the same crypto-suite MUST be used in the send and receive
direction).
* The key(s) the answerer will be using for media sent to the
offerer. Note that a key MUST be provided, irrespective of any
direction attributes in the offer or answer.
<span class="grey">Andreasen, et al. Standards Track [Page 10]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-11" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
Furthermore, any session parameters that are negotiated MUST be
included in the answer. Declarative session parameters provided by
the offerer are not included in the answer; however, the answerer may
provide its own set of declarative session parameters.
Once the answerer has accepted one of the offered crypto attributes,
the answerer MAY begin sending media to the offerer in accordance
with the selected crypto attribute. Note, however, that the offerer
may not be able to process such media packets correctly until the
answer has been received.
<span class="h4"><a class="selflink" id="section-5.1.3" href="#section-5.1.3">5.1.3</a>. Processing of the Initial Answer - Unicast Streams</span>
When the offerer receives the answer, the offerer MUST verify that
one of the initially offered crypto suites and its accompanying tag
were accepted and echoed in the answer. Also, the answer MUST
include one or more keys, which will be used for media sent from the
answerer to the offerer.
If the offer contained any mandatory negotiated session parameters
(see <a href="#section-6.3.7">Section 6.3.7</a>), the offerer MUST verify that said parameters are
included in the answer and support them. If the answer contains any
mandatory declarative session parameters, the offerer MUST be able to
support those.
If any of the above fails, the negotiation MUST fail.
<span class="h4"><a class="selflink" id="section-5.1.4" href="#section-5.1.4">5.1.4</a>. Modifying the Session</span>
Once a media stream has been established, it MAY be modified at any
time, as described in <a href="./rfc3264#section-8">RFC 3264, Section 8</a>. Such a modification MAY
be triggered by the security service, e.g., in order to perform a
re-keying or change the crypto-suite. If media stream security using
the general security descriptions defined here is still desired, the
crypto attribute MUST be included in these new offer/answer
exchanges. The procedures are similar to those defined in <a href="#section-5.1.1">Section</a>
<a href="#section-5.1.1">5.1.1</a>, 5.1.2, and 5.1.3 of this document, subject to the
considerations provided in <a href="./rfc3264#section-8">RFC 3264, Section 8</a>.
<span class="h3"><a class="selflink" id="section-5.2" href="#section-5.2">5.2</a>. Use Outside Offer/Answer</span>
The crypto attribute can also be used outside the context of
offer/answer where there is no negotiation of the crypto suite,
cryptographic key, or session parameters. In this case, the sender
determines security parameters for the stream. Since there is no
negotiation mechanism, the sender MUST include exactly one crypto
attribute, and the receiver MUST either accept it or SHOULD NOT
<span class="grey">Andreasen, et al. Standards Track [Page 11]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-12" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
receive the associated stream. The sender SHOULD select the security
description that it deems most secure for its purposes.
<span class="h3"><a class="selflink" id="section-5.3" href="#section-5.3">5.3</a>. General Backwards Compatibility Considerations</span>
In the offer/answer model, it is possible that the answerer supports
a given secure transport (e.g., "RTP/SAVP") and accepts the offered
media stream, but that the answerer does not support the crypto
attribute defined in this document and hence ignores it. The offerer
can recognize this situation by seeing an accepted media stream in
the answer that does not include a crypto line. In that case, the
security negotiation defined here MUST fail.
Similar issues exist when security descriptions are used outside the
offer/answer model. But the source of a non-negotiated security
description has no indication that the receiver has ignored the
crypto attribute.
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. SRTP Security Descriptions</span>
In this section, we provide definitions for security descriptions for
SRTP media streams. In the next section, we define how to use SRTP
security descriptions with and without the offer/answer model.
SRTP security descriptions MUST only be used with the SRTP transport
(e.g., "RTP/SAVP" or "RTP/SAVPF"). The following specifies security
descriptions for the "RTP/SAVP" profile, defined in [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>].
However, it is expected that other secure RTP profiles (e.g.,
"RTP/SAVPF") can use the same descriptions, which are in accordance
with the SRTP protocol specification [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>].
There is no assurance that an endpoint is capable of configuring its
SRTP service with a particular crypto attribute parameter, but SRTP
guarantees minimal interoperability among SRTP endpoints through the
default SRTP parameters [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>]. More capable SRTP endpoints
support a variety of parameter values beyond the SRTP defaults, and
these values can be configured by the SRTP security descriptions
defined here. An endpoint that does not support the crypto attribute
will ignore it according to the SDP. Such an endpoint will not
correctly process the particular media stream. By using the
Offer/Answer model, the offerer and answerer can negotiate the crypto
parameters to be used before commencement of the multimedia session
(see <a href="#section-7.1">Section 7.1</a>).
There are over twenty cryptographic parameters listed in the SRTP
specification. Many of these parameters have fixed values for
particular cryptographic transforms. At the time of session
establishment, however, there is usually no need to provide unique
<span class="grey">Andreasen, et al. Standards Track [Page 12]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-13" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
settings for many of the SRTP parameters, such as salt length and
pseudo-random function (PRF). Thus, it is possible to simplify the
list of parameters by defining "cryptographic suites" that fix a set
of SRTP parameter values for the security session. This approach is
followed by the SRTP security descriptions, which uses the general
security description parameters as follows:
* crypto-suite: Identifies the encryption and authentication
transforms.
* key parameter: SRTP keying material and parameters
* session parameters: The following parameters are defined:
- KDR: The SRTP Key Derivation Rate is the rate at which a
pseudo-random function is applied to a master key.
- UNENCRYPTED_SRTP: SRTP messages are not encrypted.
- UNENCRYPTED_SRTCP: SRTCP messages are not encrypted.
- UNAUTHENTICATED_SRTP: SRTP messages are not authenticated.
- FEC_ORDER: Order of forward error correction (FEC)
relative to SRTP services.
- FEC_KEY: Master Key for FEC when the FEC stream is sent
to a separate address and/or port.
- WSH: Window Size Hint.
- Extensions: Extension parameters can be defined.
Please refer to the SRTP specification for a complete list of
parameters and their descriptions [<a href="#section-8.2">Section 8.2</a>, srtp]. Regarding the
UNENCRYPTED_SRTCP parameter, offerers and answerers of SDP security
descriptions MUST NOT use the SRTCP E-bit to override
UNENCRYPTED_SRTCP or the default, which is to encrypt all SRTCP
messages (see <a href="#section-6.3.2">Section 6.3.2</a>). The key parameter, the crypto-suite,
and the session parameters shown above are described in detail in the
following subsections.
<span class="h3"><a class="selflink" id="section-6.1" href="#section-6.1">6.1</a>. SRTP Key Parameter</span>
SRTP security descriptions define the use of the "inline" key method
as described in the following. Use of any other keying method (e.g.,
URL) for SRTP security descriptions is for further study.
The "inline" type of key contains the keying material (master key and
salt) and all policy related to that master key, including how long
it can be used (lifetime) and whether it uses a master key identifier
(MKI) to associate an incoming SRTP packet with a particular master
key. Compliant implementations obey the policies associated with a
master key and MUST NOT accept incoming packets that violate the
policy (e.g., after the master key lifetime has expired).
The key parameter contains one or more cryptographic master keys,
each of which MUST be a unique cryptographically random [<a href="./rfc1750" title=""Randomness Recommendations for Security"">RFC1750</a>]
<span class="grey">Andreasen, et al. Standards Track [Page 13]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-14" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
value with respect to other master keys in the entire SDP message
(i.e., including master keys for other streams). Each key follows
the format (the formal definition is provided in <a href="#section-9.2">Section 9.2</a>):
"inline:" <key||salt> ["|" lifetime] ["|" MKI ":" length]
key||salt concatenated master key and salt, base64 encoded
(see <a href="./rfc3548#section-3">[RFC3548], Section 3</a>)
lifetime master key lifetime (max number of SRTP or SRTCP
packets using this master key)
MKI:length MKI and length of the MKI field in SRTP packets
The following definition provides an example for
AES_CM_128_HMAC_SHA1_80:
inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:4
The first field ("d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj") of the
parameter is the cryptographic master key appended with the master
salt; the two are first concatenated and then base64 encoded. The
length of the concatenated key and salt is determined by the crypto-
suite for which the key applies. If the length (after being decoded
from base64) does not match that specified for the crypto-suite, the
crypto attribute in question MUST be considered invalid. Each master
key and salt MUST be a cryptographically random number and MUST be
unique to the entire SDP message. When base64 decoding the key and
salt, padding characters (i.e., one or two "=" at the end of the
base64-encoded data) are discarded (see [<a href="./rfc3548" title=""The Base16, Base32, and Base64 Data Encodings"">RFC3548</a>] for details).
Base64 encoding assumes that the base64 encoding input is an integral
number of octets. If a given crypto-suite requires the use of a
concatenated key and salt with a length that is not an integral
number of octets, said crypto-suite MUST define a padding scheme that
results in the base64 input being an integral number of octets. For
example, if the length defined were 250 bits, then 6 padding bits
would be needed, which could be defined to be the last 6 bits in a
256 bit input.
The second field is the OPTIONAL lifetime of the master key as
measured in maximum number of SRTP or SRTCP packets using that master
key (i.e., the number of SRTP packets and the number of SRTCP packets
each have to be less than the lifetime). The lifetime value MAY be
written as a non-zero, positive decimal integer or as a power of 2
(see the grammar in <a href="#section-9.2">Section 9.2</a> for details); leading zeroes MUST NOT
be used. The "lifetime" value MUST NOT exceed the maximum packet
lifetime for the crypto-suite. If the lifetime is too large or
otherwise invalid, then the entire crypto attribute MUST be
considered invalid. The default MAY be implicitly signaled by
omitting the lifetime (note that the lifetime field never includes a
<span class="grey">Andreasen, et al. Standards Track [Page 14]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-15" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
colon, whereas the third field always does). This is convenient when
the SRTP cryptographic key lifetime is the default value. As a
shortcut to avoid long decimal values, the syntax of the lifetime
allows using the literal "2^", which indicates "two to the power of".
The example above shows a case where the lifetime is specified as
2^20. The following example, which is for the
AES_CM_128_HMAC_SHA1_80 crypto-suite, has a default for the lifetime
field, which means that SRTP's and SRTCP's default values will be
used (see [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>]):
inline:YUJDZGVmZ2hpSktMbW9QUXJzVHVWd3l6MTIzNDU2|1066:4
The example shows a 30-octet key and concatenated salt that is base64
encoded: The 30-octet key/salt concatenation is expanded to 40
characters (octets) by the three-in-four encoding of base64.
The third field, which is also OPTIONAL, is the Master Key Identifier
(MKI) and its byte length.
"MKI" is the master key identifier associated with the SRTP master
key. The MKI is here defined as a positive decimal integer that is
encoded as a big-endian integer in the actual SRTP packets; leading
zeroes MUST NOT be used in the integer representation. If the MKI is
given, then the length of the MKI MUST also be given and separated
from the MKI by a colon (":"). The MKI length is the size of the MKI
field in the SRTP packet, specified in bytes as a decimal integer;
leading zeroes MUST NOT be used. If the MKI length is not given or
its value exceeds 128 (bytes), then the entire crypto attribute MUST
be considered invalid. The substring "1:4" in the first example
assigns to the key a master key identifier of 1 that is 4 bytes long,
and the second example assigns a 4-byte master key identifier of 1066
to the key. One or more master keys with their associated MKI can be
initially defined, and then later updated, or deleted and new ones
defined.
SRTP offers a second feature for specifying the lifetime of a master
key in terms of two values, called "From" and "To," which are defined
on the SRTP sequence number space [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>]. This SRTP Security
Descriptions specification, however, does not support the <"From",
"To"> feature since the lifetime of an AES master key is 2^48 SRTP
packets, which means that there is no cryptographic reason to replace
a master key for practical point-to-point applications. For this
reason, there is no need to support two means for signaling key
update. The MKI is chosen over <"From", "To"> by this specification
for the very few applications that need it since the MKI feature is
simpler (though the MKI adds additional bytes to each packet, whereas
<"From", "To"> does not).
<span class="grey">Andreasen, et al. Standards Track [Page 15]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-16" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
As mentioned above, the key parameter can contain one or more master
keys. When the key parameter contains more than one master key, all
the master keys in that key parameter MUST include an MKI value.
When using the MKI, the MKI length MUST be the same for all keys in a
given crypto attribute.
<span class="h3"><a class="selflink" id="section-6.2" href="#section-6.2">6.2</a>. Crypto-Suites</span>
The SRTP crypto-suites define the encryption and authentication
transforms to be used for the SRTP media stream. The SRTP
specification has defined three crypto-suites, which are described
further in the following subsections in the context of the SRTP
security descriptions. The table below provides an overview of the
crypto-suites and their parameters:
+---------------------+-------------+--------------+---------------+
| |AES_CM_128_ | AES_CM_128_ | F8_128_ |
| |HMAC_SHA1_80 | HMAC_SHA1_32 | HMAC_SHA1_80 |
+---------------------+-------------+--------------+---------------+
| Master key length | 128 bits | 128 bits | 128 bits |
| Master salt length | 112 bits | 112 bits | 112 bits |
| SRTP lifetime | 2^48 packets| 2^48 packets | 2^48 packets |
| SRTCP lifetime | 2^31 packets| 2^31 packets | 2^31 packets |
| Cipher | AES Counter | AES Counter | AES F8 Mode |
| | Mode | Mode | |
| Encryption key | 128 bits | 128 bits | 128 bits |
| MAC | HMAC-SHA1 | HMAC-SHA1 | HMAC-SHA1 |
| SRTP auth. tag | 80 bits | 32 bits | 80 bits |
| SRTCP auth. tag | 80 bits | 80 bits | 80 bits |
| SRTP auth. key len. | 160 bits | 160 bits | 160 bits |
| SRTCP auth. key len.| 160 bits | 160 bits | 160 bits |
+---------------------+-------------+--------------+---------------+
<span class="h4"><a class="selflink" id="section-6.2.1" href="#section-6.2.1">6.2.1</a>. AES_CM_128_HMAC_SHA1_80</span>
AES_CM_128_HMAC_SHA1_80 is the SRTP default AES Counter Mode cipher
and HMAC-SHA1 message authentication with an 80-bit authentication
tag. The master-key length is 128 bits and has a default lifetime of
a maximum of 2^48 SRTP packets or 2^31 SRTCP packets, whichever comes
first [Page 39, srtp].
SRTP allows 2^48 SRTP packets or 2^31 SRTCP packets, whichever
comes first. However, it is RECOMMENDED that automated key
management allow easy and efficient rekeying at intervals far
smaller than 2^31 packets given today's media rates or even HDTV
media rates.
<span class="grey">Andreasen, et al. Standards Track [Page 16]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-17" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
The SRTP and SRTCP encryption key lengths are 128 bits. The SRTP and
SRTCP authentication key lengths are 160 bits (see Security
Considerations in <a href="#section-8">Section 8</a>). The master salt value is 112 bits in
length and the session salt value is 112 bits in length. The
pseudo-random function (PRF) is the default SRTP pseudo-random
function that uses AES Counter Mode with a 128-bit key length.
The length of the base64-decoded key and salt value for this crypto-
suite MUST be 30 characters (i.e., 240 bits); otherwise, the crypto
attribute is considered invalid.
<span class="h4"><a class="selflink" id="section-6.2.2" href="#section-6.2.2">6.2.2</a>. AES_CM_128_HMAC_SHA1_32</span>
This crypto-suite is identical to AES_CM_128_HMAC_SHA1_80 except that
the authentication tag is 32 bits.
The length of the base64-decoded key and salt value for this crypto-
suite MUST be 30 octets i.e., 240 bits; otherwise, the crypto
attribute is considered invalid.
<span class="h4"><a class="selflink" id="section-6.2.3" href="#section-6.2.3">6.2.3</a>. F8_128_HMAC_SHA1_80</span>
This crypto-suite is identical to AES_CM_128_HMAC_SHA1_80 except that
the cipher is F8 [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>].
The length of the base64-decoded key and salt value for this crypto-
suite MUST be 30 octets, i.e., 240 bits; otherwise the crypto
attribute is considered invalid.
<span class="h4"><a class="selflink" id="section-6.2.4" href="#section-6.2.4">6.2.4</a>. Adding New Crypto-Suite Definitions</span>
If new transforms are added to SRTP, new definitions for those
transforms SHOULD be given for the SRTP security descriptions and
published in a Standards-Track RFC. Sections <a href="#section-6.2.1">6.2.1</a> through <a href="#section-6.2.3">6.2.3</a>
illustrate how to define crypto-suite values for particular
cryptographic transforms. Any new crypto-suites MUST be registered
with IANA following the procedures in <a href="#section-10">Section 10</a>.
<span class="h3"><a class="selflink" id="section-6.3" href="#section-6.3">6.3</a>. Session Parameters</span>
SRTP security descriptions define a set of "session" parameters,
which OPTIONALLY may be used to override SRTP session defaults for
the SRTP and SRTCP streams. These parameters configure an RTP
session for SRTP services. The session parameters provide session-
specific information to establish the SRTP cryptographic context.
<span class="grey">Andreasen, et al. Standards Track [Page 17]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-18" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
<span class="h4"><a class="selflink" id="section-6.3.1" href="#section-6.3.1">6.3.1</a>. KDR=n</span>
KDR specifies the Key Derivation Rate, as described in <a href="./rfc3711#section-4.3.1">Section 4.3.1
of [RFC3711]</a>.
The value n MUST be a decimal integer in the set {1,2,...,24}, which
denotes a power of 2 from 2^1 to 2^24, inclusive; leading zeroes MUST
NOT be used. The SRTP key derivation rate controls how frequently a
new session key is derived from an SRTP master key(s) [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>] given
in the declaration. When the key derivation rate is not specified
(i.e., the KDR parameter is omitted), a single initial key derivation
is performed [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>].
In the offer/answer model, KDR is a declarative parameter.
<span class="h4"><a class="selflink" id="section-6.3.2" href="#section-6.3.2">6.3.2</a>. UNENCRYPTED_SRTCP and UNENCRYPTED_SRTP</span>
SRTP and SRTCP packet payloads are encrypted by default. The
UNENCRYPTED_SRTCP and UNENCRYPTED_SRTP session parameters modify the
default behavior of the crypto-suites with which they are used:
* UNENCRYPTED_SRTCP signals that the SRTCP packet payloads are not
encrypted.
* UNENCRYPTED_SRTP signals that the SRTP packet payloads are not
encrypted.
In the offer/answer model, these parameters are negotiated. If
UNENCRYPTED_SRTCP is signaled for the session, then the SRTCP E bit
MUST be clear (0) in all SRTCP messages. If the default is used, all
SRTCP messages are encrypted, and the E bit MUST be set (1) on all
SRTCP messages.
<span class="h4"><a class="selflink" id="section-6.3.3" href="#section-6.3.3">6.3.3</a>. UNAUTHENTICATED_SRTP</span>
SRTP and SRTCP packet payloads are authenticated by default. The
UNAUTHENTICATED_SRTP session parameter signals that SRTP messages are
not authenticated. Use of UNAUTHENTICATED_SRTP is NOT RECOMMENDED
(see Security Considerations).
The SRTP specification requires use of message authentication for
SRTCP, but not for SRTP [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>].
In the offer/answer model, this parameter is negotiated.
<span class="grey">Andreasen, et al. Standards Track [Page 18]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-19" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
<span class="h4"><a class="selflink" id="section-6.3.4" href="#section-6.3.4">6.3.4</a>. FEC_ORDER=order</span>
FEC_ORDER signals the use of forward error correction for the RTP
packets [<a href="./rfc2733" title=""An RTP Payload Format for Generic Forward Error Correction"">RFC2733</a>]. The forward error correction values for "order"
are FEC_SRTP or SRTP_FEC. FEC_SRTP signals that FEC is applied
before SRTP processing by the sender of the SRTP media and after SRTP
processing by the receiver of the SRTP media; FEC_SRTP is the
default. SRTP_FEC is the reverse processing.
In the offer/answer model, FEC_ORDER is a declarative parameter.
<span class="h4"><a class="selflink" id="section-6.3.5" href="#section-6.3.5">6.3.5</a>. FEC_KEY=key-params</span>
FEC_KEY signals the use of separate master key(s) for a Forward Error
Correction (FEC) stream. The master key(s) are specified with the
exact same format as the SRTP Key Parameter defined in <a href="#section-6.1">Section 6.1</a>,
and the semantic rules are the same - in particular, the master
key(s) MUST be different from all other master key(s) in the SDP. An
FEC_KEY MUST be specified when the FEC stream is sent to a different
IP-address and/or port than the media stream to which it applies
(i.e., the "m=" line), e.g., as described in <a href="./rfc2733#section-11.1">RFC 2733, Section 11.1</a>.
When an FEC stream is sent to the same IP-address and port as the
media stream to which it applies, an FEC_KEY MUST NOT be specified.
If an FEC_KEY is specified in this latter case, the crypto attribute
in question MUST be considered invalid.
In the offer/answer model, FEC_KEY is a declarative parameter.
<span class="h4"><a class="selflink" id="section-6.3.6" href="#section-6.3.6">6.3.6</a>. Window Size Hint (WSH)</span>
SRTP defines the SRTP-WINDOW-SIZE [RFC3711, <a href="#section-3.3.2">Section 3.3.2</a>] parameter
to protect against replay attacks. The minimum value is 64
[<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>]; however, this value may be considered too low for some
applications (e.g., video).
The Window Size Hint (WSH) session parameter provides a hint for how
big this window should be to work satisfactorily (e.g., based on
sender knowledge of the number of packets per second). However,
there might be enough information given in SDP attributes like
"a=maxprate" [<a href="#ref-maxprate" title=""A Transport Independent Bandwidth Modifier for the Session Description Protocol (SDP)"">maxprate</a>] and the bandwidth modifiers to allow a
receiver to derive the parameter satisfactorily. Consequently, this
value is only considered a hint to the receiver of the SDP that MAY
choose to ignore the value provided. The value is a decimal integer;
leading zeroes MUST NOT be used.
In the offer/answer model, WSH is a declarative parameter.
<span class="grey">Andreasen, et al. Standards Track [Page 19]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-20" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
<span class="h4"><a class="selflink" id="section-6.3.7" href="#section-6.3.7">6.3.7</a>. Defining New SRTP Session Parameters</span>
New SRTP session parameters for the SRTP security descriptions can be
defined in a Standards-Track RFC and registered with IANA according
to the registration procedures defined in <a href="#section-10">Section 10</a>.
New SRTP session parameters are by default mandatory. A newly
defined SRTP session parameter that is prefixed with the dash
character ("-"), however, is considered optional and MAY be ignored.
If an SDP crypto attribute is received with an unknown session
parameter that is not prefixed with a "-" character, that crypto
attribute MUST be considered invalid.
<span class="h3"><a class="selflink" id="section-6.4" href="#section-6.4">6.4</a>. SRTP Crypto Context Initialization</span>
In addition to the various SRTP parameters defined above, there are
three pieces of information that are critical to the operation of the
default SRTP ciphers:
* SSRC: Synchronization source
* ROC: Roll-over counter for a given SSRC
* SEQ: Sequence number for a given SSRC
In a unicast session, as defined here, there are three constraints on
these values.
The first constraint is on the SSRC, which makes an SRTP keystream
unique from other participants. As explained in SRTP, the keystream
MUST NOT be reused on two or more different pieces of plaintext.
Keystream reuse makes the ciphertext vulnerable to cryptanalysis.
One vulnerability is that known-plaintext fields in one stream can
expose portions of the reused keystream, and this could further
expose more plaintext in other streams. Since all current SRTP
encryption transforms use keystreams, key sharing is a general
problem [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>]. SRTP mitigates this problem by including the SSRC
of the sender in the keystream. But SRTP does not solve this problem
in its entirety because the Real-time Transport Protocol has SSRC
collisions, which although very rare [<a href="./rfc3550" title=""RTP: A Transport Protocol for Real-Time Applications"">RFC3550</a>] are quite possible.
During a collision, two or more SSRCs that share a master key will
have identical keystreams for overlapping portions of the RTP
sequence number space. SRTP Security Descriptions avoid keystream
reuse by making unique master keys REQUIRED for the sender and
receiver of the security description. Thus, the first constraint is
satisfied.
Also note that there is a second problem with SSRC collisions: the
SSRC is used to identify the crypto context and thereby the
cipher, key, ROC, etc. to process incoming packets. In case of
<span class="grey">Andreasen, et al. Standards Track [Page 20]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-21" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
SSRC collisions, crypto context identification becomes ambiguous
and correct packet processing may not occur. Furthermore, if an
RTCP BYE packet is to be sent for a colliding SSRC, that packet
may also have to be secured. In a (unicast) point-to-multipoint
scenario, this can be problematic for the same reasons, i.e., it
is not known which of the possible crypto contexts to use. Note
that these problems are not unique to the SDP security
descriptions; any use of SRTP needs to consider them.
The second constraint is that the ROC MUST be zero at the time that
each SSRC commences sending packets. Thus, there is no concept of a
"late joiner" in SRTP security descriptions, which are constrained to
be unicast and pairwise. The ROC and SEQ form a "packet index" in
the default SRTP transforms and the ROC is consistently set to zero
at session commencement, according to this document.
The third constraint is that the initial value of SEQ SHOULD be
chosen to be within the range of 0..2^15-1; this avoids an ambiguity
when packets are lost at the start of the session. If it is at the
start of a session, an SSRC source might randomly select a high
sequence-number value and put the receiver in an ambiguous situation:
if initial packets are lost in transit up to the point that the
sequence number wraps (i.e., exceeds 2^16-1), then the receiver might
not recognize that its ROC needs to be incremented. By restricting
the initial SEQ to the range of 0..2^15-1, SRTP packet-index
determination will find the correct ROC value, unless all the first
2^15 packets are lost (which seems, if not impossible, rather
unlikely). See <a href="#section-3.3.1">Section 3.3.1</a> of the SRTP specification regarding
packet-index determination [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>].
<span class="h4"><a class="selflink" id="section-6.4.1" href="#section-6.4.1">6.4.1</a>. Late Binding of One or More SSRCs to a Crypto Context</span>
The packet index, therefore, depends on the SSRC, the SEQ of an
incoming packet, and the ROC, which is an SRTP crypto context
variable. Thus, SRTP has a big security dependency on SSRC
uniqueness.
Given the above constraints, unicast SRTP crypto contexts can be
established without the need to negotiate SSRC values in the SRTP
security descriptions. Instead, an approach called "late binding" is
RECOMMENDED by this specification. When a packet arrives, the SSRC
that is contained in it can be bound to the crypto context at the
time of session commencement (i.e., SRTP packet arrival) rather than
at the time of session signaling (i.e., receipt of an SDP). With the
arrival of the packet containing the SSRC, all the data items needed
for the SRTP crypto context are held by the receiver. (Note that the
ROC value by definition is zero; if non-zero values were to be
supported, additional signaling would be required.) In other words,
<span class="grey">Andreasen, et al. Standards Track [Page 21]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-22" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
the crypto context for a secure RTP session using late binding is
initially identified by the SDP as
<*, address, port>
where '*' is a wildcard SSRC, "address" is the local receive address
from the "c=" line, and "port" is the local receive port from the
"m=" line. When the first packet arrives with ssrcX in its SSRC
field, the crypto context
<ssrcX, address, port>
is instantiated subject to the following constraints:
* Media packets are authenticated: authentication MUST succeed;
otherwise, the crypto context is not instantiated.
* Media packets are not authenticated: crypto context is
automatically instantiated.
Note that use of late binding when there is no authentication of the
SRTP media packets is subject to numerous security attacks, and that
consequently it is NOT RECOMMENDED (of course, this can be said for
unauthenticated SRTP in general).
Note that use of late binding without authentication will result
in the creation of local state as a result of receiving a packet
from any unknown SSRC. UNAUTHENTICATED_SRTP, therefore, is NOT
RECOMMENDED because it invites easy denial-of-service attack. In
contrast, late binding with authentication does not suffer from
this weakness.
<span class="h4"><a class="selflink" id="section-6.4.2" href="#section-6.4.2">6.4.2</a>. Sharing Cryptographic Contexts among Sessions or SSRCs</span>
With the constraints and procedures described above, it is not
necessary to explicitly signal the SSRC, ROC, and SEQ for a unicast
RTP session. So there are no a=crypto parameters for signaling SSRC,
ROC, or SEQ. Thus, multiple SSRCs from the same entity will share
a=crypto parameters when late binding is used. Multiple SSRCs from
the same entity arise due to either multiple sources (microphones,
cameras, etc.) or RTP payloads requiring SSRC multiplexing within
that same session. SDP also allows multiple RTP sessions to be
defined in the same media description ("m="); these RTP sessions will
also share the a=crypto parameters. An application that uses
a=crypto in this way serially shares a master key among RTP sessions
or SSRCs and MUST replace the master key when the aggregate number of
packets among all SSRCs approaches 2^31 packets. SSRCs that share a
master key MUST be unique from one another.
<span class="grey">Andreasen, et al. Standards Track [Page 22]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-23" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
<span class="h3"><a class="selflink" id="section-6.5" href="#section-6.5">6.5</a>. Removal of Crypto Contexts</span>
The mechanism defined above addresses the issue of creating crypto
contexts. However, in practice, session participants may want to
remove crypto contexts prior to session termination. Since a crypto
context contains information that cannot automatically be recovered
(e.g., ROC), it is important that the sender and receiver agree on
when a crypto context can be removed, and perhaps more importantly
when it cannot.
Even when late binding is used for a unicast stream, the ROC is
lost and cannot be recovered automatically (unless it is zero)
once the crypto context is removed.
We resolve this problem as follows. When SRTP security descriptions
are being used, crypto-context removal MUST follow the same rules as
SSRC removal from the member table [<a href="./rfc3550" title=""RTP: A Transport Protocol for Real-Time Applications"">RFC3550</a>]; note that this can
happen as the result of an SRTCP BYE packet or a simple time-out due
to inactivity. Inactive session participants that wish to ensure
their crypto contexts are not timed out MUST thus send SRTCP packets
at regular intervals.
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. SRTP-Specific Use of the Crypto Attribute</span>
<a href="#section-5">Section 5</a> describes general use of the crypto attribute, and this
section completes it by describing SRTP-specific use.
<span class="h3"><a class="selflink" id="section-7.1" href="#section-7.1">7.1</a>. Use with Offer/Answer</span>
In this section, we describe how the SRTP security descriptions are
used with the offer/answer model to negotiate cryptographic
capabilities and communicate SRTP master keys. The rules defined
below complement the general offer/answer rules defined in <a href="#section-5.1">Section</a>
<a href="#section-5.1">5.1</a>, which MUST be followed, unless otherwise specified. Note that
the rules below define unicast operation only; support for multicast
and multipoint unicast streams is for further study.
<span class="h4"><a class="selflink" id="section-7.1.1" href="#section-7.1.1">7.1.1</a>. Generating the Initial Offer - Unicast Streams</span>
When the initial offer is generated, the offerer MUST follow the
steps in <a href="#section-5.1.1">Section 5.1.1</a>, as well as the following steps.
For each unicast media line (m=) using the secure RTP transport where
the offerer wants to specify cryptographic parameters, the offerer
MUST provide at least one valid SRTP security description ("a=crypto"
line), as defined in <a href="#section-6">Section 6</a>. If the media stream includes Forward
<span class="grey">Andreasen, et al. Standards Track [Page 23]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-24" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
Error Correction with a different IP-address and/or port from that of
the media stream itself, an FEC_KEY parameter MUST be included, as
described in <a href="#section-6.3.5">Section 6.3.5</a>.
The inline parameter conveys the SRTP master key used by an endpoint
to encrypt the SRTP and SRTCP streams transmitted by that endpoint.
The same key is used by the recipient to decrypt those streams.
However, the receiver MUST NOT use that same key for the SRTP or
SRTCP packets that it sends to the session because the default SRTP
cipher and mode is insecure when the master key is reused across
distinct SRTP streams.
The offerer MAY include one or more other SRTP session parameters, as
defined in <a href="#section-6.3">Section 6.3</a>. Note, however, that if any SRTP session
parameters are included that are not known to the answerer, but that
are nonetheless mandatory (see <a href="#section-6.3.6">Section 6.3.6</a>), the negotiation will
fail if the answerer does not support them.
<span class="h4"><a class="selflink" id="section-7.1.2" href="#section-7.1.2">7.1.2</a>. Generating the Initial Answer - Unicast Streams</span>
When the initial answer is generated, the answerer MUST follow the
steps in <a href="#section-5.1.2">Section 5.1.2</a>, as well as the following steps.
For each unicast media line that uses the secure RTP transport and
contains one or more "a=crypto" lines in the offer, the answerer MUST
either accept one (and only one) of the crypto lines for that media
stream, or it MUST reject the media stream. Only "a=crypto" lines
that are considered valid SRTP security descriptions, as defined in
<a href="#section-6">Section 6</a>, can be accepted. Furthermore, all parameters (crypto-
suite, key parameter, and mandatory session parameters) MUST be
acceptable to the answerer in order for the offered media stream to
be accepted. Note that if the media stream includes Forward Error
Correction with a different IP-address and/or port from that of the
media stream itself, an FEC_KEY parameter MUST be included, as
described in <a href="#section-6.3.5">Section 6.3.5</a>.
When the answerer accepts an SRTP unicast media stream with a crypto
line, the answerer MUST include one or more master keys appropriate
for the selected crypto algorithm; the master key(s) included in the
answer MUST be different from those in the offer.
When the master key(s) are not shared between the offerer and
answerer, SSRC collisions between the offerer and answerer will
not lead to keystream reuse, and hence SSRC collisions do not
necessarily have to be prevented.
<span class="grey">Andreasen, et al. Standards Track [Page 24]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-25" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
If Forward Error Correction to a separate IP-address and/or port is
included, the answer MUST include an FEC_KEY parameter, as described
in <a href="#section-6.3.5">Section 6.3.5</a>.
Declarative session parameters may be added to the answer as usual;
however, the answerer SHOULD NOT add any mandatory session parameter
(see <a href="#section-6.3.6">Section 6.3.6</a>) that might be unknown to the offerer.
If the answerer cannot find any valid crypto line that it supports,
or if its configured policy prohibits any cryptographic key parameter
(e.g., key length) or cryptographic session parameter (e.g., KDR,
FEC_ORDER), it MUST reject the media stream, unless it is able to
successfully negotiate use of SRTP by other means outside the scope
of this document (e.g., by use of MIKEY [<a href="#ref-mikey" title=""MIKEY: Multimedia Internet KEYing"">mikey</a>]).
<span class="h4"><a class="selflink" id="section-7.1.3" href="#section-7.1.3">7.1.3</a>. Processing of the Initial Answer - Unicast Streams</span>
When the offerer receives the answer, it MUST perform the steps in
<a href="#section-5.1.3">Section 5.1.3</a>, as well as the following steps for each SRTP media
stream it offered with one or more crypto lines in it.
If the media stream was accepted and it contains a crypto line, it
MUST be checked that the crypto line is valid according to the
constraints specified in <a href="#section-6">Section 6</a> (including any FEC constraints).
If the offerer either does not support or is not willing to honor one
or more of the SRTP parameters in the answer, the offerer MUST
consider the crypto line invalid.
If the crypto line is not valid, or the offerer's configured policy
prohibits any cryptographic key parameter (e.g., key length) or
cryptographic session parameter, the SRTP security negotiation MUST
be deemed to have failed.
<span class="h4"><a class="selflink" id="section-7.1.4" href="#section-7.1.4">7.1.4</a>. Modifying the Session</span>
When a media stream using the SRTP security descriptions has been
established and a new offer/answer exchange is performed, the offerer
and answerer MUST follow the steps in <a href="#section-5.1.4">Section 5.1.4</a>, as well as the
following steps.
When modifying the session, all negotiated aspects of the SRTP media
stream can be modified. For example, a new crypto suite can be used
or a new master key can be established. As described in <a href="./rfc3264">RFC 3264</a>,
when a new offer/answer exchange is made, there will be a window of
time where the offerer and the answerer must be prepared to receive
media according to both the old and new offer/answer exchange.
<span class="grey">Andreasen, et al. Standards Track [Page 25]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-26" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
This requirement applies here as well; however, the following should
be noted:
* When authentication is not being used, it may not be possible for
either the offerer or answerer to determine if a given packet is
encrypted according to the old or new offer/answer exchange. <a href="./rfc3264">RFC</a>
<a href="./rfc3264">3264</a> defines a couple of techniques to address this problem, e.g.,
changing the payload types used and/or the transport addresses.
Note, however, that a change in transport addresses may have an
impact on quality of service as well as on firewall and NAT
traversal. The SRTP security descriptions use the MKI to deal
with this (which adds a few bytes to each SRTP packet), as
described in <a href="#section-6.1">Section 6.1</a>. For further details on the MKI, please
refer to [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>].
* If the answerer changes its master key, the offerer will not be
able to process packets secured via this master key until the
answer is received. This could be addressed by using a security
"precondition" [<a href="#ref-sprecon" title=""Security Preconditions for Session Description Protocol Media Streams"">sprecon</a>].
If the offerer includes an IP address and/or port that differs from
that used previously for a media stream (or FEC stream), the offerer
MUST include a new master key with the offer (and in so doing, it
will be creating a new crypto context where the ROC is set to zero).
Similarly, if the answerer includes an IP address and/or port that
differs from that used previously for a media stream (or FEC stream),
the answerer MUST include a new master key with the answer (and hence
create a new crypto context with the ROC set to zero). The reason
for this is that when the answerer receives an offer or the offerer
receives an answer with an updated IP address and/or port, it is not
possible to determine if the other side has access to the old crypto
context parameters (and in particular the ROC). For example, if one
side is a decomposed media gateway, or if a SIP back-to-back user
agent is involved, it is possible that the media endpoint changed and
no longer has access to the old crypto context. By always requiring
a new master key in this case, the answerer/offerer will know that
the ROC is zero for this offer/answer, and any key lifetime
constraints will trivially be satisfied too. Another consideration
here applies to media relays; if the relay changes the media endpoint
on one side transparently to the other side, the relay cannot operate
as a simple packet reflector but will have to actively engage in SRTP
packet processing and transformation (i.e., decryption and re-
encryption, etc.).
Finally, note that if the new offer is rejected, the old crypto
parameters remain in place.
<span class="grey">Andreasen, et al. Standards Track [Page 26]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-27" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
<span class="h4"><a class="selflink" id="section-7.1.5" href="#section-7.1.5">7.1.5</a>. Offer/Answer Example</span>
In this example, the offerer supports two crypto suites (f8 and AES).
The a=crypto line is actually one long line, although it is shown as
two lines in this document due to page formatting. The f8 example
shows two inline parameters; as explained in <a href="#section-6.1">Section 6.1</a>, there may
be one or more key (i.e., inline) parameters in a crypto attribute.
In this way, multiple keys are offered to support key rotation using
a Master Key Identifier (MKI).
Offerer sends:
v=0
o=sam 2890844526 2890842807 IN IP4 10.47.16.5
s=SRTP Discussion
i=A discussion of Secure RTP
u=http://www.example.com/seminars/srtp.pdf
e=marge@example.com (Marge Simpson)
c=IN IP4 168.2.17.12
t=2873397496 2873404696
m=audio 49170 RTP/SAVP 0
a=crypto:1 AES_CM_128_HMAC_SHA1_80
inline:WVNfX19zZW1jdGwgKCkgewkyMjA7fQp9CnVubGVz|2^20|1:4
FEC_ORDER=FEC_SRTP
a=crypto:2 F8_128_HMAC_SHA1_80
inline:MTIzNDU2Nzg5QUJDREUwMTIzNDU2Nzg5QUJjZGVm|2^20|1:4;
inline:QUJjZGVmMTIzNDU2Nzg5QUJDREUwMTIzNDU2Nzg5|2^20|2:4
FEC_ORDER=FEC_SRTP
Answerer replies:
v=0
o=jill 25690844 8070842634 IN IP4 10.47.16.5
s=SRTP Discussion
i=A discussion of Secure RTP
u=http://www.example.com/seminars/srtp.pdf
e=homer@example.com (Homer Simpson)
c=IN IP4 168.2.17.11
t=2873397526 2873405696
m=audio 32640 RTP/SAVP 0
a=crypto:1 AES_CM_128_HMAC_SHA1_80
inline:PS1uQCVeeCFCanVmcjkpPywjNWhcYD0mXXtxaVBR|2^20|1:4
In this case, the session would use the AES_CM_128_HMAC_SHA1_80
crypto suite for the RTP and RTCP traffic. If F8_128_HMAC_SHA1_80
were selected by the answerer, there would be two inline keys
associated with the SRTP cryptographic context. One key has an MKI
value of 1 and the second has an MKI of 2.
<span class="grey">Andreasen, et al. Standards Track [Page 27]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-28" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
<span class="h3"><a class="selflink" id="section-7.2" href="#section-7.2">7.2</a>. SRTP-Specific Use Outside Offer/Answer</span>
Use of SRTP security descriptions outside the offer/answer model is
not defined.
Use of SRTP security descriptions outside the offer/answer model
could have been defined for sendonly media streams; however, there
would not be a way to indicate the key to use for SRTCP by the
receiver of said media stream.
<span class="h3"><a class="selflink" id="section-7.3" href="#section-7.3">7.3</a>. Support for SIP Forking</span>
As mentioned earlier, the security descriptions defined here do not
support multicast media streams or multipoint unicast streams.
However, in the SIP protocol, it is possible to receive several
answers to a single offer due to the use of forking (see [SIP]).
Receiving multiple answers leads to a couple of problems for the SRTP
security descriptions:
* Different answerers may choose different ciphers, keys, etc.;
however, there is no way for the offerer to associate a particular
incoming media packet with a particular answer.
* Two or more answerers may pick the same SSRC, and hence the SSRC
collision problems mentioned earlier may arise.
As stated earlier, the above point-to-multipoint cases are outside
the scope of the SDP security descriptions. However, there are still
ways of supporting SIP forking, e.g., by changing the multipoint
scenario resulting from SIP forking into multiple two-party unicast
cases. This can be done as follows:
For each answer received beyond the initial answer, issue a new offer
to that particular answerer using a new receive transport address (IP
address and port); note that this requires support for the SIP UPDATE
method [<a href="./rfc3311" title=""The Session Initiation Protocol (SIP) UPDATE Method"">RFC3311</a>]. Also, to ensure that two media sessions are not
inadvertently established prior to the UPDATE being processed by one
of them, use security preconditions [<a href="#ref-sprecon" title=""Security Preconditions for Session Description Protocol Media Streams"">sprecon</a>].
Finally, note that all SIP User Agents that received the offer will
know the key(s) being proposed by the initial offer. If the offerer
wants to ensure security with respect to all other User Agents that
may have received the offer, a new offer/answer exchange with a new
key needs to be performed with the answerer as well. Note that the
offerer cannot determine whether a single or multiple SIP User Agents
received the offer, since intermediate forking proxies may only
forward a single answer to the offerer.
<span class="grey">Andreasen, et al. Standards Track [Page 28]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-29" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
The above description is intended to suggest one possible way of
supporting SIP forking. There are many details missing and it should
not be considered a normative specification. Alternative approaches
may also be possible
<span class="h3"><a class="selflink" id="section-7.4" href="#section-7.4">7.4</a>. SRTP-Specific Backwards Compatibility Considerations</span>
It is possible that the answerer supports the SRTP transport and
accepts the offered media stream, but that it does not support the
crypto attribute defined here. The offerer can recognize this
situation by seeing an accepted SRTP media stream in the answer that
does not include a crypto line. In that case, the security
negotiation defined here MUST be deemed to have failed.
Also, if a media stream with a given SRTP transport (e.g.,
"RTP/SAVP") is sent to a device that does not support SRTP, that
media stream will be rejected.
<span class="h3"><a class="selflink" id="section-7.5" href="#section-7.5">7.5</a>. Operation with KEYMGT= and k= lines</span>
An offer MAY include both "a=crypto" and "a=keymgt" lines [<a href="#ref-keymgt" title=""Key Management Extensions for Session Description Protocol (SDP) and Real Time Streaming Protocol (RTSP)"">keymgt</a>].
Per SDP rules, the answerer will ignore attribute lines that it does
not understand. If the answerer supports both "a=crypto" and
"a=keymgt", the answer MUST include either "a=crypto" or "a=keymgt",
but not both, as including both is undefined.
An offer MAY include both "a=crypto" and "k=" lines [<a href="./rfc4566" title=""SDP: Session Description Protocol"">RFC4566</a>]. Per
SDP rules, the answerer will ignore attribute lines it does not
understand. If the answerer supports both "a=crypto" and "k=", the
answer MUST include either "a=crypto" or "k=" but not both, as
including both is undefined.
<span class="h2"><a class="selflink" id="section-8" href="#section-8">8</a>. Security Considerations</span>
Like all SDP messages, SDP messages containing security descriptions
are conveyed in an encapsulating application protocol (e.g., SIP,
MGCP). It is the responsibility of the encapsulating protocol to
ensure the protection of the SDP security descriptions. Therefore,
IT IS REQUIRED that the application invoke its own security
mechanisms (e.g., secure multiparts such as S/MIME [smime]) or,
alternatively, utilize a lower-layer security service (e.g., TLS or
IPsec). IT IS REQUIRED that this security service provide strong
message authentication and packet-payload encryption, as well as
effective replay protection.
"Replay protection" is needed against an attacker that has enough
access to the communications channel to intercept messages and to
deliver copies to the destination. A successful replay attack will
<span class="grey">Andreasen, et al. Standards Track [Page 29]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-30" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
cause the recipient to perform duplicate processing on a message; the
attack is worse when the duped recipient sends a duplicate reply to
the initiator. Replay protections are not found in S/MIME or in the
other secure-multiparts standard, PGP/MIME. S/MIME and PGP/MIME,
therefore, need to be augmented with some replay-protection mechanism
that is appropriate to the encapsulating application protocol (e.g.,
SIP, MGCP). Three common ways to provide replay protection are to
place a sequence number in the message, to use a timestamp, or for
the receiver to keep a hash of the message to be compared with
incoming messages. There typically needs to be a replay "window" and
some policy for keeping state information from previous messages in a
"replay table" or list.
The discussion that follows uses "message authentication" and
"message confidentiality" in a manner consistent with SRTP [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>].
"Message confidentiality" means that only the holder of the secret
decryption key can access the plain-text content of the message. The
decryption key is the same key as the encryption key, using SRTP
counter mode and f8 encryption transforms, which are vulnerable to
message tampering and need SRTP message authentication to detect such
tampering. "Message authentication" and "message integrity
validation" generally mean the same thing in IETF security standards:
an SRTP message is authenticated following a successful HMAC
integrity check [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>], which proves that the message originated
from the holder of an SRTP master key and was not altered en route.
Such an "authentic" message, however, can be captured by an attacker
and "replayed" when the attacker re-inserts the packet into the
channel. A replayed packet can have a variety of bad effects on the
session, and SRTP uses the extended sequence number to detect
replayed SRTP packets [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>].
The SRTP specification identifies which services and features are
default values that are normative-to-implement (such as
AES_CM_128_80) versus normative-to-use (such as AES_CM_128_32).
<span class="h3"><a class="selflink" id="section-8.1" href="#section-8.1">8.1</a>. Authentication of Packets</span>
Security descriptions as defined herein signal security services for
RTP packets. RTP messages are vulnerable to a variety of attacks,
such as replay and forging. To limit these attacks, SRTP message
integrity mechanisms SHOULD be used (SRTP replay protection is always
enabled).
<span class="h3"><a class="selflink" id="section-8.2" href="#section-8.2">8.2</a>. Keystream Reuse</span>
SRTP security descriptions signal configuration parameters for SRTP
sessions. Misconfigured SRTP sessions are vulnerable to attacks on
their encryption services when running the crypto suites defined in
<span class="grey">Andreasen, et al. Standards Track [Page 30]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-31" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
Sections <a href="#section-6.2.1">6.2.1</a>, <a href="#section-6.2.2">6.2.2</a>, and <a href="#section-6.2.3">6.2.3</a>. An SRTP encryption service is
"misconfigured" when two or more media streams are encrypted using
the same keystream of AES blocks. When senders and receivers share
derived session keys, SRTP requires that the SSRCs of session
participants serve to make their corresponding keystreams unique,
which is violated in the case of SSRC collision: SRTP SSRC collision
drastically weakens SRTP or SRTCP payload encryption during the time
that identical keystreams are used [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>]. An attacker, for
example, might collect SRTP and SRTCP messages and await a collision.
This attack on the AES-CM and AES-f8 encryption is avoided entirely
when each media stream has its own unique master key in both the send
and receive direction. This specification restricts use of SDP
security description to unicast point-to-point streams so that keys
are not shared between SRTP hosts, and the master keys used in the
send and receive direction for a given media stream are unique.
<span class="h3"><a class="selflink" id="section-8.3" href="#section-8.3">8.3</a>. Signaling Authentication and Signaling Encryption</span>
There is no reason to incur the complexity and computational expense
of SRTP, however, when its key establishment is exposed to
unauthorized parties. In most cases, the SRTP crypto attribute and
its parameters are vulnerable to denial-of-service attacks when they
are carried in an unauthenticated SDP message. In some cases, the
integrity or confidentiality of the RTP stream can be compromised.
For example, if an attacker sets UNENCRYPTED for the SRTP stream in
an offer, this could result in the answerer's not decrypting the
encrypted SRTP messages. In the worst case, the answerer might
itself send unencrypted SRTP and leave its data exposed to snooping.
Thus, IT IS REQUIRED that MIME secure multiparts, IPsec, TLS, or some
other data security service be used to provide message authentication
for the encapsulating protocol that carries the SDP messages having a
crypto attribute (a=crypto). Furthermore, IT IS REQUIRED that
encryption of the encapsulating payload be used whenever a master key
parameter (inline) appears in the message. Failure to encrypt the
SDP message containing an inline SRTP master key renders the SRTP
authentication or encryption service useless in practically all
circumstances. Failure to authenticate an SDP message that carries
SRTP parameters renders the SRTP authentication or encryption service
useless in most practical applications.
When the communication path of the SDP message is routed through
intermediate systems that inspect parts of the SDP message, security
protocols such as [IPsec] or TLS SHOULD NOT be used for encrypting
and/or authenticating the security description. In the case of
intermediate-system processing of a message containing SDP security
descriptions, the "a=crypto" attributes SHOULD be protected end-to-
end so that the intermediate system can neither modify the security
<span class="grey">Andreasen, et al. Standards Track [Page 31]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-32" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
description nor access the keying material. Network or transport
security protocols that terminate at each intermediate system,
therefore, SHOULD NOT be used for protecting SDP security
descriptions. A security protocol SHOULD allow the security
descriptions to be encrypted and authenticated end-to-end
independently of the portions of the SDP message that any
intermediate system modifies or inspects: MIME secure multiparts are
RECOMMENDED for the protection of SDP messages that are processed by
intermediate systems.
<span class="h2"><a class="selflink" id="section-9" href="#section-9">9</a>. Grammar</span>
In this section, we first provide the ABNF grammar for the generic
crypto attribute, and then we provide the ABNF grammar for the SRTP-
specific use of the crypto attribute.
<span class="h3"><a class="selflink" id="section-9.1" href="#section-9.1">9.1</a>. Generic "Crypto" Attribute Grammar</span>
The ABNF grammar for the crypto attribute is defined below:
"a=crypto:" tag 1*WSP crypto-suite 1*WSP key-params
*(1*WSP session-param)
tag = 1*9DIGIT
crypto-suite = 1*(ALPHA / DIGIT / "_")
key-params = key-param *(";" key-param)
key-param = key-method ":" key-info
key-method = "inline" / key-method-ext
key-method-ext = 1*(ALPHA / DIGIT / "_")
key-info = 1*(%x21-3A / %x3C-7E) ; visible (printing) chars
; except semi-colon
session-param = 1*(VCHAR) ; visible (printing) characters
where WSP, ALPHA, DIGIT, and VCHAR are defined in [<a href="./rfc4234" title=""Augmented BNF for Syntax Specifications: ABNF"">RFC4234</a>].
<span class="h3"><a class="selflink" id="section-9.2" href="#section-9.2">9.2</a>. SRTP "Crypto" Attribute Grammar</span>
This section provides an Augmented BNF [<a href="./rfc4234" title=""Augmented BNF for Syntax Specifications: ABNF"">RFC4234</a>] grammar for the
SRTP-specific use of the SDP crypto attribute:
crypto-suite = srtp-crypto-suite
key-method = srtp-key-method
key-info = srtp-key-info
session-param = srtp-session-param
srtp-crypto-suite = "AES_CM_128_HMAC_SHA1_32" /
"F8_128_HMAC_SHA1_32" /
<span class="grey">Andreasen, et al. Standards Track [Page 32]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-33" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
"AES_CM_128_HMAC_SHA1_80" /
srtp-crypto-suite-ext
srtp-key-method = "inline"
srtp-key-info = key-salt ["|" lifetime] ["|" mki]
key-salt = 1*(base64) ; binary key and salt values
; concatenated together, and then
; base64 encoded [<a href="#section-3">section 3</a> of
; <a href="./rfc3548">RFC3548</a>
lifetime = ["2^"] 1*(DIGIT) ; see <a href="#section-6.1">section 6.1</a> for "2^"
mki = mki-value ":" mki-length
mki-value = 1*DIGIT
mki-length = 1*3DIGIT ; range 1..128.
srtp-session-param = kdr /
"UNENCRYPTED_SRTP" /
"UNENCRYPTED_SRTCP" /
"UNAUTHENTICATED_SRTP" /
fec-order /
fec-key /
wsh /
srtp-session-extension
kdr = "KDR=" 1*2(DIGIT) ; range 0..24,
; power of two
fec-order = "FEC_ORDER=" fec-type
fec-type = "FEC_SRTP" / "SRTP_FEC"
fec-key = "FEC_KEY=" key-params
wsh = "WSH=" 2*DIGIT ; minimum value is 64
base64 = ALPHA / DIGIT / "+" / "/" / "="
srtp-crypto-suite-ext = 1*(ALPHA / DIGIT / "_")
srtp-session-extension = ["-"] 1*(VCHAR) ;visible chars [<a href="./rfc4234" title=""Augmented BNF for Syntax Specifications: ABNF"">RFC4234</a>]
; first character must not be dash ("-")
<span class="grey">Andreasen, et al. Standards Track [Page 33]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-34" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
<span class="h2"><a class="selflink" id="section-10" href="#section-10">10</a>. IANA Considerations</span>
<span class="h3"><a class="selflink" id="section-10.1" href="#section-10.1">10.1</a>. Registration of the "crypto" Attribute</span>
The IANA has registered a new SDP attribute as
follows:
Attribute name: crypto
Long form name: Security description cryptographic attribute
for media streams
Type of attribute: Media-level
Subject to charset: No
Purpose: Security descriptions
Appropriate values: See <a href="#section-4">Section 4</a>
<span class="h3"><a class="selflink" id="section-10.2" href="#section-10.2">10.2</a>. New IANA Registries and Registration Procedures</span>
The following sub-sections define a new IANA registry with associated
sub-registries to be used for the SDP security descriptions. The
IANA has created an SDP Security Description registry as shown below
and further described in the following sections:
SDP Security Descriptions
|
+- Key Methods (described in 10.2.1)
|
+- Media Stream Transports (described in 10.2.2)
|
+- Transport1 (e.g., SRTP)
| |
| +- Supported Key Methods (e.g., inline)
| |
| +- crypto suites
| |
| +- session parameters
|
+- Transport2
: :
<span class="h4"><a class="selflink" id="section-10.2.1" href="#section-10.2.1">10.2.1</a>. Key Method Registry and Registration</span>
The IANA has created a new subregistry for SDP security description
key methods. An IANA key method registration MUST be documented in
an RFC in accordance with the [<a href="./rfc2434" title="">RFC2434</a>] Standards Action, and it MUST
provide the name of the key method in accordance with the grammar for
key-method-ext defined in <a href="#section-9.1">Section 9.1</a>.
<span class="grey">Andreasen, et al. Standards Track [Page 34]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-35" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
<span class="h4"><a class="selflink" id="section-10.2.2" href="#section-10.2.2">10.2.2</a>. Media Stream Transport Registry and Registration</span>
The IANA has created a new subregistry for SDP security description
Media Stream Transports. An IANA media stream transport registration
MUST be documented in an RFC in accordance with the <a href="./rfc2434">RFC 2434</a>
Standards Action and the procedures defined in Sections <a href="#section-4">4</a> and <a href="#section-5">5</a> of
this document. The registration MUST provide the name of the
transport and a list of supported key methods.
In addition, each new media stream transport registry must contain a
crypto-suite registry and a session parameter registry, as well as
IANA instructions for how to populate these registries.
<span class="h3"><a class="selflink" id="section-10.3" href="#section-10.3">10.3</a>. Initial Registrations</span>
<span class="h4"><a class="selflink" id="section-10.3.1" href="#section-10.3.1">10.3.1</a>. Key Method</span>
The following security descriptions key methods are hereby
registered:
inline
<span class="h4"><a class="selflink" id="section-10.3.2" href="#section-10.3.2">10.3.2</a>. SRTP Media Stream Transport</span>
The IANA has created an SDP Security Description Media Stream
Transport subregistry for "SRTP". The key methods supported is
"inline". The reference for the SDP security description for SRTP is
this document.
<span class="h5"><a class="selflink" id="section-10.3.2.1" href="#section-10.3.2.1">10.3.2.1</a>. SRTP Crypto Suite Registry and Registration</span>
The IANA has created a new subregistry for SRTP crypto suites under
the SRTP transport of the SDP Security Descriptions. An IANA SRTP
crypto suite registration MUST indicate the crypto suite name in
accordance with the grammar for srtp-crypto-suite-ext defined in
<a href="#section-9.2">Section 9.2</a>.
The semantics of the SRTP crypto suite MUST be described in an RFC in
accordance with the <a href="./rfc2434">RFC 2434</a> Standards Action, including the
semantics of the "inline" key-method and any special semantics of
parameters.
The following SRTP crypto suites are hereby registered:
AES_CM_128_HMAC_SHA1_80
AES_CM_128_HMAC_SHA1_32
F8_128_HMAC_SHA1_80
<span class="grey">Andreasen, et al. Standards Track [Page 35]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-36" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
The reference for these crypto suites is provided in this document.
<span class="h5"><a class="selflink" id="section-10.3.2.2" href="#section-10.3.2.2">10.3.2.2</a>. SRTP Session Parameter Registration</span>
The IANA has created a new subregistry for SRTP session parameters
under the SRTP transport of the SDP Security Descriptions. An IANA
SRTP session parameter registration MUST indicate the session
parameter name (srtp-session-extension as defined in <a href="#section-9.2">Section 9.2</a>);
the name MUST NOT begin with the dash character ("-").
The semantics of the parameter MUST be described in an RFC in
accordance with the <a href="./rfc2434">RFC 2434</a> Standards Action. If values can be
assigned to the parameter, then the format and possible values that
can be assigned MUST be described in the RFC in accordance with the
<a href="./rfc2434">RFC 2434</a> Standards Action as well. Also, it MUST be specified
whether the parameter is declarative or negotiated in the
offer/answer model.
The following SRTP session parameters are hereby registered:
KDR
UNENCRYPTED_SRTP
UNENCRYPTED_SRTCP
UNAUTHENTICATED_SRTP
FEC_ORDER
FEC_KEY
WSH
The reference for these parameters is this document.
<span class="h2"><a class="selflink" id="section-11" href="#section-11">11</a>. Acknowledgements</span>
This document is a product of the IETF MMUSIC working group and has
benefited from comments from its participants. This document also
benefited from discussions with Elisabetta Cararra, Earl Carter, Per
Cederqvist, Bill Foster, Matt Hammer, Cullen Jennings, Paul Kyzivat,
David McGrew, Mats Naslund, Dave Oran, Jonathan Rosenberg, Dave
Singer, Mike Thomas, Brian Weis, and Magnus Westerlund.
<span class="h2"><a class="selflink" id="section-12" href="#section-12">12</a>. Normative References</span>
[<a id="ref-RFC3550">RFC3550</a>] Schulzrinne, H., Casner, S., Frederick, R., and V.
Jacobson, "RTP: A Transport Protocol for Real-Time
Applications", STD 64, <a href="./rfc3550">RFC 3550</a>, July 2003.
[<a id="ref-RFC2119">RFC2119</a>] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", <a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a>, <a href="./rfc2119">RFC 2119</a>, March 1997.
<span class="grey">Andreasen, et al. Standards Track [Page 36]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-37" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
[<a id="ref-RFC4566">RFC4566</a>] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
Description Protocol", <a href="./rfc4566">RFC 4566</a>, July 2006.
[<a id="ref-RFC4234">RFC4234</a>] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", <a href="./rfc4234">RFC 4234</a>, October 2005.
[<a id="ref-RFC2828">RFC2828</a>] Shirey, R., "Internet Security Glossary", FYI 36, <a href="./rfc2828">RFC</a>
<a href="./rfc2828">2828</a>, May 2000.
[<a id="ref-RFC3264">RFC3264</a>] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
with Session Description Protocol (SDP)", <a href="./rfc3264">RFC 3264</a>, June
2002.
[<a id="ref-RFC3711">RFC3711</a>] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K.
Norrman, "The Secure Real-time Transport Protocol (SRTP)",
<a href="./rfc3711">RFC 3711</a>, March 2004.
[<a id="ref-RFC1750">RFC1750</a>] Eastlake 3rd, D., Crocker, S., and J. Schiller,
"Randomness Recommendations for Security", <a href="./rfc1750">RFC 1750</a>,
December 1994.
[<a id="ref-RFC3548">RFC3548</a>] Josefsson, S., "The Base16, Base32, and Base64 Data
Encodings", <a href="./rfc3548">RFC 3548</a>, July 2003.
[<a id="ref-RFC2434">RFC2434</a>] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", <a href="https://www.rfc-editor.org/bcp/bcp26">BCP 26</a>, <a href="./rfc2434">RFC 2434</a>,
October 1998.
<span class="h2"><a class="selflink" id="section-13" href="#section-13">13</a>. Informative References</span>
[<a id="ref-sprecon">sprecon</a>] Andreasen, F. and D. Wing, "Security Preconditions for
Session Description Protocol Media Streams", Work in
Progress, October 2005.
[<a id="ref-RFC3407">RFC3407</a>] Andreasen, F., "Session Description Protocol (SDP) Simple
Capability Declaration", <a href="./rfc3407">RFC 3407</a>, October 2002.
[<a id="ref-Bellovin">Bellovin</a>] Bellovin, S., "Problem Areas for the IP Security
Protocols," in Proceedings of the Sixth Usenix Unix
Security Symposium, pp. 1-16, San Jose, CA, July 1996.
[<a id="ref-GDOI">GDOI</a>] Baugher, M., Weis, B., Hardjono, T., and H. Harney, "The
Group Domain of Interpretation", <a href="./rfc3547">RFC 3547</a>, July 2003.
[<a id="ref-kink">kink</a>] Sakane, S., Kamada, K., Thomas, M. and J. Vilhuber,
"Kerberized Internet Negotiation of Keys (KINK)", <a href="./rfc4430">RFC</a>
<a href="./rfc4430">4430</a>, March 2006.
<span class="grey">Andreasen, et al. Standards Track [Page 37]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-38" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
[<a id="ref-ike">ike</a>] Kaufman, C., "Internet Key Exchange (IKEv2) Protocol", <a href="./rfc4306">RFC</a>
<a href="./rfc4306">4306</a>, December 2005.
[<a id="ref-ipsec">ipsec</a>] Kent, S. and K. Seo, "Security Architecture for the
Internet Protocol", <a href="./rfc4301">RFC 4301</a>, December 2005.
[<a id="ref-maxprate">maxprate</a>] Westerlund, M., "A Transport Independent Bandwidth
Modifier for the Session Description Protocol (SDP)", <a href="./rfc3890">RFC</a>
<a href="./rfc3890">3890</a>, September 2004.
[<a id="ref-RFC2733">RFC2733</a>] Rosenberg, J. and H. Schulzrinne, "An RTP Payload Format
for Generic Forward Error Correction", <a href="./rfc2733">RFC 2733</a>, December
1999.
[s/mime] Ramsdell, B., "Secure/Multipurpose Internet Mail
Extensions (S/MIME) Version 3.1 Message Specification",
<a href="./rfc3851">RFC 3851</a>, July 2004.
[pgp/mime] Elkins, M., "MIME Security with Pretty Good Privacy
(PGP)", <a href="./rfc2015">RFC 2015</a>, October 1996.
[<a id="ref-TLS">TLS</a>] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0",
<a href="./rfc2246">RFC 2246</a>, January 1999.
[<a id="ref-keymgt">keymgt</a>] Arkko, J., Carrara, E., Lindholm, F., Naslund, M., and K.
Norrman, "Key Management Extensions for Session
Description Protocol (SDP) and Real Time Streaming
Protocol (RTSP)", <a href="./rfc4567">RFC 4567</a>, July 2006.
[<a id="ref-mikey">mikey</a>] Arkko, J., Carrara, E., Lindholm, F., Naslund, M., and K.
Norrman, "MIKEY: Multimedia Internet KEYing", <a href="./rfc3830">RFC 3830</a>,
August 2004.
[<a id="ref-RFC2104">RFC2104</a>] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-
Hashing for Message Authentication", <a href="./rfc2104">RFC 2104</a>, February
1997.
[<a id="ref-skeme">skeme</a>] Krawczyk, H., "SKEME: A Versatile Secure Key Exchange
Mechanism for the Internet", ISOC Secure Networks and
Distributed Systems Symposium, San Diego, 1996.
[<a id="ref-RFC3312">RFC3312</a>] Camarillo, G., Marshall, W., and J. Rosenberg,
"Integration of Resource Management and Session Initiation
Protocol (SIP)", <a href="./rfc3312">RFC 3312</a>, October 2002.
[<a id="ref-RFC2974">RFC2974</a>] Handley, M., Perkins, C., and E. Whelan, "Session
Announcement Protocol", <a href="./rfc2974">RFC 2974</a>, October 2000.
<span class="grey">Andreasen, et al. Standards Track [Page 38]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-39" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
[<a id="ref-srtpf">srtpf</a>] Ott, J. and E. Carrara, "Extended Secure RTP Profile for
RTCP-based Feedback (RTP/SAVPF)", work in progress,
October 2003.
[<a id="ref-RFC3261">RFC3261</a>] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
A., Peterson, J., Sparks, R., Handley, M., and E.
Schooler, "SIP: Session Initiation Protocol", <a href="./rfc3261">RFC 3261</a>,
June 2002.
[<a id="ref-RFC3311">RFC3311</a>] Rosenberg, J., "The Session Initiation Protocol (SIP)
UPDATE Method", <a href="./rfc3311">RFC 3311</a>, September 2002.
<span class="grey">Andreasen, et al. Standards Track [Page 39]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-40" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
Appendix A - Rationale for Keying Material Directionality
SDP security descriptions define the keying material for the sending
direction, which is included in the SDP. Thus, the key that is
carried in an SDP message is a decryption key for the receiver of
that SDP message. This is in contrast to the majority of information
included in SDP, which describes information for the receiving (or
receiving and sending) direction. This reversed information
directionality generates some challenges with using the mechanism in
the offer/answer model and in particular with SIP, where early media
and forking require special consideration (as described in <a href="#section-7.3">Section</a>
<a href="#section-7.3">7.3</a>). There are however good reasons for why this was done, which
can be summarized as follows:
First of all, there is the general security philosophy of letting the
entity that sends traffic decide what key to use for protecting it.
SRTP uses counter mode, which is secure when counters do not overlap
among senders who share a master key; the surest way to avoid counter
overlap is for each endpoint to generate its own master key.
Secondly, if SDP security descriptions had been designed to keep the
normal SDP information directionality, it would have resulted in
problems with supporting early media and SIP forking: If an offer
generates multiple answers and the keying material was for the
receive direction, some of the parameter values (e.g. lifetime) would
have to be shared between all the answerers (senders of media), which
would lead to considerable complexity, possibly requiring changes or
extensions to SRTP. Other problems were discovered as well, which we
describe further below.
In the following scenarios, we analyze what would occur if SDP
security descriptions had been designed so that the keying material
was the receive keying material (rather than its actual design, where
the keying material is the sending keying material):
<span class="grey">Andreasen, et al. Standards Track [Page 40]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-41" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
Scenario A: Non-Forking Case
In this scenario, the offer includes the receiving keying
material, the answerer receives it and starts sending data packets
towards the offerer. If there was a single crypto attribute in
the offer, there would be no ambiguity about which crypto suite
was being used and, hence, the incoming packet could be processed.
However, in the case where the offer included multiple alternative
crypto-attributes, the offerer would not know which one was
chosen, and hence, if the offerer received packets before the
answer came back, the offerer would be unable to process those
packets (problem 1). (Use of the MKI has been suggested as one
possible solution to that, however it incurs a per-packet
overhead.)
Scenario B: Serial Forking Case
In this scenario, Alice generates an offer to Bob, who starts
sending (early) media towards Alice (no answer returned yet). In
this scenario, we assume we aren't also encountering Scenario A
(e.g., the offer includes only a single crypto-attribute) and that
Bob is using a Synchronization Source (SSRC) value of 1 for his
SRTP and SRTCP packets. Alice thus has a crypto-context for SSRC
1, including the associated ROC (Roll Over Counter) and SEQ (RTP
Sequence Number). Bob now forwards the call to Carol (Bob still
has not generated an answer). At this point, Bob has Alice's key,
which sometimes might be a security weakness. As the exchange
proceeds, Carol gets the original offer, including the offered
crypto-attribute and starts sending media packets towards Alice.
It just so happens that Carol chooses an SSRC value of 1, as did
Bob. When Carol starts generating packets, there is a potential
for what <a href="./rfc3711">RFC 3711</a> calls a "two-time pad" issue (problem 2), as
well as the potential for the ROC to be out of sync between Alice
and Carol (problem 3). Note that since Bob and Carol are
(presumably) using different source transport addresses, the SSRC
reuse does not constitute an SSRC collision (although it may still
be interpreted as such by Alice). Per <a href="./rfc3711">RFC 3711</a>, since the master
key would be shared between Bob and Carol in this case, it is
RECOMMENDED that Alice leave the session at that point in order to
avoid the two-time pad issue. It should also be noted that <a href="./rfc3711">RFC</a>
<a href="./rfc3711">3711</a> recommends against sharing SRTP master keys, which forking
may accidentally introduce when the keying material is for the
receiving direction.
If we consider the above scenario again, but this time with keying
material in the offer (and answer) being the sending keying
material (as specified by SDP security descriptions), the scenario
instead looks as follows: Bob again chooses SSRC 1, and Bob will
<span class="grey">Andreasen, et al. Standards Track [Page 41]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-42" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
need to send back an answer to Alice, since Alice needs to learn
Bob's sending key. Bob also starts sending media towards Alice
(clipping may occur until Alice receives Bob's answer). Bob again
forwards the call to Carol who also starts sending early media
using SSRC 1. However, Carol needs to generate a new answer (for
the dialog between Alice and Carol) in order for Alice to process
Carol's packets . Upon receiving this answer, Alice can initiate a
new offer/answer exchange (to move the session to another
transport address as described in <a href="#section-7.3">Section 7.3</a>). In this case,
there is one master key per session and a unique keystream
regardless of whether or not SSRCs collide.
Scenario C: Parallel Forking Case
In this scenario, Alice generates an offer (with receive keying
material) that gets forked to Bob and Carol in parallel. Bob and
Carol both start sending packets (early media) to Alice. If Bob
and Carol choose different SSRCs, everything is fine initially.
However, one of the crypto context parameters is the master key
lifetime, and since Bob and Carol are sharing the same master key
(unbeknownst to either), they do not know when they need to rekey
(problem 4). If they choose the same SSRC, we have the two-time
pad problem again (problem 2).
In summary, if keying material were for the receive direction, we
would have the following problems:
- Problem 1: Offerer does not know which of multiple crypto offers
was chosen by answerer.
- Problem 2: SSRC reuse (or SSRC collisions) between multiple
answerers (serial or parallel forking) may lead to
the two-time pad issue.
- Problem 3: Part of the crypto context parameters (specifically
the ROC) is not communicated but derived, and if we
allow multiple entities to use the same SSRC
(sequentially), the ROC can be wrong.
- Problem 4: All crypto contexts that share a master key need to
maintain a shared set of counters (master key
lifetime), and if we allow for multiple entities on
different platforms to share a master key, we would
need a mechanism to synchronize these counters.
Problem 1 could be addressed by using the MKI as proposed
separately; however, it would result in using extra bandwidth for
each SRTP media packet. Solving problem 2 implies a need for
<span class="grey">Andreasen, et al. Standards Track [Page 42]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-43" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
being able to synchronize SSRC values with the answerer (or
abandon the session when SSRC reuse or SSRC collisions occur).
Problem 3 implies a need for being able to synchronize ROC values
on a per SSRC basis (or abandon the session when SSRC reuse
occurs). Problem 4 could be solved by having the offerer (Alice,
i.e., the entity receiving media) determine how many packets have
actually been generated by the total set of senders to Alice and,
hence, be the one to initiate the rekeying. In the case of packet
losses, etc. this is not foolproof, but in practice it could
probably be addressed by use of a reasonable safety margin.
In conclusion, it would be expected from an offer/answer and SIP
point of view to have the offer (and answer) keying material be
the receive keying material; however, doing so would trade
security for SIP friendliness, e.g., two-time pad and master key
lifetime issues, and violate the <a href="./rfc3711">RFC 3711</a> rule for sharing an SRTP
master key across SRTP sessions.
Authors' Addresses
Flemming Andreasen
Cisco Systems, Inc.
499 Thornall Street, 8th Floor
Edison, New Jersey 08837 USA
EMail: fandreas@cisco.com
Mark Baugher
5510 SW Orchid Street
Portland, Oregon 97219 USA
EMail: mbaugher@cisco.com
Dan Wing
Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134 USA
EMail: dwing@cisco.com
<span class="grey">Andreasen, et al. Standards Track [Page 43]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-44" ></span>
<span class="grey"><a href="./rfc4568">RFC 4568</a> SDP Security Descriptions July 2006</span>
Full Copyright Statement
Copyright (C) The Internet Society (2006).
This document is subject to the rights, licenses and restrictions
contained in <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a>, 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 <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a> and <a href="https://www.rfc-editor.org/bcp/bcp79">BCP 79</a>.
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
<a href="http://www.ietf.org/ipr">http://www.ietf.org/ipr</a>.
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).
Andreasen, et al. Standards Track [Page 44]
</pre>
|