Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

retext section 3. Sentinel Mechanism to make it clearer #9

Closed
pspacek opened this issue Mar 1, 2018 · 0 comments
Closed

retext section 3. Sentinel Mechanism to make it clearer #9

pspacek opened this issue Mar 1, 2018 · 0 comments

Comments

@pspacek
Copy link
Contributor

@pspacek pspacek commented Mar 1, 2018

Section 3. Sentinel Mechanism gave me hard time while implementing this mechanism, so I'm proposing to overhaul the section into something with more structure.

Proposal:
(Feel free tp change and restructure it as you see fit, I'm not native English speaker ...)

3.  Sentinel Mechanism

   DNSSEC-Validating resolvers that implement this mechanism MUST be
   performing validation of responses in accordance with the DNSSEC
   response validation specification [RFC4035].

   This sentinel mechanism makes use of 2 special labels:
   -  "kskroll-sentinel-is-ta-<tag-index>.
   -  "kskroll-sentinel-not-ta-<tag-index>.
   <tag-index> is: 4 hexadecimal digits encoding number in range
<0,2^16-1> + TODO: ABNF, zero padded from the left

   These labels trigger special processing in the resolver as specified
bellow. Labels containing "is-ta" and "not-ta" are used to answer
questions "Is (or is not, respectivaly) this the key tag a trust anchor
which the validating DNS resolver is currently trusting?"

   Processing of both labels has the very same preconditions for both
labels and differs only in last step.

3.1. Preconditions
   All following conditions must be met to trigger special processing
inside resolver code:

   a) DNS response for particular query is DNSSEC validated and result
of validation is SECURE
   b) QTYPE is A or AAAA
// TODO: what about QCLASS? Maybe we can ignore it as DNSSEC is (I
believe) class independent ...
// TODO: OPCODE == QUERY ? It would not hurt to specify it explicitly.

   c) leftmost label must be one of "kskroll-sentinel-is-ta-<tag-index>.
// TODO: Clarify if it is okay to alter responses if:
- QNAME owner holds CNAME
- RCODE != NOERROR

   If all preconditions are not met, the resolver MUST NOT alter the DNS
response.


3.2 Special processing

   Responses which fullfill all preconditions in section 3.1 are subject
of special processing, depending on leftmost label of the QNAME.

   First, the resolver determines if the numerical value of <tag-index>
equals to keytag of a Root Zone Key Signing Key which is currently
trusted by the local resolver and is stored in its store of trusted keys.

   As second step, the resolver alters response depending on meaning of
the label and presence of key with given keytag among trusted keys. Two
labels and two possible states of the keytag generate four possible
combinations summarized in the table:

                           Keytag trusted
label type |       yes               |       no
--------------------------------------------------------------
is-ta      | return original answer  | return SERVFAIL
not-ta     | return SERVFAIL         | return original answer


// TODO: clear up interaction with caching, CD bit, AD bit, ...

I would be happy to work more on this particular section because I've already felt pain while implementing this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant