idnits 2.17.1 draft-ietf-dnsop-kskroll-sentinel-12.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (May 2, 2018) is 2186 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) No issues found here. Summary: 0 errors (**), 0 flaws (~~), 1 warning (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 DNSOP G. Huston 3 Internet-Draft J. Damas 4 Intended status: Standards Track APNIC 5 Expires: November 3, 2018 W. Kumari 6 Google 7 May 2, 2018 9 A Root Key Trust Anchor Sentinel for DNSSEC 10 draft-ietf-dnsop-kskroll-sentinel-12 12 Abstract 14 The DNS Security Extensions (DNSSEC) were developed to provide origin 15 authentication and integrity protection for DNS data by using digital 16 signatures. These digital signatures can be verified by building a 17 chain of trust starting from a trust anchor and proceeding down to a 18 particular node in the DNS. This document specifies a mechanism that 19 will allow an end user and third parties to determine the trusted key 20 state for the root key of the resolvers that handle that user's DNS 21 queries. Note that this method is only applicable for determining 22 which keys are in the trust store for the root key. 24 There is an example / toy implementation of this at http://www.ksk- 25 test.net . 27 [ This document is being collaborated on in Github at: 28 https://github.com/APNIC-Labs/draft-kskroll-sentinel. The most 29 recent version of the document, open issues, etc should all be 30 available here. The authors (gratefully) accept pull requests. Text 31 in square brackets will be removed before publication. ] 33 [ NOTE: This version uses the labels "root-key-sentinel-is-ta-", and 34 "root-key-sentinel-not-ta-".; older versions of this document used 35 "kskroll-sentinel-is-ta-", "kskroll-sentinel-not-ta-", and before that, "_is-ta-", "_not-ta-". 37 Also note that the format of the tag-index is now zero-filled 38 decimal. Apologies to those who have begun implementing earlier 39 versions of this specification.] 41 Status of This Memo 43 This Internet-Draft is submitted in full conformance with the 44 provisions of BCP 78 and BCP 79. 46 Internet-Drafts are working documents of the Internet Engineering 47 Task Force (IETF). Note that other groups may also distribute 48 working documents as Internet-Drafts. The list of current Internet- 49 Drafts is at https://datatracker.ietf.org/drafts/current/. 51 Internet-Drafts are draft documents valid for a maximum of six months 52 and may be updated, replaced, or obsoleted by other documents at any 53 time. It is inappropriate to use Internet-Drafts as reference 54 material or to cite them other than as "work in progress." 56 This Internet-Draft will expire on November 3, 2018. 58 Copyright Notice 60 Copyright (c) 2018 IETF Trust and the persons identified as the 61 document authors. All rights reserved. 63 This document is subject to BCP 78 and the IETF Trust's Legal 64 Provisions Relating to IETF Documents 65 (https://trustee.ietf.org/license-info) in effect on the date of 66 publication of this document. Please review these documents 67 carefully, as they describe your rights and restrictions with respect 68 to this document. Code Components extracted from this document must 69 include Simplified BSD License text as described in Section 4.e of 70 the Trust Legal Provisions and are provided without warranty as 71 described in the Simplified BSD License. 73 Table of Contents 75 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 76 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 77 2. Sentinel Mechanism in Resolvers . . . . . . . . . . . . . . . 4 78 2.1. Preconditions . . . . . . . . . . . . . . . . . . . . . . 4 79 2.2. Special Processing . . . . . . . . . . . . . . . . . . . 5 80 3. Processing Sentinel Results . . . . . . . . . . . . . . . . . 5 81 4. Sentinel Test Result Considerations . . . . . . . . . . . . . 7 82 5. Security Considerations . . . . . . . . . . . . . . . . . . . 9 83 6. Privacy Considerations . . . . . . . . . . . . . . . . . . . 9 84 7. Implementation Experience . . . . . . . . . . . . . . . . . . 9 85 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 86 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 87 10. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 10 88 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 89 11.1. Normative References . . . . . . . . . . . . . . . . . . 13 90 11.2. Informative References . . . . . . . . . . . . . . . . . 13 91 Appendix A. Protocol Walkthrough Example . . . . . . . . . . . . 14 92 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 94 1. Introduction 96 The DNS Security Extensions (DNSSEC) [RFC4033], [RFC4034] and 97 [RFC4035] were developed to provide origin authentication and 98 integrity protection for DNS data by using digital signatures. 99 DNSSEC uses Key Tags to efficiently match signatures to the keys from 100 which they are generated. The Key Tag is a 16-bit value computed 101 from the RDATA portion of a DNSKEY RR using a formula found in "Key 102 Tag Calculation" (Appendix B of "Resource Records for the DNS 103 Security Extensions" [RFC4034]), a formula similar to a ones- 104 complement checksum. RRSIG RRs contain a Key Tag field whose value 105 is equal to the Key Tag of the DNSKEY RR that validates the 106 signature. 108 This document specifies how validating resolvers can respond to 109 certain queries in a manner that allows a querier to deduce whether a 110 particular key for the root has been loaded into that resolver's 111 trusted key store. In particular, this response mechanism can be 112 used to determine whether a certain root zone KSK is ready to be used 113 as a trusted key, within the context of a planned root zone KSK key 114 roll, by this resolver. 116 There are two primary use cases for this mechanism: 118 o Users want to know whether the resolvers they use are ready for an 119 upcoming root KSK rollover 121 o Researchers want to perform Internet-wide studies about the 122 percentage of users who will be ready for an upcoming root KSK 123 rollover 125 The mechanism described in this document meets both of these use 126 cases. This new mechanism is OPTIONAL to implement and use, although 127 for reasons of supporting broad-based measurement techniques, it is 128 strongly preferred that configurations of DNSSEC-validating resolvers 129 enabled this mechanism by default, allowing for local configuration 130 directives to disable this mechanism if desired. 132 The sentinel test described in this document determines whether a 133 user's browser or operating system looking up the special names that 134 are used in this protocol would be able to validate using the root 135 KSK indicated by the special names. The protocol uses the DNS 136 SERVFAIL response code (RCODE 2) for this purpose because that is the 137 response code that is returned by resolvers when DNSSEC validation 138 fails. If a browser or operating system has multiple resolvers 139 configured, and those resolvers have different properties (for 140 example, one performs DNSSEC validation and one does not), the 141 sentinel mechanism might search among the different resolvers, or 142 might not, depending on how the browser or operating system is 143 configured. 145 Note that the sentinel mechanism described here measures a very 146 different (and likely more useful) metric than [RFC8145]. RFC 8145 147 relies on resolvers reporting towards the root servers a list of 148 locally cached trust anchors for the root zone. Those reports can be 149 used to infer how many resolvers may be impacted by a KSK roll, but 150 not what the user impact of the KSK roll will be. 152 1.1. Terminology 154 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 155 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 156 document are to be interpreted as described in RFC 2119. 158 2. Sentinel Mechanism in Resolvers 160 DNSSEC-Validating resolvers that implement this mechanism MUST 161 perform validation of responses in accordance with the DNSSEC 162 response validation specification [RFC4035]. 164 This sentinel mechanism makes use of two special labels: 166 o root-key-sentinel-is-ta- 168 o root-key-sentinel-not-ta- 170 Note that the is specified in the DNS label as unsigned 171 decimal integer (as described in [RFC4034], section 5.3), but zero- 172 padded to five digits (for example, a Key Tag value of 42 would be 173 represented in the label as 00042). 175 These labels trigger special processing in the resolver when 176 responses from authoritative servers are received. Labels containing 177 "root-key-sentinel-is-ta-" is used to answer the question 178 "Is this the Key Tag of a Key which the validating DNS resolver is 179 currently trusting as a trust anchor?" Labels containing "root-key- 180 sentinel-not-ta-" is used to answer the question "Is this 181 the Key Tag of a Key which the validating DNS resolver is *not* 182 currently trusting as a trust anchor?" 184 2.1. Preconditions 186 All of the following conditions must be met to trigger special 187 processing inside resolver code: 189 o The DNS response is DNSSEC validated. 191 o The result of validation is "Secure". 193 o The Checking Disabled (CD) bit in the query is not set. 195 o The QTYPE is either A or AAAA (Query Type value 1 or 28) 197 o The OPCODE is QUERY 199 o The leftmost label of the original QNAME (the name sent in the 200 Question Section in the original query) is either "root-key- 201 sentinel-is-ta-" or "root-key-sentinel-not-ta-" 203 If any one of the preconditions is not met, the resolver MUST NOT 204 alter the DNS response based on the mechanism in this document. 206 2.2. Special Processing 208 Responses which fulfil all of the preconditions in Section 2.1 209 require special processing, depending on leftmost label in the QNAME. 211 First, the resolver determines if the numerical value of is 212 equal to any of the Key Tag values of an active root zone KSK which 213 is currently trusted by the local resolver and is stored in its store 214 of trusted keys. An active root zone KSK is one which could 215 currently be used for validation (that is, a Key that is not in 216 either the AddPend or Revoked state as described in [RFC5011]). 218 Second, the resolver alters the response being sent to the original 219 query based on both the left-most label and the presence of a Key 220 with given Key Tag in the trust anchor store. Two labels and two 221 possible states of the corresponding Key generate four possible 222 combinations summarized in the table: 224 Label | Key is trusted | Key is not trusted 225 ------------------------------------------------------------------ 226 is-ta | return original answer | return SERVFAIL 227 not-ta | return SERVFAIL | return original answer 229 Instruction "return SERVFAIL" means that the resolver MUST set 230 RCODE=SERVFAIL (value 2) and MUST empty the ANSWER section of the DNS 231 response, ignoring all other documents which specify content of the 232 ANSWER section. 234 3. Processing Sentinel Results 236 This proposed test that uses the sentinel detection mechanism 237 described in this document is based on the use of three DNS names 238 that have three distinct DNS resolution behaviours. The test is 239 intended to allow a user or a third party to determine the state of 240 their DNS resolution system, and, in particular, whether or not they 241 are using one or more validating DNS resolvers that use a particular 242 trust anchor for the root zone. 244 The critical aspect of the DNS names used in this mechanism is that 245 they contain the specified label for either the positive and negative 246 test as the left-most label in the query name. 248 The sentinel detection process uses a test with three query names: 250 o A query name containing the left-most label "root-key-sentinel-is- 251 ta-". This corresponds to a a validly-signed RRset in 252 the zone, so that responses associated with queried names in this 253 zone can be authenticated by a DNSSEC-validating resolver. Any 254 validly-signed DNS zone can be used for this test. 256 o A query name containing the left-most label "root-key-sentinel- 257 not-ta-". This is also a validly-signed name. Any 258 validly-signed DNS zone can be used for this test. 260 o A query name that is signed with a DNSSEC signature that cannot be 261 validated (described as a "bogus" RRset in Section 5 of [RFC4033], 262 when, for example, an RRset is not signed with a valid RRSIG 263 record). 265 The responses received from queries to resolve each of these names 266 would allow us to infer a trust key state of the resolution 267 environment. The techniques describes in this document rely on 268 (DNSSEC validating) resolvers responding with SERVFAIL to valid 269 answers. Note that a slew of other issues can also cause SERVFAIL 270 responses, and so the sentinel processing may sometimes result in 271 incorrect conclusions. 273 To describe this process of classification, we can classify resolvers 274 into four distinct behavior types, for which we will use the labels: 275 "Vnew", "Vold", "Vleg", and "nonV". These labels correspond to 276 resolver behaviour types as follows: 278 Vnew: A DNSSEC-Validating resolver that is configured to implement 279 this mechanism has loaded the nominated key into its local trusted 280 key store will respond with an A or AAAA RRset response for "root- 281 key-sentinel-is-ta" queries, SERVFAIL for "root-key-sentinel-not- 282 ta" queries and SERVFAIL for the invalidly signed name queries. 284 Vold: A DNSSEC-Validating resolver that is configured to implement 285 this mechanism that has not loaded the nominated key into its 286 local trusted key store will respond with an SERVFAIL for "root- 287 key-sentinel-is-ta" queries, an A or AAAA RRset response for 288 "root-key-sentinel-not-ta" queries and SERVFAIL for the invalidly 289 signed name queries. 291 Vleg: A DNSSEC-Validating resolver that does not implement this 292 mechanism will respond with an A or AAAA RRset response for "root- 293 key-sentinel-is-ta", an A or AAAA RRset response for "root-key- 294 sentinel-not-ta" and SERVFAIL for the invalid name. 296 nonV: A non-DNSSEC-Validating resolver will respond with an A or 297 AAAA record response for "root-key-sentinel-is-ta", an A record 298 response for "root-key-sentinel-not-ta" and an A or AAAA RRset 299 response for the invalid name. 301 Given the clear delineation amongst these three cases, if a client 302 directs these three queries to a simple resolver, the variation in 303 response to the three queries should allow the client to determine 304 the category of the resolver, and if it supports this mechanism, 305 whether or not it has a particular key in its trust anchor store. 307 Query 308 +----------+-----------+------------+ 309 | is-ta | not-ta | invalid | 310 +-------+----------+-----------+------------+ 311 | Vnew | A | SERVFAIL | SERVFAIL | 312 | Vold | SERVFAIL | A | SERVFAIL | 313 Type | Vleg | A | A | SERVFAIL | 314 | nonV | A | A | A | 315 +-------+----------+-----------+------------+ 317 A "Vnew" type says that the nominated key is trusted by the resolver 318 and has been loaded into its local trusted key stash. A "Vold" type 319 says that the nominated key is not yet trusted by the resolver in its 320 own right. A "Vleg" type does not give any information about the 321 trust anchors, and a "nonV" type indicates that the resolver does not 322 perform DNSSEC validation. 324 4. Sentinel Test Result Considerations 326 The description in the previous section describes a simple situation 327 where the test queries were being passed to a single recursive 328 resolver that directly queried authoritative name servers, including 329 the root servers. 331 There is also the common case where the end client's browser or 332 operating system is configured to use multiple resolvers. In these 333 cases, a SERVFAIL response from one resolver may cause the end client 334 to repeat the query against one of the other configured resolvers. 336 If the client's browser or operating system does not try the 337 additional resolvers, the sentinel test will effectively only be for 338 the first resolver. 340 If any of the client's resolvers are non-validating resolvers, the 341 tests will result in the client reporting that it has a non- 342 validating DNS environment ("nonV"), which is effectively the case. 344 If all of the client resolvers are DNSSEC-validating resolvers, but 345 some do not support this trusted key mechanism, then the result will 346 be indeterminate with respect to trusted key status ("Vleg"). 347 Similarly, if all the client's resolvers support this mechanism, but 348 some have loaded the key into the trusted key stash and some have 349 not, then the result is indeterminate ("Vleg"). 351 There is also the common case of a recursive resolver using a 352 forwarder. 354 If the resolver is non-validating, and it has a single forwarder 355 clause, then the resolver will presumably mirror the capabilities of 356 the forwarder target resolver. If this non-validating resolver it 357 has multiple forwarders, then the above considerations will apply. 359 If the validating resolver has a forwarding configuration, and uses 360 the CD bit on all forwarded queries, then this resolver is acting in 361 a manner that is identical to a standalone resolver. The same 362 consideration applies if any one of the forwarder targets is a non- 363 validating resolver. Similarly, if all the forwarder targets do not 364 apply this trusted key mechanism, the same considerations apply. 366 A more complex case is where all of the following conditions all 367 hold: 369 o Both the validating resolver and the forwarder target resolver 370 support this trusted key sentinel mechanism 372 o The local resolver's queries do not have the CD bit set 374 o The trusted key state differs between the forwarding resolver and 375 the forwarder target resolver 377 In such a case, either the outcome is indeterminate validating 378 ("Vleg"), or a case of mixed signals (SERVFAIL in all three 379 responses), which is similarly an indeterminate response with respect 380 to the trusted key state. 382 Please note that SERVFAIL might be cached according to [RFC2308] 383 section 7 for up to 5 minutes and a positive answer for up to its 384 TTL. 386 5. Security Considerations 388 This document describes a mechanism to allow users and third parties 389 to determine the trust state of root zone key signing keys in the DNS 390 resolution system that they use. 392 The mechanism does not require resolvers to set otherwise 393 unauthenticated responses to be marked as authenticated, and does not 394 alter the security properties of DNSSEC with respect to the 395 interpretation of the authenticity of responses that are so marked. 397 The mechanism does not require any further significant processing of 398 DNS responses, and queries of the form described in this document do 399 not impose any additional load that could be exploited in an attack 400 over the the normal DNSSEC validation processing load. 402 6. Privacy Considerations 404 The mechanism in this document enables third parties (with either 405 good or bad intentions) to learn something about the security 406 configuration of recursive name servers. That is, someone who can 407 cause an Internet user to make specific DNS queries (e.g. via web- 408 based advertisements or javascript in web pages), can, under certain 409 specific circumstances that includes additional knowledge of the 410 resolvers that are invoked by the user, determine which trust anchors 411 are configured in these resolvers. Without this additional 412 knowledge, the third party can infer the aggregate capabilities of 413 the user's DNS resolution environment, but cannot necessarily infer 414 the trust configuration of any recursive name server. 416 7. Implementation Experience 418 Petr Spacek implemented early versions of this technique into the 419 Knot resolver, and identified a number of places where it wasn't 420 clear, and provided very helpful text to address this. 422 Ondrej Sury of ISC has reported to the DNSOP Working Group in April 423 2018 that this technique was peer-reviewed and merged into BIND 424 master branch with the intent to backport the feature into older 425 release branches. 427 Benno Overeinder of NLnet Labs reported to the DNSOP Working Group in 428 April 2018 an intention to support this technique in Unbound in the 429 near future. 431 8. IANA Considerations 433 [Note to IANA, to be removed prior to publication: there are no IANA 434 considerations stated in this version of the document.] 436 9. Acknowledgements 438 This document has borrowed extensively from [RFC8145] for the 439 introductory text, and the authors would like to acknowledge and 440 thank the authors of that document both for some text excerpts and 441 for the more general stimulation of thoughts about monitoring the 442 progress of a roll of the KSK of the root zone of the DNS. 444 The authors would like to thank Joe Abley, Mehmet Akcin, Mark 445 Andrews, Richard Barnes, Ray Bellis, Stephane Bortzmeyer, David 446 Conrad, Ralph Dolmans, John Dickinson, Steinar Haug, Bob Harold, Wes 447 Hardaker, Paul Hoffman, Matt Larson, Jinmei Tatuya, Edward Lewis, 448 George Michaelson, Benno Overeinder, Matthew Pounsett, Andreas 449 Schulze, Mukund Sivaraman, Petr Spacek, Andrew Sullivan, Ondrej Sury, 450 Paul Vixie, Duane Wessels and Paul Wouters for their helpful 451 feedback. 453 The authors would like to especially call out Paul Hoffman and Duane 454 Wessels for providing comments in the form of a pull request. 456 10. Change Log 458 RFC Editor: Please remove this section! 460 Note that this document is being worked on in GitHub - see Abstract. 461 The below is mainly large changes, and is not authoritative. 463 From -11 to -12: 465 o Moved the Walkthrough Example to the end of the document as an 466 appendix. 468 o Incorporated changes as proposed by Ondrej Sury, relating to a 469 consistent use of Key Tag and a reference to the definition of a 470 Bogus RRset. 472 o Corrected minor typos. 474 o Revised the Privacy Considerations. 476 o In response to a request from DNSOP Working Group chairs, a 477 section on reported Implementation Experience has been added, 478 based on postings to the DNSOP Working Group mailing list. 480 From -10 to -11: 482 o Clarified the preconditions for this mechanism as per Working 483 Group mailing list discussion. 485 o Corrected minor typo. 487 From -09 to -10: 489 o Clarified the precondition list to specify that the resolver had 490 performed DNSSEC-validation by setting the AD bit in the response 492 o Clarified the language referring to the operation of RFC8145 493 signalling. 495 From -08 to -09: 497 o Incorporated Paul Hoffman's PR # 15 (Two issues from the 498 Hackathon) - https://github.com/APNIC-Labs/draft-kskroll-sentinel/ 499 pull/15 501 o Clarifies that the match is on the *original* QNAME. 503 From -08 to -07: 505 o Changed title from "A Sentinel for Detecting Trusted Keys in 506 DNSSEC" to "A Root Key Trust Anchor Sentinel for DNSSEC". 508 o Changed magic string from "kskroll-sentinel-" to "root-key- 509 sentinel-" -- this time for sure, Rocky! 511 From -07 to -06: 513 o Addressed GitHub PR #14: Clarifications regarding caching and 514 SERVFAIL responses 516 o Addressed GitHub PR #12, #13: Clarify situation with multiple 517 resolvers, Fix editorial nits. 519 From -05 to -06: 521 o Paul improved my merging of Petr's text to make it more readable. 522 Minor change, but this is just before the cut-off, so I wanted it 523 maximally readable. 525 From -04 to -05: 527 o Incorporated Duane's #10 528 o Integrated Petr Spacek's Issue - https://github.com/APNIC-Labs/ 529 draft-kskroll-sentinel/issues/9 (note that commit-log incorrectly 530 referred to Duane's PR as number 9, it is actually 10). 532 From -03 to -04: 534 o Addressed GitHub pull requests #4, #5, #6, #7 #8. 536 o Added Duane's privacy concerns 538 o Makes the use cases clearer 540 o Fixed some A/AAAA stuff 542 o Changed the example numbers 544 o Made it clear that names and addresses must be real 546 From -02 to -03: 548 o Integrated / published comments from Paul in GitHub PR #2 - 549 https://github.com/APNIC-Labs/draft-kskroll-sentinel/pull/2 551 o Made the Key Tag be decimal, not hex (thread / consensus in 552 https://mailarchive.ietf.org/arch/msg/dnsop/ 553 Kg7AtDhFRNw31He8n0_bMr9hBuE ) 555 From -01 to 02: 557 o Removed Address Record definition. 559 o Clarified that many things can cause SERVFAIL. 561 o Made examples FQDN. 563 o Fixed a number of typos. 565 o Had accidentally said that Charlie was using a non-validating 566 resolver in example. 568 o [ TODO(WK): Doc says Key Tags are hex, is this really what the WG 569 wants? ] 571 o And active key is one that can be used *now* (not e.g AddPend) 573 From -00 to 01: 575 o Added a conversational description of how the system is intended 576 to work. 578 o Clarification that this is for the root. 580 o Changed the label template from _is-ta- to kskroll- 581 sentinel-is-ta-. This is because BIND (at least) will 582 not allow records which start with an underscore to have address 583 records (CNAMEs, yes, A/AAAA no). Some browsers / operating 584 systems also will not fetch resources from names which start with 585 an underscore. 587 11. References 589 11.1. Normative References 591 [RFC2308] Andrews, M., "Negative Caching of DNS Queries (DNS 592 NCACHE)", RFC 2308, DOI 10.17487/RFC2308, March 1998, 593 . 595 [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S. 596 Rose, "DNS Security Introduction and Requirements", 597 RFC 4033, DOI 10.17487/RFC4033, March 2005, 598 . 600 [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S. 601 Rose, "Resource Records for the DNS Security Extensions", 602 RFC 4034, DOI 10.17487/RFC4034, March 2005, 603 . 605 [RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S. 606 Rose, "Protocol Modifications for the DNS Security 607 Extensions", RFC 4035, DOI 10.17487/RFC4035, March 2005, 608 . 610 [RFC5011] StJohns, M., "Automated Updates of DNS Security (DNSSEC) 611 Trust Anchors", STD 74, RFC 5011, DOI 10.17487/RFC5011, 612 September 2007, . 614 11.2. Informative References 616 [RFC8145] Wessels, D., Kumari, W., and P. Hoffman, "Signaling Trust 617 Anchor Knowledge in DNS Security Extensions (DNSSEC)", 618 RFC 8145, DOI 10.17487/RFC8145, April 2017, 619 . 621 Appendix A. Protocol Walkthrough Example 623 This Appendix provides a non-normative example of how the sentinel 624 mechanism could be used, and what each participant does. It is 625 provided in a conversational tone to be easier to follow. 627 Alice is in charge of the DNS root KSK (Key Signing Key), and would 628 like to roll / replace the key with a new one. She publishes the new 629 KSK, but would like to be able to predict / measure what the impact 630 will be before removing/revoking the old key. The current KSK has a 631 Key Tag of 11112, the new KSK has a Key Tag of 02323. Users want to 632 verify that their resolver will not break after Alice rolls the root 633 KSK key (that is, starts signing with just the KSK whose Key Tag is 634 02323). 636 Bob, Charlie, Dave, Ed are all users. They use the DNS recursive 637 resolvers supplied by their ISPs. They would like to confirm that 638 their ISPs have picked up the new KSK. Bob's ISP does not perform 639 validation. Charlie's ISP does validate, but the resolvers have not 640 yet been upgraded to support this mechanism. Dave and Ed's resolvers 641 have been upgraded to support this mechanism; Dave's resolver has the 642 new KSK, Ed's resolver hasn't managed to install the 02323 KSK in its 643 trust store yet. 645 Geoff is a researcher, and would like to both provide a means for 646 Bob, Charlie, Dave and Ed to be able to perform tests, and also would 647 like to be able to perform Internet-wide measurements of what the 648 impact will be (and report this back to Alice). 650 Geoff sets an authoritative DNS server for example.com, and also a 651 webserver (www.example.com). He adds three address records to 652 example.com: 654 invalid.example.com. IN AAAA 2001:db8::1 656 root-key-sentinel-is-ta-02323.example.com. IN AAAA 2001:db8::1 658 root-key-sentinel-not-ta-02323.example.com. IN AAAA 2001:db8::1 660 Note that the use of "example.com" names and the addresses here are 661 examples. In a real deployment, the domain names need to be under 662 control of the researcher, and the addresses must be real, reachable 663 addresses. 665 Geoff then DNSSEC signs the example.com zone, and intentionally makes 666 the invalid.example.com record invalid/bogus (for example, by editing 667 the signed zone and entering garbage for the signature). Geoff also 668 configures his webserver to listen on 2001:db8::1 and serve a 669 resource (for example, a 1x1 GIF, 1x1.gif) for all of these names. 670 The webserver also serves a webpage (www.example.com) which contains 671 links to these 3 resources (http://invalid.example.com/1x1.gif, 672 http://root-key-sentinel-is-ta-02323.example.com/1x1.gif, 673 http://root-key-sentinel-not-ta-02323.example.com/1x1.gif). 675 Geoff then asks Bob, Charlie, Dave and Ed to browse to 676 www.example.com. Using the methods described in this document, the 677 users can figure out what their fate will be when the 11112 KSK is 678 removed. 680 Bob is not using a validating resolver. This means that he will be 681 able to resolve invalid.example.com (and fetch the 1x1 GIF) - this 682 tells him that the KSK roll does not affect him, and so he will be 683 OK. 685 Charlie's resolvers are validating, but they have not been upgraded 686 to support the KSK sentinel mechanism. Charlie will not be able to 687 fetch the http://invalid.example.com/1x1.gif resource (the 688 invalid.example.com record is bogus, and none of his resolvers will 689 resolve it). He is able to fetch both of the other resources - from 690 this he knows (see the logic in the body of this document) that he is 691 using legacy, validating resolvers. The KSK sentinel method cannot 692 provide him with a definitive answer to the question of what root 693 trust anchors this resolver is using. 695 Dave's resolvers implement the sentinel method, and have picked up 696 the new KSK. For the same reason as Charlie, he cannot fetch the 697 "invalid" resource. His resolver resolves the root-key-sentinel-is- 698 ta-02323.example.com name normally (it contacts the example.com 699 authoritative servers, etc); as it supports the sentinel mechanism, 700 just before Dave's recursive resolver sends the reply to Dave's stub, 701 it performs the KSK Sentinel check. The QNAME starts with "root-key- 702 sentinel-is-ta-", and the recursive resolver does indeed have a key 703 with the Key Tag of 02323 in its root trust store. This means that 704 that this part of the KSK Sentinel check passes (it is true that Key 705 Tag 02323 is in the trust anchor store), and the recursive resolver 706 replies normally (with the answer provided by the authoritative 707 server). Dave's recursive resolver then resolves the root-key- 708 sentinel-not-ta-02323.example.com name. Once again, it performs the 709 normal resolution process, but because it implements KSK Sentinel 710 (and the QNAME starts with "root-key-sentinel-not-ta-"), just before 711 sending the reply, it performs the KSK Sentinel check. As it has 712 02323 in it's trust anchor store, the answer to "is this *not* a 713 trust anchor" is false, and so the recursive resolver does not reply 714 with the answer from the authoritative server - instead, it replies 715 with a SERVFAIL (note that replying with SERVFAIL instead of the 716 original answer is the only mechanism that KSK Sentinel uses). This 717 means that Dave cannot fetch "invalid", he can fetch "root-key- 718 sentinel-is-ta-02323", but he cannot fetch "root-key-sentinel-not-ta- 719 02323". From this, Dave knows that he is behind an upgraded, 720 validating resolver, which has successfully installed the new, 02323 721 KSK. 723 Just like Charlie and Dave, Ed cannot fetch the "invalid" record. 724 This tells him that his resolvers are validating. When his 725 (upgraded) resolver performs the KSK Sentinel check for "root-key- 726 sentinel-is-ta-02323", it does *not* have the (new, 02323) KSK in 727 it's trust anchor store. This means check fails, and Ed's recursive 728 resolver converts the (valid) answer into a SERVFAIL error response. 729 It performs the same check for root-key-sentinel-not-ta- 730 02323.example.com; as it does not have the 02323 KSK, it is true that 731 this is not a trust anchor for it, and so it replies normally. This 732 means that Ed cannot fetch the "invalid" resource, he also cannot 733 fetch the "root-key-sentinel-is-ta-02323" resource, but he can fetch 734 the "root-key-sentinel-not-ta-02323" resource. This tells Ed that 735 his resolvers have not installed the new KSK. 737 Geoff would like to do a large scale test and provide the information 738 back to Alice. He uses some mechanism such as causing users to go to 739 a web page to cause a large number of users to attempt to resolve the 740 three resources, and then analyzes the results of the tests to 741 determine what percentage of users will be affected by the KSK 742 rollover event. 744 This description is a simplified example - it is not anticipated that 745 Bob, Charlie, Dave and Ed will actually look for the absence or 746 presence of web resources; instead, the webpage that they load would 747 likely contain JavaScript (or similar) which displays the result of 748 the tests, sends the results to Geoff, or both. This sentinel 749 mechanism does not rely on the web: it can equally be used by trying 750 to resolve the names (for example, using the common "dig" command) 751 and checking which result in a SERVFAIL. 753 Authors' Addresses 755 Geoff Huston 757 Email: gih@apnic.net 758 URI: http://www.apnic.net 760 Joao Silva Damas 762 Email: joao@apnic.net 763 URI: http://www.apnic.net 764 Warren Kumari 766 Email: warren@kumari.net