Re: [Last-Call] Last Call: <draft-gont-numeric-ids-sec-considerations-06.txt> (Security Considerations for Transient Numeric Identifiers Employed in Network Protocols) to Best Current Practice
Fernando Gont <fgont@si6networks.com> Tue, 15 December 2020 05:11 UTC
Return-Path: <fgont@si6networks.com>
X-Original-To: last-call@ietfa.amsl.com
Delivered-To: last-call@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3E27A3A0957; Mon, 14 Dec 2020 21:11:15 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0
X-Spam-Level:
X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[NICE_REPLY_A=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=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 Au1pNGfpZ1Ou; Mon, 14 Dec 2020 21:11:10 -0800 (PST)
Received: from fgont.go6lab.si (fgont.go6lab.si [91.239.96.14]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9A7883A0949; Mon, 14 Dec 2020 21:11:10 -0800 (PST)
Received: from [10.0.0.129] (unknown [186.19.8.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by fgont.go6lab.si (Postfix) with ESMTPSA id 52D3E280793; Tue, 15 Dec 2020 05:06:03 +0000 (UTC)
To: Christian Huitema <huitema@huitema.net>, Russ Housley <housley@vigilsec.com>, Ben Kaduk <kaduk@mit.edu>
Cc: last-call@ietf.org, draft-gont-numeric-ids-sec-considerations@ietf.org
References: <160735373732.25981.15176977559155786235@ietfa.amsl.com> <F438198F-34E2-4C9F-A32F-ACD58D9A6734@vigilsec.com> <20201209211455.GZ64351@kduck.mit.edu> <327D2176-1722-4F83-9ED1-205C575D67E6@vigilsec.com> <d64183b5-067b-5f6b-e5c8-0975311f2fbf@si6networks.com> <4A0B53B2-71D7-4623-90CC-E0E884101C31@vigilsec.com> <20201214025510.GS64351@kduck.mit.edu> <BDD8DC40-D615-4624-8D04-A9FC47E4F9FA@vigilsec.com> <d066ba38-694a-8462-4ffa-0662a224517c@huitema.net>
From: Fernando Gont <fgont@si6networks.com>
Message-ID: <f8b06e79-c6fc-d46c-d8be-07e07480242d@si6networks.com>
Date: Tue, 15 Dec 2020 02:05:41 -0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <d066ba38-694a-8462-4ffa-0662a224517c@huitema.net>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Language: en-US
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/last-call/uUgBQLSnBuly-jGTRjH6-6nyAQU>
Subject: Re: [Last-Call] Last Call: <draft-gont-numeric-ids-sec-considerations-06.txt> (Security Considerations for Transient Numeric Identifiers Employed in Network Protocols) to Best Current Practice
X-BeenThere: last-call@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: IETF Last Calls <last-call.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/last-call>, <mailto:last-call-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/last-call/>
List-Post: <mailto:last-call@ietf.org>
List-Help: <mailto:last-call-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/last-call>, <mailto:last-call-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 15 Dec 2020 05:11:15 -0000
On 15/12/20 01:18, Christian Huitema wrote:
>
> I think there are two main issues in the document: it does not
> distinguish between identifiers that are "visible on the wire" and those
> that are only visible by the endpoints;
The identifiers are the same.
draft-irtf-pearg-numeric-ids-generation analyzes e.g. how a predictable
identifier can be exploited by somebody that sees the ID (or can sample
some),as well as by attackers that can't.
If a protocol employs numeric IDs and does not encrypt the ID, then both
on-path systems and the remote endpoint will see the ID. If the protocol
does employ encryption, then only the remote endpoint sees the IDs.
So, "who sees the identifiers" doesn't really change the identifier
type: it just constrains who can exploit them and how.
> and, it suggests an overly specific identifier generation algorithm.
This particular document does not discuss any algorithms. In fact, the
advice says:
3. Recommend an algorithm for generating the aforementioned
identifiers that mitigates security and privacy issues, such as
those discussed in [I-D.irtf-pearg-numeric-ids-generation].
So the algorithms are provided as *examples*. It's not a requirement to
pick one of the algorithms in draft-irtf-pearg-numeric-ids-generation.
> The document also suffers from
> trying to fit different kinds of protocol parameters in a single
> abstract category, the "Transient Numeric Identifier". This feels
> somewhat artificial.
All of the parameters are identifiers of some sort. It's the same type
of parameter (a transient numeric ID), employed for identifying
different data objects.
The generalization is not artificial. We came up with it after realizing
that all transient numeric IDs fall into one of the categories in
draft-irtf-pearg-numeric-ids-generation, based on the interoperability
requirements and failure severity.
> Fixing the lack of distinction between "visible on the wire" and
> "visible by the end-points" would require fixing the section 3 regarding
> "issues". The current list of issues feels theoretical and detached from
> the actual attacks. It lists:
>
> o Protocol specifications that under-specify the requirements for
> their identifiers
>
> o Protocol specifications that over-specify their identifiers
>
> o Protocol implementations that simply fail to comply with the
> specified requirements
These are the three usual failures associated with the specification of
numeric identifiers. All flawed IDs I know of are the result of one of
these three issues.
They certainly are *not* the actual attacks, but rather the reasons why
implementations end up with flawed IDs.
> That list of issues seems somewhat self-referential, another way of
> saying "protocols that do not comply with the recommendations in this
> document".
That's certainly not what we mean. The above text means:
* Some specs fail to spell out requirements (they spec'ed lesss than
they should have) -- so implementations end up picking flawed algorithms
because the spec failed to spell out the requiredments for the IDS.
* Some specs over-specify their IDs (the specified more than they should
ahve), leading to flawed IDs. e.g., traditional IPv6 SLAAC, where the
requirement should have been that the IID is unique, but the spec ended
up requiring hosts to embed the MAC address in the IID.
* At times, protocol specs do a good job, but implementations fail to
comply with the spec, and end up employing flawed IDs. (the protocol
spec was good, but the implementors screwed up).
Nothing in this list self-references this document. It talks about the
relevant specs for each of the IDs we analyzed.
> If we want to provide guidance, we should instead look at
> categories of attacks enabled by classic mistakes, such as injection
> attacks, correlation attacks, or spoofing attacks. That's the point at
> which we can make a distinction between "visible on the wire" and not --
> injection attacks, correlation attacks and spoofing attacks by third
> parties are mitigated if the identifier is not visible, but spoofing
> attacks by the connected peer are not.
Such discussion is in
https://tools.ietf.org/html/draft-irtf-pearg-numeric-ids-generation-03 .
As noted, the analysis mentions what an attacker that doesn't see the
IDs can do, and what an attacker that can sample the IDs can do. At the
end of the day, it doesn't matter if the attacker doesn't see the IDs
because he's off-path, or because the relevant protocol encrypts the
numeric IDs -- at the end of the day, the attacker sees the IDs, or he
doesn't.
> EKR mentions how much the document is at odd with recent practice, like
> the design of QUIC. QUIC does use a number of identifiers: connection
> identifiers, packet numbers, stream numbers, data offsets within
> streams. If that document had been available before the design of QUIC,
> would it have help development? My personal opinion is no, it would not
> have make the protocol better. It might have created a hurdle during the
> last call reviews, forcing the developers to discuss why they would not
> comply with the recommendation in this draft, and creating additional
> delays in the process for little practical result.
I disagree. I do think that, for example, the specification of
connection IDs is sub-optimal.
I missed the LC for that document. But my understanding is that IESG
review is pending. So hopefully the issue will be raised -- not to
thwart progress, but to help improve the spec.
Thanks,
--
Fernando Gont
SI6 Networks
e-mail: fgont@si6networks.com
PGP Fingerprint: 6666 31C6 D484 63B2 8FB1 E3C4 AE25 0D55 1D4E 7492
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Joe Touch
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Russ Housley
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Benjamin Kaduk
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Russ Housley
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Eliot Lear
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Eliot Lear
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Russ Housley
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Russ Housley
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Iván Arce (Quarkslab)
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Russ Housley
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Eric Rescorla
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Iván Arce (Quarkslab)
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Eric Rescorla
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Eric Rescorla
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Benjamin Kaduk
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Benjamin Kaduk
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Iván Arce (Quarkslab)
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Joseph Touch
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Iván Arce (Quarkslab)
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Russ Housley
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Joseph Touch
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Christian Huitema
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Iván Arce (Quarkslab)
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Christian Huitema
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Christian Huitema
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Martin Thomson
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- [Last-Call] Fwd: Re: Last Call: <draft-gont-numer… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Martin Thomson
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Martin Thomson
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Iván Arce (Quarkslab)
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Joseph Touch
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Ted Lemon
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Joseph Touch
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Ted Lemon
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Joe Touch
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Joe Touch
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Joseph Touch
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Joseph Touch
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Iván Arce (Quarkslab)
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Christian Huitema
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Iván Arce (Quarkslab)
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Iván Arce (Quarkslab)
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Theo de Raadt
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Eric Rescorla
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Paul Wouters
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Paul Wouters
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont
- Re: [Last-Call] Last Call: <draft-gont-numeric-id… Fernando Gont