Re: [babel] Roman Danyliw's Discuss on draft-ietf-babel-rfc6126bis-12: (with DISCUSS and COMMENT)

Juliusz Chroboczek <jch@irif.fr> Fri, 09 August 2019 21:02 UTC

Return-Path: <jch@irif.fr>
X-Original-To: babel@ietfa.amsl.com
Delivered-To: babel@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 57A4D120142; Fri, 9 Aug 2019 14:02:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham 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 TIYE_fRRhIhC; Fri, 9 Aug 2019 14:01:59 -0700 (PDT)
Received: from korolev.univ-paris7.fr (korolev.univ-paris7.fr [IPv6:2001:660:3301:8000::1:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BA9EC1200FA; Fri, 9 Aug 2019 14:01:58 -0700 (PDT)
Received: from mailhub.math.univ-paris-diderot.fr (mailhub.math.univ-paris-diderot.fr [81.194.30.253]) by korolev.univ-paris7.fr (8.14.4/8.14.4/relay1/82085) with ESMTP id x79L1m7N031249; Fri, 9 Aug 2019 23:01:50 +0200
Received: from mailhub.math.univ-paris-diderot.fr (localhost [127.0.0.1]) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTP id C72AC34957; Fri, 9 Aug 2019 23:01:51 +0200 (CEST)
X-Virus-Scanned: amavisd-new at math.univ-paris-diderot.fr
Received: from mailhub.math.univ-paris-diderot.fr ([127.0.0.1]) by mailhub.math.univ-paris-diderot.fr (mailhub.math.univ-paris-diderot.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id uFENr9tTSAgD; Fri, 9 Aug 2019 23:01:50 +0200 (CEST)
Received: from pirx.irif.fr (unknown [78.194.40.74]) (Authenticated sender: jch) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTPSA id C5AA134955; Fri, 9 Aug 2019 23:01:49 +0200 (CEST)
Date: Fri, 09 Aug 2019 23:01:49 +0200
Message-ID: <871rxu8342.wl-jch@irif.fr>
From: Juliusz Chroboczek <jch@irif.fr>
To: Roman Danyliw <rdd@cert.org>
Cc: The IESG <iesg@ietf.org>, draft-ietf-babel-rfc6126bis@ietf.org, Donald Eastlake <d3e3e3@gmail.com>, babel-chairs@ietf.org, babel@ietf.org
In-Reply-To: <156520559749.8305.9821179209918519561.idtracker@ietfa.amsl.com>
References: <156520559749.8305.9821179209918519561.idtracker@ietfa.amsl.com>
User-Agent: Wanderlust/2.15.9
MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue")
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (korolev.univ-paris7.fr [194.254.61.138]); Fri, 09 Aug 2019 23:01:50 +0200 (CEST)
X-Miltered: at korolev with ID 5D4DDF3C.000 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)!
X-j-chkmail-Enveloppe: 5D4DDF3C.000 from mailhub.math.univ-paris-diderot.fr/mailhub.math.univ-paris-diderot.fr/null/mailhub.math.univ-paris-diderot.fr/<jch@irif.fr>
X-j-chkmail-Score: MSGID : 5D4DDF3C.000 on korolev.univ-paris7.fr : j-chkmail score : . : R=. U=. O=. B=0.000 -> S=0.000
X-j-chkmail-Status: Ham
Archived-At: <https://mailarchive.ietf.org/arch/msg/babel/udirZFQK5vJJMPtgU13bv7UgYlc>
Subject: Re: [babel] Roman Danyliw's Discuss on draft-ietf-babel-rfc6126bis-12: (with DISCUSS and COMMENT)
X-BeenThere: babel@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "A list for discussion of the Babel Routing Protocol." <babel.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/babel>, <mailto:babel-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/babel/>
List-Post: <mailto:babel@ietf.org>
List-Help: <mailto:babel-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/babel>, <mailto:babel-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 09 Aug 2019 21:02:02 -0000

Dear Roman,

Thank your for your review.

> (1) Per “Any attacker can misdirect data traffic by advertising routes with a
> low metric or a high seqno.”: -- Can the "any" of the attacker be scoped any
> more?

This whole discussion has been rewritten.  I believe that it now meets
most of your concerns.

> -- Note that because Babel messages aren’t encrypted any on-path attacker can
> gather the routing topology

(Note that Babel is a distance-vector protocol, the full topology is not
available.  From a security point of view, this can be seen as a good or
a bad thing, depending on your perspective.)

> (3) Per “HMAC is simpler and does not depend on DTLS, and therefore its use is
> RECOMMENDED whenever both mechanisms are applicable”, can you explain this
> recommendation and the circumstances where “both mechanisms are applicable”. 
> If one wants to ensure confidentiality, it can’t be realized with HMAC – they
> aren’t equal.

Fully agreed, we must be clear on this point.

> (4) Per “The privacy issues that this causes can be mitigated somewhat
> by using randomly chosen router-ids and randomly chosen IP addresses,
> and changing them periodically, who’s IP address should be randomly
> chosen the Babel node or the mobile device?

It is assumed in this paragraph that the mobile device is a Babel node.
It makes no sense otherwise.

> (5) Appendix C: Per the last paragraph, “The packet trailer is intended to
> carry cryptographic signatures …”, to what security mechanism is that
> referring?  Where is that defined?

Babel-HMAC is the only currently defined mechanism that uses the trailer.
If the user community ends up accepting the notion of inline security (as
opposed to using a secure link layer or DTLS), then I expect other such
mechanisms to appear.

> (6) Appendix D: Is the stub implementation guidance normative?

It's not, I've removed all normative language.

> If so, will it satisfy all of the RFC2119 language in this document?

>From the point of view of an outside observer, yes -- it cannot be
distinguished from a compliant implementation just by looking at the
packets it sends or the routes it selects.

>From the point of view of the letter of the specification, obviously not.
The specification says that you maintain a source table which you use to
evaluate the feasibility condition.  In the case of a stub implementation,
the feasibility condition is known to be always true, so the stub
implementation doesn't bother maintaining a source table.

> (7) Appendix E.  Please explicitly state that the sample implementation is
> non-normative.

This appendix has been removed.

> ----------------------------------------------------------------------
> COMMENT:
> ----------------------------------------------------------------------

> (8) Section 1.1.  What is a “network diameter”?  Calculated how?

  http://mathworld.wolfram.com/GraphDiameter.html

> (9) Section 3.6.  Recommend avoiding the phrase “protocol’s correctness”

  I've replaced it with "algorithm's correctness".

> (10) Section 3.7.2, Per the guidance to send updates with
> acknowledgement requests to a small, but not a large number of
> neighbors.  Is there guidance to provide on what is a large number?

Unfortunately not.  It will depend on the relative cost of multicast
vs. unicast, and the expected packet loss.  Coming up with a suitable
algorithm to determine that dynamically would be a fun little project.

> (11) Section 3.8.2.4.  Is there any guidance on what a “small number of
> multicast” requests constitutes?

This section has been removed.

> (12) Section 4.  Per “Both the source and destination UDP port are set to a
> well-known port number”, the same one?

Yes.  That's implied by "both".

> (14) Section 4.6.4.  What are the properties needed for this nonce?

None that are defined in this specification.  The only requirement is that
it will be returned in the Ack.

If an implementation can guarantee that it has at most one ack request in
flight to a given peer, then it can clear the nonce.  If an implementation
wants multiple in-flight requests, it can use a sequential counter.  It
can also use it for some smart algorithm that encodes information about
the packet being acked in the nonce, but I cannot conceive of any such
algorithm offhand.

The choice of ack has no security implications, since spoofing a bogus
route is a much more effective way of attacking an unsecured Babel
implementation.

> (15) Section 6. Per the concern that Babel packets might escape into the wild
> and “No such natural protection exists when Babel packets are carried over
> IPv4”, doesn’t setting the TTL=1 per Section 4 help?

The concern here is about off-link attackers sending us packets.  It's not
too difficult to choose a TTL that leads to the TTL being 1 on reception.

That's why this document does not require checking the TTL on reception,
just the sender's address.

> (16) Appendix D: Per “Nonetheless, in some very constrained environments, such
> as … abacuses”, what does it mean to implement Babel on an analog device?

Abacuses are digital.

> (17) Did the WG consider renaming the title of thisdraft “Babel Routing
> Protocol v2” (as this is a distinct and new protocol)?

No, we didn't, as this would only create confusion.  Both RFC 6126 and
this document use version 2 in the header; see my reply to Alvaro about
details.

(Versions 0 and 1 were early variants that have never been documented.
Version 0 was a hybrid link-state/distance-vector protocol.  Version 1 was
fairly close to the protocol in RFC 6126, but had a design flaw that
caused it to fail in the presence of parallel edges in the adjacency
multigraph.)

> (18) Editorial.  s/Babel never/Babel does not/

Disagree, this states an invariant.

> -- Section 1.2  Editorial.  s/Babel does impose/Babel imposes/

Disagree, the auxiliary is used to stress a weakness of Babel.

> -- Section 2.  Editorial.  s/venerable RIP/RIP/

Disagree, I see RIP like a distinguished gentleman with a white beard, the
kind you tend to meet at IETF meetings.

> -- Section 2.3.  Editorial.  s/It is well known that a/A/

Disagree, the subclause is used to stress that this is a standard
property, not something that we claim to have discoverd.

> -- Section 4.1.2.  Typo.  s/ones ones/ones/

Done, thanks.

-- Juliusz