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 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917
|
<pre>Network Working Group B. Aboba
Request for Comments: 3723 Microsoft
Category: Standards Track J. Tseng
McDATA Corporation
J. Walker
Intel
V. Rangan
Brocade Communications Systems Inc.
F. Travostino
Nortel Networks
April 2004
<span class="h1">Securing Block Storage Protocols over IP</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 (2004). All Rights Reserved.
Abstract
This document discusses how to secure block storage and storage
discovery protocols running over IP (Internet Protocol) using IPsec
and IKE (Internet Key Exchange). Threat models and security
protocols are developed for iSCSI (Internet Protocol Small Computer
System Interface), iFCP (Internet Fibre Channel Storage Networking)
and FCIP (Fibre Channel over TCP/IP), as well as the iSNS (Internet
Storage Name Server) and SLPv2 (Service Location Protocol v2)
discovery protocols. Performance issues and resource constraints are
analyzed.
Table of Contents
<a href="#section-1">1</a>. Introduction ................................................. <a href="#page-3">3</a>
<a href="#section-1.1">1.1</a>. iSCSI Overview ......................................... <a href="#page-3">3</a>
<a href="#section-1.2">1.2</a>. iFCP Overview .......................................... <a href="#page-4">4</a>
<a href="#section-1.3">1.3</a>. FCIP Overview .......................................... <a href="#page-4">4</a>
<a href="#section-1.4">1.4</a>. IPsec Overview ......................................... <a href="#page-4">4</a>
<a href="#section-1.5">1.5</a>. Terminology ............................................ <a href="#page-6">6</a>
<a href="#section-1.6">1.6</a>. Requirements Language .................................. <a href="#page-7">7</a>
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
<a href="#section-2">2</a>. Block Storage Protocol Security .............................. <a href="#page-7">7</a>
<a href="#section-2.1">2.1</a>. Security Requirements ................................. <a href="#page-7">7</a>
<a href="#section-2.2">2.2</a>. Resource Constraints ................................... <a href="#page-10">10</a>
<a href="#section-2.3">2.3</a>. Security Protocol ...................................... <a href="#page-12">12</a>
<a href="#section-2.4">2.4</a>. iSCSI Authentication ................................... <a href="#page-16">16</a>
<a href="#section-2.5">2.5</a>. SLPv2 Security ......................................... <a href="#page-18">18</a>
<a href="#section-2.6">2.6</a>. iSNS Security .......................................... <a href="#page-24">24</a>
<a href="#section-3">3</a>. iSCSI security Inter-Operability Guidelines .................. <a href="#page-28">28</a>
<a href="#section-3.1">3.1</a>. iSCSI Security Issues .................................. <a href="#page-28">28</a>
<a href="#section-3.2">3.2</a>. iSCSI and IPsec Interaction ............................ <a href="#page-29">29</a>
<a href="#section-3.3">3.3</a>. Initiating a New iSCSI Session ......................... <a href="#page-30">30</a>
<a href="#section-3.4">3.4</a>. Graceful iSCSI Teardown ................................ <a href="#page-31">31</a>
<a href="#section-3.5">3.5</a>. Non-graceful iSCSI Teardown ............................ <a href="#page-31">31</a>
<a href="#section-3.6">3.6</a>. Application Layer CRC .................................. <a href="#page-32">32</a>
<a href="#section-4">4</a>. iFCP and FCIP Security Issues ................................ <a href="#page-34">34</a>
<a href="#section-4.1">4.1</a>. iFCP and FCIP Authentication Requirements .............. <a href="#page-34">34</a>
<a href="#section-4.2">4.2</a>. iFCP Interaction with IPsec and IKE .................... <a href="#page-34">34</a>
<a href="#section-4.3">4.3</a>. FCIP Interaction with IPsec and IKE .................... <a href="#page-35">35</a>
<a href="#section-5">5</a>. Security Considerations ...................................... <a href="#page-36">36</a>
<a href="#section-5.1">5.1</a>. Transport Mode Versus Tunnel Mode ...................... <a href="#page-36">36</a>
<a href="#section-5.2">5.2</a>. NAT Traversal .......................................... <a href="#page-39">39</a>
<a href="#section-5.3">5.3</a>. IKE Issues ............................................. <a href="#page-40">40</a>
<a href="#section-5.4">5.4</a>. Rekeying Issues ........................................ <a href="#page-40">40</a>
<a href="#section-5.5">5.5</a>. Transform Issues ....................................... <a href="#page-43">43</a>
<a href="#section-5.6">5.6</a>. Fragmentation Issues ................................... <a href="#page-45">45</a>
<a href="#section-5.7">5.7</a>. Security Checks ........................................ <a href="#page-46">46</a>
<a href="#section-5.8">5.8</a>. Authentication Issues .................................. <a href="#page-47">47</a>
<a href="#section-5.9">5.9</a>. Use of AES in Counter Mode ............................. <a href="#page-51">51</a>
<a href="#section-6">6</a>. IANA Considerations .......................................... <a href="#page-51">51</a>
<a href="#section-6.1">6.1</a>. Definition of Terms .................................... <a href="#page-52">52</a>
<a href="#section-6.2">6.2</a>. Recommended Registration Policies ...................... <a href="#page-52">52</a>
<a href="#section-7">7</a>. Normative References ......................................... <a href="#page-52">52</a>
<a href="#section-8">8</a>. Informative References ....................................... <a href="#page-54">54</a>
<a href="#section-9">9</a>. Acknowledgments .............................................. <a href="#page-58">58</a>
<a href="#appendix-A">Appendix A</a> - Well Known Groups for Use with SRP ................. <a href="#page-59">59</a>
<a href="#appendix-B">Appendix B</a> - Software Performance of IPsec Transforms ........... <a href="#page-61">61</a>
<a href="#appendix-B.1">B.1</a>. Authentication Transforms .............................. <a href="#page-61">61</a>
<a href="#appendix-B.2">B.2</a>. Encryption and Authentication Transforms ............... <a href="#page-64">64</a>
Authors' Addresses ............................................... <a href="#page-69">69</a>
Full Copyright Statement ......................................... <a href="#page-70">70</a>
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
This specification discusses use of the IPsec protocol suite for
protecting block storage protocols over IP networks (including iSCSI,
iFCP and FCIP), as well as storage discovery protocols (iSNS and
SLPv2).
<span class="h3"><a class="selflink" id="section-1.1" href="#section-1.1">1.1</a>. iSCSI Overview</span>
iSCSI, described in [<a href="./rfc3720" title=""Internet Small Computer Systems Interface (iSCSI)"">RFC3720</a>], is a connection-oriented
command/response protocol that runs over TCP, and is used to access
disk, tape and other devices. iSCSI is a client-server protocol in
which clients (initiators) open connections to servers (targets) and
perform an iSCSI login.
This document uses the SCSI terms initiator and target for clarity
and to avoid the common assumption that clients have considerably
less computational and memory resources than servers; the reverse is
often the case for SCSI, as targets are commonly dedicated devices of
some form.
The iSCSI protocol has a text based negotiation mechanism as part of
its initial (login) procedure. The mechanism is extensible in what
can be negotiated (new text keys and values can be defined) and also
in the number of negotiation rounds (e.g., to accommodate
functionality such as challenge-response authentication).
After a successful login, the iSCSI initiator may issue SCSI commands
for execution by the iSCSI target, which returns a status response
for each command, over the same connection. A single connection is
used for both command/status messages as well as transfer of data
and/or optional command parameters. An iSCSI session may have
multiple connections, but a separate login is performed on each. The
iSCSI session terminates when its last connection is closed.
iSCSI initiators and targets are application layer entities that are
independent of TCP ports and IP addresses. Initiators and targets
have names whose syntax is defined in [<a href="./rfc3721" title=""Internet Small Computer Systems Interface (iSCSI) Naming and Discovery"">RFC3721</a>]. iSCSI sessions
between a given initiator and target are run over one or more TCP
connections between those entities. That is, the login process
establishes an association between an iSCSI Session and the TCP
connection(s) over which iSCSI PDUs will be carried.
While the iSCSI login may include mutual authentication of the iSCSI
endpoints and negotiation of session parameters, iSCSI does not
define its own per-packet authentication, integrity, confidentiality
or replay protection mechanisms. Rather, it relies upon the IPsec
protocol suite to provide per-packet data confidentiality and
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
integrity and authentication services, with IKE as the key management
protocol. iSCSI uses TCP to provide congestion control, error
detection and error recovery.
<span class="h3"><a class="selflink" id="section-1.2" href="#section-1.2">1.2</a>. iFCP Overview</span>
iFCP, defined in [<a href="#ref-iFCP" title=""iFCP - A Protocol for Internet Fibre Channel Storage Networking"">iFCP</a>], is a gateway-to-gateway protocol, which
provides transport services to Fibre Channel devices over a TCP/IP
network. iFCP allows interconnection and networking of existing
Fibre Channel devices at wire speeds over an IP network. iFCP
implementations emulate fabric services in order to improve fault
tolerance and scalability by fully leveraging IP technology. Each
TCP connection is used to support storage traffic between a unique
pair of Fibre Channel N_PORTs.
iFCP does not have a native, in-band security mechanism. Rather, it
relies upon the IPsec protocol suite to provide data confidentiality
and authentication services, and IKE as the key management protocol.
iFCP uses TCP to provide congestion control, error detection and
error recovery.
<span class="h3"><a class="selflink" id="section-1.3" href="#section-1.3">1.3</a>. FCIP Overview</span>
FCIP, defined in [<a href="#ref-FCIP" title=""Fibre Channel over TCP/IP (FCIP)"">FCIP</a>], is a pure FC encapsulation protocol that
transports FC frames. Current specification work intends this for
interconnection of Fibre Channel switches over TCP/IP networks, but
the protocol is not inherently limited to connecting FC switches.
FCIP differs from iFCP in that no interception or emulation of fabric
services is involved. One or more TCP connections are bound to an
FCIP Link, which is used to realize Inter-Switch Links (ISLs) between
pairs of Fibre Channel entities. FCIP Frame Encapsulation is
described in [<a href="./rfc3643" title=""Fibre Channel (FC) Frame Encapsuation"">RFC3643</a>].
FCIP does not have a native, in-band security mechanism. Rather, it
relies upon the IPsec protocol suite to provide data confidentiality
and authentication services, and IKE as the key management protocol.
FCIP uses TCP to provide congestion control, error detection and
error recovery.
<span class="h3"><a class="selflink" id="section-1.4" href="#section-1.4">1.4</a>. IPsec Overview</span>
IPsec is a protocol suite which is used to secure communication at
the network layer between two peers. The IPsec protocol suite is
specified within the IP Security Architecture [<a href="./rfc2401" title=""Security Architecture for the Internet Protocol"">RFC2401</a>], IKE
[<a href="./rfc2409" title=""The Internet Key Exchange (IKE)"">RFC2409</a>][RFC2412], IPsec Authentication Header (AH) [<a href="./rfc2402" title=""IP Authentication Header"">RFC2402</a>] and
IPsec Encapsulating Security Payload (ESP) [<a href="./rfc2406" title=""IP Encapsulating Security Payload (ESP)"">RFC2406</a>] documents. IKE
is the key management protocol while AH and ESP are used to protect
IP traffic.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
An IPsec SA is a one-way security association, uniquely identified by
the 3-tuple: Security Parameter Index (SPI), protocol (ESP) and
destination IP. The parameters for an IPsec security association are
typically established by a key management protocol. These include
the encapsulation mode, encapsulation type, session keys and SPI
values.
IKE is a two phase negotiation protocol based on the modular exchange
of messages defined by ISAKMP [<a href="./rfc2408" title=""Internet Security Association and Key Management Protocol (ISAKMP),"">RFC2408</a>],and the IP Security Domain of
Interpretation (DOI) [<a href="./rfc2407" title=""The Internet IP Security Domain of Interpretation of ISAKMP"">RFC2407</a>]. IKE has two phases, and accomplishes
the following functions:
[<a id="ref-1">1</a>] Protected cipher suite and options negotiation - using keyed
MACs and encryption and anti-replay mechanisms
[<a id="ref-2">2</a>] Master key generation - such as via MODP Diffie-Hellman
calculations
[<a id="ref-3">3</a>] Authentication of end-points
[<a id="ref-4">4</a>] IPsec SA management (selector negotiation, options negotiation,
create, delete, and rekeying)
Items 1 through 3 are accomplished in IKE Phase 1, while item 4 is
handled in IKE Phase 2.
An IKE Phase 2 negotiation is performed to establish both an inbound
and an outbound IPsec SA. The traffic to be protected by an IPsec SA
is determined by a selector which has been proposed by the IKE
initiator and accepted by the IKE Responder. In IPsec transport
mode, the IPsec SA selector can be a "filter" or traffic classifier,
defined as the 5-tuple: <Source IP address, Destination IP address,
transport protocol (UDP/SCTP/TCP), Source port, Destination port>.
The successful establishment of a IKE Phase-2 SA results in the
creation of two uni-directional IPsec SAs fully qualified by the
tuple <Protocol (ESP/AH), destination address, SPI>.
The session keys for each IPsec SA are derived from a master key,
typically via a MODP Diffie-Hellman computation. Rekeying of an
existing IPsec SA pair is accomplished by creating two new IPsec SAs,
making them active, and then optionally deleting the older IPsec SA
pair. Typically the new outbound SA is used immediately, and the old
inbound SA is left active to receive packets for some locally defined
time, perhaps 30 seconds or 1 minute.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
<span class="h3"><a class="selflink" id="section-1.5" href="#section-1.5">1.5</a>. Terminology</span>
Fibre Channel
Fibre Channel (FC) is a gigabit speed networking technology
primarily used to implement Storage Area Networks (SANs), although
it also may be used to transport other frames types as well,
including IP. FC is standardized under American National Standard
for Information Systems of the InterNational Committee for
Informational Technology Standards (ANSI-INCITS) in its T11
technical committee.
FCIP
Fibre Channel over IP (FCIP) is a protocol for interconnecting
Fibre Channel islands over IP Networks so as to form a unified SAN
in a single Fibre Channel fabric. The principal FCIP interface
point to the IP Network is the FCIP Entity. The FCIP Link
represents one or more TCP connections that exist between a pair
of FCIP Entities.
HBA
Host Bus Adapter (HBA) is a generic term for a SCSI interface to
other device(s); it's roughly analogous to the term Network
Interface Card (NIC) for a TCP/IP network interface, except that
HBAs generally have on-board SCSI implementations, whereas most
NICs do not implement TCP, UDP, or IP.
iFCP
iFCP is a gateway-to-gateway protocol, which provides Fibre
Channel fabric services to Fibre Channel devices over a TCP/IP
network.
IP block storage protocol
Where used within this document, the term "IP block storage
protocol" applies to all block storage protocols running over IP,
including iSCSI, iFCP and FCIP.
iSCSI
iSCSI is a client-server protocol in which clients (initiators)
open connections to servers (targets).
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
iSNS
The Internet Storage Name Server (iSNS) protocol provides for
discovery and management of iSCSI and Fibre Channel (FCP) storage
devices. iSNS applications store iSCSI and FC device attributes
and monitor their availability and reachability, providing a
consolidated information repository for an integrated IP block
storage network. iFCP requires iSNS for discovery and management,
while iSCSI may use iSNS for discovery, and FCIP does not use
iSNS.
initiator
The iSCSI initiator connects to the target on well-known TCP port
3260. The iSCSI initiator then issues SCSI commands for execution
by the iSCSI target.
target
The iSCSI target listens on a well-known TCP port for incoming
connections, and returns a status response for each command
issued by the iSCSI initiator, over the same connection.
<span class="h3"><a class="selflink" id="section-1.6" href="#section-1.6">1.6</a>. Requirements Language</span>
In this document, the key words "MAY", "MUST, "MUST NOT", "OPTIONAL",
"RECOMMENDED", "SHALL", "SHALL NOT", "SHOULD", and "SHOULD NOT", are
to be interpreted as described in [<a href="./rfc2119" title=""Key words for use in RFCs to Indicate Requirement Levels"">RFC2119</a>].
Note that requirements specified in this document apply only to use
of IPsec and IKE with IP block storage protocols. Thus, these
requirements do not apply to IPsec implementations in general.
Implementation requirements language should therefore be assumed to
relate to the availability of features for use with IP block storage
security only.
Although the security requirements in this document are already
incorporated into the iSCSI [<a href="./rfc3720" title=""Internet Small Computer Systems Interface (iSCSI)"">RFC3720</a>], iFCP [<a href="#ref-iFCP" title=""iFCP - A Protocol for Internet Fibre Channel Storage Networking"">iFCP</a>] and FCIP [<a href="#ref-FCIP" title=""Fibre Channel over TCP/IP (FCIP)"">FCIP</a>]
standards track documents, they are reproduced here for convenience.
In the event of a discrepancy, the individual protocol standards
track documents take precedence.
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Block Storage Protocol Security</span>
<span class="h3"><a class="selflink" id="section-2.1" href="#section-2.1">2.1</a>. Security Requirements</span>
IP Block storage protocols such as iSCSI, iFCP and FCIP are used to
transmit SCSI commands over IP networks. Therefore, both the control
and data packets of these IP block storage protocols are vulnerable
to attack. Examples of attacks include:
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
[<a id="ref-1">1</a>] An adversary may attempt to acquire confidential data and
identities by snooping data packets.
[<a id="ref-2">2</a>] An adversary may attempt to modify packets containing data and
control messages.
[<a id="ref-3">3</a>] An adversary may attempt to inject packets into an IP block
storage connection.
[<a id="ref-4">4</a>] An adversary may attempt to hijack TCP connection(s)
corresponding to an IP block storage session.
[<a id="ref-5">5</a>] An adversary may launch denial of service attacks against IP
block storage devices such as by sending a TCP reset.
[<a id="ref-6">6</a>] An adversary may attempt to disrupt security negotiation
process, in order to weaken the authentication, or gain access
to user passwords. This includes disruption of application-
layer authentication negotiations such as iSCSI Login.
[<a id="ref-7">7</a>] An adversary may attempt to impersonate a legitimate IP block
storage entity.
[<a id="ref-8">8</a>] An adversary may launch a variety of attacks (packet
modification or injection, denial of service) against the
discovery (SLPv2 [<a href="./rfc2608" title=""Service Location Protocol, Version 2"">RFC2608</a>]) or discovery and management (iSNS
[<a href="#ref-iSNS" title=""iSNS Internet Storage Name Service"">iSNS</a>]) process. iSCSI can use SLPv2 or iSNS. FCIP only uses
SLPv2, and iFCP only uses iSNS.
Since iFCP and FCIP devices are the last line of defense for a whole
Fibre Channel island, the above attacks, if successful, could
compromise the security of all the Fibre Channel hosts behind the
devices.
To address the above threats, IP block storage security protocols
must support confidentiality, data origin authentication, integrity,
and replay protection on a per-packet basis. Confidentiality
services are important since IP block storage traffic may traverse
insecure public networks. The IP block storage security protocols
must support perfect forward secrecy in the rekeying process.
Bi-directional authentication of the communication endpoints MUST be
provided. There is no requirement that the identities used in
authentication be kept confidential (e.g., from a passive
eavesdropper).
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
For a security protocol to be useful, CPU overhead and hardware
availability must not preclude implementation at 1 Gbps today.
Implementation feasibility at 10 Gbps is highly desirable, but may
not be demonstrable at this time. These performance levels apply to
aggregate throughput, and include all TCP connections used between IP
block storage endpoints. IP block storage communications typically
involve multiple TCP connections. Performance issues are discussed
further in <a href="#appendix-B">Appendix B</a>.
Enterprise data center networks are considered mission-critical
facilities that must be isolated and protected from possible security
threats. Such networks are often protected by security gateways,
which at a minimum provide a shield against denial of service
attacks. The IP block storage security architecture should be able
to leverage the protective services of the existing security
infrastructure, including firewall protection, NAT and NAPT services,
and VPN services available on existing security gateways.
When iFCP or FCIP devices are deployed within enterprise networks, IP
addresses will be typically be statically assigned as is the case
with most routers and switches. Consequently, support for dynamic IP
address assignment, as described in [<a href="./rfc3456" title=""Dynamic Host Configuration Protocol (DHCPv4) Configuration of IPsec Tunnel Mode"">RFC3456</a>], will typically not be
required, although it cannot be ruled out. Such facilities will also
be relevant to iSCSI hosts whose addresses are dynamically assigned.
As a result, the IP block storage security protocols must not
introduce additional security vulnerabilities where dynamic address
assignment is supported.
While IP block storage security is mandatory to implement, it is not
mandatory to use. The security services used depend on the
configuration and security policies put in place. For example,
configuration will influence the authentication algorithm negotiated
within iSCSI Login, as well as the security services
(confidentiality, data origin authentication, integrity, replay
protection) and transforms negotiated when IPsec is used to protect
IP block storage protocols such as iSCSI, iFCP and FCIP.
FCIP implementations may allow enabling and disabling security
mechanisms at the granularity of an FCIP Link. For iFCP, the
granularity corresponds to an iFCP Portal. For iSCSI, the
granularity of control is typically that of an iSCSI session,
although it is possible to exert control down to the granularity of
the destination IP address and TCP port.
Note that with IPsec, security services are negotiated at the
granularity of an IPsec SA, so that IP block storage connections
requiring a set of security services different from those negotiated
with existing IPsec SAs will need to negotiate a new IPsec SA.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Separate IPsec SAs are also advisable where quality of service
considerations dictate different handling of IP block storage
connections. Attempting to apply different quality of service to
connections handled by the same IPsec SA can result in reordering,
and falling outside the replay window. For a discussion of the
issues, see [<a href="./rfc2983" title=""Differentiated Services and Tunnels"">RFC2983</a>].
IP block storage protocols can be expected to carry sensitive data
and provide access to systems and data that require protection
against security threats. SCSI and Fibre Channel currently contain
little in the way of security mechanisms, and rely on physical
security, administrative security, and correct configuration of the
communication medium and systems/devices attached to it for their
security properties.
For most IP networks, it is inappropriate to assume physical
security, administrative security, and correct configuration of the
network and all attached nodes (a physically isolated network in a
test lab may be an exception). Therefore, authentication SHOULD be
used by IP block storage protocols (e.g., iSCSI SHOULD use one of its
in-band authentication mechanisms or the authentication provided by
IKE) in order to provide a minimal assurance that connections have
initially been opened with the intended counterpart.
iSNS, described in [<a href="#ref-iSNS" title=""iSNS Internet Storage Name Service"">iSNS</a>], is required in all iFCP deployments.
iSCSI may use iSNS for discovery, and FCIP does not use iSNS. iSNS
applications store iSCSI and FC device attributes and monitor their
availability and reachability, providing a consolidated information
repository for an integrated IP block storage network. The iSNS
specification defines mechanisms to secure communication between an
iSNS server and its clients.
<span class="h3"><a class="selflink" id="section-2.2" href="#section-2.2">2.2</a>. Resource Constraints</span>
Resource constraints and performance requirements for iSCSI are
discussed in <a href="./rfc3347#section-3.2">[RFC3347] Section 3.2</a>. iFCP and FCIP devices will
typically be embedded systems deployed on racks in air-conditioned
data center facilities. Such embedded systems may include hardware
chipsets to provide data encryption, authentication, and integrity
processing. Therefore, memory and CPU resources are generally not a
constraining factor.
iSCSI will be implemented on a variety of systems ranging from large
servers running general purpose operating systems to embedded host
bus adapters (HBAs). In general, a host bus adapter is the most
constrained iSCSI implementation environment, although an HBA may
draw upon the resources of the system to which it is attached in some
cases (e.g., authentication computations required for connection
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
setup). More resources should be available to iSCSI implementations
for embedded and general purpose operating systems. The following
guidelines indicate the approximate level of resources that
authentication, keying, and rekeying functionality can reasonably
expect to draw upon:
- Low power processors with small word size are generally not used,
as power is usually not a constraining factor, with the possible
exception of HBAs, which can draw upon the computational resources
of the system into which they are inserted. Computational
horsepower should be available to perform a reasonable amount of
exponentiation as part of authentication and key derivation for
connection setup. The same is true of rekeying, although the
ability to avoid exponentiation for rekeying may be desirable (but
is not an absolute requirement).
- RAM and/or flash resources tend to be constrained in embedded
implementations. 8-10 MB of code and data for authentication,
keying, and rekeying is clearly excessive, 800-1000 KB is clearly
larger than desirable, but tolerable if there is no other
alternative and 80-100 KB should be acceptable. These sizes are
intended as rough order of magnitude guidance, and should not be
taken as hard targets or limits (e.g., smaller code sizes are
always better). Software implementations for general purpose
operating systems may have more leeway.
The primary resource concern for implementation of authentication and
keying mechanisms is code size, as iSCSI assumes that the
computational horsepower to do exponentiations will be available.
There is no dominant iSCSI usage scenario - the scenarios range from
a single connection constrained only by media bandwidth to hundreds
of initiator connections to a single target or communication
endpoint. SCSI sessions and hence the connections they use tend to
be relatively long lived; for disk storage, a host typically opens a
SCSI connection on boot and closes it on shutdown. Tape session
length tends to be measured in hours or fractions thereof (i.e.,
rapid fire sharing of the same tape device among different initiators
is unusual), although tape robot control sessions can be short when
the robot is shared among tape drives. On the other hand, tape will
not see a large number of initiator connections to a single target or
communication endpoint, as each tape drive is dedicated to a single
use at a single time, and a dozen tape drives is a large tape device.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
<span class="h3"><a class="selflink" id="section-2.3" href="#section-2.3">2.3</a>. Security Protocol</span>
<span class="h4"><a class="selflink" id="section-2.3.1" href="#section-2.3.1">2.3.1</a>. Transforms</span>
All IP block storage security compliant implementations MUST support
IPsec ESP [<a href="./rfc2406" title=""IP Encapsulating Security Payload (ESP)"">RFC2406</a>] to provide security for both control packets and
data packets, as well as the replay protection mechanisms of IPsec.
When ESP is utilized, per-packet data origin authentication,
integrity and replay protection MUST be used.
To provide confidentiality with ESP, ESP with 3DES in CBC mode
[<a href="./rfc2451" title=""The ESP CBC-Mode Cipher Algorithms"">RFC2451</a>][3DESANSI] MUST be supported, and AES in Counter mode, as
described in [<a href="./rfc3686" title=""Using Advanced Encryption Standard (AES) Counter Mode With IPsec Encapsulating Security Payload (ESP)"">RFC3686</a>], SHOULD be supported. To provide data origin
authentication and integrity with ESP, HMAC-SHA1 [<a href="./rfc2404" title=""The Use of HMAC-SHA-1-96 within ESP and AH"">RFC2404</a>] MUST be
supported, and AES in CBC MAC mode with XCBC extensions [<a href="./rfc3566" title=""The AES-XCBC-MAC-96 Algorithm and Its Use with IPsec"">RFC3566</a>]
SHOULD be supported. DES in CBC mode SHOULD NOT be used due to its
inherent weakness. ESP with NULL encryption MUST be supported for
authentication.
<span class="h4"><a class="selflink" id="section-2.3.2" href="#section-2.3.2">2.3.2</a>. IPsec Modes</span>
Conformant IP block storage protocol implementations MUST support ESP
[<a href="./rfc2406" title=""IP Encapsulating Security Payload (ESP)"">RFC2406</a>] in tunnel mode and MAY implement IPsec with ESP in
transport mode.
<span class="h4"><a class="selflink" id="section-2.3.3" href="#section-2.3.3">2.3.3</a>. IKE</span>
Conformant IP block storage security implementations MUST support IKE
[<a href="./rfc2409" title=""The Internet Key Exchange (IKE)"">RFC2409</a>] for peer authentication, negotiation of security
associations, and key management, using the IPsec DOI [<a href="./rfc2407" title=""The Internet IP Security Domain of Interpretation of ISAKMP"">RFC2407</a>].
Manual keying MUST NOT be used since it does not provide the
necessary rekeying support. Conformant IP block storage security
implementations MUST support peer authentication using a pre-shared
key, and MAY support certificate-based peer authentication using
digital signatures. Peer authentication using the public key
encryption methods outlined in IKE's sections <a href="#section-5.2">5.2</a> and <a href="#section-5.3">5.3</a> [<a href="./rfc2409" title=""The Internet Key Exchange (IKE)"">RFC2409</a>]
SHOULD NOT be used.
Conformant IP block storage security implementations MUST support IKE
Main Mode and SHOULD support Aggressive Mode. IKE Main Mode with
pre-shared key authentication SHOULD NOT be used when either of the
peers use a dynamically assigned IP address. While Main Mode with
pre-shared key authentication offers good security in many cases,
situations where dynamically assigned addresses are used force use of
a group pre-shared key, which is vulnerable to man-in-the-middle
attack.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
When digital signatures are used for authentication, either IKE Main
Mode or IKE Aggressive Mode MAY be used. In all cases, access to
locally stored secret information (pre-shared key, or private key
for digital signing) must be suitably restricted, since compromise of
the secret information nullifies the security properties of the
IKE/IPsec protocols.
When digital signatures are used to achieve authentication, an IKE
negotiator SHOULD use IKE Certificate Request Payload(s) to specify
the certificate authority (or authorities) that are trusted in
accordance with its local policy. IKE negotiators SHOULD check the
pertinent Certificate Revocation List (CRL) before accepting a PKI
certificate for use in IKE's authentication procedures.
The IPsec DOI [<a href="./rfc2407" title=""The Internet IP Security Domain of Interpretation of ISAKMP"">RFC2407</a>] provides for several types of identification
data. Within IKE Phase 1, for use within the IDii and IDir payloads,
conformant IP block storage security implementations MUST support the
ID_IPV4_ADDR, ID_IPV6_ADDR (if the protocol stack supports IPv6) and
ID_FQDN Identity Payloads. iSCSI security implementations SHOULD
support the ID_USER_FQDN Identity Payload; other IP block storage
protocols (iFCP, FCIP) SHOULD NOT use the ID_USER_FQDN Identity
Payload. Identities other than ID_IPV4_ADDR and ID_IPV6_ADDR (such
as ID_FQDN or ID_USER_FQDN) SHOULD be employed in situations where
Aggressive mode is utilized along with pre-shared keys and IP
addresses are dynamically assigned. The IP Subnet, IP Address Range,
ID_DER_ASN1_DN, ID_DER_ASN1_GN formats SHOULD NOT be used for IP
block storage protocol security; The ID_KEY_ID Identity Payload MUST
NOT be used. As described in [<a href="./rfc2407" title=""The Internet IP Security Domain of Interpretation of ISAKMP"">RFC2407</a>], within Phase 1 the ID port
and protocol fields MUST be set to zero or to UDP port 500. Also, as
noted in [<a href="./rfc2407" title=""The Internet IP Security Domain of Interpretation of ISAKMP"">RFC2407</a>]:
When an IKE exchange is authenticated using certificates (of any
format), any ID's used for input to local policy decisions SHOULD
be contained in the certificate used in the authentication of the
exchange.
The Phase 2 Quick Mode exchanges used by IP block storage protocol
implementations MUST explicitly carry the Identity Payload fields
(IDci and IDcr). Each Phase 2 IDci and IDcr Payload SHOULD carry a
single IP address (ID_IPV4_ADDR, ID_IPV6_ADDR) and SHOULD NOT use the
IP Subnet or IP Address Range formats. Other ID payload formats MUST
NOT be used.
Since IPsec acceleration hardware may only be able to handle a
limited number of active IKE Phase 2 SAs, Phase 2 delete messages may
be sent for idle SAs, as a means of keeping the number of active
Phase 2 SAs to a minimum. The receipt of an IKE Phase 2 delete
message MUST NOT be interpreted as a reason for tearing down an IP
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
block storage connection. Rather, it is preferable to leave the
connection up, and if additional traffic is sent on it, to bring up
another IKE Phase 2 SA to protect it. This avoids the potential for
continually bringing connections up and down.
<span class="h4"><a class="selflink" id="section-2.3.4" href="#section-2.3.4">2.3.4</a>. Security Policy Configuration</span>
One of the goals of this specification is to enable a high level of
interoperability without requiring extensive configuration. This
section provides guidelines on setting of IKE parameters so as to
enhance the probability of a successful negotiation. It also
describes how information on security policy configuration can be
provided so as to further enhance the chances of success.
To enhance the prospects for interoperability, some of the actions to
consider include:
[<a id="ref-1">1</a>] Transform restriction.
Since support for 3DES-CBC and HMAC-SHA1 is required of all
implementations, offering these transforms enhances the
probability of a successful negotiation. If AES-CTR [<a href="./rfc3686" title=""Using Advanced Encryption Standard (AES) Counter Mode With IPsec Encapsulating Security Payload (ESP)"">RFC3686</a>]
with XCBC-MAC [<a href="./rfc3566" title=""The AES-XCBC-MAC-96 Algorithm and Its Use with IPsec"">RFC3566</a>] is supported, this transform combination
will typically be preferred, with 3DES-CBC/HMAC-SHA1 as a
secondary offer.
[<a id="ref-2">2</a>] Group Restriction.
If 3DES-CBC/HMAC-SHA1 is offered, and DH groups are offered,
then it is recommended that a DH group of at least 1024 bits be
offered along with it. If AES-CTR/XCBC-MAC is the preferred
offer, and DH groups are offered, then it is recommended that a
DH group of at least 2048 bits be offered along with it, as
noted in [<a href="#ref-KeyLen" title=""Determining Strengths For Public Keys Used For Exchanging Symmetric Keys"">KeyLen</a>]. If perfect forward secrecy is required in
Quick Mode, then it is recommended that the QM PFS DH group be
the same as the IKE Phase 1 DH group. This reduces the total
number of combinations, enhancing the chances for
interoperability.
[<a id="ref-3">3</a>] Key lifetimes.
If a key lifetime is offered that is longer than desired, then
rather than causing the IKE negotiation to fail, it is
recommended that the Responder consider the offered lifetime as
a maximum, and accept it. The key can then use a lesser value
for the lifetime, and utilize a Lifetime Notify in order to
inform the other peer of lifetime expiration.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Even when the above advice is taken, it still may be useful to be
able to provide additional configuration information in order to
enhance the chances of success, and it is useful to be able to manage
security configuration regardless of the scale of the deployment.
For example, it may be desirable to configure the security policy of
an IP block storage device. This can be done manually or
automatically via a security policy distribution mechanism.
Alternatively, it can be supplied via iSNS or SLPv2. If an IP block
storage endpoint can obtain the required security policy by other
means (manually, or automatically via a security policy distribution
mechanism) then it need not request this information via iSNS or
SLPv2. However, if the required security policy configuration is not
available via other mechanisms, iSNS or SLPv2 can be used to obtain
it.
It may also be helpful to obtain information about the preferences of
the peer prior to initiating IKE. While it is generally possible to
negotiate security parameters within IKE, there are situations in
which incompatible parameters can cause the IKE negotiation to fail.
The following information can be provided via SLPv2 or iSNS:
[<a id="ref-4">4</a>] IPsec or cleartext support.
The minimum piece of peer configuration required is whether an
IP block storage endpoint requires IPsec or cleartext. This
cannot be determined from the IKE negotiation alone without
risking a long timeout, which is highly undesirable for a disk
access protocol.
[<a id="ref-5">5</a>] Perfect Forward Secrecy (PFS) support.
It is helpful to know whether a peer allows PFS, since an IKE
Phase 2 Quick Mode can fail if an initiator proposes PFS to a
Responder that does not allow it.
[<a id="ref-6">6</a>] Preference for tunnel mode.
While it is legal to propose both transport and tunnel mode
within the same offer, not all IKE implementations will support
this. As a result, it is useful to know whether a peer prefers
tunnel mode or transport mode, so that it is possible to
negotiate the preferred mode on the first try.
[<a id="ref-7">7</a>] Main Mode and Aggressive Mode support.
Since the IKE negotiation can fail if a mode is proposed to a
peer that doesn't allow it, it is helpful to know which modes a
peer allows, so that an allowed mode can be negotiated on the
first try.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Since iSNS or SLPv2 can be used to distribute IPsec security policy
and configuration information for use with IP block storage
protocols, these discovery protocols would constitute a 'weak link'
were they not secured at least as well as the protocols whose
security they configure. Since the major vulnerability is packet
modification and replay, when iSNS or SLPv2 are used to distribute
security policy or configuration information, at a minimum, per-
packet data origin authentication, integrity and replay protection
MUST be used to protect the discovery protocol.
<span class="h3"><a class="selflink" id="section-2.4" href="#section-2.4">2.4</a>. iSCSI Authentication</span>
<span class="h4"><a class="selflink" id="section-2.4.1" href="#section-2.4.1">2.4.1</a>. CHAP</span>
Compliant iSCSI implementations MUST implement the CHAP
authentication method [<a href="./rfc1994" title=""PPP Challenge Handshake Authentication Protocol (CHAP)"">RFC1994</a>] (according to [<a href="./rfc3720" title=""Internet Small Computer Systems Interface (iSCSI)"">RFC3720</a>], <a href="#section-11.1.4">section</a>
<a href="#section-11.1.4">11.1.4</a>), which includes support for bi-directional authentication,
and the target authentication option.
When CHAP is performed over non-encrypted channel, it is vulnerable
to an off-line dictionary attack. Implementations MUST support
random CHAP secrets of up to 128 bits, including the means to
generate such secrets and to accept them from an external generation
source. Implementations MUST NOT provide secret generation (or
expansion) means other than random generation.
If CHAP is used with secret smaller than 96 bits, then IPsec
encryption (according to the implementation requirements in <a href="./rfc3720#section-8.3.2">[RFC3720]
section 8.3.2</a>) MUST be used to protect the connection. Moreover, in
this case IKE authentication with group pre-shared keys SHOULD NOT be
used. When CHAP is used with a secret smaller then 96 bits, a
compliant implementation MUST NOT continue with the iSCSI login
unless it can verify that IPsec encryption is being used to protect
the connection.
Originators MUST NOT reuse the CHAP challenge sent by the Responder
for the other direction of a bidirectional authentication.
Responders MUST check for this condition and close the iSCSI TCP
connection if it occurs.
The same CHAP secret SHOULD NOT be configured for authentication of
multiple initiators or multiple targets, as this enables any of them
to impersonate any other one of them, and compromising one of them
enables the attacker to impersonate any of them. It is recommended
that iSCSI implementations check for use of identical CHAP secrets by
different peers when this check is feasible, and take appropriate
measures to warn users and/or administrators when this is detected.
A single CHAP secret MAY be used for authentication of an individual
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
initiator to multiple targets. Likewise, a single CHAP secret MAY be
used for authentication of an individual target to multiple
initiators.
A Responder MUST NOT send its CHAP response if the initiator has not
successfully authenticated. For example, the following exchange:
I->R CHAP_A=<A1,A2,...>
R->I CHAP_A=<A1> CHAP_C=<C> CHAP_I=<I>
I->R CHAP_N=<N> CHAP_C=<C> CHAP_I=<I>
(Where N, (A1,A2), I, C, and R are correspondingly the Name,
Algorithms, Identifier, Challenge, and Response as defined in
[<a href="./rfc1994" title=""PPP Challenge Handshake Authentication Protocol (CHAP)"">RFC1994</a>])
MUST result in the Responder (target) closing the iSCSI TCP
connection because the initiator has failed to authenticate (there is
no CHAP_R in the third message).
Any CHAP secret used for initiator authentication MUST NOT be
configured for authentication of any target, and any CHAP secret used
for target authentication MUST NOT be configured for authentication
of any initiator. If the CHAP response received by one end of an
iSCSI connection is the same as the CHAP response that the receiving
endpoint would have generated for the same CHAP challenge, the
response MUST be treated as an authentication failure and cause the
connection to close (this ensures that the same CHAP secret is not
used for authentication in both directions). Also, if an iSCSI
implementation can function as both initiator and target, different
CHAP secrets and identities MUST be configured for these two roles.
The following is an example of the attacks prevented by the above
requirements:
Rogue wants to impersonate Storage to Alice, and knows that a
single secret is used for both directions of Storage-Alice
authentication.
Rogue convinces Alice to open two connections to Rogue, and
Rogue identifies itself as Storage on both connections.
Rogue issues a CHAP challenge on connection 1, waits for Alice
to respond, and then reflects Alice's challenge as the initial
challenge to Alice on connection 2.
If Alice doesn't check for the reflection across connections,
Alice's response on connection 2 enables Rogue to impersonate
Storage on connection 1, even though Rogue does not know the
Alice-Storage CHAP secret.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Note that RADIUS [<a href="./rfc2865" title=""Remote Authentication Dial In User Service (RADIUS)"">RFC2865</a>] does not support bi-directional CHAP
authentication. Therefore, while a target acting as a RADIUS client
will be able to verify the initiator Response, it will not be able to
respond to an initiator challenge unless it has access to an
appropriate shared secret by some other means.
<span class="h4"><a class="selflink" id="section-2.4.2" href="#section-2.4.2">2.4.2</a>. SRP</span>
iSCSI implementations MAY implement the SRP authentication method
[<a href="./rfc2945" title=""The SRP Authentication and Key Exchange System"">RFC2945</a>] (see <a href="./rfc3720#section-11.1.3">[RFC3720], Section 11.1.3</a>). The strength of SRP
security is dependent on the characteristics of the group being used
(i.e., the prime modulus N and generator g). As described in
[<a href="./rfc2945" title=""The SRP Authentication and Key Exchange System"">RFC2945</a>], N is required to be a Sophie-German prime (of the form N =
2q + 1, where q is also prime) the generator g is a primitive root of
GF(n) [<a href="#ref-SRPNDSS" title=""The Secure Remote Password Protocol"">SRPNDSS</a>].
SRP well-known groups are included in <a href="#appendix-A">Appendix A</a> and additional
groups may be registered with IANA. iSCSI implementations MUST use
one of these well-known groups. All the groups specified in <a href="#appendix-A">Appendix</a>
<a href="#appendix-A">A</a> up to 1536 bits (i.e., SRP-768, SRP-1024, SRP-1280, SRP-1536) MUST
be supported by initiators and targets. To guarantee
interoperability, targets MUST always offer "SRP-1536" as one of the
proposed groups.
<span class="h3"><a class="selflink" id="section-2.5" href="#section-2.5">2.5</a>. SLPv2 Security</span>
Both iSCSI and FCIP protocols use SLPv2 as a way to discover peer
entities and management servers. SLPv2 may also be used to provide
information on peer security configuration. When SLPv2 is deployed,
the SA advertisements as well as UA requests and/or responses are
subject to the following security threats:
[<a id="ref-1">1</a>] An attacker could insert or alter SA advertisements or a
response to a UA request in order to masquerade as the real peer
or launch a denial of service attack.
[<a id="ref-2">2</a>] An attacker could gain knowledge about an SA or a UA through
snooping, and launch an attack against the peer. Given the
potential value of iSCSI targets and FCIP entities, leaking of
such information not only increases the possibility of an attack
over the network; there is also the risk of physical theft.
[<a id="ref-3">3</a>] An attacker could spoof a DAAdvert. This could cause UAs and
SAs to use a rogue DAs.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
To address these threats, the following capabilities are required:
[<a id="ref-a">a</a>] Service information, as included in SrvRply, AttrRply, SrvReg
and SrvDereg messages, needs to be kept confidential.
[<a id="ref-b">b</a>] The UA has to be able to distinguish between legitimate and
illegitimate service information from SrvRply and AttrRply
messages. In the SLPv2 security model SAs are trusted to sign
data.
[<a id="ref-c">c</a>] The DA has to be able to distinguish between legitimate and
illegitimate SrvReg and SrvDereg messages.
[<a id="ref-d">d</a>] The UA has to be able to distinguish between legitimate and
illegitimate DA Advertisements. This allows the UA to avoid
rogue DAs that will return incorrect data or no data at all. In
the SLPv2 security model, UAs trust DAs to store, answer queries
on and forward data on services, but not necessarily to
originate it.
[<a id="ref-e">e</a>] SAs may have to trust DAs, especially if 'mesh-enhanced' SLPv2
is used. In this case, SAs register with only one DA and trust
that this DA will forward the registration to others.
By itself, SLPv2 security, defined in [<a href="./rfc2608" title=""Service Location Protocol, Version 2"">RFC2608</a>], does not satisfy
these security requirements. SLPv2 only provides end-to-end
authentication, but does not support confidentiality. In SLPv2
authentication there is no way to authenticate "zero result
responses". This enables an attacker to mount a denial of service
attack by sending UAs a "zero results" SrvRply or AttrRply as if from
a DA with whose source address corresponds to a legitimate DAAdvert.
In all cases, there is a potential for denial of service attack
against protocol service providers, but such an attack is possible
even in the absence of SLPv2 based discovery mechanisms.
<span class="h4"><a class="selflink" id="section-2.5.1" href="#section-2.5.1">2.5.1</a>. SLPv2 Security Protocol</span>
SLPv2 message types include: SrvRqst, SrvRply, SrvReg, SrvDereg,
SrvAck, AttrRqst, AttrRply, DAAdvert, SrvTypeRqst, SrvTypeRply,
SAAdvert. SLPv2 requires that User Agents (UAs) and Service Agents
(SAs) support SrvRqst, SrvRply, and DAAdvert. SAs must additionally
support SrvReg, SrvAck, and SAAdvert.
Where no Directory Agent (DA) exists, the SrvRqst is multicast, but
the SrvRply is sent via unicast UDP. DAAdverts are also multicast.
However, all other SLPv2 messages are sent via UDP unicast.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
In order to provide the required security functionality, iSCSI and
FCIP implementations supporting SLPv2 security SHOULD protect SLPv2
messages sent via unicast using IPsec ESP with a non-null transform.
SLPv2 authentication blocks (carrying digital signatures), described
in [<a href="./rfc2608" title=""Service Location Protocol, Version 2"">RFC2608</a>] MAY also be used to authenticate unicast and multicast
messages.
The usage of SLPv2 by iSCSI is described in [<a href="#ref-iSCSISLP" title=""Finding iSCSI targets and Name Servers Using SLP"">iSCSISLP</a>]. iSCSI
initiators and targets may enable IKE mechanisms to establish
identity. In addition, a subsequent user-level iSCSI session login
can protect the initiator-target nexus. This will protect them from
any compromise of security in the SLPv2 discovery process.
The usage of SLPv2 by FCIP is described in [<a href="#ref-FCIPSLP" title=""Finding FCIP Entities Using SLPv2"">FCIPSLP</a>]. FCIP Entities
assume that once the IKE identity of a peer is established, the FCIP
Entity Name carried in FCIP Short Frame is also implicitly accepted
as the authenticated peer. Any such association between the IKE
identity and the FCIP Entity Name is administratively established.
For use in securing SLPv2, when digital signatures are used to
achieve authentication in IKE, an IKE negotiator SHOULD use IKE
Certificate Request Payload(s) to specify the certificate authority
(or authorities) that are trusted in accordance with its local
policy. IKE negotiators SHOULD check the pertinent Certificate
Revocation List (CRL) before accepting a PKI certificate for use in
IKE's authentication procedures. If key management of SLPv2 DAs
needs to be coordinated with the SAs and the UAs as well as the
protocol service implementations, one may use certificate based key
management, with a shared root Certificate Authority (CA).
One of the reasons for utilizing IPsec for SLPv2 security is that is
more likely that certificates will be deployed for IPsec than for
SLPv2. This both simplifies SLPv2 security and makes it more likely
that it will be implemented interoperably and more importantly, that
it will be used. As a result, it is desirable that little additional
effort be required to enable IPsec protection of SLPv2.
However, just because a certificate is trusted for use with IPsec
does not necessarily imply that the host is authorized to perform
SLPv2 operations. When using IPsec to secure SLPv2, it may be
desirable to distinguish between certificates appropriate for use by
UAs, SAs, and DAs. For example, while a UA might be allowed to use
any certificate conforming to IKE certificate policy, the certificate
used by an SA might indicate that it is a legitimate source of
service advertisements. Similarly, a DA certificate might indicate
that it is a valid DA. This can be accomplished by using special CAs
to issue certificates valid for use by SAs and DAs; alternatively, SA
and DA authorizations can be employed.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Assume that the policy for issuing and distributing SLPv2 authorized
certificates to SAs and DAs limits them only to legitimate SAs and
DAs. In this case, IPsec is used to provide SLPv2 security as
follows:
[<a id="ref-a">a</a>] SLPv2 messages sent via unicast are IPsec protected, using ESP
with a non-null transform.
[<a id="ref-b">b</a>] SrvRply and AttrRply messages from either a DA or SA are unicast
to UAs. Assuming that the SA used a certificate authorized for
SLPv2 service advertisement in establishing the IKE Phase 1 SA,
or that the DA used a certificate authorized for DA usage, the
UA can accept the information sent, even if it has no SLPv2
authentication block.
Note that where SrvRqst messages are multicast, they are not
protected. An attacker may attempt to exploit this by spoofing
a multicast SrvRqst from the UA, generating a SrvRply from an SA
of the attacker's choosing. Although the SrvRply is secured, it
does not correspond to a legitimate SrvRqst sent by the UA. To
avoid this attack, where SrvRqst messages are multicast, the UA
MUST check that SrvRply messages represent a legitimate reply to
the SrvRqst that was sent.
[<a id="ref-c">c</a>] SrvReg and SrvDereg messages from a SA are unicast to DAs.
Assuming that the SA used a certificate authorized for SLPv2
service advertisement in establishing the IKE Phase 1 SA, the DA
can accept the de/registration even if it has no SLPv2
authentication block. Typically, the SA will check the DA
authorization prior to sending the service advertisement.
[<a id="ref-d">d</a>] Multicast DAAdverts can be considered advisory. The UA will
attempt to contact DAs via unicast. Assuming that the DA used a
certificate authorized for SLPv2 DAAdverts in establishing the
IKE Phase 1 SA, the UA can accept the DAAdvert even if it has no
SLPv2 authentication block.
[<a id="ref-e">e</a>] SAs can accept DAAdverts as described in [<a href="#ref-d">d</a>].
<span class="h4"><a class="selflink" id="section-2.5.2" href="#section-2.5.2">2.5.2</a>. Confidentiality of Service Information</span>
Since SLPv2 messages can contain information that can potentially
reveal the vendor of the device or its other associated
characteristics, revealing service information constitutes a security
risk. As an example, the FCIP Entity Name may reveal a WWN from
which an attacker can learn potentially useful information about the
Entity's characteristics.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
The SLPv2 security model assumes that service information is public,
and therefore does not provide for confidentiality. However, storage
devices represent mission critical infrastructure of substantial
value, and so iSCSI and FCIP security implementations supporting
SLPv2 security SHOULD encrypt as well as authenticate and integrity-
protect unicast SLPv2 messages.
Assuming that all unicast SLPv2 messages are protected by IPsec, and
that confidentiality is provided, then the risk of disclosure can be
limited to SLPv2 messages sent via multicast, namely the SrvRqst and
DAAdvert.
The information leaked in a multicast SrvRqst depends on the level of
detail in the query. If leakage is a concern, then a DA can be
provided. If this is not feasible, then a general query can be sent
via multicast, and then further detail can be obtained from the
replying entities via additional unicast queries, protected by IPsec.
Information leakage via a multicast DAAdvert is less of a concern
than the authenticity of the message, since knowing that a DA is
present on the network only enables an attacker to know that SLPv2 is
in use, and possibly that a directory service is also present. This
information is not considered very valuable.
<span class="h4"><a class="selflink" id="section-2.5.3" href="#section-2.5.3">2.5.3</a>. SLPv2 Security Implications</span>
Through the definition of security attributes, it is possible to use
SLPv2 to distribute information about security settings for IP block
storage entities. SLPv2 distribution of security policy is not
necessary if the security settings can be determined by other means,
such as manual configuration or IPsec security policy distribution.
If an entity has already obtained its security configuration via
other mechanisms, then it MUST NOT request security policy via SLPv2.
Where SLPv2 is used to provide security policy information for use
with IP block storage protocols, SLPv2 MUST be protected by IPsec as
described in this document. Where SLPv2 is not used to distribute
security policy information, implementations MAY implement SLPv2
security as described in this document.
Where SLPv2 is used, but security is not implemented, IP block
storage protocol implementations MUST support a negative cache for
authentication failures. This allows implementations to avoid
continually contacting discovered endpoints that fail authentication
within IPsec or at the application layer (in the case of iSCSI
Login). The negative cache need not be maintained within the IPsec
implementation, but rather within the IP block storage protocol
implementation.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Since this document proposes that hop-by-hop security be used as the
primary mechanism to protect SLPv2, UAs have to trust DAs to
accurately relay data from SAs. This is a change to the SLPv2
security model described in [<a href="./rfc2608" title=""Service Location Protocol, Version 2"">RFC2608</a>]. However, SLPv2 authentication
as defined in [<a href="./rfc2608" title=""Service Location Protocol, Version 2"">RFC2608</a>] does not provide a way to authenticate "zero
result responses", leaving SLPv2 vulnerable to a denial of service
attack. Such an attack can be carried out on a UA by sending it a
"zero results" SrvRply or AttrRply, sent from a source address
corresponding to a DA issuing a legitimate DAAdvert.
In addition, SLPv2 security as defined in [<a href="./rfc2608" title=""Service Location Protocol, Version 2"">RFC2608</a>] does not support
confidentiality. When IPsec with ESP and a non-null transform is
used to protect SLPv2, not only can unicast requests and replies be
authenticated, but confidentiality can also be provided. This
includes unicast requests to DAs and SAs as well as replies. It is
also possible to actively discover SAs using multicast SA discovery,
and then to send unicast requests to the discovered SAs.
As a result, for use with IP block storage protocols, it is believed
that use of IPsec for security is more appropriate than the SLPv2
security model defined in [<a href="./rfc2608" title=""Service Location Protocol, Version 2"">RFC2608</a>].
Using IPsec to secure SLPv2 has performance implications. Security
associations established between:
- UAs and SAs may be reused (the client on the UA host will use the
service on the SA host).
- SAs and DAs may be reused (the SAs will reregister services)
- UAs and DAs will probably not be reused (many idle security
associations are likely to result, and build up on the DA).
When IPsec is used to protect SLPv2, it is not necessarily
appropriate for all hosts with whom an IPsec security association can
be established to be trusted to originate SLPv2 service
advertisements. This is particularly the case in environments where
it is easy to obtain certificates valid for use with IPsec (for
example, where anyone with access to the network can obtain a machine
certificate valid for use with IPsec). If not all hosts are
authorized to originate service advertisements, then it is necessary
to distinguish between authorized and unauthorized hosts.
This can be accomplished by the following mechanisms:
[<a id="ref-1">1</a>] Configuring SAs with the identities or certificate
characteristics of valid DAs, and configuring DAs with the
identities of SAs allowed to advertise IP block storage
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
services. The DAs are then trusted to enforce policies on
service registration. This approach involves manual
configuration, but avoids certificate customization for SLPv2.
[<a id="ref-2">2</a>] Restricting the issuance of certificates valid for use in SLPv2
service advertisement. While all certificates allowed for use
with IPsec will chain to a trusted root, certificates for hosts
authorized to originate service advertisements could be signed
by an SLPv2-authorized CA, or could contain explicit SLPv2
authorizations within the certificate. After the IPsec security
association is set up between the SLPv2 entities, the SLPv2
implementations can then retrieve the certificates used in the
negotiation in order to determine whether the entities are
authorized for the operations that are being performed. This
approach requires less configuration, but requires some
certificate customization for use with SLPv2.
<span class="h3"><a class="selflink" id="section-2.6" href="#section-2.6">2.6</a>. iSNS Security</span>
The iSCSI protocol may use iSNS for discovery and management
services, while the iFCP protocol is required to use iSNS for such
services. In addition, iSNS can be used to store and distribute
security policy and authorization information to iSCSI and iFCP
devices. When the iSNS protocol is deployed, the interaction between
iSNS server and iSNS clients are subject to the following additional
security threats:
[<a id="ref-1">1</a>] An attacker can alter iSNS protocol messages, directing iSCSI
and iFCP devices to establish connections with rogue devices, or
weakening IPsec protection for iSCSI or iFCP traffic.
[<a id="ref-2">2</a>] An attacker can masquerade as the real iSNS server by sending
false iSNS heartbeat messages. This could deceive iSCSI and
iFCP devices into using rogue iSNS servers.
[<a id="ref-3">3</a>] An attacker can gain knowledge about iSCSI and iFCP devices by
snooping iSNS protocol messages. Such information could aid an
attacker in mounting a direct attack on iSCSI and iFCP devices,
such as a denial-of-service attack or outright physical theft.
To address these threats, the following capabilities are needed:
[<a id="ref-a">a</a>] Unicast iSNS protocol messages may need to be authenticated. In
addition, to protect against threat [<a href="#ref-3" title=""MODP-6144"">3</a>] above, confidentiality
support is desirable, and REQUIRED when certain functions of
iSNS are used.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
[<a id="ref-b">b</a>] Multicast iSNS protocol messages such as the iSNS heartbeat
message need to be authenticated. These messages need not be
confidential since they do not leak critical information.
There is no requirement that the identities of iSNS entities be kept
confidential. Specifically, the identity and location of the iSNS
server need not be kept confidential.
In order to protect against an attacker masquerading as an iSNS
server, client devices MUST support authentication of broadcast or
multicast messages such as the iSNS heartbeat. The iSNS
authentication block (which is identical in format to the SLP
authentication block) MAY be used for this purpose. Note that the
authentication block is used only for iSNS broadcast or multicast
messages, and SHOULD NOT be used in unicast iSNS messages.
Since iSNS is used to distribute authorizations determining which
client devices can communicate, IPsec authentication and data
integrity MUST be supported. In addition, if iSNS is used to
distribute security policy for iFCP and iSCSI devices, then
authentication, data integrity, and confidentiality MUST be supported
and used.
Where iSNS is used without security, IP block storage protocol
implementations MUST support a negative cache for authentication
failures. This allows implementations to avoid continually
contacting discovered endpoints that fail authentication within IPsec
or at the application layer (in the case of iSCSI Login). The
negative cache need not be maintained within the IPsec
implementation, but rather within the IP block storage protocol
implementation.
<span class="h4"><a class="selflink" id="section-2.6.1" href="#section-2.6.1">2.6.1</a>. Use of iSNS to Discover Security Configuration of Peer Devices</span>
In practice, within a single installation, iSCSI and/or iFCP devices
may have different security settings. For example, some devices may
be configured to initiate secure communication, while other devices
may be configured to respond to a request for secure communication,
but not to require security. Still other devices, while security
capable, may neither initiate nor respond securely.
In practice, these variations in configuration can result in devices
being unable to communicate with each other. For example, a device
that is configured to always initiate secure communication will
experience difficulties in communicating with a device that neither
initiates nor responds securely.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
The iSNS protocol is used to transfer naming, discovery, and
management information between iSCSI devices, iFCP gateways,
management stations, and the iSNS server. This includes the ability
to enable discovery of security settings used for communication via
the iSCSI and/or iFCP protocols.
The iSNS server stores security settings for each iSCSI and iFCP
device interface. These security settings, which can be retrieved by
authorized hosts, include use or non-use of IPsec, IKE, Main Mode,
Aggressive Mode, PFS, Pre-shared Key, and certificates.
For example, IKE may not be enabled for a particular device
interface. If a peer device can learn of this in advance by
consulting the iSNS server, it will not need to waste time and
resources attempting to initiate an IKE Phase 1 SA with that device
interface.
If iSNS is used to distribute security policy, then the minimum
information that should be learned from the iSNS server is the use or
non-use of IKE and IPsec by each iFCP or iSCSI peer device interface.
This information is encoded in the Security Bitmap field of each
Portal of the peer device, and is applicable on a per-interface basis
for the peer device. iSNS queries to acquire security configuration
data about peer devices MUST be protected by IPsec/ESP
authentication.
<span class="h4"><a class="selflink" id="section-2.6.2" href="#section-2.6.2">2.6.2</a>. Use of iSNS to Distribute iSCSI and iFCP Security Policies</span>
Once communication between iSNS clients and the iSNS server are
secured through use of IPsec, iSNS clients have the capability to
discover the security settings required for communication via the
iSCSI and/or iFCP protocols. Use of iSNS for distribution of
security policies offers the potential to reduce the burden of manual
device configuration, and decrease the probability of communications
failures due to incompatible security policies. If iSNS is used to
distribute security policies, then IPsec authentication, data
integrity, and confidentiality MUST be used to protect all iSNS
protocol messages.
The complete IKE/IPsec configuration of each iFCP and/or iSCSI device
can be stored in the iSNS server, including policies that are used
for IKE Phase 1 and Phase 2 negotiations between client devices. The
IKE payload format includes a series of one or more proposals that
the iSCSI or iFCP device will use when negotiating the appropriate
IPsec policy to use to protect iSCSI or iFCP traffic.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Note that iSNS distribution of security policy is not necessary if
the security settings can be determined by other means, such as
manual configuration or IPsec security policy distribution. If an
entity has already obtained its security configuration via other
mechanisms, then it MUST NOT request security policy via iSNS.
For further details on how to store and retrieve IKE policy proposals
in the iSNS server, see [<a href="#ref-iSNS" title=""iSNS Internet Storage Name Service"">iSNS</a>].
<span class="h4"><a class="selflink" id="section-2.6.3" href="#section-2.6.3">2.6.3</a>. iSNS Interaction with IKE and IPsec</span>
When IPsec security is enabled, each iSNS client that is registered
in the iSNS database maintains at least one Phase 1 and one Phase 2
security association with the iSNS server. All iSNS protocol
messages between iSNS clients and the iSNS server are to be protected
by a phase-2 security association.
<span class="h4"><a class="selflink" id="section-2.6.4" href="#section-2.6.4">2.6.4</a>. iSNS Server Implementation Requirements</span>
All iSNS implementations MUST support the replay protection
mechanisms of IPsec. ESP in tunnel mode MUST be implemented, and
IPsec with ESP in transport mode MAY be implemented.
To provide data origin authentication and integrity with ESP, HMAC-
SHA1 MUST be supported, and AES in CBC MAC mode with XCBC extensions
[<a href="./rfc3566" title=""The AES-XCBC-MAC-96 Algorithm and Its Use with IPsec"">RFC3566</a>] SHOULD be supported. When confidentiality is implemented,
3DES in CBC mode MUST be supported, and AES in Counter mode, as
described in [<a href="./rfc3686" title=""Using Advanced Encryption Standard (AES) Counter Mode With IPsec Encapsulating Security Payload (ESP)"">RFC3686</a>], SHOULD be supported. DES in CBC mode SHOULD
NOT be used due to its inherent weakness. If confidentiality is not
required but data origin authentication and integrity is enabled, ESP
with NULL Encryption MUST be used.
Conformant iSNS implementations MUST support IKE for authentication,
negotiation of security associations, and key management, using the
IPsec DOI, described in [<a href="./rfc2407" title=""The Internet IP Security Domain of Interpretation of ISAKMP"">RFC2407</a>]. IP block storage protocols can be
expected to send data in high volumes, thereby requiring rekey.
Since manual keying does not provide rekeying support, its use is
prohibited with IP block storage protocols. Although iSNS does not
send a high volume of data, and therefore rekey is not a major
concern, manual keying SHOULD NOT be used. This is for consistency,
since dynamic keying support is already required in IP storage
security implementations.
Conformant iSNS security implementations MUST support authentication
using a pre- shared key, and MAY support certificate-based peer
authentication using digital signatures. Peer authentication using
the public key encryption methods outlined in [<a href="./rfc2409" title=""The Internet Key Exchange (IKE)"">RFC2409</a>] sections <a href="#section-5.2">5.2</a>
and 5.3 SHOULD NOT be used.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Conformant iSNS implementations MUST support IKE Main Mode and SHOULD
support Aggressive Mode. IKE Main Mode with pre-shared key
authentication SHOULD NOT be used when either of the peers use
dynamically assigned IP addresses. While Main Mode with pre-shared
key authentication offers good security in many cases, situations
where dynamically assigned addresses are used force use of a group
pre-shared key, which is vulnerable to man-in-the-middle attack.
When digital signatures are used for authentication, either IKE Main
Mode or IKE Aggressive Mode MAY be used. In all cases, access to
locally stored secret information (pre-shared key or private key for
digital signing) MUST be suitably restricted, since compromise of the
secret information nullifies the security properties of the IKE/IPsec
protocols.
When digital signatures are used to achieve authentication, an IKE
negotiator SHOULD use IKE Certificate Request Payload(s) to specify
the certificate authority (or authorities) that are trusted in
accordance with its local policy. IKE negotiators SHOULD check the
pertinent Certificate Revocation List (CRL) before accepting a PKI
certificate for use in IKE's authentication procedures.
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. iSCSI Security Interoperability Guidelines</span>
The following guidelines are established to meet iSCSI security
requirements using IPsec in practical situations.
<span class="h3"><a class="selflink" id="section-3.1" href="#section-3.1">3.1</a>. iSCSI Security Issues</span>
iSCSI provides for iSCSI Login, outlined in [<a href="./rfc3720" title=""Internet Small Computer Systems Interface (iSCSI)"">RFC3720</a>], which includes
support for application-layer authentication. This authentication is
logically between the iSCSI initiator and the iSCSI target (as
opposed to between the TCP/IP communication endpoints). The intent
of the iSCSI design is that the initiator and target represent the
systems (e.g., host and disk array or tape system) participating in
the communication, as opposed to network communication interfaces or
endpoints.
The iSCSI protocol and iSCSI Login authentication do not meet the
security requirements for iSCSI. iSCSI Login authentication provides
mutual authentication between the iSCSI initiator and target at
connection origination, but does not protect control and data traffic
on a per packet basis, leaving the iSCSI connection vulnerable to
attack. iSCSI Login authentication can mutually authenticate the
initiator to the target, but does not by itself provide per-packet
authentication, integrity, confidentiality or replay protection. In
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
addition, iSCSI Login authentication does not provide for a protected
ciphersuite negotiation. Therefore, iSCSI Login provides a weak
security solution.
<span class="h3"><a class="selflink" id="section-3.2" href="#section-3.2">3.2</a>. iSCSI and IPsec Interaction</span>
An iSCSI session [<a href="./rfc3720" title=""Internet Small Computer Systems Interface (iSCSI)"">RFC3720</a>], comprised of one or more TCP connections,
is identified by the 2-tuple of the initiator-defined identifier and
the target-defined identifier, <ISID, TSIH>. Each connection within
a given session is assigned a unique Connection Identification, CID.
The TCP connection is identified by the 5-tuple <Source IP address,
Destination IP address, Protocol (TCP), Source Port, Destination
Port>. An IPsec Phase 2 SA is identified by the 3-tuple <Protocol
(ESP),destination address, SPI>.
The iSCSI session and connection information is carried within the
iSCSI Login Commands, transported over TCP. Since an iSCSI initiator
may have multiple interfaces, iSCSI connections within an iSCSI
session may be initiated from different IP addresses. Similarly,
multiple iSCSI targets may exist behind a single IP address, so that
there may be multiple iSCSI sessions between a given <source IP
address, destination IP address> pair.
When multiple iSCSI sessions are active between a given <initiator,
target> pair, the set of TCP connections used by a given iSCSI
session must be disjoint from those used by all other iSCSI sessions
between the same <initiator, target> pair. Therefore a TCP
connection can be associated with one and only one iSCSI session.
The relationship between iSCSI sessions, TCP connections and IKE
Phase 1 and Phase 2 SAs is as follows:
[<a id="ref-1">1</a>] An iSCSI initiator or target may have more than one interface,
and therefore may have multiple IP addresses. Also, multiple
iSCSI initiators and targets may exist behind a single IP
address. As a result, an iSCSI Session may correspond to
multiple IKE Phase 1 Security Associations, though typically a
single IKE Phase 1 security association will exist for an
<initiator IP address, target IP address> tuple.
[<a id="ref-2">2</a>] Each TCP connection within an iSCSI Session is protected by an
IKE Phase 2 SA. The selectors may be specific to that TCP
connection or may cover multiple connections. While each IKE
Phase 2 SA may protect multiple TCP connections, each TCP
connection is transported under only one IKE Phase 2 SA.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Given this, all the information needed for the iSCSI/IPsec binding is
contained within the iSCSI Login messages from the iSCSI initiator
and target. This includes the binding between an IKE Phase 1 SA and
the corresponding iSCSI sessions, as well as the binding between a
TCP connection, an IKE Phase 2 SA and the iSCSI connection ID.
<span class="h3"><a class="selflink" id="section-3.3" href="#section-3.3">3.3</a>. Initiating a New iSCSI Session</span>
In order to create a new iSCSI Session, if an IKE Phase 1 SA does not
already exist, then it is established by an initiator implementing
iSCSI security. Subsequent iSCSI connections established within the
iSCSI session will typically be protected by IKE Phase 2 SAs derived
from that IKE Phase 1 SA, although additional IKE Phase 1 SAs can
also be brought up.
The initiator and target implementations successfully complete the
IKE Phase 1 and Phase 2 negotiations before the iSCSI initiator
contacts the target on well-known TCP port 3260, and sends the iSCSI
Login command over the TCP connection. IPsec implementations
configured with the correct policies (e.g., use ESP with non-null
transform for all traffic destined for the iSCSI well-known TCP port
3260) will handle this automatically.
The initiator fills in the ISID field, and leaves the TSIH field set
to zero, to indicate that it is the first message of a new session
establishment exchange. The initiator also fills in a CID value,
that identifies the TCP connection over which the Login command is
being exchanged. When the iSCSI target replies with its Login
Command, both iSCSI devices will know the TSIH, and therefore the
iSCSI session identifier <ISID, TSIH>.
A single iSCSI session identifier may have multiple associated IKE
Phase 1 SAs, and each IKE Phase 1 SA may correspond to multiple iSCSI
session identifiers. Each iSCSI connection (identified by the
connection identifier) corresponds to a single TCP connection
(identified by the 5-tuple). Each IKE Phase 2 SA is identified by
the <Protocol (ESP), destination address, SPI> combination. A Phase
2 SA may protect multiple TCP connections, and corresponds to a
single IKE Phase 1 SA.
Within IKE, each key refresh requires that a new security association
be established. In practice there is a time interval during which an
old, about-to-expire SA and newly established SA will both be valid.
The IPsec implementation will choose which security association to
use based on local policy, and iSCSI concerns play no role in this
selection process.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
<span class="h3"><a class="selflink" id="section-3.4" href="#section-3.4">3.4</a>. Graceful iSCSI Teardown</span>
Mechanisms within iSCSI provide for both graceful and non-graceful
teardown of iSCSI Sessions or individual TCP connections within a
given session. The iSCSI Logout command is used to effect graceful
teardown. This command allows the iSCSI initiator to request that:
[<a id="ref-a">a</a>] the session be closed
[<a id="ref-b">b</a>] a specific connection within the session be closed
[<a id="ref-c">c</a>] a specific connection be marked for recovery
When the iSCSI implementation wishes to close a session, it uses the
appropriate iSCSI commands to accomplish this. After exchanging the
appropriate iSCSI control messages for session closure, the iSCSI
security implementation will typically initiate a half-close of each
TCP connection within the iSCSI session.
When the iSCSI security implementation wishes to close an individual
TCP connection while leaving the parent iSCSI session active, it
should half-close the TCP connection. After the expiration of the
TIME_WAIT timeout, the TCP connection is closed.
<span class="h3"><a class="selflink" id="section-3.5" href="#section-3.5">3.5</a>. Non-graceful iSCSI Teardown</span>
If a given TCP connection unexpectedly fails, the associated iSCSI
connection is torn down. There is no requirement that an IKE Phase 2
delete immediately follow iSCSI connection tear down or Phase 1
deletion. Since an IKE Phase 2 SA may correspond to multiple TCP
connections, such a deletion might be inappropriate. Similarly, if
the IKE implementation receives a Phase 2 Delete message for a
security association corresponding to a TCP connection, this does not
necessarily imply that the TCP or iSCSI connection is to be torn
down.
If a Logout Command/Logout Response sequence marks a connection for
removal from the iSCSI session, then after the iSCSI peer has
executed an iSCSI teardown process for the connection, the TCP
connection will be closed. The iSCSI connection state can then be
safely removed.
Since an IKE Phase 2 SA may be used by multiple TCP connections, an
iSCSI implementation should not depend on receiving the IPsec Phase 2
delete as confirmation that the iSCSI peer has executed an iSCSI
teardown process for the connection.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Since IPsec acceleration hardware may only be able to handle a
limited number of active IKE Phase 2 SAs, Phase 2 delete messages may
be sent for idle SAs, as a means of keeping the number of active
Phase 2 SAs to a minimum. The receipt of an IKE Phase 2 delete
message MUST NOT be interpreted as a reason for tearing down the
corresponding iSCSI connection if no Logout Command/Logout Receive
has been executed on the connection. Rather, it is preferable to
leave the iSCSI connection up, and if additional traffic is sent on
it, to bring up another IKE Phase 2 SA to protect it. This avoids
the potential for continually bringing iSCSI connections up and down.
<span class="h3"><a class="selflink" id="section-3.6" href="#section-3.6">3.6</a>. Application-Layer CRC</span>
iSCSI's error detection and recovery assumes that the TCP and IP
checksums provide inadequate integrity protection for high speed
communications. As described in [<a href="#ref-CRCTCP" title=""When the CRC and TCP checksum disagree"">CRCTCP</a>], when operating at high
speeds, the 16-bit TCP checksum [<a href="./rfc793" title=""Transmission Control Protocol"">RFC793</a>] will not necessarily detect
all errors, resulting in possible data corruption. iSCSI [<a href="./rfc3720" title=""Internet Small Computer Systems Interface (iSCSI)"">RFC3720</a>]
therefore incorporates a 32-bit CRC to protect its headers and data.
When a CRC check fails (i.e., CRC computed at receiver does not match
the received CRC), the iSCSI PDU covered by that CRC is discarded.
Since presumably the error was not detected by the TCP checksum, TCP
retransmission will not occur and thus cannot assist in recovering
from the error. iSCSI contains both data and command retry
mechanisms to deal with the resulting situations, including SNACK,
the ability to reissue R2T commands, and the retry (X) bit for
commands.
IPsec offers protection against an attacker attempting to modify
packets in transit, as well as unintentional packet modifications
caused by network malfunctions or other errors. In general, IPsec
authentication transforms afford stronger integrity protection than
both the 16-bit TCP checksum and the 32-bit application-layer CRC
specified for use with iSCSI. Since IPsec integrity protection
occurs below TCP, if an error is discovered, then the packet will be
discarded and TCP retransmission will occur, so that no recovery
action need be taken at the iSCSI layer.
<span class="h4"><a class="selflink" id="section-3.6.1" href="#section-3.6.1">3.6.1</a>. Simplification of Recovery Logic</span>
Where IPsec integrity protection is known to be in place end-to-end
between iSCSI endpoints (or the portion that requires additional
integrity protection), portions of iSCSI can be simplified. For
example, mechanisms to recover from CRC check failures are not
necessary.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
If the iSCSI CRC is negotiated, the recovery logic can be simplified
to regard any CRC check failure as fatal (e.g., generate a SCSI CHECK
CONDITION on data error, close the corresponding TCP connection on
header error) because it will be very rare for errors undetected by
IPsec integrity protection to be detected by the iSCSI CRC.
<span class="h4"><a class="selflink" id="section-3.6.2" href="#section-3.6.2">3.6.2</a>. Omission of iSCSI CRC</span>
In some situations where IPsec is employed, the iSCSI CRC will not
provide additional protection and can be omitted.
For example, where IPsec processing as well as TCP checksum and iSCSI
CRC verification are offloaded within the NIC, each of these checks
will be verified prior to transferring data across the bus, so that
subsequent errors will not be detected by these mechanisms. As a
result, where IPsec processing is offloaded to the NIC, the iSCSI CRC
is not necessary and the implementations may wish not to negotiate
it.
However, in other circumstances, the TCP checksum and iSCSI CRC will
provide additional error coverage because they are computed and
checked at a different point in the protocol stack or in devices
different from those that implement the IPsec integrity checks. The
resulting coverage of additional possible errors may make it
desirable to negotiate use of the iSCSI CRC even when IPsec integrity
protection is in use. Examples of these situations include where:
[<a id="ref-1">1</a>] IPsec, TCP and iSCSI are implemented purely in software. Here,
additional failure modes may be detected by the TCP checksum
and/or iSCSI CRC. For example, after the IPsec message
integrity check is successfully verified, the segment is copied
as part of TCP processing, and a memory error during this
process might cause the TCP checksum or iSCSI CRC verification
to fail.
[<a id="ref-2">2</a>] The implementation is an iSCSI-iSCSI proxy or gateway. Here the
iSCSI CRC can be propagated from one iSCSI connection to
another. In this case, the iSCSI CRC is useful to protect iSCSI
data against memory, bus, or software errors within the proxy or
gateway, and requesting it is desirable.
[<a id="ref-3">3</a>] IPsec is provided by a device external to the actual iSCSI
device. Here the iSCSI header and data CRCs can be kept across
the part of the connection that is not protected by IPsec. For
instance, the iSCSI connection could traverse an extra bus,
interface card, network, interface card, and bus between the
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
iSCSI device and the device providing IPsec. In this case, the
iSCSI CRC is desirable, and the iSCSI implementation behind the
IPsec device may request it.
Note that if both ends of the connection are on the same
segment, then traffic will be effectively protected by the layer
2 CRC, so that negotiation of the iSCSI CRC is not necessary to
protect against NIC and network errors, although it may be
desirable for other reasons (e.g., [<a href="#ref-1" title=""MODP-3072"">1</a>] and [<a href="#ref-2" title=""MODP-4096"">2</a>] above).
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. iFCP and FCIP Security Issues</span>
<span class="h3"><a class="selflink" id="section-4.1" href="#section-4.1">4.1</a>. iFCP and FCIP Authentication Requirements</span>
iFCP and FCIP are peer-to-peer protocols. iFCP and FCIP sessions may
be initiated by either or both peer gateways. Consequently, bi-
directional authentication of peer gateways MUST be provided.
iFCP and FCIP are transport protocols that encapsulate SCSI and Fibre
Channel frames over IP. Therefore, Fibre Channel, operating system,
and user identities are transparent to the iFCP and FCIP protocols.
iFCP gateways use Discovery Domain information obtained from the iSNS
server to determine whether the initiating Fibre Channel N_PORT
should be allowed access to the target N_PORT. N_PORT identities
used in the Port Login (PLOGI) process will be considered
authenticated provided that they are received over a connection whose
security complies with the local security policy.
There is no requirement that the identities used in authentication be
kept confidential.
<span class="h3"><a class="selflink" id="section-4.2" href="#section-4.2">4.2</a>. iFCP Interaction with IPsec and IKE</span>
A conformant iFCP Portal is capable of establishing one or more IKE
Phase-1 Security Associations (SAs) to a peer iFCP Portal. A Phase-1
SA may be established when an iFCP Portal is initialized, or may be
deferred until the first TCP connection with security requirements is
established.
An IKE Phase-2 SA protects one or more TCP connections within the
same iFCP Portal. More specifically, the successful establishment of
an IKE Phase-2 SA results in the creation of two uni-directional
IPsec SAs fully qualified by the tuple <SPI, destination IP address,
ESP>. These SAs protect the setup process of the underlying TCP
connections and all their subsequent TCP traffic. Each of the TCP
connections protected by an SA is either in the unbound state, or is
bound to a specific iFCP session.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
In summary, at any point in time:
[<a id="ref-1">1</a>] There exist 0..M IKE Phase-1 SAs between peer iFCP portals
[<a href="#ref-2" title=""MODP-4096"">2</a>] Each IKE Phase-1 SAs has 0..N IKE Phase-2 SAs
[<a href="#ref-3" title=""MODP-6144"">3</a>] Each IKE Phase-2 SA protects 0..Z TCP connections
The creation of an IKE Phase-2 SA may be triggered by security policy
rules retrieved from an iSNS server. Alternately, the creation of an
SA may be triggered by policy rules configured through a management
interface, reflecting iSNS-resident policy rules. Likewise, the use
of a Key Exchange payload in Quick Mode for perfect forward secrecy
may be driven by security policy rules retrieved from the iSNS
server, or set through a management interface.
If an iFCP implementation makes use of unbound TCP connections, and
such connections belong to an iFCP Portal with security requirements,
then the unbound connections MUST be protected by an SA at all times
just like bound connections.
Upon receiving an IKE Phase-2 delete message, there is no requirement
to terminate the protected TCP connections or delete the associated
IKE Phase-1 SA. Since an IKE Phase-2 SA may be associated with
multiple TCP connections, terminating such connections might in fact
be inappropriate and untimely.
To minimize the number of active Phase-2 SAs, IKE Phase-2 delete
messages may be sent for Phase-2 SAs whose TCP connections have not
handled data traffic for a while. To minimize the use of SA
resources while the associated TCP connections are idle, creation of
a new SA should be deferred until new data are to be sent over the
connections.
<span class="h3"><a class="selflink" id="section-4.3" href="#section-4.3">4.3</a>. FCIP Interaction with IPsec and IKE</span>
FCIP Entities establish tunnels with other FCIP Entities in order to
transfer IP encapsulated FC frames. Each tunnel is a separate FCIP
Link, and can encapsulate multiple TCP connections. The binding of
TCP connections to an FCIP Link is performed using the Fibre Channel
World Wide Names (WWNs) of the two FCIP Entities.
FCIP Entities may have more than one interface and IP address, and it
is possible for an FCIP Link to contain multiple TCP connections
whose FCIP endpoint IP Addresses are different. In this case, an IKE
Phase 1 SA is typically established for each FCIP endpoint IP Address
pair. For the purposes of establishing an IKE Phase 1 SA, static IP
addresses are typically used for identification.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Each TCP connection within an FCIP Link corresponds to an IKE Phase 2
(Quick Mode) SA. This is established prior to sending the initial
TCP SYN packet and applies to the life of the connection. Phase 2
negotiation is also required for rekeying, in order to protect
against replay attacks.
FCIP implementations MAY provide administrative management of
Confidentiality usage. These management interfaces SHOULD be
provided in a secure manner, so as to prevent an attacker from
subverting the security process by attacking the management
interface.
FCIP Entities do not require any user-level authentication, since all
FCIP Entities participate in a machine-level tunnel function. FCIP
uses SLP for discovery, but not to distribute security policies.
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. Security Considerations</span>
<span class="h3"><a class="selflink" id="section-5.1" href="#section-5.1">5.1</a>. Transport Mode Versus Tunnel Mode</span>
With respect to block storage protocols, the major differences
between the IPsec tunnel mode and transport mode are as follows:
[<a id="ref-1">1</a>] MTU considerations.
Tunnel mode introduces an additional IP header into the datagram
that reflects itself in a corresponding decrease in the path MTU
seen by packets traversing the tunnel. This may result in a
decrease in the maximum segment size of TCP connections running
over the tunnel.
[<a id="ref-2">2</a>] Address assignment and configuration.
Within IPsec tunnel mode, it is necessary for inner and outer
source addresses to be configured, and for inner and outer
destination addresses to be discovered. Within transport mode
it is only necessary to discover a single destination address
and configure a single source address. IPsec tunnel mode
address usage considerations are discussed in more detail below.
[<a id="ref-3">3</a>] NAT traversal.
As noted in [<a href="./rfc3715" title=""IPsec-Network Address Translation (NAT) Compatibility Requirements"">RFC3715</a>], IPsec tunnel mode ESP can traverse NAT in
limited circumstances, whereas transport mode ESP cannot
traverse NAT. To enable NAT traversal in the general case, the
IPsec NAT traversal functionality described in [<a href="./rfc3715" title=""IPsec-Network Address Translation (NAT) Compatibility Requirements"">RFC3715</a>],
[<a href="#ref-UDPIPsec" title=""UDP Encapsulation of IPsec Packets"">UDPIPsec</a>] and [<a href="#ref-NATIKE" title=""Negotiation of NAT-Traversal in the IKE"">NATIKE</a>] can be implemented. More details are
provided in the next section.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
[<a id="ref-4">4</a>] Firewall traversal.
Where a block storage protocol is to traverse administrative
domains, the firewall administrator may desire to verify the
integrity and authenticity of each transiting packet, rather
than opening a hole in the firewall for the block storage
protocol. IPsec tunnel mode lends itself to such verification,
since the firewall can terminate the tunnel mode connection
while still allowing the endpoints to communicate end-to-end.
If desired, the endpoints can in addition utilize IPsec
transport mode for end-to-end security, so that they can also
verify authenticity and integrity of each packet for themselves.
In contrast, carrying out this verification with IPsec transport
mode is more complex, since the firewall will need to terminate
the IPsec transport mode connection and will need to act as an
iSCSI, iFCP or FCIP gateway or TCP proxy, originating a new
IPsec transport mode connection from the firewall to the
internal endpoint. Such an implementation cannot provide end-
to-end authenticity or integrity protection, and an
application-layer CRC (iSCSI) or forwarding of the Fibre Channel
frame CRC (iFCP and FCIP) is necessary to protect against errors
introduced by the firewall.
[<a id="ref-5">5</a>] IPsec-application integration.
Where IPsec and the application layer protocol are implemented
on the same device or host, it is possible to enable tight
integration between them. For example, the application layer
can request and verify that connections are protected by IPsec,
and can obtain attributes of the IPsec security association.
While in transport mode implementations the IPsec and
application protocol implementations typically reside on the
same host, with IPsec tunnel mode they may reside on different
hosts. Where IPsec is implemented on an external gateway,
integration between the application and IPsec is typically not
possible. This limits the ability of the application to control
and verify IPsec behavior.
<span class="h4"><a class="selflink" id="section-5.1.1" href="#section-5.1.1">5.1.1</a>. IPsec Tunnel Mode Addressing Considerations</span>
IPsec tunnels include both inner and outer source as well as
destination addresses.
When used with IP block storage protocols, the inner destination
address represents the address of the IP block storage protocol peer
(e.g., the ultimate destination for the packet). The inner
destination address can be discovered using SLPv2 or iSNS, or can be
resolved from an FQDN via DNS, so that obtaining this address is
typically not an issue.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
The outer destination address represents the address of the IPsec
security gateway used to reach the peer. Several mechanisms have
been proposed for discovering the IPsec security gateway used to
reach a particular peer. [<a href="./rfc2230" title=""Key Exchange Delegation Record for the DNS"">RFC2230</a>] discusses the use of KX Resource
Records (RRs) for IPsec gateway discovery. However, while KX RRs are
supported by many DNS server implementations, they have not yet been
widely deployed. Alternatively, DNS SRV [<a href="./rfc2782" title=""A DNS RR for specifying the location of services (DNS SRV)"">RFC2782</a>] can be used for
this purpose. Where DNS is used for gateway location, DNS security
mechanisms such as DNSSEC ([<a href="./rfc2535" title=""Domain Name System Security Extensions"">RFC2535</a>], [<a href="./rfc2931" title=""DNS Request and Transaction Signatures (SIG(0)s )"">RFC2931</a>]), TSIG [<a href="./rfc2845" title=""Secret Key Transaction Authentication for DNS (TSIG)"">RFC2845</a>], and
Simple Secure Dynamic Update [<a href="./rfc3007" title=""Simple Secure Domain Name System (DNS) Dynamic Update"">RFC3007</a>] are advisable.
When used with IP block storage protocols, the outer source address
is configured either statically or dynamically, using mechanisms such
as DHCPv4 [<a href="./rfc2131" title=""Dynamic Host Configuration Protocol"">RFC2131</a>], DHCPV6 [<a href="./rfc3315" title=""Dynamic Host Configuration Protocol for IPv6 (DHCPv6)"">RFC3315</a>], or stateless address
autoconfiguration [<a href="./rfc2373" title=""IP Version 6 Addressing Architecture"">RFC2373</a>].
The inner source address SHOULD be included in the Quick Mode ID
payload when the peer establishes a tunnel mode SA with the IPsec
security gateway. This enables the IPsec security gateway to
properly route packets back to the remote peer. The inner source
address can be configured via a variety of mechanisms, depending on
the scenario. Where the IP block storage peers are located within
the same administrative domain, it is typically possible for the
inner and outer source addresses to be the same. This will work
because the outer source address is presumably assigned from within a
prefix assigned to the administrative domain, and is therefore
routable within the domain. Assuming that the IPsec security gateway
is aware of the inner source address used by the connecting peer and
plumbs a host route for it, then packets arriving at the IPsec
security gateway destined for the address can be correctly
encapsulated and sent down the correct tunnel.
Where IP block storage peers are located within different
administrative domains, it may be necessary for the inner source
address to be assigned by the IPsec security gateway, effectively
"joining" the remote host to the LAN attached to the IPsec security
gateway. For example, if the remote peer were to use its assigned
(outer) source address as the inner source address, then a number of
problems might result:
[<a id="ref-1">1</a>] Intrusion detection systems sniffing the LAN behind the IPsec
security gateway would notice source addresses originating
outside the administrative domain.
[<a id="ref-2">2</a>] Reply packets might not reach their destination, since the IPsec
security gateway typically does not advertise the default route,
but rather only the prefix that it allocates addresses from.
Since the remote peer's address does not originate from with a
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
prefix native to the administrative domain, it is likely that
routers within the domain would not have a route for it, and
would send the packet off to the router advertising the default
route (perhaps a border router) instead of to the IPsec security
gateway.
For these reasons, for inter-domain use, assignment of inner source
addresses may be needed. At present this is not a very common
scenario; however, if address assignment is provided, then DHCP-based
address assignment within IPsec tunnel mode [<a href="./rfc3456" title=""Dynamic Host Configuration Protocol (DHCPv4) Configuration of IPsec Tunnel Mode"">RFC3456</a>] MUST be
supported. Note that this mechanism is not yet widely deployed
within IPsec security gateways; existing IPsec tunnel mode servers
typically implement this functionality via proprietary extensions to
IKE.
<span class="h3"><a class="selflink" id="section-5.2" href="#section-5.2">5.2</a>. NAT Traversal</span>
As noted in [<a href="./rfc3715" title=""IPsec-Network Address Translation (NAT) Compatibility Requirements"">RFC3715</a>], tunnel mode ESP can traverse NAT in a limited
set of circumstances. For example, if there is only one protocol
endpoint behind a NAT, "ANY to ANY" selectors are negotiated, and the
receiver does not perform source address validation, then tunnel mode
ESP may successfully traverse NATs. Since ignoring source address
validation introduces new security vulnerabilities, and negotiation
of specific selectors is desirable so as to limit the traffic that
can be sent down the tunnel, these conditions may not necessarily
apply, and tunnel mode NAT traversal will not always be possible.
TCP carried within Transport mode ESP cannot traverse NAT, even
though ESP itself does not include IP header fields within its
message integrity check. This is because the 16-bit TCP checksum is
calculated based on a "pseudo-header" that includes IP header fields,
and the checksum is protected by the IPsec ESP message integrity
check. As a result, the TCP checksum will be invalidated by a NAT
located between the two endpoints.
Since TCP checksum calculation and verification is mandatory in both
IPv4 and IPv6, it is not possible to omit checksum verification while
remaining standards compliant. In order to enable traversal of NATs
existing while remaining in compliance, iSCSI, iFCP or FCIP security
implementations can implement IPsec/IKE NAT traversal, as described
in [<a href="./rfc3715" title=""IPsec-Network Address Translation (NAT) Compatibility Requirements"">RFC3715</a>], [<a href="#ref-UDPIPsec" title=""UDP Encapsulation of IPsec Packets"">UDPIPsec</a>], and [<a href="#ref-NATIKE" title=""Negotiation of NAT-Traversal in the IKE"">NATIKE</a>].
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
The IKE [<a href="#ref-NATIKE" title=""Negotiation of NAT-Traversal in the IKE"">NATIKE</a>] and IPsec [<a href="#ref-UDPIPsec" title=""UDP Encapsulation of IPsec Packets"">UDPIPsec</a>] NAT traversal specifications
enable UDP encapsulation of IPsec to be negotiated if a NAT is
detected in the path. By determining the IP address of the NAT, the
TCP checksum can be calculated based on a pseudo-header including the
NAT-adjusted address and ports. If this is done prior to calculating
the IPsec message integrity check, TCP checksum verification will not
fail.
<span class="h3"><a class="selflink" id="section-5.3" href="#section-5.3">5.3</a>. IKE Issues</span>
There are situations where it is necessary for IKE to be implemented
in firmware. In such situations, it is important to keep the size of
the IKE implementation within strict limits. An upper bound on the
size of an IKE implementation might be considered to be 800 KB, with
80 KB enabling implementation in a wide range of situations.
As noted in Table 5.3-1 on the next page, IKE implementations
currently exist which meet the requirements. Therefore, while
removal of seldom used IKE functionality (such as the nonce
authentication methods) would reduce complexity, implementations
typically will not require this in order to fit within the code size
budget.
<span class="h3"><a class="selflink" id="section-5.4" href="#section-5.4">5.4</a>. Rekeying Issues</span>
It is expected that IP block storage implementations will need to
operate at high speed. For example, implementations operating at 1
Gbps are currently in design, with 10 Gbps implementations to follow
shortly thereafter. At these speeds, a single IPsec SA could rapidly
cycle through the 32-bit IPsec sequence number space.
For example, a single SA operating at 1 Gbps line rate and sending 64
octet packets would exhaust the 32-bit sequence number space in 2200
seconds, or 37 minutes. With 1518 octet packets, exhaustion would
occur in 14.5 hours. At 10 Gbps, exhaustion would occur in 220
seconds or 3.67 minutes. With 1518 octet packets, this would occur
within 1.45 hours.
In the future, it may be desirable for implementations operating at
speeds of 1 Gbps or greater to implement IPsec sequence number
extension, described in [<a href="#ref-Seq" title=""IP Encapsulating Security Payload (ESP)"">Seq</a>]. Note that depending on the transform
in use, it is possible that rekeying will be required prior to
exhaustion of the sequence number space.
In CBC-mode ciphers the ciphertext of one block depends on the
plaintext of that block as well as the ciphertext of the previous
block. This implies that if the ciphertext of two blocks are
identical, and the plaintext of the next block is also identical,
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
then the ciphertext of the next block will be identical. Thus, if
identical ciphertext blocks can be found with matching subsequent
blocks, an attacker can determine the existence of matching
plaintext.
Such "Birthday attacks" were examined by Bellare et. al. in
[<a href="#ref-DESANALY" title=""A Concrete Treatment of Symmetric Encryption: Analysis of the DES Modes of Operation"">DESANALY</a>]. On average, a ciphertext block of size n bits will be
expected to repeat every 2^[n/2] blocks. Although a single "birthday
attack" does not provide much information to an attacker, multiple
such attacks might provide useful information. To make this
unlikely, it is recommended that a rekey occur before 2^[n/2] blocks
have been sent on a given SA. Bellare et. al. have formalized this
in [<a href="#ref-DESANALY" title=""A Concrete Treatment of Symmetric Encryption: Analysis of the DES Modes of Operation"">DESANALY</a>], showing that the insecurity of CBC mode increases as
O(s^2/2^n), where n is the block size in bits, and s is the total
number of blocks encrypted. These conclusions do not apply to
counter mode.
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | Code size | |
|Implementation | (octets) | Release |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | Linux |
| Pluto | 258KB | FreeSWAN |
|(FreeSWAN) | | x86 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| Racoon | 400KB | NetBSD 1.5 |
| (KAME) | | x86 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| Isakmpd | 283KB | NetBSD 1.5 |
| (Erickson) | | x86 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| WindRiver | 142KB | PowerPC |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| Cisco | 222KB | PowerPC |
| VPN1700 | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| Cisco | 350K | PowerPC |
| VPN3000 | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| Cisco | 228KB | MIPS |
| VPN7200 | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Table 5.3-1 - Code Size for IKE implementations
The formula below sets a limit on the bytes that can be sent on a CBC
SA before a rekey is required:
B = (n/8) * 2^[n/2]
Where:
B = maximum bytes sent on the SA
n = block size in bits
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
This means that cipher block size as well as key length needs to be
considered in the rekey decision. 3DES uses a block size n = 64 bits
(2^3 bytes); this implies that the SA must be rekeyed before B =
(64/8) * (2^32) = 2^35 bytes are sent. At 1 Gbps, this implies that
a rekey will be required every 274.9 seconds (4.6 minutes); at 10
Gbps, a rekey is required every 27.5 seconds.
In terms of the sequence number space, for a 3DES encrypted message
of 512 = 2^9 bytes (2^6 blocks) this implies that the key has become
insecure after about 2^26 messages.
<span class="h3"><a class="selflink" id="section-5.5" href="#section-5.5">5.5</a>. Transform Issues</span>
Since IP block storage implementations may operate at speeds of 1
Gbps or greater, the ability to offer IPsec security services at high
speeds is of intense concern. Since support for multiple algorithms
multiplies the complexity and expense of hardware design, one of the
goals of the transform selection effort is to find a minimal set of
confidentiality and authentication algorithms implementable in
hardware at speeds of up to 10 Gbps, as well as being efficient for
implementation in software at speeds of 100 Mbps or slower.
In this specification, we primarily concern ourselves with IPsec
transforms that have already been specified, and for which parts are
available that can run at 1 Gbps line rate. Where existing
algorithms do not gracefully scale to 10 Gbps, we further consider
algorithms for which transform specifications are not yet complete,
but for which parts are expected to be available for inclusion in
products shipping within the next 12 months. As the state of the art
advances, the range of feasible algorithms will broaden and
additional mandatory-to-implement algorithms may be considered.
<a href="./rfc2406#section-5">Section 5 of [RFC2406]</a> states:
"A compliant ESP implementation MUST support the following
mandatory-to-implement algorithms:
- DES in CBC mode
- HMAC with MD5
- HMAC with SHA-1
- NULL Authentication algorithm
- NULL Encryption algorithm"
The DES algorithm is specified in [<a href="#ref-FIPS46-3" title=""Data encryption standard (DES)"">FIPS46-3</a>]; implementation
guidelines are found in [<a href="#ref-FIPS74" title=""Guidelines for implementing and using the nbs data encryption standard"">FIPS74</a>], and security issues are discussed
in [<a href="#ref-DESDIFF" title=""Differential Cryptanalysis of DES-like cryptosystems"">DESDIFF</a>],[<a href="#ref-DESINT" title=""An Issue With DES-CBC When Used Without Strong Integrity"">DESINT</a>], [<a href="#ref-DESCRACK" title="Sebastapol">DESCRACK</a>]. The DES IPsec transform is
defined in [<a href="./rfc2405" title=""The ESP DES-CBC Cipher Algorithm With Explicit IV"">RFC2405</a>] and the 3DES in CBC mode IPsec transform is
specified in [<a href="./rfc2451" title=""The ESP CBC-Mode Cipher Algorithms"">RFC2451</a>].
<span class="grey">Aboba, 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="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
The MD5 algorithm is specified in [<a href="./rfc1321" title=""The MD5 Message-Digest Algorithm"">RFC1321</a>]; HMAC is defined in
[<a href="./rfc2104" title=""HMAC: Keyed- Hashing for Message Authentication"">RFC2104</a>] and security issues with MD5 are discussed in [<a href="#ref-MD5Attack" title=""The Status of MD5 After a Recent Attack"">MD5Attack</a>].
The HMAC-MD5 IPsec transform is specified in [<a href="./rfc2403" title=""The Use of HMAC-MD5-96 within ESP and AH"">RFC2403</a>]. The HMAC-
SHA1 IPsec transform is specified in [<a href="./rfc2404" title=""The Use of HMAC-SHA-1-96 within ESP and AH"">RFC2404</a>].
In addition to these existing algorithms, NIST is currently
evaluating the following modes [<a href="#ref-NSPUE2" title=""Recommendation for Block Cipher Modes of Operation"">NSPUE2</a>] of AES, defined in [<a href="#ref-FIPS197" title=""Advanced Encryption Standard (AES)"">FIPS197</a>]:
AES in Electronic Codebook (ECB) confidentiality mode
AES in Cipher Block Chaining (CBC) confidentiality mode
AES in Cipher Feedback (CFB) confidentiality mode
AES in Output Feedback (OFB) confidentiality mode
AES in Counter (CTR) confidentiality mode
AES CBC-MAC authentication mode
When utilizing AES modes, it may be necessary to use larger public
keys; the tradeoffs are described in [<a href="#ref-KeyLen" title=""Determining Strengths For Public Keys Used For Exchanging Symmetric Keys"">KeyLen</a>]. Additional MODP
Diffie-Hellman groups for use with IKE are described in [<a href="./rfc3526" title=""More Modular Exponential (MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)"">RFC3526</a>].
The Modes [<a href="#ref-NSPUE2" title=""Recommendation for Block Cipher Modes of Operation"">NSPUE2</a>] effort is also considering a number of additional
algorithms, including the following:
PMAC
To provide authentication, integrity and replay protection, IP block
storage security implementations MUST support HMAC-SHA1 [<a href="./rfc2404" title=""The Use of HMAC-SHA-1-96 within ESP and AH"">RFC2404</a>] for
authentication, and AES in CBC MAC mode with XCBC extensions SHOULD
be supported [<a href="./rfc3566" title=""The AES-XCBC-MAC-96 Algorithm and Its Use with IPsec"">RFC3566</a>].
HMAC-SHA1 [<a href="./rfc2404" title=""The Use of HMAC-SHA-1-96 within ESP and AH"">RFC2404</a>] is to be preferred to HMAC-MD5, due to concerns
that have been raised about the security of MD5 [<a href="#ref-MD5Attack" title=""The Status of MD5 After a Recent Attack"">MD5Attack</a>]. HMAC-
SHA1 parts are currently available that run at 1 Gbps, the algorithm
is implementable in hardware at speeds up to 10 Gbps, and an IPsec
transform specification [<a href="./rfc2404" title=""The Use of HMAC-SHA-1-96 within ESP and AH"">RFC2404</a>] exists. As a result, it is most
practical to utilize HMAC-SHA1 as the authentication algorithm for
products shipping in the near future. AES in CBC-MAC authentication
mode with XCBC extensions was selected since it avoids adding
substantial additional code if AES is already being implemented for
encryption; an IPsec transform document is available [<a href="./rfc3566" title=""The AES-XCBC-MAC-96 Algorithm and Its Use with IPsec"">RFC3566</a>].
Authentication transforms also exist that are considerably more
efficient to implement than HMAC-SHA1, or AES in CBC-MAC
authentication mode. UMAC [<a href="#ref-UMAC" title=""UMAC: Fast and provably secure message authentication"">UMAC</a>],[<a href="#ref-UMACKR" title=""UMAC: Message Authentication Code using Universal Hashing"">UMACKR</a>] is more efficient to
implement in software and PMAC [<a href="#ref-PMAC" title=""PMAC: Proposal to NIST for a parallelizable message authentication code"">PMAC</a>] is more efficient to implement
in hardware. PMAC is currently being evaluated as part of the NIST
modes effort [<a href="#ref-NSPUE2" title=""Recommendation for Block Cipher Modes of Operation"">NSPUE2</a>] but an IPsec transform does not yet exist;
neither does a UMAC transform.
<span class="grey">Aboba, et al. Standards Track [Page 44]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-45" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
For confidentiality, the ESP mandatory-to-implement algorithm (DES)
is unacceptable. As noted in [<a href="#ref-DESCRACK" title="Sebastapol">DESCRACK</a>], DES is crackable with
modest computation resources, and so is inappropriate for use in
situations requiring high levels of security.
To provide confidentiality for iSCSI, iFCP, and FCIP, 3DES in CBC
mode [<a href="./rfc2451" title=""The ESP CBC-Mode Cipher Algorithms"">RFC2451</a>] MUST be supported and AES in Counter Mode [<a href="./rfc3686" title=""Using Advanced Encryption Standard (AES) Counter Mode With IPsec Encapsulating Security Payload (ESP)"">RFC3686</a>]
SHOULD be supported. For use in high speed implementations, 3DES has
significant disadvantages. However, a 3DES IPsec transform has been
specified and parts are available that can run at 1 Gbps, so
implementing 3DES in products is practical for the short term.
As described in <a href="#appendix-B">Appendix B</a>, 3DES software implementations make
excessive computational demands at speeds of 100 Mbps or greater,
effectively ruling out software-only implementations. In addition,
3DES implementations require rekeying prior to exhaustion of the
current 32-bit IPsec sequence number space, and thus would not be
able to make use of sequence space extensions if they were available.
This means that 3DES will require very frequent rekeying at speeds of
10 Gbps or faster. Thus, 3DES is inconvenient for use at very high
speeds, as well as being impractical for implementation in software
at slower speeds (100+ Mbps).
<span class="h3"><a class="selflink" id="section-5.6" href="#section-5.6">5.6</a>. Fragmentation Issues</span>
When certificate authentication is used, IKE fragmentation can be
encountered. This can occur when certificate chains are used, or
even when exchanging a single certificate if the key size or size of
other certificate fields (such as the distinguished name and other
OIDs) is large enough. Many Network Address Translators (NATs) and
firewalls do not handle fragments properly, dropping them on inbound
and/or outbound.
Routers in the path will also frequently discard fragments after the
initial one, since they typically will not contain full IP headers
that can be compared against an Access List.
As a result, where IKE fragmentation occurs, the endpoints will often
be unable to establish an IPsec security association. The solution
to this problem is to install NAT, firewall or router code load that
can properly support fragments. If this cannot be done, then the
following alternatives can be considered:
[<a id="ref-1">1</a>] Obtaining certificates by other means.
[<a id="ref-2">2</a>] Reducing the size of the certificate chain.
<span class="grey">Aboba, et al. Standards Track [Page 45]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-46" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
[<a id="ref-3">3</a>] Reducing the size of fields within the certificates. This
includes reduction in the key size, the distinguished name or
other fields. This should be considered only as a last resort.
Fragmentation can become a concern when prepending IPsec headers to a
frame. One mechanism that can be used to reduce this problem is to
utilize path MTU discovery. For example, when TCP is used as the
transport for iSCSI, iFCP or FCIP then path MTU discovery, described
in [<a href="./rfc1191" title=""Path MTU Discovery"">RFC1191</a>], [<a href="./rfc1435" title=""IESG Advice from Experience with Path MTU Discovery"">RFC1435</a>], [<a href="./rfc1981" title=""Path MTU Discovery for IP version 6"">RFC1981</a>], can be used to enable the TCP
endpoints to discover the correct MTU, including effects due to IPsec
encapsulation.
However, Path MTU discovery fails when appropriate ICMP messages are
not received by the host. This occurs in IPsec implementations that
drop unauthenticated ICMP packets. This can result in blackholing in
naive TCP implementations, as described in [<a href="./rfc2923" title=""TCP Problems with Path MTU Discovery"">RFC2923</a>]. Appropriate
TCP behavior is described in <a href="./rfc2923#section-2.1">section 2.1 of [RFC2923]</a>:
"TCP should notice that the connection is timing out. After
several timeouts, TCP should attempt to send smaller packets,
perhaps turning off the DF flag for each packet. If this
succeeds, it should continue to turn off PMTUD for the connection
for some reasonable period of time, after which it should probe
again to try to determine if the path has changed."
If an ICMP PMTU is received by an IPsec implementation that processes
unauthenticated ICMP packets, this value should be stored in the SA
as proposed in [<a href="./rfc2401" title=""Security Architecture for the Internet Protocol"">RFC2401</a>], and IPsec should also provide notification
of this event to TCP so that the new MTU value can be correctly
reflected.
<span class="h3"><a class="selflink" id="section-5.7" href="#section-5.7">5.7</a>. Security Checks</span>
When a connection is opened which requires security, IP block storage
security implementations may wish to check that the connection is
protected by IPsec. If security is desired and IPsec protection is
removed on a connection, it is reinstated before non-protected IP
block storage packets are sent. Since IPsec verifies that each
packet arrives on the correct SA, as long as it can be ensured that
IPsec protection is in place, then IP block storage implementations
can be assured that each received packet was sent by a trusted peer.
When used with IP block storage protocols, each TCP connection MUST
be protected by an IKE Phase 2 SA. Traffic from one or more than one
TCP connection may flow within each IPsec Phase 2 SA. IP block
storage security implementations need not verify that the IP
addresses and TCP port values in the packet match the socket
<span class="grey">Aboba, et al. Standards Track [Page 46]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-47" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
information that was used to setup the connection. This check will
be performed by IPsec, preventing malicious peers from sending
commands on inappropriate Quick Mode SAs.
<span class="h3"><a class="selflink" id="section-5.8" href="#section-5.8">5.8</a>. Authentication Issues</span>
<span class="h4"><a class="selflink" id="section-5.8.1" href="#section-5.8.1">5.8.1</a>. Machine Versus User Certificates</span>
The certificate credentials provided by the iSCSI initiator during
the IKE negotiation may be those of the machine or of the iSCSI
entity. When machine authentication is used, the machine certificate
is typically stored on the iSCSI initiator and target during an
enrollment process. When user certificates are used, the user
certificate can be stored either on the machine or on a smartcard.
For iFCP and FCIP, the certificate credentials provided will almost
always be those of the device and will be stored on the device.
Since the value of a machine certificate is inversely proportional to
the ease with which an attacker can obtain one under false pretenses,
it is advisable that the machine certificate enrollment process be
strictly controlled. For example, only administrators may have the
ability to enroll a machine with a machine certificate.
While smartcard certificate storage lessens the probability of
compromise of the private key, smartcards are not necessarily
desirable in all situations. For example, some organizations
deploying machine certificates use them so as to restrict use of
non-approved hardware. Since user authentication can be provided
within iSCSI login (keeping in mind the weaknesses described
earlier), support for machine authentication in IPsec makes it is
possible to authenticate both the machine as well as the user. Since
iFCP and FCIP have no equivalent of iSCSI Login, for these protocols
only the machine is authenticated.
In circumstances in which this dual assurance is considered valuable,
enabling movement of the machine certificate from one machine to
another, as would be possible if the machine certificate were stored
on a smart card, may be undesirable.
Similarly, when user certificate are deployed, it is advisable for
the user enrollment process to be strictly controlled. If for
example, a user password can be readily used to obtain a certificate
(either a temporary or a longer term one), then that certificate has
no more security value than the password. To limit the ability of an
attacker to obtain a user certificate from a stolen password, the
enrollment period can be limited, after which password access will be
<span class="grey">Aboba, et al. Standards Track [Page 47]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-48" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
turned off. Such a policy will prevent an attacker obtaining the
password of an unused account from obtaining a user certificate once
the enrollment period has expired.
<span class="h4"><a class="selflink" id="section-5.8.2" href="#section-5.8.2">5.8.2</a>. Pre-Shared Keys</span>
Use of pre-shared keys in IKE Main Mode is vulnerable to man-in-the-
middle attacks when used with dynamically addressed hosts (such as
with iSCSI initiators). In Main Mode it is necessary for SKEYID_e to
be used prior to the receipt of the identification payload.
Therefore the selection of the pre-shared key may only be based on
information contained in the IP header. However, where dynamic IP
address assignment is typical, it is often not possible to identify
the required pre-shared key based on the IP address.
Thus when pre-shared key authentication is used in Main Mode along
with entities whose address is dynamically assigned, the same pre-
shared key is shared by a group and is no longer able to function as
an effective shared secret. In this situation, neither the initiator
nor Responder identifies itself during IKE Phase 1; it is only known
that both parties are a member of the group with knowledge of the
pre-shared key. This permits anyone with access to the group pre-
shared key to act as a man-in-the-middle. This vulnerability is
typically not of concern where IP addresses are typically statically
assigned (such as with iFCP and FCIP), since in this situation
individual pre-shared keys are possible within IKE Main Mode.
However, where IP addresses are dynamically assigned and Main Mode is
used along with pre-shared keys, the Responder is not authenticated
unless application-layer mutual authentication is performed (e.g.,
iSCSI login authentication). This enables an attacker in possession
of the group pre-shared key to masquerade as the Responder. In
addition to enabling the attacker to present false data, the attacker
would also be able to mount a dictionary attack on legacy
authentication methods such as CHAP [<a href="./rfc1994" title=""PPP Challenge Handshake Authentication Protocol (CHAP)"">RFC1994</a>], potentially
compromising many passwords at a time. This vulnerability is widely
present in existing IPsec implementations.
Group pre-shared keys are not required in Aggressive Mode since the
identity payload is sent earlier in the exchange, and therefore the
pre-shared key can be selected based on the identity. However, when
Aggressive Mode is used the user identity is exposed and this is
often considered undesirable.
Note that care needs to be taken with IKE Phase 1 Identity Payload
selection in order to enable mapping of identities to pre-shared keys
even with Aggressive Mode. Where the ID_IPV4_ADDR or ID_IPV6_ADDR
Identity Payloads are used and addresses are dynamically assigned,
<span class="grey">Aboba, et al. Standards Track [Page 48]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-49" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
mapping of identities to keys is not possible, so that group pre-
shared keys are still a practical necessity. As a result, identities
other than ID_IPV4_ADDR and ID_IPV6_ADDR (such as ID_FQDN or
ID_USER_FQDN) SHOULD be employed in situations where Aggressive mode
is utilized along with pre-shared keys and IP addresses are
dynamically assigned.
<span class="h4"><a class="selflink" id="section-5.8.3" href="#section-5.8.3">5.8.3</a>. IKE and Application-Layer Authentication</span>
In addition to IKE authentication, iSCSI implementations utilize
their own authentication methods. Currently, work is underway on
Fibre Channel security, so that a similar authentication process may
eventually also apply to iFCP and FCIP as well.
While iSCSI provides initial authentication, it does not provide
per-packet authentication, integrity or replay protection. This
implies that the identity verified in the iSCSI Login is not
subsequently verified on reception of each packet.
With IPsec, when the identity asserted in IKE is authenticated, the
resulting derived keys are used to provide per-packet authentication,
integrity and replay protection. As a result, the identity verified
in the IKE conversation is subsequently verified on reception of each
packet.
Let us assume that the identity claimed in iSCSI Login is a user
identity, while the identity claimed within IKE is a machine
identity. Since only the machine identity is verified on a per-
packet basis, there is no way for the recipient to verify that only
the user authenticated via iSCSI Login is using the IPsec SA.
In fact, IPsec implementations that only support machine
authentication typically have no way to distinguish between user
traffic within the kernel. As a result, where machine authentication
is used, once an IPsec SA is opened, another user on a multi-user
machine may be able to send traffic down the IPsec SA. This is true
for both transport mode and tunnel mode SAs.
To limit the potential vulnerability, IP block storage
implementations MUST do the following:
[<a id="ref-1">1</a>] Ensure that socket access is appropriately controlled. On a
multi-user operating system, this implies that sockets opened
for use by IP block storage protocols MUST be exclusive.
[<a id="ref-2">2</a>] In the case of iSCSI, implementations MUST also ensure that
application layer login credentials (such as iSCSI login
credentials) are protected from unauthorized access.
<span class="grey">Aboba, et al. Standards Track [Page 49]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-50" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
If these directives are followed, then a rogue process will not be
able to access an IP block storage volume.
While the identity asserted within IKE is verified on a per-packet
basis, to avoid interference between users on a given machine,
operating system support is required. In order to segregate traffic
between users when user authentication is supported, the IPsec
endpoints must ensure that only traffic from that particular user is
sent or received within the IPsec SA. Enforcement of this
restriction is the responsibility of the operating system.
In kernel mode iSCSI drivers there typically is no user context to
perform user authentication. In this case the authentication is
closer to machine authentication. In most operating systems device
permissions would control the ability to read/write to the device
prior to mounting. Once the device is mounted, ACLs set by the
filesystem control access to the device. An administrator can access
the blocks on the device directly (for instance, by sending pass
through requests to the port driver directly such as in Windows NT).
In the same way, an administrator can open a raw socket and send
IPsec protected packets to an iSCSI target. The situation is
analogous, and in this respect no new vulnerability is created that
didn't previously exist. The Operating system's ACLs need to be
effective to protect a device (whether it is a SCSI device or an
iSCSI device).
<span class="h4"><a class="selflink" id="section-5.8.4" href="#section-5.8.4">5.8.4</a>. IP Block Storage Authorization</span>
IP block storage protocols can use a variety of mechanisms for
authorization. Where ID_FQDN is used as the Identity Payload, IP
block storage endpoints can be configured with a list of authorized
FQDNs. The configuration can occur manually, or automatically via
iSNS or the iSCSI MIB, defined in [<a href="#ref-AuthMIB" title=""Definitions of Managed Objects for iSCSI"">AuthMIB</a>].
Assuming that IPsec authentication is successful, this list of FQDNs
can be examined to determine authorization levels. Where certificate
authentication is used, it is possible to configure IP block storage
protocol endpoints with trusted roots. The trusted roots used with
IP block storage protocols might be different from the trusted roots
used for other purposes. If this is the case, then the burden of
negotiating use of the proper certificates lies with the IPsec
initiator.
Note that because IKE does not deal well with certificate chains, and
is typically configured with a limited set of trusted roots, it is
most appropriate for intra-domain usage.
<span class="grey">Aboba, et al. Standards Track [Page 50]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-51" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Since iSCSI supports Login authentication, it is also possible to use
the identities presented within the iSCSI Login for authorization
purposes.
In iFCP, basic access control properties stem from the requirement
that two communicating iFCP gateways be known to one or more iSNS
servers before they can engage in iFCP exchanges. The optional use
of discovery domains in iSNS yields access control schemas of greater
complexity.
<span class="h3"><a class="selflink" id="section-5.9" href="#section-5.9">5.9</a>. Use of AES in Counter Mode</span>
When utilizing AES modes, it may be necessary to use larger public
keys; the tradeoffs are described in [<a href="#ref-KeyLen" title=""Determining Strengths For Public Keys Used For Exchanging Symmetric Keys"">KeyLen</a>]. Additional MODP
Diffie-Hellman groups for use with IKE are described in [<a href="./rfc3526" title=""More Modular Exponential (MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)"">RFC3526</a>].
When AES in counter mode is used, it is important to avoid reuse of
the counter with the same key, even across all time. Counter mode
creates ciphertext by XORing generated key stream with plaintext. It
is fairly easy to recover the plaintext from two messages counter
mode encrypted under the same counter value, simply by XORing
together the two packets. The implication of this is that it is an
error to use IPsec manual keying with counter mode, except when the
implementation takes heroic measures to maintain state across
sessions. In any case, manual keying MUST NOT be used since it does
not provide the necessary rekeying support.
Another counter mode issue is it makes forgery of correct packets
trivial. Counter mode should therefore never be used without also
using data authentication.
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. IANA Considerations</span>
This section provides guidance to the Internet Assigned Numbers
Authority (IANA) regarding registration of values of the SRP_GROUP
key parameter within iSCSI, in accordance with <a href="https://www.rfc-editor.org/bcp/bcp26">BCP 26</a>, [<a href="./rfc2434" title="">RFC2434</a>].
IANA considerations for the iSCSI protocol are described in
<a href="./rfc3720#section-13">[RFC3720], Section 13</a>; for the iFCP protocol in [<a href="#ref-iFCP" title=""iFCP - A Protocol for Internet Fibre Channel Storage Networking"">iFCP</a>], Section 12;
and for the FCIP protocol in [<a href="#ref-FCIP" title=""Fibre Channel over TCP/IP (FCIP)"">FCIP</a>], <a href="#appendix-B">Appendix B</a>.
<span class="grey">Aboba, et al. Standards Track [Page 51]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-52" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
<span class="h3"><a class="selflink" id="section-6.1" href="#section-6.1">6.1</a>. Definition of Terms</span>
The following terms are used here with the meanings defined in <a href="https://www.rfc-editor.org/bcp/bcp26">BCP</a>
<a href="https://www.rfc-editor.org/bcp/bcp26">26</a>: "name space", "assigned value", "registration".
The following policies are used here with the meanings defined in <a href="https://www.rfc-editor.org/bcp/bcp26">BCP</a>
<a href="https://www.rfc-editor.org/bcp/bcp26">26</a>: "Private Use", "First Come First Served", "Expert Review",
"Specification Required", "IETF Consensus", "Standards Action".
<span class="h3"><a class="selflink" id="section-6.2" href="#section-6.2">6.2</a>. Recommended Registration Policies</span>
For registration requests where a Designated Expert should be
consulted, the responsible IESG Area Director should appoint the
Designated Expert.
For registration requests requiring Expert Review, the IPS mailing
list should be consulted, or if the IPS WG is disbanded, to a mailing
list designated by the IESG Area Director.
This document defines the following SRP_GROUP keys:
SRP-768, SRP-1024, SRP-1280, SRP-1536, SRP-2048, MODP-3072, MODP-
4096, MODP-6144, MODP-8192
New SRP_GROUP keys MUST conform to the iSCSI extension item-label
format described in <a href="./rfc3720#section-13.5.4">[RFC3720] Section 13.5.4</a>.
Registration of new SRP_GROUP keys is by Designated Expert with
Specification Required. The request is posted to the IPS WG mailing
list or its successor for comment and security review, and MUST
include a non-probabalistic proof of primality for the proposed SRP
group. After a period of one month as passed, the Designated Expert
will either approve or deny the registration request.
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. Normative References</span>
[<a id="ref-RFC793">RFC793</a>] Postel, J., "Transmission Control Protocol", STD 7,
<a href="./rfc793">RFC 793</a>, September 1981.
[<a id="ref-RFC1191">RFC1191</a>] Mogul, J. and S. Deering, "Path MTU Discovery", <a href="./rfc1191">RFC</a>
<a href="./rfc1191">1191</a>, November 1990.
[<a id="ref-RFC1435">RFC1435</a>] Knowles, S., "IESG Advice from Experience with Path
MTU Discovery", <a href="./rfc1435">RFC 1435</a>, March 1993.
[<a id="ref-RFC1981">RFC1981</a>] McCann, J., Deering, S. and J. Mogul, "Path MTU
Discovery for IP version 6", <a href="./rfc1981">RFC 1981</a>, August 1996.
<span class="grey">Aboba, et al. Standards Track [Page 52]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-53" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
[<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-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.
[<a id="ref-RFC2131">RFC2131</a>] Droms, R., "Dynamic Host Configuration Protocol", <a href="./rfc2131">RFC</a>
<a href="./rfc2131">2131</a>, March 1997.
[<a id="ref-RFC2401">RFC2401</a>] Kent, S. and R. Atkinson, "Security Architecture for
the Internet Protocol", <a href="./rfc2401">RFC 2401</a>, November 1998.
[<a id="ref-RFC2404">RFC2404</a>] Madson, C. and R. Glenn, "The Use of HMAC-SHA-1-96
within ESP and AH", <a href="./rfc2404">RFC 2404</a>, November 1998.
[<a id="ref-RFC2406">RFC2406</a>] Kent, S. and R. Atkinson, "IP Encapsulating Security
Payload (ESP)", <a href="./rfc2406">RFC 2406</a>, November 1998.
[<a id="ref-RFC2407">RFC2407</a>] Piper, D., "The Internet IP Security Domain of
Interpretation of ISAKMP", <a href="./rfc2407">RFC 2407</a>, November 1998.
[<a id="ref-RFC2408">RFC2408</a>] Maughan, D., Schertler, M., Schneider, M. and J.
Turner, "Internet Security Association and Key
Management Protocol (ISAKMP)," <a href="./rfc2408">RFC 2408</a>, November
1998.
[<a id="ref-RFC2409">RFC2409</a>] Harkins, D. and D. Carrel, "The Internet Key Exchange
(IKE)", <a href="./rfc2409">RFC 2409</a>, November 1998.
[<a id="ref-RFC2412">RFC2412</a>] Orman, H., "The OAKLEY Key Determination Protocol",
<a href="./rfc2412">RFC 2412</a>, November 1998.
[<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</a>
<a href="./rfc2434">2434</a>, October 1998.
[<a id="ref-RFC2451">RFC2451</a>] Pereira, R. and R. Adams, "The ESP CBC-Mode Cipher
Algorithms", <a href="./rfc2451">RFC 2451</a>, November 1998.
[<a id="ref-RFC2608">RFC2608</a>] Guttman, E., Perkins, C., Veizades, J. and M. Day,
"Service Location Protocol, Version 2", <a href="./rfc2608">RFC 2608</a>, June
1999.
[<a id="ref-RFC2923">RFC2923</a>] Lahey, K., "TCP Problems with Path MTU Discovery", <a href="./rfc2923">RFC</a>
<a href="./rfc2923">2923</a>, September 2000.
<span class="grey">Aboba, et al. Standards Track [Page 53]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-54" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
[<a id="ref-RFC2945">RFC2945</a>] Wu, T., "The SRP Authentication and Key Exchange
System", <a href="./rfc2945">RFC 2945</a>, September 2000.
[<a id="ref-RFC3315">RFC3315</a>] Droms, R., Ed., Bound, J., Volz,, B., Lemon, T.,
Perkins, C. and M. Carney, "Dynamic Host Configuration
Protocol for IPv6 (DHCPv6)", <a href="./rfc3315">RFC 3315</a>, July 2003.
[<a id="ref-RFC3456">RFC3456</a>] Patel, B., Aboba, B., Kelly, S. and V. Gupta, "Dynamic
Host Configuration Protocol (DHCPv4) Configuration of
IPsec Tunnel Mode", <a href="./rfc3456">RFC 3456</a>, January 2003.
[<a id="ref-RFC3526">RFC3526</a>] Kivinen, T. and M. Kojo, "More Modular Exponential
(MODP) Diffie-Hellman groups for Internet Key Exchange
(IKE)", <a href="./rfc3526">RFC 3526</a>, May 2003.
[<a id="ref-RFC3566">RFC3566</a>] Frankel, S. and H. Herbert, "The AES-XCBC-MAC-96
Algorithm and Its Use with IPsec", <a href="./rfc3566">RFC 3566</a>, September
2003.
[<a id="ref-RFC3643">RFC3643</a>] Weber, R., Rajagopal, M., Trovostino, F., O'Donnel.,
M, Monia, C.and M. Mehrar, "Fibre Channel (FC) Frame
Encapsuation", <a href="./rfc3643">RFC 3643</a>, December 2003.
[<a id="ref-RFC3686">RFC3686</a>] Housley, R., "Using Advanced Encryption Standard (AES)
Counter Mode With IPsec Encapsulating Security Payload
(ESP)", <a href="./rfc3686">RFC 3686</a>, January 2004.
[<a id="ref-RFC3720">RFC3720</a>] Satran, J., Meth, K., Sapuntzakis, C. Chadalapaka, M.
and E. Zeidner, "Internet Small Computer Systems
Interface (iSCSI)", <a href="./rfc3720">RFC 3720</a>, April 2004.
[<a id="ref-3DESANSI">3DESANSI</a>] American National Standard for Financial Services
X9.52-1998, "Triple Data Encryption Algorithm Modes of
Operation", American Bankers Association, Washington,
D.C., July 29, 1998
[<a id="ref-SRPNDSS">SRPNDSS</a>] Wu, T., "The Secure Remote Password Protocol", in
Proceedings of the 1998 Internet Society Symposium on
Network and Distributed Systems Security, San Diego,
CA, pp. 97-111
<span class="h2"><a class="selflink" id="section-8" href="#section-8">8</a>. Informative References</span>
[<a id="ref-RFC1321">RFC1321</a>] Rivest, R., "The MD5 Message-Digest Algorithm", <a href="./rfc1321">RFC</a>
<a href="./rfc1321">1321</a>, April 1992.
[<a id="ref-RFC1994">RFC1994</a>] Simpson, W., "PPP Challenge Handshake Authentication
Protocol (CHAP)", <a href="./rfc1994">RFC 1994</a>, August 1996.
<span class="grey">Aboba, et al. Standards Track [Page 54]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-55" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
[<a id="ref-RFC2230">RFC2230</a>] Atkinson, R., "Key Exchange Delegation Record for the
DNS", <a href="./rfc2230">RFC 2230</a>, November 1997.
[<a id="ref-RFC2373">RFC2373</a>] Hinden, R. and S. Deering, "IP Version 6 Addressing
Architecture", <a href="./rfc2373">RFC 2373</a>, July 1998.
[<a id="ref-RFC2402">RFC2402</a>] Kent, S., Atkinson, R., "IP Authentication Header",
<a href="./rfc2402">RFC 2402</a>, November 1998.
[<a id="ref-RFC2403">RFC2403</a>] Madson, C. and R. Glenn, "The Use of HMAC-MD5-96
within ESP and AH", <a href="./rfc2403">RFC 2403</a>, November 1998.
[<a id="ref-RFC2405">RFC2405</a>] Madson, C. and N. Doraswamy, "The ESP DES-CBC Cipher
Algorithm With Explicit IV", <a href="./rfc2405">RFC 2405</a>, November 1998.
[<a id="ref-RFC2535">RFC2535</a>] Eastlake, D., "Domain Name System Security
Extensions", <a href="./rfc2535">RFC 2535</a>, March 1999.
[<a id="ref-RFC2782">RFC2782</a>] Gulbrandsen, A., Vixie, P. and L. Esibov, "A DNS RR
for specifying the location of services (DNS SRV)",
<a href="./rfc2782">RFC 2782</a>, February 2000.
[<a id="ref-RFC2845">RFC2845</a>] Vixie, P., Gudmundsson, O., Eastlake, D. and B.
Wellington, "Secret Key Transaction Authentication for
DNS (TSIG)", <a href="./rfc2845">RFC 2845</a>, May 2000.
[<a id="ref-RFC2865">RFC2865</a>] Rigney, C., Willens, S., Rubens, A. and W. Simpson,
"Remote Authentication Dial In User Service (RADIUS)",
<a href="./rfc2865">RFC 2865</a>, June 2000.
[<a id="ref-RFC2931">RFC2931</a>] Eastlake, D., "DNS Request and Transaction Signatures
(SIG(0)s )", <a href="./rfc2931">RFC 2931</a>, September 2000.
[<a id="ref-RFC2983">RFC2983</a>] Black, D. "Differentiated Services and Tunnels", <a href="./rfc2983">RFC</a>
<a href="./rfc2983">2983</a>, October 2000.
[<a id="ref-RFC3007">RFC3007</a>] Wellington, B., "Simple Secure Domain Name System
(DNS) Dynamic Update", <a href="./rfc3007">RFC 3007</a>, November 2000.
[<a id="ref-RFC3347">RFC3347</a>] Krueger, M. and R. Haagens, "Small Computer Systems
Interface protocol over the Internet (iSCSI)
Requirements and Design Considerations", <a href="./rfc3347">RFC 3347</a>,
July 2002.
[<a id="ref-RFC3721">RFC3721</a>] Bakke, M., Hafner, J., Hufferd, J., Voruganti, K. and
M. Krueger, "Internet Small Computer Systems Interface
(iSCSI) Naming and Discovery", <a href="./rfc3721">RFC 3721</a>, April 2004.
<span class="grey">Aboba, et al. Standards Track [Page 55]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-56" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
[<a id="ref-AESPERF">AESPERF</a>] Schneier, B., J. Kelsey, D. Whiting, D. Wagner, C.
Hall, and N. Ferguson, "Performance Comparison of the
AES Submissions", <a href="http://www.counterpane.com/aes-performance.html">http://www.counterpane.com/aes-</a>
<a href="http://www.counterpane.com/aes-performance.html">performance.html</a>
[<a id="ref-AuthMIB">AuthMIB</a>] Bakke, M., et al., "Definitions of Managed Objects for
iSCSI", Work in Progress, September 2002.
[<a id="ref-CRCTCP">CRCTCP</a>] Stone J., Partridge, C., "When the CRC and TCP
checksum disagree", ACM Sigcomm, Sept. 2000.
[<a id="ref-DESANALY">DESANALY</a>] Bellare, Desai, Jokippi, Rogaway, "A Concrete
Treatment of Symmetric Encryption: Analysis of the DES
Modes of Operation", 1997, <a href="http://www-cse.ucsd.edu/users/mihir/papers/sym-enc.html">http://www-</a>
<a href="http://www-cse.ucsd.edu/users/mihir/papers/sym-enc.html">cse.ucsd.edu/users/mihir/papers/sym-enc.html</a>
[<a id="ref-DESCRACK">DESCRACK</a>] Cracking DES, O'Reilly & Associates, Sebastapol, CA
2000.
[<a id="ref-DESDIFF">DESDIFF</a>] Biham, E., Shamir, A., "Differential Cryptanalysis of
DES-like cryptosystems", Journal of Cryptology Vol 4,
Jan 1991.
[<a id="ref-DESINT">DESINT</a>] Bellovin, S., "An Issue With DES-CBC When Used Without
Strong Integrity", Proceedings of the 32nd IETF,
Danvers, MA, April 1995
[<a id="ref-FCIP">FCIP</a>] Rajagopal, M., et al., "Fibre Channel over TCP/IP
(FCIP)", Work in Progress, August 2002.
[<a id="ref-FCIPSLP">FCIPSLP</a>] Petersen, D., <a style="text-decoration: none" href='https://www.google.com/search?sitesearch=datatracker.ietf.org%2Fdoc%2Fhtml%2F&q=inurl:draft-+%22Finding+FCIP+Entities+Using+SLPv2%22'>"Finding FCIP Entities Using SLPv2"</a>,
Work in Progress, September 2002.
[<a id="ref-FIPS46-3">FIPS46-3</a>] U.S. DoC/NIST, "Data encryption standard (DES)", FIPS
46-3, October 25, 1999.
[<a id="ref-FIPS74">FIPS74</a>] U.S. DoC/NIST, "Guidelines for implementing and using
the nbs data encryption standard", FIPS 74, Apr 1981.
[<a id="ref-FIPS197">FIPS197</a>] U.S. DoC/NIST, "Advanced Encryption Standard (AES)",
FIPS 197, November 2001,
<a href="http://csrc.nist.gov/CryptoToolkit/aes">http://csrc.nist.gov/CryptoToolkit/aes</a>
[<a id="ref-iFCP">iFCP</a>] Monia, C., et al., "iFCP - A Protocol for Internet
Fibre Channel Storage Networking", Work in Progress,
August 2002.
<span class="grey">Aboba, et al. Standards Track [Page 56]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-57" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
[<a id="ref-RFC3715">RFC3715</a>] Aboba, B. and W. Dixon, "IPsec-Network Address
Translation (NAT) Compatibility Requirements", <a href="./rfc3715">RFC</a>
<a href="./rfc3715">3715</a>, March 2004.
[<a id="ref-iSCSISLP">iSCSISLP</a>] Bakke, M., "Finding iSCSI targets and Name Servers
Using SLP", Work in Progress, March 2002.
[<a id="ref-iSNS">iSNS</a>] Gibbons, K., et al., "iSNS Internet Storage Name
Service", Work in Progress, August 2002.
[<a id="ref-KeyLen">KeyLen</a>] Orman, H., Hoffman, P., "Determining Strengths For
Public Keys Used For Exchanging Symmetric Keys", Work
in Progress, December 2001.
[<a id="ref-MD5Attack">MD5Attack</a>] Dobbertin, H., "The Status of MD5 After a Recent
Attack", CryptoBytes Vol.2 No.2, Summer 1996
[<a id="ref-NATIKE">NATIKE</a>] Kivinen, T., et al., "Negotiation of NAT-Traversal in
the IKE", Work in Progress, June 2002.
[<a id="ref-NSPUE2">NSPUE2</a>] "Recommendation for Block Cipher Modes of Operation",
National Institute of Standards and Technology (NIST)
Special Publication 800-38A, CODEN: NSPUE2, U.S.
Government Printing Office, Washington, DC, July 2001.
[<a id="ref-PENTPERF">PENTPERF</a>] A. Bosselaers, "Performance of Pentium
implementations",
<a href="http://www.esat.kuleuven.ac.be/~bosselae/">http://www.esat.kuleuven.ac.be/~bosselae/</a>
[<a id="ref-PMAC">PMAC</a>] Rogaway, P., Black, J., "PMAC: Proposal to NIST for a
parallelizable message authentication code",
<a href="http://csrc.nist.gov/encryption/modes/proposedmodes/pmac/pmac-spec.pdf">http://csrc.nist.gov/encryption/modes/proposedmodes/</a>
<a href="http://csrc.nist.gov/encryption/modes/proposedmodes/pmac/pmac-spec.pdf">pmac/pmac-spec.pdf</a>
[<a id="ref-Seq">Seq</a>] Kent, S., <a style="text-decoration: none" href='https://www.google.com/search?sitesearch=datatracker.ietf.org%2Fdoc%2Fhtml%2F&q=inurl:draft-+%22IP+Encapsulating+Security+Payload+%28ESP%29%22'>"IP Encapsulating Security Payload (ESP)"</a>,
Work in Progress, July 2002.
[<a id="ref-SRPDIST">SRPDIST</a>] Wu, T., "SRP Distribution", <a href="http://www-cs-students.stanford.edu/~tjw/srp/download.html">http://www-cs-</a>
<a href="http://www-cs-students.stanford.edu/~tjw/srp/download.html">students.stanford.edu/~tjw/srp/download.html</a>
[<a id="ref-UDPIPsec">UDPIPsec</a>] Huttunen, A., et. al., "UDP Encapsulation of IPsec
Packets", Work in Progress, June 2002.
[<a id="ref-UMAC">UMAC</a>] Black, J., Halevi, S., Krawczyk, H., Krovetz, T.,
Rogaway, P., "UMAC: Fast and provably secure message
authentication", Advances in Cryptology - CRYPTO '99,
LNCS vol. 1666, pp. 216-233. Full version available
from <a href="http://www.cs.ucdavis.edu/~rogaway/umac">http://www.cs.ucdavis.edu/~rogaway/umac</a>
<span class="grey">Aboba, et al. Standards Track [Page 57]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-58" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
[<a id="ref-UMACKR">UMACKR</a>] Krovetz, T., Black, J., Halevi, S., Hevia, A.,
Krawczyk, H., Rogaway, P., "UMAC: Message
Authentication Code using Universal Hashing", Work in
Progress, October 2000. Also available
at:http://www.cs.ucdavis.edu/~rogaway/umac/draft-
krovetz-umac-01.txt
[<a id="ref-UMACPERF">UMACPERF</a>] Rogaway, P., "UMAC Performance",
<a href="http://www.cs.ucdavis.edu/~rogaway/umac/perf00.html">http://www.cs.ucdavis.edu/~rogaway/umac/perf00.html</a>
<span class="h2"><a class="selflink" id="section-9" href="#section-9">9</a>. Acknowledgments</span>
Thanks to Steve Bellovin of AT&T Research, William Dixon of V6
Security, David Black of EMC, Joseph Tardo and Uri Elzur of Broadcom,
Julo Satran, Ted Ts'o, Ofer Biran, and Charles Kunzinger of IBM,
Allison Mankin of ISI, Mark Bakke and Steve Senum of Cisco, Erik
Guttman of Sun Microsystems and Howard Herbert of Intel for useful
discussions of this problem space.
<span class="grey">Aboba, et al. Standards Track [Page 58]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-59" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Appendix A - Well Known Groups for Use with SRP
Modulus (N) and generator (g) values for various modulus lengths are
given below. The values below are taken from software developed by
Tom Wu and Eugene Jhong for the Stanford SRP distribution [<a href="#ref-SRPDIST" title=""SRP Distribution"">SRPDIST</a>],
and subsequently rigorously verified to be prime. Implementations
supporting SRP authentication MUST support groups up to 1536 bits,
with 1536 bits being the default.
iSCSI Key="SRP-768" [768 bits]
Modulus (base 16) =
B344C7C4F8C495031BB4E04FF8F84EE95008163940B9558276744D91F7CC9F40
2653BE7147F00F576B93754BCDDF71B636F2099E6FFF90E79575F3D0DE694AFF
737D9BE9713CEF8D837ADA6380B1093E94B6A529A8C6C2BE33E0867C60C3262B
Generator = 2
iSCSI Key="SRP-1024" [1024 bits]
Modulus (base 16) =
EEAF0AB9ADB38DD69C33F80AFA8FC5E86072618775FF3C0B9EA2314C9C256576
D674DF7496EA81D3383B4813D692C6E0E0D5D8E250B98BE48E495C1D6089DAD1
5DC7D7B46154D6B6CE8EF4AD69B15D4982559B297BCF1885C529F566660E57EC
68EDBC3C05726CC02FD4CBF4976EAA9AFD5138FE8376435B9FC61D2FC0EB06E3
Generator = 2
iSCSI Key="SRP-1280" [1280 bits]
Modulus (base 16) =
D77946826E811914B39401D56A0A7843A8E7575D738C672A090AB1187D690DC4
3872FC06A7B6A43F3B95BEAEC7DF04B9D242EBDC481111283216CE816E004B78
6C5FCE856780D41837D95AD787A50BBE90BD3A9C98AC0F5FC0DE744B1CDE1891
690894BC1F65E00DE15B4B2AA6D87100C9ECC2527E45EB849DEB14BB2049B163
EA04187FD27C1BD9C7958CD40CE7067A9C024F9B7C5A0B4F5003686161F0605B
Generator = 2
iSCSI Key="SRP-1536" [1536 bits]
Modulus (base 16) =
9DEF3CAFB939277AB1F12A8617A47BBBDBA51DF499AC4C80BEEEA9614B19CC4D
5F4F5F556E27CBDE51C6A94BE4607A291558903BA0D0F84380B655BB9A22E8DC
DF028A7CEC67F0D08134B1C8B97989149B609E0BE3BAB63D47548381DBC5B1FC
764E3F4B53DD9DA1158BFD3E2B9C8CF56EDF019539349627DB2FD53D24B7C486
65772E437D6C7F8CE442734AF7CCB7AE837C264AE3A9BEB87F8A2FE9B8B5292E
5A021FFF5E91479E8CE7A28C2442C6F315180F93499A234DCF76E3FED135F9BB
Generator = 2
<span class="grey">Aboba, et al. Standards Track [Page 59]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-60" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
iSCSI Key="SRP-2048" [2048 bits]
Modulus (base 16) =
AC6BDB41324A9A9BF166DE5E1389582FAF72B6651987EE07FC3192943DB56050
A37329CBB4A099ED8193E0757767A13DD52312AB4B03310DCD7F48A9DA04FD50
E8083969EDB767B0CF6095179A163AB3661A05FBD5FAAAE82918A9962F0B93B8
55F97993EC975EEAA80D740ADBF4FF747359D041D5C33EA71D281E446B14773B
CA97B43A23FB801676BD207A436C6481F1D2B9078717461A5B9D32E688F87748
544523B524B0D57D5EA77A2775D2ECFA032CFBDBF52FB3786160279004E57AE6
AF874E7303CE53299CCC041C7BC308D82A5698F3A8D0C38271AE35F8E9DBFBB6
94B5C803D89F7AE435DE236D525F54759B65E372FCD68EF20FA7111F9E4AFF73
Generator = 2
In addition to these groups, the following groups MAY be supported,
each of which has also been rigorously proven to be prime:
[<a id="ref-1">1</a>] iSCSI Key="MODP-3072": the 3072-bit [<a href="./rfc3526" title=""More Modular Exponential (MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)"">RFC3526</a>] group, generator:
5
[<a id="ref-2">2</a>] iSCSI Key="MODP-4096": the 4096-bit [<a href="./rfc3526" title=""More Modular Exponential (MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)"">RFC3526</a>] group, generator:
5
[<a id="ref-3">3</a>] iSCSI Key="MODP-6144": the 6144-bit [<a href="./rfc3526" title=""More Modular Exponential (MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)"">RFC3526</a>] group, generator:
5
[<a id="ref-4">4</a>] iSCSI Key="MODP-8192": the 8192-bit [<a href="./rfc3526" title=""More Modular Exponential (MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)"">RFC3526</a>] group, generator:
19
<span class="grey">Aboba, et al. Standards Track [Page 60]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-61" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Appendix B - Software Performance of IPsec Transforms
This Appendix provides data on the performance of IPsec encryption
and authentication transforms in software. Since the performance of
IPsec transforms is heavily implementation dependent, the data
presented here may not be representative of performance in a given
situation, and are presented solely for purposes of comparison.
Other performance data is available in [<a href="#ref-AESPERF" title=""Performance Comparison of the AES Submissions"">AESPERF</a>], [<a href="#ref-PENTPERF" title=""Performance of Pentium implementations"">PENTPERF</a>] and
[<a href="#ref-UMACPERF" title=""UMAC Performance"">UMACPERF</a>].
<span class="h3"><a class="selflink" id="appendix-B.1" href="#appendix-B.1">B.1</a>. Authentication Transforms</span>
Table B-1 presents the cycles/byte required by the AES-PMAC, AES-
CBC-MAC, AES-UMAC, HMAC-MD5, and HMAC-SHA1 algorithms at various
packet sizes, implemented in software.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | | |
| Data | AES- | AES-CBC- | AES- | HMAC- | HMAC- |
| Size | PMAC | MAC | UMAC | MD5 | SHA1 |
| | | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 64 | 31.22 | 26.02 | 19.51 | 93.66 | 109.27 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 128 | 33.82 | 28.62 | 11.06 | 57.43 | 65.04 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 192 | 34.69 | 26.02 | 8.67 | 45.09 | 48.56 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 256 | 33.82 | 27.32 | 7.15 | 41.63 | 41.63 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 320 | 33.3 | 27.06 | 6.24 | 36.42 | 37.46 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 384 | 33.82 | 26.88 | 5.42 | 34.69 | 34.69 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 448 | 33.45 | 26.76 | 5.39 | 32.71 | 31.96 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 512 | 33.82 | 26.67 | 4.88 | 31.22 | 30.57 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 576 | 33.53 | 26.59 | 4.77 | 30.64 | 29.48 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 640 | 33.3 | 26.54 | 4.42 | 29.66 | 28.62 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 768 | 33.82 | 26.88 | 4.23 | 28.18 | 27.32 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 896 | 33.45 | 27.13 | 3.9 | 27.5 | 25.64 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1024 | 33.5 | 26.67 | 3.82 | 26.99 | 24.71 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
<span class="grey">Aboba, et al. Standards Track [Page 61]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-62" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | | |
| Data | AES- | AES-CBC- | AES- | HMAC- | HMAC- |
| Size | PMAC | MAC | UMAC | MD5 | SHA1 |
| | | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1152 | 33.53 | 27.17 | 3.69 | 26.3 | 23.99 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1280 | 33.56 | 26.8 | 3.58 | 26.28 | 23.67 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1408 | 33.58 | 26.96 | 3.55 | 25.54 | 23.41 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1500 | 33.52 | 26.86 | 3.5 | 25.09 | 22.87 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Table B-1: Cycles/byte consumed by the AES-PMAC, AES-CBC-MAC, AES-
UMAC, HMAC-MD5, and HMAC-SHA1 authentication algorithms at various
packet sizes.
Source: Jesse Walker, Intel
<span class="grey">Aboba, et al. Standards Track [Page 62]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-63" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Table B-2 presents the cycles/second required by the AES-PMAC, AES-
CBC-MAC, AES-UMAC, HMAC-MD5, and HMAC-SHA1 algorithms, implemented in
software, assuming a 1500 byte packet.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | Cycles/ | Cycles/sec | Cycles/sec | Cycles/sec |
| Transform | octet | @ | @ | @ |
| | (software) | 100 Mbps | 1 Gbps | 10 Gbps |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | |
| AES-UMAC | 3.5 | 43,750,000 | 437,500,000 | 4.375 B |
| (8 octets) | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | |
| HMAC-SHA1 | 22.87 | 285,875,000 | 2.8588 B | 28.588 B |
| (20 octets) | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | |
| HMAC-MD5 | 25.09 | 313,625,000 | 3.1363 B | 31.363 B |
| | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | |
| AES-CBC-MAC | 26.86 | 335,750,000 | 3.358 B | 33.575 B |
| | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | |
| AES-PMAC | 33.52 | 419,000,000 | 4.19 B | 41.900 B |
| (8 octets) | | | | |
| | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Table B-2: Software performance of the HMAC-SHA1, HMAC-MD5, AES-CBC-
MAC and AES-PMAC authentication algorithms at 100 Mbps, 1 Gbps, and
10 Gbps line rates (1500 byte packet).
Source: Jesse Walker, Intel
At speeds of 100 Mbps, AES-UMAC is implementable with only a modest
processor, and the other algorithms are implementable, assuming that
a single high-speed processor can be dedicated to the task. At 1
Gbps, only AES-UMAC is implementable on a single high-speed
processor; multiple high speed processors (1+ Ghz) will be required
for the other algorithms. At 10 Gbps, only AES-UMAC is implementable
even with multiple high speed processors; the other algorithms will
require a prodigious number of cycles/second. Thus at 10 Gbps,
hardware acceleration will be required for all algorithms with the
possible exception of AES-UMAC.
<span class="grey">Aboba, et al. Standards Track [Page 63]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-64" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
<span class="h3"><a class="selflink" id="appendix-B.2" href="#appendix-B.2">B.2</a>. Encryption and Authentication Transforms</span>
Table B-3 presents the cycles/byte required by the AES-CBC, AES-CTR
and 3DES-CBC encryption algorithms (no MAC), implemented in software,
for various packet sizes.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | |
| Data size | AES-CBC | AES-CTR | 3DES-CBC |
| | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 64 | 31.22 | 26.02 | 156.09 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 128 | 31.22 | 28.62 | 150.89 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 192 | 31.22 | 27.75 | 150.89 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 256 | 28.62 | 27.32 | 150.89 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 320 | 29.14 | 28.1 | 150.89 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 384 | 28.62 | 27.75 | 148.29 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 448 | 28.99 | 27.5 | 149.4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 512 | 28.62 | 27.32 | 148.29 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 576 | 28.33 | 27.75 | 147.72 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 640 | 28.62 | 27.06 | 147.77 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 768 | 28.18 | 27.32 | 147.42 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 896 | 28.25 | 27.5 | 147.55 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1024 | 27.97 | 27.32 | 148.29 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1152 | 28.33 | 27.46 | 147.13 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1280 | 28.1 | 27.58 | 146.99 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1408 | 27.91 | 27.43 | 147.34 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1500 | 27.97 | 27.53 | 147.85 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
<span class="grey">Aboba, et al. Standards Track [Page 64]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-65" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Table B-3: Cycles/byte consumed by the AES-CBC, AES-CTR and 3DES-CBC
encryption algorithms at various packet sizes, implemented in
software.
Source: Jesse Walker, Intel
Table B-4 presents the cycles/second required by the AES-CBC, AES-CTR
and 3DES-CBC encryption algorithms (no MAC), implemented in software,
at 100 Mbps, 1 Gbps, and 10 Gbps line rates (assuming a 1500 byte
packet).
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | Cycles/ | Cycles/sec | Cycles/sec | Cycles/sec |
| Transform | octet | @ | @ | @ |
| | (software) | 100 Mbps | 1 Gbps | 10 Gbps |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | |
| AES-CBC | 27.97 | 349,625,000 | 3.4963 B | 34.963 B |
| | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | |
| AES-CTR | 27.53 | 344,125,000 | 3.4413 B | 34.413 B |
| | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | |
| 3DES -CBC | 147.85 | 1.84813 B | 18.4813 B | 184.813 B |
| | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Table B-4: Software performance of the AES-CBC, AES-CTR, and 3DES
encryption algorithms at 100 Mbps, 1 Gbps, and 10 Gbps line rates
(1500 byte packet).
Source: Jesse Walker, Intel
<span class="grey">Aboba, et al. Standards Track [Page 65]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-66" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
At speeds of 100 Mbps, AES-CBC and AES-CTR mode are implementable
with a high-speed processor, while 3DES would require multiple high
speed processors. At speeds of 1 Gbps, multiple high speed
processors are required for AES-CBC and AES-CTR mode. At speeds of
1+ Gbps for 3DES, and 10 Gbps for all algorithms, implementation in
software is infeasible, and hardware acceleration is required.
Table B-5 presents the cycles/byte required for combined
encryption/authentication algorithms: AES CBC + CBCMAC, AES CTR +
CBCMAC, AES CTR + UMAC, and AES-OCB at various packet sizes,
implemented in software.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | AES | AES | AES | |
| Data size | CBC + | CTR + | CTR + | AES- |
| | CBCMAC | CBCMAC | UMAC | OCB |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 64 | 119.67 | 52.03 | 52.03 | 57.23 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 128 | 70.24 | 57.23 | 39.02 | 44.23 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 192 | 58.97 | 55.5 | 36.42 | 41.63 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 256 | 57.23 | 55.93 | 35.12 | 40.32 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 320 | 57.23 | 55.15 | 33.3 | 38.5 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 384 | 57.23 | 55.5 | 32.95 | 37.29 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 448 | 58.72 | 55 | 32.71 | 37.17 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 512 | 58.54 | 55.28 | 32.52 | 36.42 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 576 | 57.81 | 55.5 | 31.8 | 37 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 640 | 57.75 | 55.15 | 31.74 | 36.42 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 768 | 57.67 | 55.5 | 31.65 | 35.99 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 896 | 57.61 | 55.75 | 31.22 | 35.68 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1024 | 57.56 | 55.61 | 31.22 | 35.45 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1152 | 57.52 | 55.21 | 31.22 | 35.55 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
<span class="grey">Aboba, et al. Standards Track [Page 66]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-67" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | AES | AES | AES | |
| Data size | CBC + | CTR + | CTR + | AES- |
| | CBCMAC | CBCMAC | UMAC | OCB |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1280 | 57.75 | 55.15 | 31.22 | 36.16 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1408 | 57.47 | 55.34 | 30.75 | 35.24 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1500 | 57.72 | 55.5 | 30.86 | 35.3 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Table B-5: Cycles/byte of combined encryption/authentication
algorithms: AES CBC + CBCMAC, AES CTR + CBCMAC, AES CTR + UMAC, and
AES-OCB at various packet sizes, implemented in software.
<span class="grey">Aboba, et al. Standards Track [Page 67]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-68" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Table B-6 presents the cycles/second required for the AES CBC +
CBCMAC, AES CTR + CBCMAC, AES CTR + UMAC, and AES-OCB encryption and
authentication algorithms operating at line rates of 100 Mbps, 1 Gbps
and 10 Gbps, assuming 1500 byte packets.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | Cycles/ | Cycles/sec | Cycles/sec | Cycles/sec |
| Transform | octet | @ | @ | @ |
| | (software) | 100 Mbps | 1 Gbps | 10 Gbps |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | |
| AES | | | | |
|CBC + CBCMAC | 57.72 | 721,500,000 | 7.215 B | 72.15 B |
| | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | |
| AES | | | | |
|CTR + CBCMAC | 55.5 | 693,750,000 | 6.938 B | 69.38 B |
| | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | |
| AES | | | | |
| CTR + UMAC | 30.86 | 385,750,000 | 3.858 B | 38.58 B |
| | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | |
| | | | | |
| AES-OCB | 35.3 | 441,250,000 | 4.413 B | 44.13 B |
| | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Table B-6: Cycles/second required for the AES CBC + CBCMAC, AES CTR +
CBCMAC, AES CTR + UMAC, and AES-OCB encryption and authentication
algorithms, operating at line rates of 100 Mbps, 1 Gbps and 10 Gbps,
assuming 1500 octet packets.
Source: Jesse Walker, Intel
At speeds of 100 Mbps, the algorithms are implementable on a high
speed processor. At speeds of 1 Gbps, multiple high speed processors
are required, and none of the algorithms are implementable in
software at 10 Gbps line rate.
<span class="grey">Aboba, et al. Standards Track [Page 68]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-69" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Authors' Addresses
Bernard Aboba
Microsoft Corporation
One Microsoft Way
Redmond, WA 98052
Phone: +1 425 706 6605
Fax: +1 425 936 7329
EMail: bernarda@microsoft.com
Joshua Tseng
McDATA Corporation
3850 North First Street
San Jose, CA 95134-1702
Phone: +1 650 207 8012
EMail: joshtseng@yahoo.com
Jesse Walker
Intel Corporation
2211 NE 25th Avenue
Hillboro, OR 97124
Phone: +1 503 712 1849
Fax: +1 503 264 4843
EMail: jesse.walker@intel.com
Venkat Rangan
Brocade Communications Systems Inc.
1745 Technology Drive,
San Jose, CA 95110
Phone: +1 408 333 7318
Fax: +1 408 333 7099
EMail: vrangan@brocade.com
Franco Travostino
Director, Content Internetworking Lab
Nortel Networks
3 Federal Street
Billerica, MA 01821
Phone: +1 978 288 7708
EMail: travos@nortelnetworks.com
<span class="grey">Aboba, et al. Standards Track [Page 69]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-70" ></span>
<span class="grey"><a href="./rfc3723">RFC 3723</a> Securing Block Storage Protocols over IP April 2004</span>
Full Copyright Statement
Copyright (C) The Internet Society (2004). 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 currently provided by the
Internet Society.
Aboba, et al. Standards Track [Page 70]
</pre>
|