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
|
<pre>Network Working Group R. Arends
Request for Comments: 4035 Telematica Instituut
Obsoletes: <a href="./rfc2535">2535</a>, <a href="./rfc3008">3008</a>, <a href="./rfc3090">3090</a>, <a href="./rfc3445">3445</a>, <a href="./rfc3655">3655</a>, <a href="./rfc3658">3658</a>, R. Austein
<a href="./rfc3755">3755</a>, <a href="./rfc3757">3757</a>, <a href="./rfc3845">3845</a> ISC
Updates: <a href="./rfc1034">1034</a>, <a href="./rfc1035">1035</a>, <a href="./rfc2136">2136</a>, <a href="./rfc2181">2181</a>, <a href="./rfc2308">2308</a>, <a href="./rfc3225">3225</a>, M. Larson
<a href="./rfc3007">3007</a>, <a href="./rfc3597">3597</a>, <a href="./rfc3226">3226</a> VeriSign
Category: Standards Track D. Massey
Colorado State University
S. Rose
NIST
March 2005
<span class="h1">Protocol Modifications for the DNS Security Extensions</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 (2005).
Abstract
This document is part of a family of documents that describe the DNS
Security Extensions (DNSSEC). The DNS Security Extensions are a
collection of new resource records and protocol modifications that
add data origin authentication and data integrity to the DNS. This
document describes the DNSSEC protocol modifications. This document
defines the concept of a signed zone, along with the requirements for
serving and resolving by using DNSSEC. These techniques allow a
security-aware resolver to authenticate both DNS resource records and
authoritative DNS error indications.
This document obsoletes <a href="./rfc2535">RFC 2535</a> and incorporates changes from all
updates to <a href="./rfc2535">RFC 2535</a>.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
Table of Contents
<a href="#section-1">1</a>. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-3">3</a>
<a href="#section-1.1">1.1</a>. Background and Related Documents . . . . . . . . . . . . <a href="#page-4">4</a>
<a href="#section-1.2">1.2</a>. Reserved Words . . . . . . . . . . . . . . . . . . . . . <a href="#page-4">4</a>
<a href="#section-2">2</a>. Zone Signing . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-4">4</a>
<a href="#section-2.1">2.1</a>. Including DNSKEY RRs in a Zone . . . . . . . . . . . . . <a href="#page-5">5</a>
<a href="#section-2.2">2.2</a>. Including RRSIG RRs in a Zone . . . . . . . . . . . . . <a href="#page-5">5</a>
<a href="#section-2.3">2.3</a>. Including NSEC RRs in a Zone . . . . . . . . . . . . . . <a href="#page-6">6</a>
<a href="#section-2.4">2.4</a>. Including DS RRs in a Zone . . . . . . . . . . . . . . . <a href="#page-7">7</a>
2.5. Changes to the CNAME Resource Record. . . . . . . . . . <a href="#page-7">7</a>
2.6. DNSSEC RR Types Appearing at Zone Cuts. . . . . . . . . <a href="#page-8">8</a>
<a href="#section-2.7">2.7</a>. Example of a Secure Zone . . . . . . . . . . . . . . . . <a href="#page-8">8</a>
<a href="#section-3">3</a>. Serving . . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-8">8</a>
<a href="#section-3.1">3.1</a>. Authoritative Name Servers . . . . . . . . . . . . . . . <a href="#page-9">9</a>
<a href="#section-3.1.1">3.1.1</a>. Including RRSIG RRs in a Response . . . . . . . <a href="#page-10">10</a>
<a href="#section-3.1.2">3.1.2</a>. Including DNSKEY RRs in a Response . . . . . . . <a href="#page-11">11</a>
<a href="#section-3.1.3">3.1.3</a>. Including NSEC RRs in a Response . . . . . . . . <a href="#page-11">11</a>
<a href="#section-3.1.4">3.1.4</a>. Including DS RRs in a Response . . . . . . . . . <a href="#page-14">14</a>
<a href="#section-3.1.5">3.1.5</a>. Responding to Queries for Type AXFR or IXFR . . <a href="#page-15">15</a>
3.1.6. The AD and CD Bits in an Authoritative Response. 16
<a href="#section-3.2">3.2</a>. Recursive Name Servers . . . . . . . . . . . . . . . . . <a href="#page-17">17</a>
<a href="#section-3.2.1">3.2.1</a>. The DO Bit . . . . . . . . . . . . . . . . . . . <a href="#page-17">17</a>
<a href="#section-3.2.2">3.2.2</a>. The CD Bit . . . . . . . . . . . . . . . . . . . <a href="#page-17">17</a>
<a href="#section-3.2.3">3.2.3</a>. The AD Bit . . . . . . . . . . . . . . . . . . . <a href="#page-18">18</a>
<a href="#section-3.3">3.3</a>. Example DNSSEC Responses . . . . . . . . . . . . . . . . <a href="#page-19">19</a>
<a href="#section-4">4</a>. Resolving . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-19">19</a>
<a href="#section-4.1">4.1</a>. EDNS Support . . . . . . . . . . . . . . . . . . . . . . <a href="#page-19">19</a>
<a href="#section-4.2">4.2</a>. Signature Verification Support . . . . . . . . . . . . . <a href="#page-19">19</a>
<a href="#section-4.3">4.3</a>. Determining Security Status of Data . . . . . . . . . . <a href="#page-20">20</a>
<a href="#section-4.4">4.4</a>. Configured Trust Anchors . . . . . . . . . . . . . . . . <a href="#page-21">21</a>
<a href="#section-4.5">4.5</a>. Response Caching . . . . . . . . . . . . . . . . . . . . <a href="#page-21">21</a>
<a href="#section-4.6">4.6</a>. Handling of the CD and AD Bits . . . . . . . . . . . . . <a href="#page-22">22</a>
<a href="#section-4.7">4.7</a>. Caching BAD Data . . . . . . . . . . . . . . . . . . . . <a href="#page-22">22</a>
<a href="#section-4.8">4.8</a>. Synthesized CNAMEs . . . . . . . . . . . . . . . . . . . <a href="#page-23">23</a>
<a href="#section-4.9">4.9</a>. Stub Resolvers . . . . . . . . . . . . . . . . . . . . . <a href="#page-23">23</a>
<a href="#section-4.9.1">4.9.1</a>. Handling of the DO Bit . . . . . . . . . . . . . <a href="#page-24">24</a>
<a href="#section-4.9.2">4.9.2</a>. Handling of the CD Bit . . . . . . . . . . . . . <a href="#page-24">24</a>
<a href="#section-4.9.3">4.9.3</a>. Handling of the AD Bit . . . . . . . . . . . . . <a href="#page-24">24</a>
<a href="#section-5">5</a>. Authenticating DNS Responses . . . . . . . . . . . . . . . . . <a href="#page-25">25</a>
<a href="#section-5.1">5.1</a>. Special Considerations for Islands of Security . . . . . <a href="#page-26">26</a>
<a href="#section-5.2">5.2</a>. Authenticating Referrals . . . . . . . . . . . . . . . . <a href="#page-26">26</a>
<a href="#section-5.3">5.3</a>. Authenticating an RRset with an RRSIG RR . . . . . . . . <a href="#page-28">28</a>
<a href="#section-5.3.1">5.3.1</a>. Checking the RRSIG RR Validity . . . . . . . . . <a href="#page-28">28</a>
<a href="#section-5.3.2">5.3.2</a>. Reconstructing the Signed Data . . . . . . . . . <a href="#page-29">29</a>
<a href="#section-5.3.3">5.3.3</a>. Checking the Signature . . . . . . . . . . . . . <a href="#page-31">31</a>
5.3.4. Authenticating a Wildcard Expanded RRset
Positive Response. . . . . . . . . . . . . . . . <a href="#page-32">32</a>
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
<a href="#section-5.4">5.4</a>. Authenticated Denial of Existence . . . . . . . . . . . <a href="#page-32">32</a>
<a href="#section-5.5">5.5</a>. Resolver Behavior When Signatures Do Not Validate . . . <a href="#page-33">33</a>
<a href="#section-5.6">5.6</a>. Authentication Example . . . . . . . . . . . . . . . . . <a href="#page-33">33</a>
<a href="#section-6">6</a>. IANA Considerations . . . . . . . . . . . . . . . . . . . . . <a href="#page-33">33</a>
<a href="#section-7">7</a>. Security Considerations . . . . . . . . . . . . . . . . . . . <a href="#page-33">33</a>
<a href="#section-8">8</a>. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-34">34</a>
<a href="#section-9">9</a>. References . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-34">34</a>
<a href="#section-9.1">9.1</a>. Normative References . . . . . . . . . . . . . . . . . . <a href="#page-34">34</a>
<a href="#section-9.2">9.2</a>. Informative References . . . . . . . . . . . . . . . . . <a href="#page-35">35</a>
<a href="#appendix-A">A</a>. Signed Zone Example . . . . . . . . . . . . . . . . . . . . . <a href="#page-36">36</a>
<a href="#appendix-B">B</a>. Example Responses . . . . . . . . . . . . . . . . . . . . . . <a href="#page-41">41</a>
<a href="#appendix-B.1">B.1</a>. Answer . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-41">41</a>
<a href="#appendix-B.2">B.2</a>. Name Error . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-43">43</a>
<a href="#appendix-B.3">B.3</a>. No Data Error . . . . . . . . . . . . . . . . . . . . . <a href="#page-44">44</a>
<a href="#appendix-B.4">B.4</a>. Referral to Signed Zone . . . . . . . . . . . . . . . . <a href="#page-44">44</a>
<a href="#appendix-B.5">B.5</a>. Referral to Unsigned Zone . . . . . . . . . . . . . . . <a href="#page-45">45</a>
<a href="#appendix-B.6">B.6</a>. Wildcard Expansion . . . . . . . . . . . . . . . . . . . <a href="#page-46">46</a>
<a href="#appendix-B.7">B.7</a>. Wildcard No Data Error . . . . . . . . . . . . . . . . . <a href="#page-47">47</a>
<a href="#appendix-B.8">B.8</a>. DS Child Zone No Data Error . . . . . . . . . . . . . . <a href="#page-48">48</a>
<a href="#appendix-C">C</a>. Authentication Examples . . . . . . . . . . . . . . . . . . . <a href="#page-49">49</a>
<a href="#appendix-C.1">C.1</a>. Authenticating an Answer . . . . . . . . . . . . . . . . <a href="#page-49">49</a>
<a href="#appendix-C.1.1">C.1.1</a>. Authenticating the Example DNSKEY RR . . . . . . <a href="#page-49">49</a>
<a href="#appendix-C.2">C.2</a>. Name Error . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-50">50</a>
<a href="#appendix-C.3">C.3</a>. No Data Error . . . . . . . . . . . . . . . . . . . . . <a href="#page-50">50</a>
<a href="#appendix-C.4">C.4</a>. Referral to Signed Zone . . . . . . . . . . . . . . . . <a href="#page-50">50</a>
<a href="#appendix-C.5">C.5</a>. Referral to Unsigned Zone . . . . . . . . . . . . . . . <a href="#page-51">51</a>
<a href="#appendix-C.6">C.6</a>. Wildcard Expansion . . . . . . . . . . . . . . . . . . . <a href="#page-51">51</a>
<a href="#appendix-C.7">C.7</a>. Wildcard No Data Error . . . . . . . . . . . . . . . . . <a href="#page-51">51</a>
<a href="#appendix-C.8">C.8</a>. DS Child Zone No Data Error . . . . . . . . . . . . . . <a href="#page-51">51</a>
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-52">52</a>
Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . <a href="#page-53">53</a>
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
The DNS Security Extensions (DNSSEC) are a collection of new resource
records and protocol modifications that add data origin
authentication and data integrity to the DNS. This document defines
the DNSSEC protocol modifications. <a href="#section-2">Section 2</a> of this document
defines the concept of a signed zone and lists the requirements for
zone signing. <a href="#section-3">Section 3</a> describes the modifications to authoritative
name server behavior necessary for handling signed zones. <a href="#section-4">Section 4</a>
describes the behavior of entities that include security-aware
resolver functions. Finally, <a href="#section-5">Section 5</a> defines how to use DNSSEC RRs
to authenticate a response.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
<span class="h3"><a class="selflink" id="section-1.1" href="#section-1.1">1.1</a>. Background and Related Documents</span>
This document is part of a family of documents defining DNSSEC that
should be read together as a set.
[<a id="ref-RFC4033">RFC4033</a>] contains an introduction to DNSSEC and definitions of
common terms; the reader is assumed to be familiar with this
document. [<a href="./rfc4033" title=""DNS Security Introduction and Requirements"">RFC4033</a>] also contains a list of other documents updated
by and obsoleted by this document set.
[<a id="ref-RFC4034">RFC4034</a>] defines the DNSSEC resource records.
The reader is also assumed to be familiar with the basic DNS concepts
described in [<a href="./rfc1034" title=""Domain names - concepts and facilities"">RFC1034</a>], [<a href="./rfc1035" title=""Domain names - implementation and specification"">RFC1035</a>], and the subsequent documents that
update them; particularly, [<a href="./rfc2181" title=""Clarifications to the DNS Specification"">RFC2181</a>] and [<a href="./rfc2308" title=""Negative Caching of DNS Queries (DNS NCACHE)"">RFC2308</a>].
This document defines the DNSSEC protocol operations.
<span class="h3"><a class="selflink" id="section-1.2" href="#section-1.2">1.2</a>. Reserved Words</span>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [<a href="./rfc2119" title=""Key words for use in RFCs to Indicate Requirement Levels"">RFC2119</a>].
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Zone Signing</span>
DNSSEC introduces the concept of signed zones. A signed zone
includes DNS Public Key (DNSKEY), Resource Record Signature (RRSIG),
Next Secure (NSEC), and (optionally) Delegation Signer (DS) records
according to the rules specified in Sections <a href="#section-2.1">2.1</a>, <a href="#section-2.2">2.2</a>, <a href="#section-2.3">2.3</a>, and <a href="#section-2.4">2.4</a>,
respectively. A zone that does not include these records according
to the rules in this section is an unsigned zone.
DNSSEC requires a change to the definition of the CNAME resource
record ([<a href="./rfc1035" title=""Domain names - implementation and specification"">RFC1035</a>]). <a href="#section-2.5">Section 2.5</a> changes the CNAME RR to allow RRSIG
and NSEC RRs to appear at the same owner name as does a CNAME RR.
DNSSEC specifies the placement of two new RR types, NSEC and DS,
which can be placed at the parental side of a zone cut (that is, at a
delegation point). This is an exception to the general prohibition
against putting data in the parent zone at a zone cut. <a href="#section-2.6">Section 2.6</a>
describes this change.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
<span class="h3"><a class="selflink" id="section-2.1" href="#section-2.1">2.1</a>. Including DNSKEY RRs in a Zone</span>
To sign a zone, the zone's administrator generates one or more
public/private key pairs and uses the private key(s) to sign
authoritative RRsets in the zone. For each private key used to
create RRSIG RRs in a zone, the zone SHOULD include a zone DNSKEY RR
containing the corresponding public key. A zone key DNSKEY RR MUST
have the Zone Key bit of the flags RDATA field set (see <a href="./rfc4034#section-2.1.1">Section 2.1.1
of [RFC4034]</a>). Public keys associated with other DNS operations MAY
be stored in DNSKEY RRs that are not marked as zone keys but MUST NOT
be used to verify RRSIGs.
If the zone administrator intends a signed zone to be usable other
than as an island of security, the zone apex MUST contain at least
one DNSKEY RR to act as a secure entry point into the zone. This
secure entry point could then be used as the target of a secure
delegation via a corresponding DS RR in the parent zone (see
[<a href="./rfc4034" title=""Resource Records for DNS Security Extensions"">RFC4034</a>]).
<span class="h3"><a class="selflink" id="section-2.2" href="#section-2.2">2.2</a>. Including RRSIG RRs in a Zone</span>
For each authoritative RRset in a signed zone, there MUST be at least
one RRSIG record that meets the following requirements:
o The RRSIG owner name is equal to the RRset owner name.
o The RRSIG class is equal to the RRset class.
o The RRSIG Type Covered field is equal to the RRset type.
o The RRSIG Original TTL field is equal to the TTL of the RRset.
o The RRSIG RR's TTL is equal to the TTL of the RRset.
o The RRSIG Labels field is equal to the number of labels in the
RRset owner name, not counting the null root label and not
counting the leftmost label if it is a wildcard.
o The RRSIG Signer's Name field is equal to the name of the zone
containing the RRset.
o The RRSIG Algorithm, Signer's Name, and Key Tag fields identify a
zone key DNSKEY record at the zone apex.
The process for constructing the RRSIG RR for a given RRset is
described in [<a href="./rfc4034" title=""Resource Records for DNS Security Extensions"">RFC4034</a>]. An RRset MAY have multiple RRSIG RRs
associated with it. Note that as RRSIG RRs are closely tied to the
RRsets whose signatures they contain, RRSIG RRs, unlike all other DNS
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
RR types, do not form RRsets. In particular, the TTL values among
RRSIG RRs with a common owner name do not follow the RRset rules
described in [<a href="./rfc2181" title=""Clarifications to the DNS Specification"">RFC2181</a>].
An RRSIG RR itself MUST NOT be signed, as signing an RRSIG RR would
add no value and would create an infinite loop in the signing
process.
The NS RRset that appears at the zone apex name MUST be signed, but
the NS RRsets that appear at delegation points (that is, the NS
RRsets in the parent zone that delegate the name to the child zone's
name servers) MUST NOT be signed. Glue address RRsets associated
with delegations MUST NOT be signed.
There MUST be an RRSIG for each RRset using at least one DNSKEY of
each algorithm in the zone apex DNSKEY RRset. The apex DNSKEY RRset
itself MUST be signed by each algorithm appearing in the DS RRset
located at the delegating parent (if any).
<span class="h3"><a class="selflink" id="section-2.3" href="#section-2.3">2.3</a>. Including NSEC RRs in a Zone</span>
Each owner name in the zone that has authoritative data or a
delegation point NS RRset MUST have an NSEC resource record. The
format of NSEC RRs and the process for constructing the NSEC RR for a
given name is described in [<a href="./rfc4034" title=""Resource Records for DNS Security Extensions"">RFC4034</a>].
The TTL value for any NSEC RR SHOULD be the same as the minimum TTL
value field in the zone SOA RR.
An NSEC record (and its associated RRSIG RRset) MUST NOT be the only
RRset at any particular owner name. That is, the signing process
MUST NOT create NSEC or RRSIG RRs for owner name nodes that were not
the owner name of any RRset before the zone was signed. The main
reasons for this are a desire for namespace consistency between
signed and unsigned versions of the same zone and a desire to reduce
the risk of response inconsistency in security oblivious recursive
name servers.
The type bitmap of every NSEC resource record in a signed zone MUST
indicate the presence of both the NSEC record itself and its
corresponding RRSIG record.
The difference between the set of owner names that require RRSIG
records and the set of owner names that require NSEC records is
subtle and worth highlighting. RRSIG records are present at the
owner names of all authoritative RRsets. NSEC records are present at
the owner names of all names for which the signed zone is
authoritative and also at the owner names of delegations from the
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
signed zone to its children. Neither NSEC nor RRSIG records are
present (in the parent zone) at the owner names of glue address
RRsets. Note, however, that this distinction is for the most part
visible only during the zone signing process, as NSEC RRsets are
authoritative data and are therefore signed. Thus, any owner name
that has an NSEC RRset will have RRSIG RRs as well in the signed
zone.
The bitmap for the NSEC RR at a delegation point requires special
attention. Bits corresponding to the delegation NS RRset and any
RRsets for which the parent zone has authoritative data MUST be set;
bits corresponding to any non-NS RRset for which the parent is not
authoritative MUST be clear.
<span class="h3"><a class="selflink" id="section-2.4" href="#section-2.4">2.4</a>. Including DS RRs in a Zone</span>
The DS resource record establishes authentication chains between DNS
zones. A DS RRset SHOULD be present at a delegation point when the
child zone is signed. The DS RRset MAY contain multiple records,
each referencing a public key in the child zone used to verify the
RRSIGs in that zone. All DS RRsets in a zone MUST be signed, and DS
RRsets MUST NOT appear at a zone's apex.
A DS RR SHOULD point to a DNSKEY RR that is present in the child's
apex DNSKEY RRset, and the child's apex DNSKEY RRset SHOULD be signed
by the corresponding private key. DS RRs that fail to meet these
conditions are not useful for validation, but because the DS RR and
its corresponding DNSKEY RR are in different zones, and because the
DNS is only loosely consistent, temporary mismatches can occur.
The TTL of a DS RRset SHOULD match the TTL of the delegating NS RRset
(that is, the NS RRset from the same zone containing the DS RRset).
Construction of a DS RR requires knowledge of the corresponding
DNSKEY RR in the child zone, which implies communication between the
child and parent zones. This communication is an operational matter
not covered by this document.
<span class="h3"><a class="selflink" id="section-2.5" href="#section-2.5">2.5</a>. Changes to the CNAME Resource Record</span>
If a CNAME RRset is present at a name in a signed zone, appropriate
RRSIG and NSEC RRsets are REQUIRED at that name. A KEY RRset at that
name for secure dynamic update purposes is also allowed ([<a href="./rfc3007" title=""Secure Domain Name System (DNS) Dynamic Update"">RFC3007</a>]).
Other types MUST NOT be present at that name.
This is a modification to the original CNAME definition given in
[<a href="./rfc1034" title=""Domain names - concepts and facilities"">RFC1034</a>]. The original definition of the CNAME RR did not allow any
other types to coexist with a CNAME record, but a signed zone
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
requires NSEC and RRSIG RRs for every authoritative name. To resolve
this conflict, this specification modifies the definition of the
CNAME resource record to allow it to coexist with NSEC and RRSIG RRs.
<span class="h3"><a class="selflink" id="section-2.6" href="#section-2.6">2.6</a>. DNSSEC RR Types Appearing at Zone Cuts</span>
DNSSEC introduced two new RR types that are unusual in that they can
appear at the parental side of a zone cut. At the parental side of a
zone cut (that is, at a delegation point), NSEC RRs are REQUIRED at
the owner name. A DS RR could also be present if the zone being
delegated is signed and seeks to have a chain of authentication to
the parent zone. This is an exception to the original DNS
specification ([<a href="./rfc1034" title=""Domain names - concepts and facilities"">RFC1034</a>]), which states that only NS RRsets could
appear at the parental side of a zone cut.
This specification updates the original DNS specification to allow
NSEC and DS RR types at the parent side of a zone cut. These RRsets
are authoritative for the parent when they appear at the parent side
of a zone cut.
<span class="h3"><a class="selflink" id="section-2.7" href="#section-2.7">2.7</a>. Example of a Secure Zone</span>
<a href="#appendix-A">Appendix A</a> shows a complete example of a small signed zone.
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. Serving</span>
This section describes the behavior of entities that include
security-aware name server functions. In many cases such functions
will be part of a security-aware recursive name server, but a
security-aware authoritative name server has some of the same
requirements. Functions specific to security-aware recursive name
servers are described in <a href="#section-3.2">Section 3.2</a>; functions specific to
authoritative servers are described in <a href="#section-3.1">Section 3.1</a>.
In the following discussion, the terms "SNAME", "SCLASS", and "STYPE"
are as used in [<a href="./rfc1034" title=""Domain names - concepts and facilities"">RFC1034</a>].
A security-aware name server MUST support the EDNS0 ([<a href="./rfc2671" title=""Extension Mechanisms for DNS (EDNS0)"">RFC2671</a>])
message size extension, MUST support a message size of at least 1220
octets, and SHOULD support a message size of 4000 octets. As IPv6
packets can only be fragmented by the source host, a security aware
name server SHOULD take steps to ensure that UDP datagrams it
transmits over IPv6 are fragmented, if necessary, at the minimum IPv6
MTU, unless the path MTU is known. Please see [<a href="./rfc1122" title=""Requirements for Internet Hosts - Communication Layers"">RFC1122</a>], [<a href="./rfc2460" title=""Internet Protocol, Version 6 (IPv6) Specification"">RFC2460</a>],
and [<a href="./rfc3226" title=""DNSSEC and IPv6 A6 aware server/resolver message size requirements"">RFC3226</a>] for further discussion of packet size and fragmentation
issues.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
A security-aware name server that receives a DNS query that does not
include the EDNS OPT pseudo-RR or that has the DO bit clear MUST
treat the RRSIG, DNSKEY, and NSEC RRs as it would any other RRset and
MUST NOT perform any of the additional processing described below.
Because the DS RR type has the peculiar property of only existing in
the parent zone at delegation points, DS RRs always require some
special processing, as described in <a href="#section-3.1.4.1">Section 3.1.4.1</a>.
Security aware name servers that receive explicit queries for
security RR types that match the content of more than one zone that
it serves (for example, NSEC and RRSIG RRs above and below a
delegation point where the server is authoritative for both zones)
should behave self-consistently. As long as the response is always
consistent for each query to the name server, the name server MAY
return one of the following:
o The above-delegation RRsets.
o The below-delegation RRsets.
o Both above and below-delegation RRsets.
o Empty answer section (no records).
o Some other response.
o An error.
DNSSEC allocates two new bits in the DNS message header: the CD
(Checking Disabled) bit and the AD (Authentic Data) bit. The CD bit
is controlled by resolvers; a security-aware name server MUST copy
the CD bit from a query into the corresponding response. The AD bit
is controlled by name servers; a security-aware name server MUST
ignore the setting of the AD bit in queries. See Sections <a href="#section-3.1.6">3.1.6</a>,
3.2.2, 3.2.3, 4, and 4.9 for details on the behavior of these bits.
A security aware name server that synthesizes CNAME RRs from DNAME
RRs as described in [<a href="./rfc2672" title=""Non-Terminal DNS Name Redirection"">RFC2672</a>] SHOULD NOT generate signatures for the
synthesized CNAME RRs.
<span class="h3"><a class="selflink" id="section-3.1" href="#section-3.1">3.1</a>. Authoritative Name Servers</span>
Upon receiving a relevant query that has the EDNS ([<a href="./rfc2671" title=""Extension Mechanisms for DNS (EDNS0)"">RFC2671</a>]) OPT
pseudo-RR DO bit ([<a href="./rfc3225" title=""Indicating Resolver Support of DNSSEC"">RFC3225</a>]) set, a security-aware authoritative name
server for a signed zone MUST include additional RRSIG, NSEC, and DS
RRs, according to the following rules:
o RRSIG RRs that can be used to authenticate a response MUST be
included in the response according to the rules in <a href="#section-3.1.1">Section 3.1.1</a>.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
o NSEC RRs that can be used to provide authenticated denial of
existence MUST be included in the response automatically according
to the rules in <a href="#section-3.1.3">Section 3.1.3</a>.
o Either a DS RRset or an NSEC RR proving that no DS RRs exist MUST
be included in referrals automatically according to the rules in
<a href="#section-3.1.4">Section 3.1.4</a>.
These rules only apply to responses where the semantics convey
information about the presence or absence of resource records. That
is, these rules are not intended to rule out responses such as RCODE
4 ("Not Implemented") or RCODE 5 ("Refused").
DNSSEC does not change the DNS zone transfer protocol. <a href="#section-3.1.5">Section 3.1.5</a>
discusses zone transfer requirements.
<span class="h4"><a class="selflink" id="section-3.1.1" href="#section-3.1.1">3.1.1</a>. Including RRSIG RRs in a Response</span>
When responding to a query that has the DO bit set, a security-aware
authoritative name server SHOULD attempt to send RRSIG RRs that a
security-aware resolver can use to authenticate the RRsets in the
response. A name server SHOULD make every attempt to keep the RRset
and its associated RRSIG(s) together in a response. Inclusion of
RRSIG RRs in a response is subject to the following rules:
o When placing a signed RRset in the Answer section, the name server
MUST also place its RRSIG RRs in the Answer section. The RRSIG
RRs have a higher priority for inclusion than any other RRsets
that may have to be included. If space does not permit inclusion
of these RRSIG RRs, the name server MUST set the TC bit.
o When placing a signed RRset in the Authority section, the name
server MUST also place its RRSIG RRs in the Authority section.
The RRSIG RRs have a higher priority for inclusion than any other
RRsets that may have to be included. If space does not permit
inclusion of these RRSIG RRs, the name server MUST set the TC bit.
o When placing a signed RRset in the Additional section, the name
server MUST also place its RRSIG RRs in the Additional section.
If space does not permit inclusion of both the RRset and its
associated RRSIG RRs, the name server MAY retain the RRset while
dropping the RRSIG RRs. If this happens, the name server MUST NOT
set the TC bit solely because these RRSIG RRs didn't fit.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
<span class="h4"><a class="selflink" id="section-3.1.2" href="#section-3.1.2">3.1.2</a>. Including DNSKEY RRs in a Response</span>
When responding to a query that has the DO bit set and that requests
the SOA or NS RRs at the apex of a signed zone, a security-aware
authoritative name server for that zone MAY return the zone apex
DNSKEY RRset in the Additional section. In this situation, the
DNSKEY RRset and associated RRSIG RRs have lower priority than does
any other information that would be placed in the additional section.
The name server SHOULD NOT include the DNSKEY RRset unless there is
enough space in the response message for both the DNSKEY RRset and
its associated RRSIG RR(s). If there is not enough space to include
these DNSKEY and RRSIG RRs, the name server MUST omit them and MUST
NOT set the TC bit solely because these RRs didn't fit (see <a href="#section-3.1.1">Section</a>
<a href="#section-3.1.1">3.1.1</a>).
<span class="h4"><a class="selflink" id="section-3.1.3" href="#section-3.1.3">3.1.3</a>. Including NSEC RRs in a Response</span>
When responding to a query that has the DO bit set, a security-aware
authoritative name server for a signed zone MUST include NSEC RRs in
each of the following cases:
No Data: The zone contains RRsets that exactly match <SNAME, SCLASS>
but does not contain any RRsets that exactly match <SNAME, SCLASS,
STYPE>.
Name Error: The zone does not contain any RRsets that match <SNAME,
SCLASS> either exactly or via wildcard name expansion.
Wildcard Answer: The zone does not contain any RRsets that exactly
match <SNAME, SCLASS> but does contain an RRset that matches
<SNAME, SCLASS, STYPE> via wildcard name expansion.
Wildcard No Data: The zone does not contain any RRsets that exactly
match <SNAME, SCLASS> and does contain one or more RRsets that
match <SNAME, SCLASS> via wildcard name expansion, but does not
contain any RRsets that match <SNAME, SCLASS, STYPE> via wildcard
name expansion.
In each of these cases, the name server includes NSEC RRs in the
response to prove that an exact match for <SNAME, SCLASS, STYPE> was
not present in the zone and that the response that the name server is
returning is correct given the data in the zone.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
<span class="h5"><a class="selflink" id="section-3.1.3.1" href="#section-3.1.3.1">3.1.3.1</a>. Including NSEC RRs: No Data Response</span>
If the zone contains RRsets matching <SNAME, SCLASS> but contains no
RRset matching <SNAME, SCLASS, STYPE>, then the name server MUST
include the NSEC RR for <SNAME, SCLASS> along with its associated
RRSIG RR(s) in the Authority section of the response (see <a href="#section-3.1.1">Section</a>
<a href="#section-3.1.1">3.1.1</a>). If space does not permit inclusion of the NSEC RR or its
associated RRSIG RR(s), the name server MUST set the TC bit (see
<a href="#section-3.1.1">Section 3.1.1</a>).
Since the search name exists, wildcard name expansion does not apply
to this query, and a single signed NSEC RR suffices to prove that the
requested RR type does not exist.
<span class="h5"><a class="selflink" id="section-3.1.3.2" href="#section-3.1.3.2">3.1.3.2</a>. Including NSEC RRs: Name Error Response</span>
If the zone does not contain any RRsets matching <SNAME, SCLASS>
either exactly or via wildcard name expansion, then the name server
MUST include the following NSEC RRs in the Authority section, along
with their associated RRSIG RRs:
o An NSEC RR proving that there is no exact match for <SNAME,
SCLASS>.
o An NSEC RR proving that the zone contains no RRsets that would
match <SNAME, SCLASS> via wildcard name expansion.
In some cases, a single NSEC RR may prove both of these points. If
it does, the name server SHOULD only include the NSEC RR and its
RRSIG RR(s) once in the Authority section.
If space does not permit inclusion of these NSEC and RRSIG RRs, the
name server MUST set the TC bit (see <a href="#section-3.1.1">Section 3.1.1</a>).
The owner names of these NSEC and RRSIG RRs are not subject to
wildcard name expansion when these RRs are included in the Authority
section of the response.
Note that this form of response includes cases in which SNAME
corresponds to an empty non-terminal name within the zone (a name
that is not the owner name for any RRset but that is the parent name
of one or more RRsets).
<span class="h5"><a class="selflink" id="section-3.1.3.3" href="#section-3.1.3.3">3.1.3.3</a>. Including NSEC RRs: Wildcard Answer Response</span>
If the zone does not contain any RRsets that exactly match <SNAME,
SCLASS> but does contain an RRset that matches <SNAME, SCLASS, STYPE>
via wildcard name expansion, the name server MUST include the
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
wildcard-expanded answer and the corresponding wildcard-expanded
RRSIG RRs in the Answer section and MUST include in the Authority
section an NSEC RR and associated RRSIG RR(s) proving that the zone
does not contain a closer match for <SNAME, SCLASS>. If space does
not permit inclusion of the answer, NSEC and RRSIG RRs, the name
server MUST set the TC bit (see <a href="#section-3.1.1">Section 3.1.1</a>).
<span class="h5"><a class="selflink" id="section-3.1.3.4" href="#section-3.1.3.4">3.1.3.4</a>. Including NSEC RRs: Wildcard No Data Response</span>
This case is a combination of the previous cases. The zone does not
contain an exact match for <SNAME, SCLASS>, and although the zone
does contain RRsets that match <SNAME, SCLASS> via wildcard
expansion, none of those RRsets matches STYPE. The name server MUST
include the following NSEC RRs in the Authority section, along with
their associated RRSIG RRs:
o An NSEC RR proving that there are no RRsets matching STYPE at the
wildcard owner name that matched <SNAME, SCLASS> via wildcard
expansion.
o An NSEC RR proving that there are no RRsets in the zone that would
have been a closer match for <SNAME, SCLASS>.
In some cases, a single NSEC RR may prove both of these points. If
it does, the name server SHOULD only include the NSEC RR and its
RRSIG RR(s) once in the Authority section.
The owner names of these NSEC and RRSIG RRs are not subject to
wildcard name expansion when these RRs are included in the Authority
section of the response.
If space does not permit inclusion of these NSEC and RRSIG RRs, the
name server MUST set the TC bit (see <a href="#section-3.1.1">Section 3.1.1</a>).
<span class="h5"><a class="selflink" id="section-3.1.3.5" href="#section-3.1.3.5">3.1.3.5</a>. Finding the Right NSEC RRs</span>
As explained above, there are several situations in which a
security-aware authoritative name server has to locate an NSEC RR
that proves that no RRsets matching a particular SNAME exist.
Locating such an NSEC RR within an authoritative zone is relatively
simple, at least in concept. The following discussion assumes that
the name server is authoritative for the zone that would have held
the non-existent RRsets matching SNAME. The algorithm below is
written for clarity, not for efficiency.
To find the NSEC that proves that no RRsets matching name N exist in
the zone Z that would have held them, construct a sequence, S,
consisting of the owner names of every RRset in Z, sorted into
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
canonical order ([<a href="./rfc4034" title=""Resource Records for DNS Security Extensions"">RFC4034</a>]), with no duplicate names. Find the name
M that would have immediately preceded N in S if any RRsets with
owner name N had existed. M is the owner name of the NSEC RR that
proves that no RRsets exist with owner name N.
The algorithm for finding the NSEC RR that proves that a given name
is not covered by any applicable wildcard is similar but requires an
extra step. More precisely, the algorithm for finding the NSEC
proving that no RRsets exist with the applicable wildcard name is
precisely the same as the algorithm for finding the NSEC RR that
proves that RRsets with any other owner name do not exist. The part
that's missing is a method of determining the name of the non-
existent applicable wildcard. In practice, this is easy, because the
authoritative name server has already checked for the presence of
precisely this wildcard name as part of step (1)(c) of the normal
lookup algorithm described in <a href="./rfc1034#section-4.3.2">Section 4.3.2 of [RFC1034]</a>.
<span class="h4"><a class="selflink" id="section-3.1.4" href="#section-3.1.4">3.1.4</a>. Including DS RRs in a Response</span>
When responding to a query that has the DO bit set, a security-aware
authoritative name server returning a referral includes DNSSEC data
along with the NS RRset.
If a DS RRset is present at the delegation point, the name server
MUST return both the DS RRset and its associated RRSIG RR(s) in the
Authority section along with the NS RRset.
If no DS RRset is present at the delegation point, the name server
MUST return both the NSEC RR that proves that the DS RRset is not
present and the NSEC RR's associated RRSIG RR(s) along with the NS
RRset. The name server MUST place the NS RRset before the NSEC RRset
and its associated RRSIG RR(s).
Including these DS, NSEC, and RRSIG RRs increases the size of
referral messages and may cause some or all glue RRs to be omitted.
If space does not permit inclusion of the DS or NSEC RRset and
associated RRSIG RRs, the name server MUST set the TC bit (see
<a href="#section-3.1.1">Section 3.1.1</a>).
<span class="h5"><a class="selflink" id="section-3.1.4.1" href="#section-3.1.4.1">3.1.4.1</a>. Responding to Queries for DS RRs</span>
The DS resource record type is unusual in that it appears only on the
parent zone's side of a zone cut. For example, the DS RRset for the
delegation of "foo.example" is stored in the "example" zone rather
than in the "foo.example" zone. This requires special processing
rules for both name servers and resolvers, as the name server for the
child zone is authoritative for the name at the zone cut by the
normal DNS rules but the child zone does not contain the DS RRset.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
A security-aware resolver sends queries to the parent zone when
looking for a needed DS RR at a delegation point (see <a href="#section-4.2">Section 4.2</a>).
However, special rules are necessary to avoid confusing
security-oblivious resolvers which might become involved in
processing such a query (for example, in a network configuration that
forces a security-aware resolver to channel its queries through a
security-oblivious recursive name server). The rest of this section
describes how a security-aware name server processes DS queries in
order to avoid this problem.
The need for special processing by a security-aware name server only
arises when all the following conditions are met:
o The name server has received a query for the DS RRset at a zone
cut.
o The name server is authoritative for the child zone.
o The name server is not authoritative for the parent zone.
o The name server does not offer recursion.
In all other cases, the name server either has some way of obtaining
the DS RRset or could not have been expected to have the DS RRset
even by the pre-DNSSEC processing rules, so the name server can
return either the DS RRset or an error response according to the
normal processing rules.
If all the above conditions are met, however, the name server is
authoritative for SNAME but cannot supply the requested RRset. In
this case, the name server MUST return an authoritative "no data"
response showing that the DS RRset does not exist in the child zone's
apex. See <a href="#appendix-B.8">Appendix B.8</a> for an example of such a response.
<span class="h4"><a class="selflink" id="section-3.1.5" href="#section-3.1.5">3.1.5</a>. Responding to Queries for Type AXFR or IXFR</span>
DNSSEC does not change the DNS zone transfer process. A signed zone
will contain RRSIG, DNSKEY, NSEC, and DS resource records, but these
records have no special meaning with respect to a zone transfer
operation.
An authoritative name server is not required to verify that a zone is
properly signed before sending or accepting a zone transfer.
However, an authoritative name server MAY choose to reject the entire
zone transfer if the zone fails to meet any of the signing
requirements described in <a href="#section-2">Section 2</a>. The primary objective of a zone
transfer is to ensure that all authoritative name servers have
identical copies of the zone. An authoritative name server that
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
chooses to perform its own zone validation MUST NOT selectively
reject some RRs and accept others.
DS RRsets appear only on the parental side of a zone cut and are
authoritative data in the parent zone. As with any other
authoritative RRset, the DS RRset MUST be included in zone transfers
of the zone in which the RRset is authoritative data. In the case of
the DS RRset, this is the parent zone.
NSEC RRs appear in both the parent and child zones at a zone cut and
are authoritative data in both the parent and child zones. The
parental and child NSEC RRs at a zone cut are never identical to each
other, as the NSEC RR in the child zone's apex will always indicate
the presence of the child zone's SOA RR whereas the parental NSEC RR
at the zone cut will never indicate the presence of an SOA RR. As
with any other authoritative RRs, NSEC RRs MUST be included in zone
transfers of the zone in which they are authoritative data. The
parental NSEC RR at a zone cut MUST be included in zone transfers of
the parent zone, and the NSEC at the zone apex of the child zone MUST
be included in zone transfers of the child zone.
RRSIG RRs appear in both the parent and child zones at a zone cut and
are authoritative in whichever zone contains the authoritative RRset
for which the RRSIG RR provides the signature. That is, the RRSIG RR
for a DS RRset or a parental NSEC RR at a zone cut will be
authoritative in the parent zone, and the RRSIG for any RRset in the
child zone's apex will be authoritative in the child zone. Parental
and child RRSIG RRs at a zone cut will never be identical to each
other, as the Signer's Name field of an RRSIG RR in the child zone's
apex will indicate a DNSKEY RR in the child zone's apex whereas the
same field of a parental RRSIG RR at the zone cut will indicate a
DNSKEY RR in the parent zone's apex. As with any other authoritative
RRs, RRSIG RRs MUST be included in zone transfers of the zone in
which they are authoritative data.
<span class="h4"><a class="selflink" id="section-3.1.6" href="#section-3.1.6">3.1.6</a>. The AD and CD Bits in an Authoritative Response</span>
The CD and AD bits are designed for use in communication between
security-aware resolvers and security-aware recursive name servers.
These bits are for the most part not relevant to query processing by
security-aware authoritative name servers.
A security-aware name server does not perform signature validation
for authoritative data during query processing, even when the CD bit
is clear. A security-aware name server SHOULD clear the CD bit when
composing an authoritative response.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
A security-aware name server MUST NOT set the AD bit in a response
unless the name server considers all RRsets in the Answer and
Authority sections of the response to be authentic. A security-aware
name server's local policy MAY consider data from an authoritative
zone to be authentic without further validation. However, the name
server MUST NOT do so unless the name server obtained the
authoritative zone via secure means (such as a secure zone transfer
mechanism) and MUST NOT do so unless this behavior has been
configured explicitly.
A security-aware name server that supports recursion MUST follow the
rules for the CD and AD bits given in <a href="#section-3.2">Section 3.2</a> when generating a
response that involves data obtained via recursion.
<span class="h3"><a class="selflink" id="section-3.2" href="#section-3.2">3.2</a>. Recursive Name Servers</span>
As explained in [<a href="./rfc4033" title=""DNS Security Introduction and Requirements"">RFC4033</a>], a security-aware recursive name server is
an entity that acts in both the security-aware name server and
security-aware resolver roles. This section uses the terms "name
server side" and "resolver side" to refer to the code within a
security-aware recursive name server that implements the
security-aware name server role and the code that implements the
security-aware resolver role, respectively.
The resolver side follows the usual rules for caching and negative
caching that would apply to any security-aware resolver.
<span class="h4"><a class="selflink" id="section-3.2.1" href="#section-3.2.1">3.2.1</a>. The DO Bit</span>
The resolver side of a security-aware recursive name server MUST set
the DO bit when sending requests, regardless of the state of the DO
bit in the initiating request received by the name server side. If
the DO bit in an initiating query is not set, the name server side
MUST strip any authenticating DNSSEC RRs from the response but MUST
NOT strip any DNSSEC RR types that the initiating query explicitly
requested.
<span class="h4"><a class="selflink" id="section-3.2.2" href="#section-3.2.2">3.2.2</a>. The CD Bit</span>
The CD bit exists in order to allow a security-aware resolver to
disable signature validation in a security-aware name server's
processing of a particular query.
The name server side MUST copy the setting of the CD bit from a query
to the corresponding response.
The name server side of a security-aware recursive name server MUST
pass the state of the CD bit to the resolver side along with the rest
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
of an initiating query, so that the resolver side will know whether
it is required to verify the response data it returns to the name
server side. If the CD bit is set, it indicates that the originating
resolver is willing to perform whatever authentication its local
policy requires. Thus, the resolver side of the recursive name
server need not perform authentication on the RRsets in the response.
When the CD bit is set, the recursive name server SHOULD, if
possible, return the requested data to the originating resolver, even
if the recursive name server's local authentication policy would
reject the records in question. That is, by setting the CD bit, the
originating resolver has indicated that it takes responsibility for
performing its own authentication, and the recursive name server
should not interfere.
If the resolver side implements a BAD cache (see <a href="#section-4.7">Section 4.7</a>) and the
name server side receives a query that matches an entry in the
resolver side's BAD cache, the name server side's response depends on
the state of the CD bit in the original query. If the CD bit is set,
the name server side SHOULD return the data from the BAD cache; if
the CD bit is not set, the name server side MUST return RCODE 2
(server failure).
The intent of the above rule is to provide the raw data to clients
that are capable of performing their own signature verification
checks while protecting clients that depend on the resolver side of a
security-aware recursive name server to perform such checks. Several
of the possible reasons why signature validation might fail involve
conditions that may not apply equally to the recursive name server
and the client that invoked it. For example, the recursive name
server's clock may be set incorrectly, or the client may have
knowledge of a relevant island of security that the recursive name
server does not share. In such cases, "protecting" a client that is
capable of performing its own signature validation from ever seeing
the "bad" data does not help the client.
<span class="h4"><a class="selflink" id="section-3.2.3" href="#section-3.2.3">3.2.3</a>. The AD Bit</span>
The name server side of a security-aware recursive name server MUST
NOT set the AD bit in a response unless the name server considers all
RRsets in the Answer and Authority sections of the response to be
authentic. The name server side SHOULD set the AD bit if and only if
the resolver side considers all RRsets in the Answer section and any
relevant negative response RRs in the Authority section to be
authentic. The resolver side MUST follow the procedure described in
<a href="#section-5">Section 5</a> to determine whether the RRs in question are authentic.
However, for backward compatibility, a recursive name server MAY set
the AD bit when a response includes unsigned CNAME RRs if those CNAME
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
RRs demonstrably could have been synthesized from an authentic DNAME
RR that is also included in the response according to the synthesis
rules described in [<a href="./rfc2672" title=""Non-Terminal DNS Name Redirection"">RFC2672</a>].
<span class="h3"><a class="selflink" id="section-3.3" href="#section-3.3">3.3</a>. Example DNSSEC Responses</span>
See <a href="#appendix-B">Appendix B</a> for example response packets.
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. Resolving</span>
This section describes the behavior of entities that include
security-aware resolver functions. In many cases such functions will
be part of a security-aware recursive name server, but a stand-alone
security-aware resolver has many of the same requirements. Functions
specific to security-aware recursive name servers are described in
<a href="#section-3.2">Section 3.2</a>.
<span class="h3"><a class="selflink" id="section-4.1" href="#section-4.1">4.1</a>. EDNS Support</span>
A security-aware resolver MUST include an EDNS ([<a href="./rfc2671" title=""Extension Mechanisms for DNS (EDNS0)"">RFC2671</a>]) OPT
pseudo-RR with the DO ([<a href="./rfc3225" title=""Indicating Resolver Support of DNSSEC"">RFC3225</a>]) bit set when sending queries.
A security-aware resolver MUST support a message size of at least
1220 octets, SHOULD support a message size of 4000 octets, and MUST
use the "sender's UDP payload size" field in the EDNS OPT pseudo-RR
to advertise the message size that it is willing to accept. A
security-aware resolver's IP layer MUST handle fragmented UDP packets
correctly regardless of whether any such fragmented packets were
received via IPv4 or IPv6. Please see [<a href="./rfc1122" title=""Requirements for Internet Hosts - Communication Layers"">RFC1122</a>], [<a href="./rfc2460" title=""Internet Protocol, Version 6 (IPv6) Specification"">RFC2460</a>], and
[<a href="./rfc3226" title=""DNSSEC and IPv6 A6 aware server/resolver message size requirements"">RFC3226</a>] for discussion of these requirements.
<span class="h3"><a class="selflink" id="section-4.2" href="#section-4.2">4.2</a>. Signature Verification Support</span>
A security-aware resolver MUST support the signature verification
mechanisms described in <a href="#section-5">Section 5</a> and SHOULD apply them to every
received response, except when:
o the security-aware resolver is part of a security-aware recursive
name server, and the response is the result of recursion on behalf
of a query received with the CD bit set;
o the response is the result of a query generated directly via some
form of application interface that instructed the security-aware
resolver not to perform validation for this query; or
o validation for this query has been disabled by local policy.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
A security-aware resolver's support for signature verification MUST
include support for verification of wildcard owner names.
Security-aware resolvers MAY query for missing security RRs in an
attempt to perform validation; implementations that choose to do so
must be aware that the answers received may not be sufficient to
validate the original response. For example, a zone update may have
changed (or deleted) the desired information between the original and
follow-up queries.
When attempting to retrieve missing NSEC RRs that reside on the
parental side at a zone cut, a security-aware iterative-mode resolver
MUST query the name servers for the parent zone, not the child zone.
When attempting to retrieve a missing DS, a security-aware
iterative-mode resolver MUST query the name servers for the parent
zone, not the child zone. As explained in <a href="#section-3.1.4.1">Section 3.1.4.1</a>,
security-aware name servers need to apply special processing rules to
handle the DS RR, and in some situations the resolver may also need
to apply special rules to locate the name servers for the parent zone
if the resolver does not already have the parent's NS RRset. To
locate the parent NS RRset, the resolver can start with the
delegation name, strip off the leftmost label, and query for an NS
RRset by that name. If no NS RRset is present at that name, the
resolver then strips off the leftmost remaining label and retries the
query for that name, repeating this process of walking up the tree
until it either finds the NS RRset or runs out of labels.
<span class="h3"><a class="selflink" id="section-4.3" href="#section-4.3">4.3</a>. Determining Security Status of Data</span>
A security-aware resolver MUST be able to determine whether it should
expect a particular RRset to be signed. More precisely, a
security-aware resolver must be able to distinguish between four
cases:
Secure: An RRset for which the resolver is able to build a chain of
signed DNSKEY and DS RRs from a trusted security anchor to the
RRset. In this case, the RRset should be signed and is subject to
signature validation, as described above.
Insecure: An RRset for which the resolver knows that it has no chain
of signed DNSKEY and DS RRs from any trusted starting point to the
RRset. This can occur when the target RRset lies in an unsigned
zone or in a descendent of an unsigned zone. In this case, the
RRset may or may not be signed, but the resolver will not be able
to verify the signature.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
Bogus: An RRset for which the resolver believes that it ought to be
able to establish a chain of trust but for which it is unable to
do so, either due to signatures that for some reason fail to
validate or due to missing data that the relevant DNSSEC RRs
indicate should be present. This case may indicate an attack but
may also indicate a configuration error or some form of data
corruption.
Indeterminate: An RRset for which the resolver is not able to
determine whether the RRset should be signed, as the resolver is
not able to obtain the necessary DNSSEC RRs. This can occur when
the security-aware resolver is not able to contact security-aware
name servers for the relevant zones.
<span class="h3"><a class="selflink" id="section-4.4" href="#section-4.4">4.4</a>. Configured Trust Anchors</span>
A security-aware resolver MUST be capable of being configured with at
least one trusted public key or DS RR and SHOULD be capable of being
configured with multiple trusted public keys or DS RRs. Since a
security-aware resolver will not be able to validate signatures
without such a configured trust anchor, the resolver SHOULD have some
reasonably robust mechanism for obtaining such keys when it boots;
examples of such a mechanism would be some form of non-volatile
storage (such as a disk drive) or some form of trusted local network
configuration mechanism.
Note that trust anchors also cover key material that is updated in a
secure manner. This secure manner could be through physical media, a
key exchange protocol, or some other out-of-band means.
<span class="h3"><a class="selflink" id="section-4.5" href="#section-4.5">4.5</a>. Response Caching</span>
A security-aware resolver SHOULD cache each response as a single
atomic entry containing the entire answer, including the named RRset
and any associated DNSSEC RRs. The resolver SHOULD discard the
entire atomic entry when any of the RRs contained in it expire. In
most cases the appropriate cache index for the atomic entry will be
the triple <QNAME, QTYPE, QCLASS>, but in cases such as the response
form described in <a href="#section-3.1.3.2">Section 3.1.3.2</a> the appropriate cache index will be
the double <QNAME,QCLASS>.
The reason for these recommendations is that, between the initial
query and the expiration of the data from the cache, the
authoritative data might have been changed (for example, via dynamic
update).
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
There are two situations for which this is relevant:
1. By using the RRSIG record, it is possible to deduce that an
answer was synthesized from a wildcard. A security-aware
recursive name server could store this wildcard data and use it
to generate positive responses to queries other than the name for
which the original answer was first received.
2. NSEC RRs received to prove the non-existence of a name could be
reused by a security-aware resolver to prove the non-existence of
any name in the name range it spans.
In theory, a resolver could use wildcards or NSEC RRs to generate
positive and negative responses (respectively) until the TTL or
signatures on the records in question expire. However, it seems
prudent for resolvers to avoid blocking new authoritative data or
synthesizing new data on their own. Resolvers that follow this
recommendation will have a more consistent view of the namespace.
<span class="h3"><a class="selflink" id="section-4.6" href="#section-4.6">4.6</a>. Handling of the CD and AD Bits</span>
A security-aware resolver MAY set a query's CD bit in order to
indicate that the resolver takes responsibility for performing
whatever authentication its local policy requires on the RRsets in
the response. See <a href="#section-3.2">Section 3.2</a> for the effect this bit has on the
behavior of security-aware recursive name servers.
A security-aware resolver MUST clear the AD bit when composing query
messages to protect against buggy name servers that blindly copy
header bits that they do not understand from the query message to the
response message.
A resolver MUST disregard the meaning of the CD and AD bits in a
response unless the response was obtained by using a secure channel
or the resolver was specifically configured to regard the message
header bits without using a secure channel.
<span class="h3"><a class="selflink" id="section-4.7" href="#section-4.7">4.7</a>. Caching BAD Data</span>
While many validation errors will be transient, some are likely to be
more persistent, such as those caused by administrative error
(failure to re-sign a zone, clock skew, and so forth). Since
requerying will not help in these cases, validating resolvers might
generate a significant amount of unnecessary DNS traffic as a result
of repeated queries for RRsets with persistent validation failures.
To prevent such unnecessary DNS traffic, security-aware resolvers MAY
cache data with invalid signatures, with some restrictions.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
Conceptually, caching such data is similar to negative caching
([<a href="./rfc2308" title=""Negative Caching of DNS Queries (DNS NCACHE)"">RFC2308</a>]), except that instead of caching a valid negative
response, the resolver is caching the fact that a particular answer
failed to validate. This document refers to a cache of data with
invalid signatures as a "BAD cache".
Resolvers that implement a BAD cache MUST take steps to prevent the
cache from being useful as a denial-of-service attack amplifier,
particularly the following:
o Since RRsets that fail to validate do not have trustworthy TTLs,
the implementation MUST assign a TTL. This TTL SHOULD be small,
in order to mitigate the effect of caching the results of an
attack.
o In order to prevent caching of a transient validation failure
(which might be the result of an attack), resolvers SHOULD track
queries that result in validation failures and SHOULD only answer
from the BAD cache after the number of times that responses to
queries for that particular <QNAME, QTYPE, QCLASS> have failed to
validate exceeds a threshold value.
Resolvers MUST NOT return RRsets from the BAD cache unless the
resolver is not required to validate the signatures of the RRsets in
question under the rules given in <a href="#section-4.2">Section 4.2</a> of this document. See
<a href="#section-3.2.2">Section 3.2.2</a> for discussion of how the responses returned by a
security-aware recursive name server interact with a BAD cache.
<span class="h3"><a class="selflink" id="section-4.8" href="#section-4.8">4.8</a>. Synthesized CNAMEs</span>
A validating security-aware resolver MUST treat the signature of a
valid signed DNAME RR as also covering unsigned CNAME RRs that could
have been synthesized from the DNAME RR, as described in [<a href="./rfc2672" title=""Non-Terminal DNS Name Redirection"">RFC2672</a>],
at least to the extent of not rejecting a response message solely
because it contains such CNAME RRs. The resolver MAY retain such
CNAME RRs in its cache or in the answers it hands back, but is not
required to do so.
<span class="h3"><a class="selflink" id="section-4.9" href="#section-4.9">4.9</a>. Stub Resolvers</span>
A security-aware stub resolver MUST support the DNSSEC RR types, at
least to the extent of not mishandling responses just because they
contain DNSSEC RRs.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
<span class="h4"><a class="selflink" id="section-4.9.1" href="#section-4.9.1">4.9.1</a>. Handling of the DO Bit</span>
A non-validating security-aware stub resolver MAY include the DNSSEC
RRs returned by a security-aware recursive name server as part of the
data that the stub resolver hands back to the application that
invoked it, but is not required to do so. A non-validating stub
resolver that seeks to do this will need to set the DO bit in order
to receive DNSSEC RRs from the recursive name server.
A validating security-aware stub resolver MUST set the DO bit,
because otherwise it will not receive the DNSSEC RRs it needs to
perform signature validation.
<span class="h4"><a class="selflink" id="section-4.9.2" href="#section-4.9.2">4.9.2</a>. Handling of the CD Bit</span>
A non-validating security-aware stub resolver SHOULD NOT set the CD
bit when sending queries unless it is requested by the application
layer, as by definition, a non-validating stub resolver depends on
the security-aware recursive name server to perform validation on its
behalf.
A validating security-aware stub resolver SHOULD set the CD bit,
because otherwise the security-aware recursive name server will
answer the query using the name server's local policy, which may
prevent the stub resolver from receiving data that would be
acceptable to the stub resolver's local policy.
<span class="h4"><a class="selflink" id="section-4.9.3" href="#section-4.9.3">4.9.3</a>. Handling of the AD Bit</span>
A non-validating security-aware stub resolver MAY chose to examine
the setting of the AD bit in response messages that it receives in
order to determine whether the security-aware recursive name server
that sent the response claims to have cryptographically verified the
data in the Answer and Authority sections of the response message.
Note, however, that the responses received by a security-aware stub
resolver are heavily dependent on the local policy of the
security-aware recursive name server. Therefore, there may be little
practical value in checking the status of the AD bit, except perhaps
as a debugging aid. In any case, a security-aware stub resolver MUST
NOT place any reliance on signature validation allegedly performed on
its behalf, except when the security-aware stub resolver obtained the
data in question from a trusted security-aware recursive name server
via a secure channel.
A validating security-aware stub resolver SHOULD NOT examine the
setting of the AD bit in response messages, as, by definition, the
stub resolver performs its own signature validation regardless of the
setting of the AD bit.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. Authenticating DNS Responses</span>
To use DNSSEC RRs for authentication, a security-aware resolver
requires configured knowledge of at least one authenticated DNSKEY or
DS RR. The process for obtaining and authenticating this initial
trust anchor is achieved via some external mechanism. For example, a
resolver could use some off-line authenticated exchange to obtain a
zone's DNSKEY RR or to obtain a DS RR that identifies and
authenticates a zone's DNSKEY RR. The remainder of this section
assumes that the resolver has somehow obtained an initial set of
trust anchors.
An initial DNSKEY RR can be used to authenticate a zone's apex DNSKEY
RRset. To authenticate an apex DNSKEY RRset by using an initial key,
the resolver MUST:
1. verify that the initial DNSKEY RR appears in the apex DNSKEY
RRset, and that the DNSKEY RR has the Zone Key Flag (DNSKEY RDATA
bit 7) set; and
2. verify that there is some RRSIG RR that covers the apex DNSKEY
RRset, and that the combination of the RRSIG RR and the initial
DNSKEY RR authenticates the DNSKEY RRset. The process for using
an RRSIG RR to authenticate an RRset is described in <a href="#section-5.3">Section 5.3</a>.
Once the resolver has authenticated the apex DNSKEY RRset by using an
initial DNSKEY RR, delegations from that zone can be authenticated by
using DS RRs. This allows a resolver to start from an initial key
and use DS RRsets to proceed recursively down the DNS tree, obtaining
other apex DNSKEY RRsets. If the resolver were configured with a
root DNSKEY RR, and if every delegation had a DS RR associated with
it, then the resolver could obtain and validate any apex DNSKEY
RRset. The process of using DS RRs to authenticate referrals is
described in <a href="#section-5.2">Section 5.2</a>.
<a href="#section-5.3">Section 5.3</a> shows how the resolver can use DNSKEY RRs in the apex
DNSKEY RRset and RRSIG RRs from the zone to authenticate any other
RRsets in the zone once the resolver has authenticated a zone's apex
DNSKEY RRset. <a href="#section-5.4">Section 5.4</a> shows how the resolver can use
authenticated NSEC RRsets from the zone to prove that an RRset is not
present in the zone.
When a resolver indicates support for DNSSEC (by setting the DO bit),
a security-aware name server should attempt to provide the necessary
DNSKEY, RRSIG, NSEC, and DS RRsets in a response (see <a href="#section-3">Section 3</a>).
However, a security-aware resolver may still receive a response that
lacks the appropriate DNSSEC RRs, whether due to configuration issues
such as an upstream security-oblivious recursive name server that
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
accidentally interferes with DNSSEC RRs or due to a deliberate attack
in which an adversary forges a response, strips DNSSEC RRs from a
response, or modifies a query so that DNSSEC RRs appear not to be
requested. The absence of DNSSEC data in a response MUST NOT by
itself be taken as an indication that no authentication information
exists.
A resolver SHOULD expect authentication information from signed
zones. A resolver SHOULD believe that a zone is signed if the
resolver has been configured with public key information for the
zone, or if the zone's parent is signed and the delegation from the
parent contains a DS RRset.
<span class="h3"><a class="selflink" id="section-5.1" href="#section-5.1">5.1</a>. Special Considerations for Islands of Security</span>
Islands of security (see [<a href="./rfc4033" title=""DNS Security Introduction and Requirements"">RFC4033</a>]) are signed zones for which it is
not possible to construct an authentication chain to the zone from
its parent. Validating signatures within an island of security
requires that the validator have some other means of obtaining an
initial authenticated zone key for the island. If a validator cannot
obtain such a key, it SHOULD switch to operating as if the zones in
the island of security are unsigned.
All the normal processes for validating responses apply to islands of
security. The only difference between normal validation and
validation within an island of security is in how the validator
obtains a trust anchor for the authentication chain.
<span class="h3"><a class="selflink" id="section-5.2" href="#section-5.2">5.2</a>. Authenticating Referrals</span>
Once the apex DNSKEY RRset for a signed parent zone has been
authenticated, DS RRsets can be used to authenticate the delegation
to a signed child zone. A DS RR identifies a DNSKEY RR in the child
zone's apex DNSKEY RRset and contains a cryptographic digest of the
child zone's DNSKEY RR. Use of a strong cryptographic digest
algorithm ensures that it is computationally infeasible for an
adversary to generate a DNSKEY RR that matches the digest. Thus,
authenticating the digest allows a resolver to authenticate the
matching DNSKEY RR. The resolver can then use this child DNSKEY RR
to authenticate the entire child apex DNSKEY RRset.
Given a DS RR for a delegation, the child zone's apex DNSKEY RRset
can be authenticated if all of the following hold:
o The DS RR has been authenticated using some DNSKEY RR in the
parent's apex DNSKEY RRset (see <a href="#section-5.3">Section 5.3</a>).
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
o The Algorithm and Key Tag in the DS RR match the Algorithm field
and the key tag of a DNSKEY RR in the child zone's apex DNSKEY
RRset, and, when the DNSKEY RR's owner name and RDATA are hashed
using the digest algorithm specified in the DS RR's Digest Type
field, the resulting digest value matches the Digest field of the
DS RR.
o The matching DNSKEY RR in the child zone has the Zone Flag bit
set, the corresponding private key has signed the child zone's
apex DNSKEY RRset, and the resulting RRSIG RR authenticates the
child zone's apex DNSKEY RRset.
If the referral from the parent zone did not contain a DS RRset, the
response should have included a signed NSEC RRset proving that no DS
RRset exists for the delegated name (see <a href="#section-3.1.4">Section 3.1.4</a>). A
security-aware resolver MUST query the name servers for the parent
zone for the DS RRset if the referral includes neither a DS RRset nor
a NSEC RRset proving that the DS RRset does not exist (see <a href="#section-4">Section</a>
<a href="#section-4">4</a>).
If the validator authenticates an NSEC RRset that proves that no DS
RRset is present for this zone, then there is no authentication path
leading from the parent to the child. If the resolver has an initial
DNSKEY or DS RR that belongs to the child zone or to any delegation
below the child zone, this initial DNSKEY or DS RR MAY be used to
re-establish an authentication path. If no such initial DNSKEY or DS
RR exists, the validator cannot authenticate RRsets in or below the
child zone.
If the validator does not support any of the algorithms listed in an
authenticated DS RRset, then the resolver has no supported
authentication path leading from the parent to the child. The
resolver should treat this case as it would the case of an
authenticated NSEC RRset proving that no DS RRset exists, as
described above.
Note that, for a signed delegation, there are two NSEC RRs associated
with the delegated name. One NSEC RR resides in the parent zone and
can be used to prove whether a DS RRset exists for the delegated
name. The second NSEC RR resides in the child zone and identifies
which RRsets are present at the apex of the child zone. The parent
NSEC RR and child NSEC RR can always be distinguished because the SOA
bit will be set in the child NSEC RR and clear in the parent NSEC RR.
A security-aware resolver MUST use the parent NSEC RR when attempting
to prove that a DS RRset does not exist.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
If the resolver does not support any of the algorithms listed in an
authenticated DS RRset, then the resolver will not be able to verify
the authentication path to the child zone. In this case, the
resolver SHOULD treat the child zone as if it were unsigned.
<span class="h3"><a class="selflink" id="section-5.3" href="#section-5.3">5.3</a>. Authenticating an RRset with an RRSIG RR</span>
A validator can use an RRSIG RR and its corresponding DNSKEY RR to
attempt to authenticate RRsets. The validator first checks the RRSIG
RR to verify that it covers the RRset, has a valid time interval, and
identifies a valid DNSKEY RR. The validator then constructs the
canonical form of the signed data by appending the RRSIG RDATA
(excluding the Signature Field) with the canonical form of the
covered RRset. Finally, the validator uses the public key and
signature to authenticate the signed data. Sections <a href="#section-5.3.1">5.3.1</a>, <a href="#section-5.3.2">5.3.2</a>,
and 5.3.3 describe each step in detail.
<span class="h4"><a class="selflink" id="section-5.3.1" href="#section-5.3.1">5.3.1</a>. Checking the RRSIG RR Validity</span>
A security-aware resolver can use an RRSIG RR to authenticate an
RRset if all of the following conditions hold:
o The RRSIG RR and the RRset MUST have the same owner name and the
same class.
o The RRSIG RR's Signer's Name field MUST be the name of the zone
that contains the RRset.
o The RRSIG RR's Type Covered field MUST equal the RRset's type.
o The number of labels in the RRset owner name MUST be greater than
or equal to the value in the RRSIG RR's Labels field.
o The validator's notion of the current time MUST be less than or
equal to the time listed in the RRSIG RR's Expiration field.
o The validator's notion of the current time MUST be greater than or
equal to the time listed in the RRSIG RR's Inception field.
o The RRSIG RR's Signer's Name, Algorithm, and Key Tag fields MUST
match the owner name, algorithm, and key tag for some DNSKEY RR in
the zone's apex DNSKEY RRset.
o The matching DNSKEY RR MUST be present in the zone's apex DNSKEY
RRset, and MUST have the Zone Flag bit (DNSKEY RDATA Flag bit 7)
set.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
It is possible for more than one DNSKEY RR to match the conditions
above. In this case, the validator cannot predetermine which DNSKEY
RR to use to authenticate the signature, and it MUST try each
matching DNSKEY RR until either the signature is validated or the
validator has run out of matching public keys to try.
Note that this authentication process is only meaningful if the
validator authenticates the DNSKEY RR before using it to validate
signatures. The matching DNSKEY RR is considered to be authentic if:
o the apex DNSKEY RRset containing the DNSKEY RR is considered
authentic; or
o the RRset covered by the RRSIG RR is the apex DNSKEY RRset itself,
and the DNSKEY RR either matches an authenticated DS RR from the
parent zone or matches a trust anchor.
<span class="h4"><a class="selflink" id="section-5.3.2" href="#section-5.3.2">5.3.2</a>. Reconstructing the Signed Data</span>
Once the RRSIG RR has met the validity requirements described in
<a href="#section-5.3.1">Section 5.3.1</a>, the validator has to reconstruct the original signed
data. The original signed data includes RRSIG RDATA (excluding the
Signature field) and the canonical form of the RRset. Aside from
being ordered, the canonical form of the RRset might also differ from
the received RRset due to DNS name compression, decremented TTLs, or
wildcard expansion. The validator should use the following to
reconstruct the original signed data:
signed_data = RRSIG_RDATA | RR(1) | RR(2)... where
"|" denotes concatenation
RRSIG_RDATA is the wire format of the RRSIG RDATA fields
with the Signature field excluded and the Signer's Name
in canonical form.
RR(i) = name | type | class | OrigTTL | RDATA length | RDATA
name is calculated according to the function below
class is the RRset's class
type is the RRset type and all RRs in the class
OrigTTL is the value from the RRSIG Original TTL field
All names in the RDATA field are in canonical form
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
The set of all RR(i) is sorted into canonical order.
To calculate the name:
let rrsig_labels = the value of the RRSIG Labels field
let fqdn = RRset's fully qualified domain name in
canonical form
let fqdn_labels = Label count of the fqdn above.
if rrsig_labels = fqdn_labels,
name = fqdn
if rrsig_labels < fqdn_labels,
name = "*." | the rightmost rrsig_label labels of the
fqdn
if rrsig_labels > fqdn_labels
the RRSIG RR did not pass the necessary validation
checks and MUST NOT be used to authenticate this
RRset.
The canonical forms for names and RRsets are defined in [<a href="./rfc4034" title=""Resource Records for DNS Security Extensions"">RFC4034</a>].
NSEC RRsets at a delegation boundary require special processing.
There are two distinct NSEC RRsets associated with a signed delegated
name. One NSEC RRset resides in the parent zone, and specifies which
RRsets are present at the parent zone. The second NSEC RRset resides
at the child zone and identifies which RRsets are present at the apex
in the child zone. The parent NSEC RRset and child NSEC RRset can
always be distinguished as only a child NSEC RR will indicate that an
SOA RRset exists at the name. When reconstructing the original NSEC
RRset for the delegation from the parent zone, the NSEC RRs MUST NOT
be combined with NSEC RRs from the child zone. When reconstructing
the original NSEC RRset for the apex of the child zone, the NSEC RRs
MUST NOT be combined with NSEC RRs from the parent zone.
Note that each of the two NSEC RRsets at a delegation point has a
corresponding RRSIG RR with an owner name matching the delegated
name, and each of these RRSIG RRs is authoritative data associated
with the same zone that contains the corresponding NSEC RRset. If
necessary, a resolver can tell these RRSIG RRs apart by checking the
Signer's Name field.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
<span class="h4"><a class="selflink" id="section-5.3.3" href="#section-5.3.3">5.3.3</a>. Checking the Signature</span>
Once the resolver has validated the RRSIG RR as described in <a href="#section-5.3.1">Section</a>
<a href="#section-5.3.1">5.3.1</a> and reconstructed the original signed data as described in
<a href="#section-5.3.2">Section 5.3.2</a>, the validator can attempt to use the cryptographic
signature to authenticate the signed data, and thus (finally!)
authenticate the RRset.
The Algorithm field in the RRSIG RR identifies the cryptographic
algorithm used to generate the signature. The signature itself is
contained in the Signature field of the RRSIG RDATA, and the public
key used to verify the signature is contained in the Public Key field
of the matching DNSKEY RR(s) (found in <a href="#section-5.3.1">Section 5.3.1</a>). [<a href="./rfc4034" title=""Resource Records for DNS Security Extensions"">RFC4034</a>]
provides a list of algorithm types and provides pointers to the
documents that define each algorithm's use.
Note that it is possible for more than one DNSKEY RR to match the
conditions in <a href="#section-5.3.1">Section 5.3.1</a>. In this case, the validator can only
determine which DNSKEY RR is correct by trying each matching public
key until the validator either succeeds in validating the signature
or runs out of keys to try.
If the Labels field of the RRSIG RR is not equal to the number of
labels in the RRset's fully qualified owner name, then the RRset is
either invalid or the result of wildcard expansion. The resolver
MUST verify that wildcard expansion was applied properly before
considering the RRset to be authentic. <a href="#section-5.3.4">Section 5.3.4</a> describes how
to determine whether a wildcard was applied properly.
If other RRSIG RRs also cover this RRset, the local resolver security
policy determines whether the resolver also has to test these RRSIG
RRs and how to resolve conflicts if these RRSIG RRs lead to differing
results.
If the resolver accepts the RRset as authentic, the validator MUST
set the TTL of the RRSIG RR and each RR in the authenticated RRset to
a value no greater than the minimum of:
o the RRset's TTL as received in the response;
o the RRSIG RR's TTL as received in the response;
o the value in the RRSIG RR's Original TTL field; and
o the difference of the RRSIG RR's Signature Expiration time and the
current time.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
<span class="h4"><a class="selflink" id="section-5.3.4" href="#section-5.3.4">5.3.4</a>. Authenticating a Wildcard Expanded RRset Positive Response</span>
If the number of labels in an RRset's owner name is greater than the
Labels field of the covering RRSIG RR, then the RRset and its
covering RRSIG RR were created as a result of wildcard expansion.
Once the validator has verified the signature, as described in
<a href="#section-5.3">Section 5.3</a>, it must take additional steps to verify the non-
existence of an exact match or closer wildcard match for the query.
<a href="#section-5.4">Section 5.4</a> discusses these steps.
Note that the response received by the resolver should include all
NSEC RRs needed to authenticate the response (see <a href="#section-3.1.3">Section 3.1.3</a>).
<span class="h3"><a class="selflink" id="section-5.4" href="#section-5.4">5.4</a>. Authenticated Denial of Existence</span>
A resolver can use authenticated NSEC RRs to prove that an RRset is
not present in a signed zone. Security-aware name servers should
automatically include any necessary NSEC RRs for signed zones in
their responses to security-aware resolvers.
Denial of existence is determined by the following rules:
o If the requested RR name matches the owner name of an
authenticated NSEC RR, then the NSEC RR's type bit map field lists
all RR types present at that owner name, and a resolver can prove
that the requested RR type does not exist by checking for the RR
type in the bit map. If the number of labels in an authenticated
NSEC RR's owner name equals the Labels field of the covering RRSIG
RR, then the existence of the NSEC RR proves that wildcard
expansion could not have been used to match the request.
o If the requested RR name would appear after an authenticated NSEC
RR's owner name and before the name listed in that NSEC RR's Next
Domain Name field according to the canonical DNS name order
defined in [<a href="./rfc4034" title=""Resource Records for DNS Security Extensions"">RFC4034</a>], then no RRsets with the requested name exist
in the zone. However, it is possible that a wildcard could be
used to match the requested RR owner name and type, so proving
that the requested RRset does not exist also requires proving that
no possible wildcard RRset exists that could have been used to
generate a positive response.
In addition, security-aware resolvers MUST authenticate the NSEC
RRsets that comprise the non-existence proof as described in <a href="#section-5.3">Section</a>
<a href="#section-5.3">5.3</a>.
To prove the non-existence of an RRset, the resolver must be able to
verify both that the queried RRset does not exist and that no
relevant wildcard RRset exists. Proving this may require more than
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
one NSEC RRset from the zone. If the complete set of necessary NSEC
RRsets is not present in a response (perhaps due to message
truncation), then a security-aware resolver MUST resend the query in
order to attempt to obtain the full collection of NSEC RRs necessary
to verify the non-existence of the requested RRset. As with all DNS
operations, however, the resolver MUST bound the work it puts into
answering any particular query.
Since a validated NSEC RR proves the existence of both itself and its
corresponding RRSIG RR, a validator MUST ignore the settings of the
NSEC and RRSIG bits in an NSEC RR.
<span class="h3"><a class="selflink" id="section-5.5" href="#section-5.5">5.5</a>. Resolver Behavior When Signatures Do Not Validate</span>
If for whatever reason none of the RRSIGs can be validated, the
response SHOULD be considered BAD. If the validation was being done
to service a recursive query, the name server MUST return RCODE 2 to
the originating client. However, it MUST return the full response if
and only if the original query had the CD bit set. Also see <a href="#section-4.7">Section</a>
<a href="#section-4.7">4.7</a> on caching responses that do not validate.
<span class="h3"><a class="selflink" id="section-5.6" href="#section-5.6">5.6</a>. Authentication Example</span>
<a href="#appendix-C">Appendix C</a> shows an example of the authentication process.
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. IANA Considerations</span>
[<a id="ref-RFC4034">RFC4034</a>] contains a review of the IANA considerations introduced by
DNSSEC. The following are additional IANA considerations discussed
in this document:
[<a id="ref-RFC2535">RFC2535</a>] reserved the CD and AD bits in the message header. The
meaning of the AD bit was redefined in [<a href="./rfc3655" title=""Redefinition of DNS Authenticated Data (AD) bit"">RFC3655</a>], and the meaning of
both the CD and AD bit are restated in this document. No new bits in
the DNS message header are defined in this document.
[<a id="ref-RFC2671">RFC2671</a>] introduced EDNS, and [<a href="./rfc3225" title=""Indicating Resolver Support of DNSSEC"">RFC3225</a>] reserved the DNSSEC OK bit
and defined its use. The use is restated but not altered in this
document.
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. Security Considerations</span>
This document describes how the DNS security extensions use public
key cryptography to sign and authenticate DNS resource record sets.
Please see [<a href="./rfc4033" title=""DNS Security Introduction and Requirements"">RFC4033</a>] for terminology and general security
considerations related to DNSSEC; see [<a href="./rfc4034" title=""Resource Records for DNS Security Extensions"">RFC4034</a>] for considerations
specific to the DNSSEC resource record types.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
An active attacker who can set the CD bit in a DNS query message or
the AD bit in a DNS response message can use these bits to defeat the
protection that DNSSEC attempts to provide to security-oblivious
recursive-mode resolvers. For this reason, use of these control bits
by a security-aware recursive-mode resolver requires a secure
channel. See Sections <a href="#section-3.2.2">3.2.2</a> and <a href="#section-4.9">4.9</a> for further discussion.
The protocol described in this document attempts to extend the
benefits of DNSSEC to security-oblivious stub resolvers. However, as
recovery from validation failures is likely to be specific to
particular applications, the facilities that DNSSEC provides for stub
resolvers may prove inadequate. Operators of security-aware
recursive name servers will have to pay close attention to the
behavior of the applications that use their services when choosing a
local validation policy; failure to do so could easily result in the
recursive name server accidentally denying service to the clients it
is intended to support.
<span class="h2"><a class="selflink" id="section-8" href="#section-8">8</a>. Acknowledgements</span>
This document was created from the input and ideas of the members of
the DNS Extensions Working Group and working group mailing list. The
editors would like to express their thanks for the comments and
suggestions received during the revision of these security extension
specifications. Although explicitly listing everyone who has
contributed during the decade in which DNSSEC has been under
development would be impossible, [<a href="./rfc4033" title=""DNS Security Introduction and Requirements"">RFC4033</a>] includes a list of some of
the participants who were kind enough to comment on these documents.
<span class="h2"><a class="selflink" id="section-9" href="#section-9">9</a>. References</span>
<span class="h3"><a class="selflink" id="section-9.1" href="#section-9.1">9.1</a>. Normative References</span>
[<a id="ref-RFC1034">RFC1034</a>] Mockapetris, P., "Domain names - concepts and facilities",
STD 13, <a href="./rfc1034">RFC 1034</a>, November 1987.
[<a id="ref-RFC1035">RFC1035</a>] Mockapetris, P., "Domain names - implementation and
specification", STD 13, <a href="./rfc1035">RFC 1035</a>, November 1987.
[<a id="ref-RFC1122">RFC1122</a>] Braden, R., "Requirements for Internet Hosts -
Communication Layers", STD 3, <a href="./rfc1122">RFC 1122</a>, October 1989.
[<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-RFC2181">RFC2181</a>] Elz, R. and R. Bush, "Clarifications to the DNS
Specification", <a href="./rfc2181">RFC 2181</a>, July 1997.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
[<a id="ref-RFC2460">RFC2460</a>] Deering, S. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", <a href="./rfc2460">RFC 2460</a>, December 1998.
[<a id="ref-RFC2671">RFC2671</a>] Vixie, P., "Extension Mechanisms for DNS (EDNS0)", <a href="./rfc2671">RFC</a>
<a href="./rfc2671">2671</a>, August 1999.
[<a id="ref-RFC2672">RFC2672</a>] Crawford, M., "Non-Terminal DNS Name Redirection", <a href="./rfc2672">RFC</a>
<a href="./rfc2672">2672</a>, August 1999.
[<a id="ref-RFC3225">RFC3225</a>] Conrad, D., "Indicating Resolver Support of DNSSEC", <a href="./rfc3225">RFC</a>
<a href="./rfc3225">3225</a>, December 2001.
[<a id="ref-RFC3226">RFC3226</a>] Gudmundsson, O., "DNSSEC and IPv6 A6 aware server/resolver
message size requirements", <a href="./rfc3226">RFC 3226</a>, December 2001.
[<a id="ref-RFC4033">RFC4033</a>] Arends, R., Austein, R., Larson, M., Massey, D., and S.
Rose, "DNS Security Introduction and Requirements", <a href="./rfc4033">RFC</a>
<a href="./rfc4033">4033</a>, March 2005.
[<a id="ref-RFC4034">RFC4034</a>] Arends, R., Austein, R., Larson, M., Massey, D., and S.
Rose, "Resource Records for DNS Security Extensions", <a href="./rfc4034">RFC</a>
<a href="./rfc4034">4034</a>, March 2005.
<span class="h3"><a class="selflink" id="section-9.2" href="#section-9.2">9.2</a>. Informative References</span>
[<a id="ref-RFC2308">RFC2308</a>] Andrews, M., "Negative Caching of DNS Queries (DNS
NCACHE)", <a href="./rfc2308">RFC 2308</a>, March 1998.
[<a id="ref-RFC2535">RFC2535</a>] Eastlake 3rd, D., "Domain Name System Security
Extensions", <a href="./rfc2535">RFC 2535</a>, March 1999.
[<a id="ref-RFC3007">RFC3007</a>] Wellington, B., "Secure Domain Name System (DNS) Dynamic
Update", <a href="./rfc3007">RFC 3007</a>, November 2000.
[<a id="ref-RFC3655">RFC3655</a>] Wellington, B. and O. Gudmundsson, "Redefinition of DNS
Authenticated Data (AD) bit", <a href="./rfc3655">RFC 3655</a>, November 2003.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
<span class="h2"><a class="selflink" id="appendix-A" href="#appendix-A">Appendix A</a>. Signed Zone Example</span>
The following example shows a (small) complete signed zone.
example. 3600 IN SOA ns1.example. bugs.x.w.example. (
1081539377
3600
300
3600000
3600
)
3600 RRSIG SOA 5 1 3600 20040509183619 (
20040409183619 38519 example.
ONx0k36rcjaxYtcNgq6iQnpNV5+drqYAsC9h
7TSJaHCqbhE67Sr6aH2xDUGcqQWu/n0UVzrF
vkgO9ebarZ0GWDKcuwlM6eNB5SiX2K74l5LW
DA7S/Un/IbtDq4Ay8NMNLQI7Dw7n4p8/rjkB
jV7j86HyQgM5e7+miRAz8V01b0I= )
3600 NS ns1.example.
3600 NS ns2.example.
3600 RRSIG NS 5 1 3600 20040509183619 (
20040409183619 38519 example.
gl13F00f2U0R+SWiXXLHwsMY+qStYy5k6zfd
EuivWc+wd1fmbNCyql0Tk7lHTX6UOxc8AgNf
4ISFve8XqF4q+o9qlnqIzmppU3LiNeKT4FZ8
RO5urFOvoMRTbQxW3U0hXWuggE4g3ZpsHv48
0HjMeRaZB/FRPGfJPajngcq6Kwg= )
3600 MX 1 xx.example.
3600 RRSIG MX 5 1 3600 20040509183619 (
20040409183619 38519 example.
HyDHYVT5KHSZ7HtO/vypumPmSZQrcOP3tzWB
2qaKkHVPfau/DgLgS/IKENkYOGL95G4N+NzE
VyNU8dcTOckT+ChPcGeVjguQ7a3Ao9Z/ZkUO
6gmmUW4b89rz1PUxW4jzUxj66PTwoVtUU/iM
W6OISukd1EQt7a0kygkg+PEDxdI= )
3600 NSEC a.example. NS SOA MX RRSIG NSEC DNSKEY
3600 RRSIG NSEC 5 1 3600 20040509183619 (
20040409183619 38519 example.
O0k558jHhyrC97ISHnislm4kLMW48C7U7cBm
FTfhke5iVqNRVTB1STLMpgpbDIC9hcryoO0V
Z9ME5xPzUEhbvGnHd5sfzgFVeGxr5Nyyq4tW
SDBgIBiLQUv1ivy29vhXy7WgR62dPrZ0PWvm
jfFJ5arXf4nPxp/kEowGgBRzY/U= )
3600 DNSKEY 256 3 5 (
AQOy1bZVvpPqhg4j7EJoM9rI3ZmyEx2OzDBV
rZy/lvI5CQePxXHZS4i8dANH4DX3tbHol61e
k8EFMcsGXxKciJFHyhl94C+NwILQdzsUlSFo
vBZsyl/NX6yEbtw/xN9ZNcrbYvgjjZ/UVPZI
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
ySFNsgEYvh0z2542lzMKR4Dh8uZffQ==
)
3600 DNSKEY 257 3 5 (
AQOeX7+baTmvpVHb2CcLnL1dMRWbuscRvHXl
LnXwDzvqp4tZVKp1sZMepFb8MvxhhW3y/0QZ
syCjczGJ1qk8vJe52iOhInKROVLRwxGpMfzP
RLMlGybr51bOV/1se0ODacj3DomyB4QB5gKT
Yot/K9alk5/j8vfd4jWCWD+E1Sze0Q==
)
3600 RRSIG DNSKEY 5 1 3600 20040509183619 (
20040409183619 9465 example.
ZxgauAuIj+k1YoVEOSlZfx41fcmKzTFHoweZ
xYnz99JVQZJ33wFS0Q0jcP7VXKkaElXk9nYJ
XevO/7nAbo88iWsMkSpSR6jWzYYKwfrBI/L9
hjYmyVO9m6FjQ7uwM4dCP/bIuV/DKqOAK9NY
NC3AHfvCV1Tp4VKDqxqG7R5tTVM= )
3600 RRSIG DNSKEY 5 1 3600 20040509183619 (
20040409183619 38519 example.
eGL0s90glUqcOmloo/2y+bSzyEfKVOQViD9Z
DNhLz/Yn9CQZlDVRJffACQDAUhXpU/oP34ri
bKBpysRXosczFrKqS5Oa0bzMOfXCXup9qHAp
eFIku28Vqfr8Nt7cigZLxjK+u0Ws/4lIRjKk
7z5OXogYVaFzHKillDt3HRxHIZM= )
a.example. 3600 IN NS ns1.a.example.
3600 IN NS ns2.a.example.
3600 DS 57855 5 1 (
B6DCD485719ADCA18E5F3D48A2331627FDD3
636B )
3600 RRSIG DS 5 2 3600 20040509183619 (
20040409183619 38519 example.
oXIKit/QtdG64J/CB+Gi8dOvnwRvqrto1AdQ
oRkAN15FP3iZ7suB7gvTBmXzCjL7XUgQVcoH
kdhyCuzp8W9qJHgRUSwKKkczSyuL64nhgjuD
EML8l9wlWVsl7PR2VnZduM9bLyBhaaPmRKX/
Fm+v6ccF2EGNLRiY08kdkz+XHHo= )
3600 NSEC ai.example. NS DS RRSIG NSEC
3600 RRSIG NSEC 5 2 3600 20040509183619 (
20040409183619 38519 example.
cOlYgqJLqlRqmBQ3iap2SyIsK4O5aqpKSoba
U9fQ5SMApZmHfq3AgLflkrkXRXvgxTQSKkG2
039/cRUs6Jk/25+fi7Xr5nOVJsb0lq4zsB3I
BBdjyGDAHE0F5ROJj87996vJupdm1fbH481g
sdkOW6Zyqtz3Zos8N0BBkEx+2G4= )
ns1.a.example. 3600 IN A 192.0.2.5
ns2.a.example. 3600 IN A 192.0.2.6
ai.example. 3600 IN A 192.0.2.9
3600 RRSIG A 5 2 3600 20040509183619 (
20040409183619 38519 example.
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
pAOtzLP2MU0tDJUwHOKE5FPIIHmdYsCgTb5B
ERGgpnJluA9ixOyf6xxVCgrEJW0WNZSsJicd
hBHXfDmAGKUajUUlYSAH8tS4ZnrhyymIvk3u
ArDu2wfT130e9UHnumaHHMpUTosKe22PblOy
6zrTpg9FkS0XGVmYRvOTNYx2HvQ= )
3600 HINFO "KLH-10" "ITS"
3600 RRSIG HINFO 5 2 3600 20040509183619 (
20040409183619 38519 example.
Iq/RGCbBdKzcYzlGE4ovbr5YcB+ezxbZ9W0l
e/7WqyvhOO9J16HxhhL7VY/IKmTUY0GGdcfh
ZEOCkf4lEykZF9NPok1/R/fWrtzNp8jobuY7
AZEcZadp1WdDF3jc2/ndCa5XZhLKD3JzOsBw
FvL8sqlS5QS6FY/ijFEDnI4RkZA= )
3600 AAAA 2001:db8::f00:baa9
3600 RRSIG AAAA 5 2 3600 20040509183619 (
20040409183619 38519 example.
nLcpFuXdT35AcE+EoafOUkl69KB+/e56XmFK
kewXG2IadYLKAOBIoR5+VoQV3XgTcofTJNsh
1rnF6Eav2zpZB3byI6yo2bwY8MNkr4A7cL9T
cMmDwV/hWFKsbGBsj8xSCN/caEL2CWY/5XP2
sZM6QjBBLmukH30+w1z3h8PUP2o= )
3600 NSEC b.example. A HINFO AAAA RRSIG NSEC
3600 RRSIG NSEC 5 2 3600 20040509183619 (
20040409183619 38519 example.
QoshyPevLcJ/xcRpEtMft1uoIrcrieVcc9pG
CScIn5Glnib40T6ayVOimXwdSTZ/8ISXGj4p
P8Sh0PlA6olZQ84L453/BUqB8BpdOGky4hsN
3AGcLEv1Gr0QMvirQaFcjzOECfnGyBm+wpFL
AhS+JOVfDI/79QtyTI0SaDWcg8U= )
b.example. 3600 IN NS ns1.b.example.
3600 IN NS ns2.b.example.
3600 NSEC ns1.example. NS RRSIG NSEC
3600 RRSIG NSEC 5 2 3600 20040509183619 (
20040409183619 38519 example.
GNuxHn844wfmUhPzGWKJCPY5ttEX/RfjDoOx
9ueK1PtYkOWKOOdiJ/PJKCYB3hYX+858dDWS
xb2qnV/LSTCNVBnkm6owOpysY97MVj5VQEWs
0lm9tFoqjcptQkmQKYPrwUnCSNwvvclSF1xZ
vhRXgWT7OuFXldoCG6TfVFMs9xE= )
ns1.b.example. 3600 IN A 192.0.2.7
ns2.b.example. 3600 IN A 192.0.2.8
ns1.example. 3600 IN A 192.0.2.1
3600 RRSIG A 5 2 3600 20040509183619 (
20040409183619 38519 example.
F1C9HVhIcs10cZU09G5yIVfKJy5yRQQ3qVet
5pGhp82pzhAOMZ3K22JnmK4c+IjUeFp/to06
im5FVpHtbFisdjyPq84bhTv8vrXt5AB1wNB+
+iAqvIfdgW4sFNC6oADb1hK8QNauw9VePJhK
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
v/iVXSYC0b7mPSU+EOlknFpVECs= )
3600 NSEC ns2.example. A RRSIG NSEC
3600 RRSIG NSEC 5 2 3600 20040509183619 (
20040409183619 38519 example.
I4hj+Kt6+8rCcHcUdolks2S+Wzri9h3fHas8
1rGN/eILdJHN7JpV6lLGPIh/8fIBkfvdyWnB
jjf1q3O7JgYO1UdI7FvBNWqaaEPJK3UkddBq
ZIaLi8Qr2XHkjq38BeQsbp8X0+6h4ETWSGT8
IZaIGBLryQWGLw6Y6X8dqhlnxJM= )
ns2.example. 3600 IN A 192.0.2.2
3600 RRSIG A 5 2 3600 20040509183619 (
20040409183619 38519 example.
V7cQRw1TR+knlaL1z/psxlS1PcD37JJDaCMq
Qo6/u1qFQu6x+wuDHRH22Ap9ulJPQjFwMKOu
yfPGQPC8KzGdE3vt5snFEAoE1Vn3mQqtu7SO
6amIjk13Kj/jyJ4nGmdRIc/3cM3ipXFhNTKq
rdhx8SZ0yy4ObIRzIzvBFLiSS8o= )
3600 NSEC *.w.example. A RRSIG NSEC
3600 RRSIG NSEC 5 2 3600 20040509183619 (
20040409183619 38519 example.
N0QzHvaJf5NRw1rE9uxS1Ltb2LZ73Qb9bKGE
VyaISkqzGpP3jYJXZJPVTq4UVEsgT3CgeHvb
3QbeJ5Dfb2V9NGCHj/OvF/LBxFFWwhLwzngH
l+bQAgAcMsLu/nL3nDi1y/JSQjAcdZNDl4bw
Ymx28EtgIpo9A0qmP08rMBqs1Jw= )
*.w.example. 3600 IN MX 1 ai.example.
3600 RRSIG MX 5 2 3600 20040509183619 (
20040409183619 38519 example.
OMK8rAZlepfzLWW75Dxd63jy2wswESzxDKG2
f9AMN1CytCd10cYISAxfAdvXSZ7xujKAtPbc
tvOQ2ofO7AZJ+d01EeeQTVBPq4/6KCWhqe2X
TjnkVLNvvhnc0u28aoSsG0+4InvkkOHknKxw
4kX18MMR34i8lC36SR5xBni8vHI= )
3600 NSEC x.w.example. MX RRSIG NSEC
3600 RRSIG NSEC 5 2 3600 20040509183619 (
20040409183619 38519 example.
r/mZnRC3I/VIcrelgIcteSxDhtsdlTDt8ng9
HSBlABOlzLxQtfgTnn8f+aOwJIAFe1Ee5RvU
5cVhQJNP5XpXMJHfyps8tVvfxSAXfahpYqtx
91gsmcV/1V9/bZAG55CefP9cM4Z9Y9NT9XQ8
s1InQ2UoIv6tJEaaKkP701j8OLA= )
x.w.example. 3600 IN MX 1 xx.example.
3600 RRSIG MX 5 3 3600 20040509183619 (
20040409183619 38519 example.
Il2WTZ+Bkv+OytBx4LItNW5mjB4RCwhOO8y1
XzPHZmZUTVYL7LaA63f6T9ysVBzJRI3KRjAP
H3U1qaYnDoN1DrWqmi9RJe4FoObkbcdm7P3I
kx70ePCoFgRz1Yq+bVVXCvGuAU4xALv3W/Y1
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
jNSlwZ2mSWKHfxFQxPtLj8s32+k= )
3600 NSEC x.y.w.example. MX RRSIG NSEC
3600 RRSIG NSEC 5 3 3600 20040509183619 (
20040409183619 38519 example.
aRbpHftxggzgMXdDlym9SsADqMZovZZl2QWK
vw8J0tZEUNQByH5Qfnf5N1FqH/pS46UA7A4E
mcWBN9PUA1pdPY6RVeaRlZlCr1IkVctvbtaI
NJuBba/VHm+pebTbKcAPIvL9tBOoh+to1h6e
IjgiM8PXkBQtxPq37wDKALkyn7Q= )
x.y.w.example. 3600 IN MX 1 xx.example.
3600 RRSIG MX 5 4 3600 20040509183619 (
20040409183619 38519 example.
k2bJHbwP5LH5qN4is39UiPzjAWYmJA38Hhia
t7i9t7nbX/e0FPnvDSQXzcK7UL+zrVA+3MDj
q1ub4q3SZgcbLMgexxIW3Va//LVrxkP6Xupq
GtOB9prkK54QTl/qZTXfMQpW480YOvVknhvb
+gLcMZBnHJ326nb/TOOmrqNmQQE= )
3600 NSEC xx.example. MX RRSIG NSEC
3600 RRSIG NSEC 5 4 3600 20040509183619 (
20040409183619 38519 example.
OvE6WUzN2ziieJcvKPWbCAyXyP6ef8cr6Csp
ArVSTzKSquNwbezZmkU7E34o5lmb6CWSSSpg
xw098kNUFnHcQf/LzY2zqRomubrNQhJTiDTX
a0ArunJQCzPjOYq5t0SLjm6qp6McJI1AP5Vr
QoKqJDCLnoAlcPOPKAm/jJkn3jk= )
xx.example. 3600 IN A 192.0.2.10
3600 RRSIG A 5 2 3600 20040509183619 (
20040409183619 38519 example.
kBF4YxMGWF0D8r0cztL+2fWWOvN1U/GYSpYP
7SoKoNQ4fZKyk+weWGlKLIUM+uE1zjVTPXoa
0Z6WG0oZp46rkl1EzMcdMgoaeUzzAJ2BMq+Y
VdxG9IK1yZkYGY9AgbTOGPoAgbJyO9EPULsx
kbIDV6GPPSZVusnZU6OMgdgzHV4= )
3600 HINFO "KLH-10" "TOPS-20"
3600 RRSIG HINFO 5 2 3600 20040509183619 (
20040409183619 38519 example.
GY2PLSXmMHkWHfLdggiox8+chWpeMNJLkML0
t+U/SXSUsoUdR91KNdNUkTDWamwcF8oFRjhq
BcPZ6EqrF+vl5v5oGuvSF7U52epfVTC+wWF8
3yCUeUw8YklhLWlvk8gQ15YKth0ITQy8/wI+
RgNvuwbioFSEuv2pNlkq0goYxNY= )
3600 AAAA 2001:db8::f00:baaa
3600 RRSIG AAAA 5 2 3600 20040509183619 (
20040409183619 38519 example.
Zzj0yodDxcBLnnOIwDsuKo5WqiaK24DlKg9C
aGaxDFiKgKobUj2jilYQHpGFn2poFRetZd4z
ulyQkssz2QHrVrPuTMS22knudCiwP4LWpVTr
U4zfeA+rDz9stmSBP/4PekH/x2IoAYnwctd/
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
xS9cL2QgW7FChw16mzlkH6/vsfs= )
3600 NSEC example. A HINFO AAAA RRSIG NSEC
3600 RRSIG NSEC 5 2 3600 20040509183619 (
20040409183619 38519 example.
ZFWUln6Avc8bmGl5GFjD3BwT530DUZKHNuoY
9A8lgXYyrxu+pqgFiRVbyZRQvVB5pccEOT3k
mvHgEa/HzbDB4PIYY79W+VHrgOxzdQGGCZzi
asXrpSGOWwSOElghPnMIi8xdF7qtCntr382W
GghLahumFIpg4MO3LS/prgzVVWo= )
The apex DNSKEY set includes two DNSKEY RRs, and the DNSKEY RDATA
Flags indicate that each of these DNSKEY RRs is a zone key. One of
these DNSKEY RRs also has the SEP flag set and has been used to sign
the apex DNSKEY RRset; this is the key that should be hashed to
generate a DS record to be inserted into the parent zone. The other
DNSKEY is used to sign all the other RRsets in the zone.
The zone includes a wildcard entry, "*.w.example". Note that the
name "*.w.example" is used in constructing NSEC chains, and that the
RRSIG covering the "*.w.example" MX RRset has a label count of 2.
The zone also includes two delegations. The delegation to
"b.example" includes an NS RRset, glue address records, and an NSEC
RR; note that only the NSEC RRset is signed. The delegation to
"a.example" provides a DS RR; note that only the NSEC and DS RRsets
are signed.
<span class="h2"><a class="selflink" id="appendix-B" href="#appendix-B">Appendix B</a>. Example Responses</span>
The examples in this section show response messages using the signed
zone example in <a href="#appendix-A">Appendix A</a>.
<span class="h3"><a class="selflink" id="appendix-B.1" href="#appendix-B.1">B.1</a>. Answer</span>
A successful query to an authoritative server.
;; Header: QR AA DO RCODE=0
;;
;; Question
x.w.example. IN MX
;; Answer
x.w.example. 3600 IN MX 1 xx.example.
x.w.example. 3600 RRSIG MX 5 3 3600 20040509183619 (
20040409183619 38519 example.
Il2WTZ+Bkv+OytBx4LItNW5mjB4RCwhOO8y1
XzPHZmZUTVYL7LaA63f6T9ysVBzJRI3KRjAP
H3U1qaYnDoN1DrWqmi9RJe4FoObkbcdm7P3I
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
kx70ePCoFgRz1Yq+bVVXCvGuAU4xALv3W/Y1
jNSlwZ2mSWKHfxFQxPtLj8s32+k= )
;; Authority
example. 3600 NS ns1.example.
example. 3600 NS ns2.example.
example. 3600 RRSIG NS 5 1 3600 20040509183619 (
20040409183619 38519 example.
gl13F00f2U0R+SWiXXLHwsMY+qStYy5k6zfd
EuivWc+wd1fmbNCyql0Tk7lHTX6UOxc8AgNf
4ISFve8XqF4q+o9qlnqIzmppU3LiNeKT4FZ8
RO5urFOvoMRTbQxW3U0hXWuggE4g3ZpsHv48
0HjMeRaZB/FRPGfJPajngcq6Kwg= )
;; Additional
xx.example. 3600 IN A 192.0.2.10
xx.example. 3600 RRSIG A 5 2 3600 20040509183619 (
20040409183619 38519 example.
kBF4YxMGWF0D8r0cztL+2fWWOvN1U/GYSpYP
7SoKoNQ4fZKyk+weWGlKLIUM+uE1zjVTPXoa
0Z6WG0oZp46rkl1EzMcdMgoaeUzzAJ2BMq+Y
VdxG9IK1yZkYGY9AgbTOGPoAgbJyO9EPULsx
kbIDV6GPPSZVusnZU6OMgdgzHV4= )
xx.example. 3600 AAAA 2001:db8::f00:baaa
xx.example. 3600 RRSIG AAAA 5 2 3600 20040509183619 (
20040409183619 38519 example.
Zzj0yodDxcBLnnOIwDsuKo5WqiaK24DlKg9C
aGaxDFiKgKobUj2jilYQHpGFn2poFRetZd4z
ulyQkssz2QHrVrPuTMS22knudCiwP4LWpVTr
U4zfeA+rDz9stmSBP/4PekH/x2IoAYnwctd/
xS9cL2QgW7FChw16mzlkH6/vsfs= )
ns1.example. 3600 IN A 192.0.2.1
ns1.example. 3600 RRSIG A 5 2 3600 20040509183619 (
20040409183619 38519 example.
F1C9HVhIcs10cZU09G5yIVfKJy5yRQQ3qVet
5pGhp82pzhAOMZ3K22JnmK4c+IjUeFp/to06
im5FVpHtbFisdjyPq84bhTv8vrXt5AB1wNB+
+iAqvIfdgW4sFNC6oADb1hK8QNauw9VePJhK
v/iVXSYC0b7mPSU+EOlknFpVECs= )
ns2.example. 3600 IN A 192.0.2.2
ns2.example. 3600 RRSIG A 5 2 3600 20040509183619 (
20040409183619 38519 example.
V7cQRw1TR+knlaL1z/psxlS1PcD37JJDaCMq
Qo6/u1qFQu6x+wuDHRH22Ap9ulJPQjFwMKOu
yfPGQPC8KzGdE3vt5snFEAoE1Vn3mQqtu7SO
6amIjk13Kj/jyJ4nGmdRIc/3cM3ipXFhNTKq
rdhx8SZ0yy4ObIRzIzvBFLiSS8o= )
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
<span class="h3"><a class="selflink" id="appendix-B.2" href="#appendix-B.2">B.2</a>. Name Error</span>
An authoritative name error. The NSEC RRs prove that the name does
not exist and that no covering wildcard exists.
;; Header: QR AA DO RCODE=3
;;
;; Question
ml.example. IN A
;; Answer
;; (empty)
;; Authority
example. 3600 IN SOA ns1.example. bugs.x.w.example. (
1081539377
3600
300
3600000
3600
)
example. 3600 RRSIG SOA 5 1 3600 20040509183619 (
20040409183619 38519 example.
ONx0k36rcjaxYtcNgq6iQnpNV5+drqYAsC9h
7TSJaHCqbhE67Sr6aH2xDUGcqQWu/n0UVzrF
vkgO9ebarZ0GWDKcuwlM6eNB5SiX2K74l5LW
DA7S/Un/IbtDq4Ay8NMNLQI7Dw7n4p8/rjkB
jV7j86HyQgM5e7+miRAz8V01b0I= )
b.example. 3600 NSEC ns1.example. NS RRSIG NSEC
b.example. 3600 RRSIG NSEC 5 2 3600 20040509183619 (
20040409183619 38519 example.
GNuxHn844wfmUhPzGWKJCPY5ttEX/RfjDoOx
9ueK1PtYkOWKOOdiJ/PJKCYB3hYX+858dDWS
xb2qnV/LSTCNVBnkm6owOpysY97MVj5VQEWs
0lm9tFoqjcptQkmQKYPrwUnCSNwvvclSF1xZ
vhRXgWT7OuFXldoCG6TfVFMs9xE= )
example. 3600 NSEC a.example. NS SOA MX RRSIG NSEC DNSKEY
example. 3600 RRSIG NSEC 5 1 3600 20040509183619 (
20040409183619 38519 example.
O0k558jHhyrC97ISHnislm4kLMW48C7U7cBm
FTfhke5iVqNRVTB1STLMpgpbDIC9hcryoO0V
Z9ME5xPzUEhbvGnHd5sfzgFVeGxr5Nyyq4tW
SDBgIBiLQUv1ivy29vhXy7WgR62dPrZ0PWvm
jfFJ5arXf4nPxp/kEowGgBRzY/U= )
;; Additional
;; (empty)
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
<span class="h3"><a class="selflink" id="appendix-B.3" href="#appendix-B.3">B.3</a>. No Data Error</span>
A "no data" response. The NSEC RR proves that the name exists and
that the requested RR type does not.
;; Header: QR AA DO RCODE=0
;;
;; Question
ns1.example. IN MX
;; Answer
;; (empty)
;; Authority
example. 3600 IN SOA ns1.example. bugs.x.w.example. (
1081539377
3600
300
3600000
3600
)
example. 3600 RRSIG SOA 5 1 3600 20040509183619 (
20040409183619 38519 example.
ONx0k36rcjaxYtcNgq6iQnpNV5+drqYAsC9h
7TSJaHCqbhE67Sr6aH2xDUGcqQWu/n0UVzrF
vkgO9ebarZ0GWDKcuwlM6eNB5SiX2K74l5LW
DA7S/Un/IbtDq4Ay8NMNLQI7Dw7n4p8/rjkB
jV7j86HyQgM5e7+miRAz8V01b0I= )
ns1.example. 3600 NSEC ns2.example. A RRSIG NSEC
ns1.example. 3600 RRSIG NSEC 5 2 3600 20040509183619 (
20040409183619 38519 example.
I4hj+Kt6+8rCcHcUdolks2S+Wzri9h3fHas8
1rGN/eILdJHN7JpV6lLGPIh/8fIBkfvdyWnB
jjf1q3O7JgYO1UdI7FvBNWqaaEPJK3UkddBq
ZIaLi8Qr2XHkjq38BeQsbp8X0+6h4ETWSGT8
IZaIGBLryQWGLw6Y6X8dqhlnxJM= )
;; Additional
;; (empty)
<span class="h3"><a class="selflink" id="appendix-B.4" href="#appendix-B.4">B.4</a>. Referral to Signed Zone</span>
Referral to a signed zone. The DS RR contains the data which the
resolver will need to validate the corresponding DNSKEY RR in the
child zone's apex.
;; Header: QR DO RCODE=0
;;
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
;; Question
mc.a.example. IN MX
;; Answer
;; (empty)
;; Authority
a.example. 3600 IN NS ns1.a.example.
a.example. 3600 IN NS ns2.a.example.
a.example. 3600 DS 57855 5 1 (
B6DCD485719ADCA18E5F3D48A2331627FDD3
636B )
a.example. 3600 RRSIG DS 5 2 3600 20040509183619 (
20040409183619 38519 example.
oXIKit/QtdG64J/CB+Gi8dOvnwRvqrto1AdQ
oRkAN15FP3iZ7suB7gvTBmXzCjL7XUgQVcoH
kdhyCuzp8W9qJHgRUSwKKkczSyuL64nhgjuD
EML8l9wlWVsl7PR2VnZduM9bLyBhaaPmRKX/
Fm+v6ccF2EGNLRiY08kdkz+XHHo= )
;; Additional
ns1.a.example. 3600 IN A 192.0.2.5
ns2.a.example. 3600 IN A 192.0.2.6
<span class="h3"><a class="selflink" id="appendix-B.5" href="#appendix-B.5">B.5</a>. Referral to Unsigned Zone</span>
Referral to an unsigned zone. The NSEC RR proves that no DS RR for
this delegation exists in the parent zone.
;; Header: QR DO RCODE=0
;;
;; Question
mc.b.example. IN MX
;; Answer
;; (empty)
;; Authority
b.example. 3600 IN NS ns1.b.example.
b.example. 3600 IN NS ns2.b.example.
b.example. 3600 NSEC ns1.example. NS RRSIG NSEC
b.example. 3600 RRSIG NSEC 5 2 3600 20040509183619 (
20040409183619 38519 example.
GNuxHn844wfmUhPzGWKJCPY5ttEX/RfjDoOx
9ueK1PtYkOWKOOdiJ/PJKCYB3hYX+858dDWS
xb2qnV/LSTCNVBnkm6owOpysY97MVj5VQEWs
0lm9tFoqjcptQkmQKYPrwUnCSNwvvclSF1xZ
vhRXgWT7OuFXldoCG6TfVFMs9xE= )
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
;; Additional
ns1.b.example. 3600 IN A 192.0.2.7
ns2.b.example. 3600 IN A 192.0.2.8
<span class="h3"><a class="selflink" id="appendix-B.6" href="#appendix-B.6">B.6</a>. Wildcard Expansion</span>
A successful query that was answered via wildcard expansion. The
label count in the answer's RRSIG RR indicates that a wildcard RRset
was expanded to produce this response, and the NSEC RR proves that no
closer match exists in the zone.
;; Header: QR AA DO RCODE=0
;;
;; Question
a.z.w.example. IN MX
;; Answer
a.z.w.example. 3600 IN MX 1 ai.example.
a.z.w.example. 3600 RRSIG MX 5 2 3600 20040509183619 (
20040409183619 38519 example.
OMK8rAZlepfzLWW75Dxd63jy2wswESzxDKG2
f9AMN1CytCd10cYISAxfAdvXSZ7xujKAtPbc
tvOQ2ofO7AZJ+d01EeeQTVBPq4/6KCWhqe2X
TjnkVLNvvhnc0u28aoSsG0+4InvkkOHknKxw
4kX18MMR34i8lC36SR5xBni8vHI= )
;; Authority
example. 3600 NS ns1.example.
example. 3600 NS ns2.example.
example. 3600 RRSIG NS 5 1 3600 20040509183619 (
20040409183619 38519 example.
gl13F00f2U0R+SWiXXLHwsMY+qStYy5k6zfd
EuivWc+wd1fmbNCyql0Tk7lHTX6UOxc8AgNf
4ISFve8XqF4q+o9qlnqIzmppU3LiNeKT4FZ8
RO5urFOvoMRTbQxW3U0hXWuggE4g3ZpsHv48
0HjMeRaZB/FRPGfJPajngcq6Kwg= )
x.y.w.example. 3600 NSEC xx.example. MX RRSIG NSEC
x.y.w.example. 3600 RRSIG NSEC 5 4 3600 20040509183619 (
20040409183619 38519 example.
OvE6WUzN2ziieJcvKPWbCAyXyP6ef8cr6Csp
ArVSTzKSquNwbezZmkU7E34o5lmb6CWSSSpg
xw098kNUFnHcQf/LzY2zqRomubrNQhJTiDTX
a0ArunJQCzPjOYq5t0SLjm6qp6McJI1AP5Vr
QoKqJDCLnoAlcPOPKAm/jJkn3jk= )
;; Additional
ai.example. 3600 IN A 192.0.2.9
ai.example. 3600 RRSIG A 5 2 3600 20040509183619 (
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
20040409183619 38519 example.
pAOtzLP2MU0tDJUwHOKE5FPIIHmdYsCgTb5B
ERGgpnJluA9ixOyf6xxVCgrEJW0WNZSsJicd
hBHXfDmAGKUajUUlYSAH8tS4ZnrhyymIvk3u
ArDu2wfT130e9UHnumaHHMpUTosKe22PblOy
6zrTpg9FkS0XGVmYRvOTNYx2HvQ= )
ai.example. 3600 AAAA 2001:db8::f00:baa9
ai.example. 3600 RRSIG AAAA 5 2 3600 20040509183619 (
20040409183619 38519 example.
nLcpFuXdT35AcE+EoafOUkl69KB+/e56XmFK
kewXG2IadYLKAOBIoR5+VoQV3XgTcofTJNsh
1rnF6Eav2zpZB3byI6yo2bwY8MNkr4A7cL9T
cMmDwV/hWFKsbGBsj8xSCN/caEL2CWY/5XP2
sZM6QjBBLmukH30+w1z3h8PUP2o= )
<span class="h3"><a class="selflink" id="appendix-B.7" href="#appendix-B.7">B.7</a>. Wildcard No Data Error</span>
A "no data" response for a name covered by a wildcard. The NSEC RRs
prove that the matching wildcard name does not have any RRs of the
requested type and that no closer match exists in the zone.
;; Header: QR AA DO RCODE=0
;;
;; Question
a.z.w.example. IN AAAA
;; Answer
;; (empty)
;; Authority
example. 3600 IN SOA ns1.example. bugs.x.w.example. (
1081539377
3600
300
3600000
3600
)
example. 3600 RRSIG SOA 5 1 3600 20040509183619 (
20040409183619 38519 example.
ONx0k36rcjaxYtcNgq6iQnpNV5+drqYAsC9h
7TSJaHCqbhE67Sr6aH2xDUGcqQWu/n0UVzrF
vkgO9ebarZ0GWDKcuwlM6eNB5SiX2K74l5LW
DA7S/Un/IbtDq4Ay8NMNLQI7Dw7n4p8/rjkB
jV7j86HyQgM5e7+miRAz8V01b0I= )
x.y.w.example. 3600 NSEC xx.example. MX RRSIG NSEC
x.y.w.example. 3600 RRSIG NSEC 5 4 3600 20040509183619 (
20040409183619 38519 example.
OvE6WUzN2ziieJcvKPWbCAyXyP6ef8cr6Csp
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
ArVSTzKSquNwbezZmkU7E34o5lmb6CWSSSpg
xw098kNUFnHcQf/LzY2zqRomubrNQhJTiDTX
a0ArunJQCzPjOYq5t0SLjm6qp6McJI1AP5Vr
QoKqJDCLnoAlcPOPKAm/jJkn3jk= )
*.w.example. 3600 NSEC x.w.example. MX RRSIG NSEC
*.w.example. 3600 RRSIG NSEC 5 2 3600 20040509183619 (
20040409183619 38519 example.
r/mZnRC3I/VIcrelgIcteSxDhtsdlTDt8ng9
HSBlABOlzLxQtfgTnn8f+aOwJIAFe1Ee5RvU
5cVhQJNP5XpXMJHfyps8tVvfxSAXfahpYqtx
91gsmcV/1V9/bZAG55CefP9cM4Z9Y9NT9XQ8
s1InQ2UoIv6tJEaaKkP701j8OLA= )
;; Additional
;; (empty)
<span class="h3"><a class="selflink" id="appendix-B.8" href="#appendix-B.8">B.8</a>. DS Child Zone No Data Error</span>
A "no data" response for a QTYPE=DS query that was mistakenly sent to
a name server for the child zone.
;; Header: QR AA DO RCODE=0
;;
;; Question
example. IN DS
;; Answer
;; (empty)
;; Authority
example. 3600 IN SOA ns1.example. bugs.x.w.example. (
1081539377
3600
300
3600000
3600
)
example. 3600 RRSIG SOA 5 1 3600 20040509183619 (
20040409183619 38519 example.
ONx0k36rcjaxYtcNgq6iQnpNV5+drqYAsC9h
7TSJaHCqbhE67Sr6aH2xDUGcqQWu/n0UVzrF
vkgO9ebarZ0GWDKcuwlM6eNB5SiX2K74l5LW
DA7S/Un/IbtDq4Ay8NMNLQI7Dw7n4p8/rjkB
jV7j86HyQgM5e7+miRAz8V01b0I= )
example. 3600 NSEC a.example. NS SOA MX RRSIG NSEC DNSKEY
example. 3600 RRSIG NSEC 5 1 3600 20040509183619 (
20040409183619 38519 example.
O0k558jHhyrC97ISHnislm4kLMW48C7U7cBm
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
FTfhke5iVqNRVTB1STLMpgpbDIC9hcryoO0V
Z9ME5xPzUEhbvGnHd5sfzgFVeGxr5Nyyq4tW
SDBgIBiLQUv1ivy29vhXy7WgR62dPrZ0PWvm
jfFJ5arXf4nPxp/kEowGgBRzY/U= )
;; Additional
;; (empty)
<span class="h2"><a class="selflink" id="appendix-C" href="#appendix-C">Appendix C</a>. Authentication Examples</span>
The examples in this section show how the response messages in
<a href="#appendix-B">Appendix B</a> are authenticated.
<span class="h3"><a class="selflink" id="appendix-C.1" href="#appendix-C.1">C.1</a>. Authenticating an Answer</span>
The query in <a href="#appendix-B.1">Appendix B.1</a> returned an MX RRset for "x.w.example.com".
The corresponding RRSIG indicates that the MX RRset was signed by an
"example" DNSKEY with algorithm 5 and key tag 38519. The resolver
needs the corresponding DNSKEY RR in order to authenticate this
answer. The discussion below describes how a resolver might obtain
this DNSKEY RR.
The RRSIG indicates the original TTL of the MX RRset was 3600, and,
for the purpose of authentication, the current TTL is replaced by
3600. The RRSIG labels field value of 3 indicates that the answer
was not the result of wildcard expansion. The "x.w.example.com" MX
RRset is placed in canonical form, and, assuming the current time
falls between the signature inception and expiration dates, the
signature is authenticated.
<span class="h4"><a class="selflink" id="appendix-C.1.1" href="#appendix-C.1.1">C.1.1</a>. Authenticating the Example DNSKEY RR</span>
This example shows the logical authentication process that starts
from the a configured root DNSKEY (or DS RR) and moves down the tree
to authenticate the desired "example" DNSKEY RR. Note that the
logical order is presented for clarity. An implementation may choose
to construct the authentication as referrals are received or to
construct the authentication chain only after all RRsets have been
obtained, or in any other combination it sees fit. The example here
demonstrates only the logical process and does not dictate any
implementation rules.
We assume the resolver starts with a configured DNSKEY RR for the
root zone (or a configured DS RR for the root zone). The resolver
checks whether this configured DNSKEY RR is present in the root
DNSKEY RRset (or whether the DS RR matches some DNSKEY in the root
DNSKEY RRset), whether this DNSKEY RR has signed the root DNSKEY
RRset, and whether the signature lifetime is valid. If all these
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
conditions are met, all keys in the DNSKEY RRset are considered
authenticated. The resolver then uses one (or more) of the root
DNSKEY RRs to authenticate the "example" DS RRset. Note that the
resolver may have to query the root zone to obtain the root DNSKEY
RRset or "example" DS RRset.
Once the DS RRset has been authenticated using the root DNSKEY, the
resolver checks the "example" DNSKEY RRset for some "example" DNSKEY
RR that matches one of the authenticated "example" DS RRs. If such a
matching "example" DNSKEY is found, the resolver checks whether this
DNSKEY RR has signed the "example" DNSKEY RRset and the signature
lifetime is valid. If these conditions are met, all keys in the
"example" DNSKEY RRset are considered authenticated.
Finally, the resolver checks that some DNSKEY RR in the "example"
DNSKEY RRset uses algorithm 5 and has a key tag of 38519. This
DNSKEY is used to authenticate the RRSIG included in the response.
If multiple "example" DNSKEY RRs match this algorithm and key tag,
then each DNSKEY RR is tried, and the answer is authenticated if any
of the matching DNSKEY RRs validate the signature as described above.
<span class="h3"><a class="selflink" id="appendix-C.2" href="#appendix-C.2">C.2</a>. Name Error</span>
The query in <a href="#appendix-B.2">Appendix B.2</a> returned NSEC RRs that prove that the
requested data does not exist and no wildcard applies. The negative
reply is authenticated by verifying both NSEC RRs. The NSEC RRs are
authenticated in a manner identical to that of the MX RRset discussed
above.
<span class="h3"><a class="selflink" id="appendix-C.3" href="#appendix-C.3">C.3</a>. No Data Error</span>
The query in <a href="#appendix-B.3">Appendix B.3</a> returned an NSEC RR that proves that the
requested name exists, but the requested RR type does not exist. The
negative reply is authenticated by verifying the NSEC RR. The NSEC
RR is authenticated in a manner identical to that of the MX RRset
discussed above.
<span class="h3"><a class="selflink" id="appendix-C.4" href="#appendix-C.4">C.4</a>. Referral to Signed Zone</span>
The query in <a href="#appendix-B.4">Appendix B.4</a> returned a referral to the signed
"a.example." zone. The DS RR is authenticated in a manner identical
to that of the MX RRset discussed above. This DS RR is used to
authenticate the "a.example" DNSKEY RRset.
Once the "a.example" DS RRset has been authenticated using the
"example" DNSKEY, the resolver checks the "a.example" DNSKEY RRset
for some "a.example" DNSKEY RR that matches the DS RR. If such a
matching "a.example" DNSKEY is found, the resolver checks whether
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
this DNSKEY RR has signed the "a.example" DNSKEY RRset and whether
the signature lifetime is valid. If all these conditions are met,
all keys in the "a.example" DNSKEY RRset are considered
authenticated.
<span class="h3"><a class="selflink" id="appendix-C.5" href="#appendix-C.5">C.5</a>. Referral to Unsigned Zone</span>
The query in <a href="#appendix-B.5">Appendix B.5</a> returned a referral to an unsigned
"b.example." zone. The NSEC proves that no authentication leads from
"example" to "b.example", and the NSEC RR is authenticated in a
manner identical to that of the MX RRset discussed above.
<span class="h3"><a class="selflink" id="appendix-C.6" href="#appendix-C.6">C.6</a>. Wildcard Expansion</span>
The query in <a href="#appendix-B.6">Appendix B.6</a> returned an answer that was produced as a
result of wildcard expansion. The answer section contains a wildcard
RRset expanded as it would be in a traditional DNS response, and the
corresponding RRSIG indicates that the expanded wildcard MX RRset was
signed by an "example" DNSKEY with algorithm 5 and key tag 38519.
The RRSIG indicates that the original TTL of the MX RRset was 3600,
and, for the purpose of authentication, the current TTL is replaced
by 3600. The RRSIG labels field value of 2 indicates that the answer
is the result of wildcard expansion, as the "a.z.w.example" name
contains 4 labels. The name "a.z.w.w.example" is replaced by
"*.w.example", the MX RRset is placed in canonical form, and,
assuming that the current time falls between the signature inception
and expiration dates, the signature is authenticated.
The NSEC proves that no closer match (exact or closer wildcard) could
have been used to answer this query, and the NSEC RR must also be
authenticated before the answer is considered valid.
<span class="h3"><a class="selflink" id="appendix-C.7" href="#appendix-C.7">C.7</a>. Wildcard No Data Error</span>
The query in <a href="#appendix-B.7">Appendix B.7</a> returned NSEC RRs that prove that the
requested data does not exist and no wildcard applies. The negative
reply is authenticated by verifying both NSEC RRs.
<span class="h3"><a class="selflink" id="appendix-C.8" href="#appendix-C.8">C.8</a>. DS Child Zone No Data Error</span>
The query in <a href="#appendix-B.8">Appendix B.8</a> returned NSEC RRs that shows the requested
was answered by a child server ("example" server). The NSEC RR
indicates the presence of an SOA RR, showing that the answer is from
the child . Queries for the "example" DS RRset should be sent to the
parent servers ("root" servers).
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
Authors' Addresses
Roy Arends
Telematica Instituut
Brouwerijstraat 1
7523 XC Enschede
NL
EMail: roy.arends@telin.nl
Rob Austein
Internet Systems Consortium
950 Charter Street
Redwood City, CA 94063
USA
EMail: sra@isc.org
Matt Larson
VeriSign, Inc.
21345 Ridgetop Circle
Dulles, VA 20166-6503
USA
EMail: mlarson@verisign.com
Dan Massey
Colorado State University
Department of Computer Science
Fort Collins, CO 80523-1873
EMail: massey@cs.colostate.edu
Scott Rose
National Institute for Standards and Technology
100 Bureau Drive
Gaithersburg, MD 20899-8920
USA
EMail: scott.rose@nist.gov
<span class="grey">Arends, 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="./rfc4035">RFC 4035</a> DNSSEC Protocol Modifications March 2005</span>
Full Copyright Statement
Copyright (C) The Internet Society (2005).
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.
Arends, et al. Standards Track [Page 53]
</pre>
|