<div dir="ltr">Tony,<div><br></div><div>Thank you for that detailed explanation. </div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jul 3, 2019 at 2:15 AM Tony Finch <<a href="mailto:dot@dotat.at">dot@dotat.at</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Josh Kuo <<a href="mailto:josh.kuo@gmail.com" target="_blank">josh.kuo@gmail.com</a>> wrote:<br>
><br>
> There are 6 DS records total, but only 1 RRSIG. This leads me to believe<br>
> that the single RRSIG is generated by somehow concatenating all DS records<br>
> together.<br>
<br>
Correct.<br>
<br>
> This then leads me to believe that the validating resolver needs to<br>
> process _all_ DS records, not just the ones whose key tag matches the<br>
> child zone's KSK.<br>
<br>
Not quite.<br>
<br>
One way to validate a delegation is:<br>
<br>
* validate the DS RRset, which is signed using the parent's DNSKEY(s)<br>
  [ you can see the "com" signer field in the "<a href="http://example.com" rel="noreferrer" target="_blank">example.com</a>" RRSIG ]<br>
<br>
* get the key tags from the DS RRset (the first field in the records)<br>
  and the key tags from the child's DNSKEY RRSIG records (between lifetime<br>
  fields and the signer field) and calculate the key tags of the<br>
  child's DNSKEY records<br>
<br>
* take the intersection of these three sets; these key tags identify keys<br>
  that the parent says can validate the DNSKEY RRset, and that actually do<br>
  validate the DNSKEY RRset, and that can be used to validate the DNSKEY<br>
  RRset<br>
<br>
* for each DNSKEY in the set, ensure that there is a DS record that<br>
  whose digest matches it [ you can skip matching attempts when the key<br>
  tags do not match ]<br>
<br>
* using the public keys and signatures you just identified, try to<br>
  validate the self-signature on the DNSKEY RRset; if any of the<br>
  signatures validates, it's all good! [ again the key tags let you<br>
  skip pointless signature validation attempts ]<br>
<br>
There are some extra complications to do with downgrade protection, but<br>
that's the basic idea.<br>
<br>
Tony.<br>
-- <br>
f.anthony.n.finch  <<a href="mailto:dot@dotat.at" target="_blank">dot@dotat.at</a>>  <a href="http://dotat.at/" rel="noreferrer" target="_blank">http://dotat.at/</a><br>
women and men working together<br>
</blockquote></div>