[DNSOP] Responding to MSJ review of the previous rfc5011-security-considerations
Wes Hardaker <wjhns1@hardakers.net> Wed, 13 September 2017 17:01 UTC
Return-Path: <wjhns1@hardakers.net>
X-Original-To: dnsop@ietfa.amsl.com
Delivered-To: dnsop@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 57EDC132D7B for <dnsop@ietfa.amsl.com>; Wed, 13 Sep 2017 10:01:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.442
X-Spam-Level:
X-Spam-Status: No, score=-0.442 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RDNS_NONE=0.793, SPF_SOFTFAIL=0.665] autolearn=no autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tFfIkZVA2MA9 for <dnsop@ietfa.amsl.com>; Wed, 13 Sep 2017 10:01:16 -0700 (PDT)
Received: from mail.hardakers.net (unknown [168.150.236.43]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 866D41323B8 for <dnsop@ietf.org>; Wed, 13 Sep 2017 10:01:16 -0700 (PDT)
Received: from localhost (50-1-20-198.dsl.static.fusionbroadband.com [50.1.20.198]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.hardakers.net (Postfix) with ESMTPSA id 195EA244D2 for <dnsop@ietf.org>; Wed, 13 Sep 2017 10:01:16 -0700 (PDT)
From: Wes Hardaker <wjhns1@hardakers.net>
To: dnsop@ietf.org
Date: Wed, 13 Sep 2017 10:01:15 -0700
Message-ID: <yblmv5ya5yc.fsf@wu.hardakers.net>
User-Agent: Gnus/5.130014 (Ma Gnus v0.14) Emacs/25.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnsop/dXHOzftd7Cd8ofpAIHosHkeYjho>
Subject: [DNSOP] Responding to MSJ review of the previous rfc5011-security-considerations
X-BeenThere: dnsop@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: IETF DNSOP WG mailing list <dnsop.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnsop>, <mailto:dnsop-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnsop/>
List-Post: <mailto:dnsop@ietf.org>
List-Help: <mailto:dnsop-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnsop>, <mailto:dnsop-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 13 Sep 2017 17:01:23 -0000
Mike, after your lengthy last review I went through and carefully made sure each of your comments were considered. Most resulted in changes, a few seemed to be just comments and there was nothing to do, and two we didn't think were correct. Below is the summary of the changes in the most recent version based on your review from July. Wes Hardaker Table of Contents _________________ 1 Notes / Edits from Mike StJohn on <2017-07-06 Thu> .. 1.1 ACCEPTED Use "exclusively" rather than "only" where you can - "only" has .. 1.2 ACCEPTED In the introduction - "validators can update" vs "validators can .. 1.3 ACCEPTED In the introduction - same issue with "only recently" .. 1.4 ACCEPTED In the introduction - "ceasing publication of a revoked key" vs .. 1.5 FIXED Section 1.1 - What is the definition of "rolled"? Your use of it .. 1.6 FIXED Section 2 "which apply to" vs "as required from". .. 1.7 FIXED Section 2 "Note that it does not..." - which "it" are you talking about? .. 1.8 ACCEPTED Section 2 "using only recently" - same issue as above. .. 1.9 ACCEPTED Section 2. New para at "Failure of a DNSKEY..." .. 1.10 ACCEPTED Section 2. "... leaving that key in their trust anchor storage .. 1.11 ACCEPTED Section 3: Attacker. "An entity intent..." vs "An attacker .. 1.12 FIXED Section 4.1: This doesn't actually describe what's in 5011 - .. 1.13 ACCEPTED Section 4.1, bullet 3: Same problem with "only". Instead "Begin .. 1.14 REJECTED Section 4.2 last para: This is only an attack if the private key .. 1.15 REJECTED Section 6 - general comment. You're doing interval calculations .. 1.16 FIXED Section 5.1.1 - You're missing a *very* important point here - .. 1.17 NOTHINGTODO Section 5.1.1 doesn't actually apply if you use the 5011 rollover .. 1.18 FIXED Section 5.1.1, T+35: "since the hold down time of 30 days + 1/2 .. 1.19 NOTHINGTODO Section 6 - the formulas are wrong. I also don't understand .. 1.20 NOTHINGTODO The final formula should be: .. 1.21 NOTHINGTODO In any event, the point needs to be made that this attack .. 1.22 FIXED The value in 6 regardless of what it is is the wrong value for 1 Notes / Edits from Mike StJohn on <2017-07-06 Thu> ==================================================== 1.1 ACCEPTED Use "exclusively" rather than "only" where you can - "only" has ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ some issues with misunderstanding. E.g. in the abstract you have "only recently" which can be interpreted applying to "recently" rather than meaning "exclusively" with " recently added DNSKEYs" Instead in the abstract: "... before exclusively signing with recently added DNSKEYs" + Result: I don't object to the wording change, so I made it. I don't think it was needed as only is pretty concrete in understanding everywhere I've seen it. 1.2 ACCEPTED In the introduction - "validators can update" vs "validators can ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ extend". + Result: 1.3 ACCEPTED In the introduction - same issue with "only recently" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Result: 1.4 ACCEPTED In the introduction - "ceasing publication of a revoked key" vs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ "removing a key from a zone" + Result: 1.5 FIXED Section 1.1 - What is the definition of "rolled"? Your use of it ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ doesn't match 5011s and it's not defined either here or in 4033 or . Also "before signing a zone" - I don't think this is exactly what you asked them and the summary is probably inaccurate. + Result: rolled -> introduced + Result: added "exclusively" to fix the other aspect 1.6 FIXED Section 2 "which apply to" vs "as required from". ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Result: to just "from" as the other words are more confusing 1.7 FIXED Section 2 "Note that it does not..." - which "it" are you talking about? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Result: "this document" 1.8 ACCEPTED Section 2 "using only recently" - same issue as above. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Result: 1.9 ACCEPTED Section 2. New para at "Failure of a DNSKEY..." ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Result: 1.10 ACCEPTED Section 2. "... leaving that key in their trust anchor storage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ beyond the key's expected lifetime." vs "... leaving a key in their trust anchor storage beyond their expected lifetime" -"their" applies to two different things + Result: 1.11 ACCEPTED Section 3: Attacker. "An entity intent..." vs "An attacker ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ intent..." - self referencing definition problem + Result: 1.12 FIXED Section 4.1: This doesn't actually describe what's in 5011 - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ specifically bullet 3 was modified to clarify your concerns, but isn't what was in 5011. You need to have both here. + Result: Intro paragraph added to note we're paraphrasing 5011 at a very high level only. 1.13 ACCEPTED Section 4.1, bullet 3: Same problem with "only". Instead "Begin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ to exclusively use recently published DNSKEYs..." + Result: 1.14 REJECTED Section 4.2 last para: This is only an attack if the private key ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ is compromised. In which case, with only a steady state of a single key, you've got lots of other problems. Basically, in your one in one out with a steady state of one model, once the current private key is compromised you have no ability to fix the problem. But getting the numbers for figuring out when this change becomes "sticky" correct is useful. + Result: I disagree. The attack is not just about reusing the stale key beyond it's life time. The attack in this document describes the ability to affect the state of the validator so that it's state doesn't match the desired state of the Trust Anchor Publisher. You're right, that having that state be out of sync isn't useful to an attacker until they can break the key for the trust anchor. But an attacker performing this "old state" attack means they have years and years to potentially break the key and introduce fake data into the dns zone years potentially years the future. But in the end, this *is* an attack against the state of the validator, just not of the severity you allude to above. 1.15 REJECTED Section 6 - general comment. You're doing interval calculations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ and you want to do date/time wall clock calculations instead. While the 5011 values are based on intervals from the RRs get to the validator, the publisher has to be looking at absolute times first (e.g. signature inception and expiration, original TTL) and then deltas from those. [Note, this is NOT a new comment - I've made it previously and strongly] + Result: You've failed to convince me the text needs to change. Please propose exact wording (or at least an example) that you feel better serves the purpose. The wall clock and the interval are mutatable between each other. We are calculating the interval to wait beyond the publication point (waitTime) which is the same as wallclock_now + waitTime. + That being said, I changed the intro text a bit to be a bit more clear about the fact it starts from the publication time. + Based on the conversation in Prague, I'll leave it as is but try to clarify a bit about the issue. 1.16 FIXED Section 5.1.1 - You're missing a *very* important point here - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ that DNSKEY RRSets may be signed ahead of their use. You need to assume that once signed, they are available to be published - even by an attacker. So wherever you have "signature lifetime" you want something like "latest signature expiration of any DNSKEY RRSet not containing the new key" or at least you want to calculate the date/time value based on that. + Result: There are two issues here: 1. When we discuss the exact requirements for publication, we should be very very clear about the timing requirements. I agree. 2. We're trying to pass on the concept of the attack in this section, not necessarily a description that exactly covers all possibilities. So, though I'm all for making it as accurate as we can, I don't think we should make the example text so confusing to cover all the corner cases that no one can follow it. 3. It doesn't benefit an attacker to publish the signatures ahead of time. So you're right that anyone can publish new signatures, it really doesn't affect the timing required by the publisher to wait, which is the point of this draft. 4. The important take away I take from your text is that any delay between signing and publication will affect the length of time to wait, and I'm sure this is what you mean by needing to calculate via wall-clock (since everything should be based on sigexpiration). XXX: With this goal in mind, I've cleaned up the text a bit to make it a bit more clear. 1.17 NOTHINGTODO Section 5.1.1 doesn't actually apply if you use the 5011 rollover ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ approach (section 6.3). E.g. K_old (and any RRSets it signed) will be revoked the first time K_new is seen and K_standby is the signing key. At this point this reduces to a normal denial of service attack (where you prevent new data from being retrieved by the resolver). You'd need a different section to do that analysis. [And thinking about it, why is there any practical difference between this attack and a normal denial of service attack in the first place?] + Result: As we've both agreed in the past, the attack described in our 5.1.1 section only applies when you sign exclusively with a key that is too new. So, yes when you are using K_standby, the attack in question doesn't work. We're only describing the case where there either isn't a K_standby, or when K_standby is also newer than our 'waitTime' time. + And, yes by preventing a new key from being accepted as a trust anchor, this is a denial of service attack. Though one with potentially serious ramifications since it may require manual intervention on all the devices affected by it (unlikely a network-based DDoS attack, it doesn't stop when the attacker stops sending packets; this is long lived until the configuration is manually fixed). 1.18 FIXED Section 5.1.1, T+35: "since the hold down time of 30 days + 1/2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ the signature validity... " - Two items: Wordsmithing: The hold down time is just the 30 days, not the plus 1/2... which I *think* given the reference to 2.3 is actually the queryInterval. clarify please. And queryInterval is not actually 1/2 the signature validity - its the MIN (15 days, 10 days (sig life)/2 and 1 day(orig ttl)/2) or 1/2 a day. + Result: you're misreading the sentence thinking the holddown time includes the math with the + and onward, where the holddown time was only the 30 minutes. I'll reword and though I was trying to avoid the much more complex math in the example, you're correct that it's 1/2 the queryInterval which has more terms to calculate it exactly. 1.19 NOTHINGTODO Section 6 - the formulas are wrong. I also don't understand ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ where you got MAX(originalTTL/2,15 days) - there's no support for this in the text. You're misreading the commas. One of the terms in the outer max clause is "MAX(original TTL of K_old DNSKEY RRSet) / 2". This is slightly different than what is in the "1/2*OrigTTL" clause in 5011 itself. This is because if the publisher changes TTLs over the course of signing, you have to take the maximum value of any of them, not just the most recent. (though, to be super-accurate you need to do some math which we might want to describe about when a given TTL is published vs when Knew is introduced). Anyway, in the end, the formula in ours draft directly derives from what is in yours. We do take into account the possibility of multiple TTLs for a given signature set, which 5011 doesn't take into account (and to some extent, it's less important, but only further shows how much variance a resolver might have before accepting a new trust anchor). A clear piece of advice for an eventual BCP would be to not change TTLs at the same time you start any 5011 publication or revocation process. 1.20 NOTHINGTODO The final formula should be: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ EarliestDateWhereAttackFails::= latest SignatureExpiration of any DNSKEY RRSet not containing the new key [ ... alternate math analysis deleted for brevity ... ] + Result: there are multiple ways to list out the math / timing behind this. You do spell out an alternate way to lay out the math; I believe your purpose was not to offer a replacement but to ensure we agree upon the timing. I do see that you're using wall-clock type math, which certainly works and should be equivalent to your example start tiem of 5/1/2017 00:00UTC + our waitTime. + I do see your point that anyone could publish the data once signed, not just the 1.21 NOTHINGTODO In any event, the point needs to be made that this attack ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - while real - is a "retail" attack that would be difficult to prosecute by a single attacker across a broad range of end-entities. This goes to the general model that no publisher of DNS data knows each and every consumer of that data, nor can wait its publication on every consumer getting published data. The data protocol for DNS is unidirectional and the update protocol in 5011 was designed with that in mind. + Result: We never state in the document that the attack was against every validator out there. It affects only the validators that received replayed key sets and signatures. We don't dive into the analysis of how difficult it is to achieve such a replay, either directly or by cache poisoning upstream resolvers, or.... That's outside the scope of the document. Thus, I don't see any change to the text that is needed as I think the text is pretty clear that a replay attack is already necessary in the attack model. 1.22 FIXED The value in 6 regardless of what it is is the wrong value for ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ revocation. revocationPublicationWaitTime is basically EarliestDateAttackFails + queryInterval + slop. Revocations take place immediately. You can delay them only as long as you have old valid signed RRSets. + Result: wording changed to addWaitTime and remWaitTime, and math adjusted to drop the 30 day part of the timer. Thanks. -- Wes Hardaker USC/ISI
- Re: [DNSOP] Responding to MSJ review of the previ… Michael StJohns
- [DNSOP] Responding to MSJ review of the previous … Wes Hardaker
- Re: [DNSOP] Responding to MSJ review of the previ… Wes Hardaker
- Re: [DNSOP] Responding to MSJ review of the previ… Michael StJohns
- Re: [DNSOP] Responding to MSJ review of the previ… Wes Hardaker
- Re: [DNSOP] Responding to MSJ review of the previ… Michael StJohns