[TLS] Re: draft-ietf-tls-dtls-rrc-14 ietf last call Secdir review
Mike Ounsworth <mike@ounsworth.ca> Wed, 11 June 2025 15:20 UTC
Return-Path: <mike@ounsworth.ca>
X-Original-To: tls@mail2.ietf.org
Delivered-To: tls@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id EED8C33BD511; Wed, 11 Jun 2025 08:20:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_PASS=-0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=ounsworth.ca
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id N81wwgKn0hOU; Wed, 11 Jun 2025 08:20:12 -0700 (PDT)
Received: from mail-24420.protonmail.ch (mail-24420.protonmail.ch [109.224.244.20]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256)) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id D329933BD157; Wed, 11 Jun 2025 08:19:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ounsworth.ca; s=protonmail3; t=1749655172; x=1749914372; bh=PA77M5Vdj5rBLsoiNiFKKAtN3NbAnoTlUGv3NK1WYyY=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector:List-Unsubscribe:List-Unsubscribe-Post; b=CUDw53VpFnXh7HKu8iWhoOnp/a66pv6HIM+x3UwNZX9dyKupi2hlC1EtLJ5mwMrgu lUe45GihslSwc6d/HPn66bbFmA+Z+cWdQO8AkojId3P4d2qUB0loil2vabJrj6OFqZ +MbV5tVdvnNUsWqqZ1AmgZv2SpAr58qQybNaRIvucUZ32/dpaYQccz2bINsrXWcaI1 Nj9+O6sB82Q2qxPl+cexJ8+0nM66wXNoK/+cpNVFHOP2v7+ovg3psU6ZDLG52TRIE/ Mo/4/o4aXAzbhxC6D1jM/TGaUSdhbvaMTRpBqEey40CzCIqqBdIJyx8w1eDXuMz2vC 10RtGRaKXAm5Q==
Date: Wed, 11 Jun 2025 15:19:25 +0000
To: Thomas Fossati <thomas.fossati@linaro.org>
From: Mike Ounsworth <mike@ounsworth.ca>
Message-ID: <HB8hs4d3_IdMn6ULTSUw0rHWFZcKIMP1VLX_H-fWpRloCxudTEwLQl22B7wVJ2k6qQr0O8D4sinDPIoMCimHwoaYm-y_CthnkQnQwTY92zI=@ounsworth.ca>
In-Reply-To: <PD2sxCqJmY9h6ebgiyzdKQR_TigzwcpuD6m9ezpJZ6K-7SonnAArjb7iVh4jVUYuUWFXYvNS35QbQIVNr1TkwBOJJ2MJFIKGLI1Wi8x_ZKI=@ounsworth.ca>
References: <174949511014.3608990.214324245158264124@dt-datatracker-59b84fc74f-84jsl> <hoinqbl42vqettbny6gbk3aqedeq7nyuocgvehwq74wcupdrkw@334645svlcrj> <jqANMp6haiPUMBZeHclPUYeaNnf8W8undD0OQlImnFofXzymKP4MFMRoROR8RBlq8po0L9_TWOZ4xYKSI6fqiYQppZDXIY_cttkRer9ABy0=@ounsworth.ca> <lobgf25ccbuqjrpqxdxw33ws53v3i2ly7ngdj4arnv3j4kero2@qqeubblluqw2> <PD2sxCqJmY9h6ebgiyzdKQR_TigzwcpuD6m9ezpJZ6K-7SonnAArjb7iVh4jVUYuUWFXYvNS35QbQIVNr1TkwBOJJ2MJFIKGLI1Wi8x_ZKI=@ounsworth.ca>
Feedback-ID: 61358882:user:proton
X-Pm-Message-ID: 73f4d0dbda02733ab8cea86b79c826d11530fe41
MIME-Version: 1.0
Content-Type: multipart/signed; protocol="application/pgp-signature"; micalg="pgp-sha512"; boundary="------ad6da6777388154278ae107d4ef83b6c22cfbf8a6849e078b742ad50ab4009cb"; charset="utf-8"
Message-ID-Hash: H6NZJ4HE62FPTMUC2TTOGXPSRA7B4NR4
X-Message-ID-Hash: H6NZJ4HE62FPTMUC2TTOGXPSRA7B4NR4
X-MailFrom: mike@ounsworth.ca
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-tls.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: secdir@ietf.org, draft-ietf-tls-dtls-rrc.all@ietf.org, last-call@ietf.org, tls@ietf.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [TLS] Re: draft-ietf-tls-dtls-rrc-14 ietf last call Secdir review
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/impYGUPQ6IPcayFZd8KRR0MXQyY>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tls>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Owner: <mailto:tls-owner@ietf.org>
List-Post: <mailto:tls@ietf.org>
List-Subscribe: <mailto:tls-join@ietf.org>
List-Unsubscribe: <mailto:tls-leave@ietf.org>
I have marked the SecDir review "Ready". -Mike "Knowing is a barrier which prevents learning" -- Frank Herbert, Dune. On Wednesday, June 11th, 2025 at 10:17 AM, Mike Ounsworth <mike@ounsworth.ca> wrote: > Hi Thomas, > > I did a quick skim. Changes look good to me. > > > -Mike > "Knowing is a barrier which prevents learning" -- Frank Herbert, Dune. > > > > > On Wednesday, June 11th, 2025 at 2:35 AM, Thomas Fossati thomas.fossati@linaro.org wrote: > > > Hi Mike, > > > > We have implemented the changes we discussed and agreed on, and > > published -15 [1]. > > > > Thanks for your help! > > > > cheers, t > > > > [1] https://author-tools.ietf.org/iddiff?url1=draft-ietf-tls-dtls-rrc-14&url2=draft-ietf-tls-dtls-rrc-15 > > > > On Tue, Jun 10, 2025 at 04:01:31PM +0100, Mike Ounsworth wrote: > > > > > Hi Achim and Thomas, > > > > > > I should have numbered my comments for easier reference. Oh well. > > > > > > I think the suggestions you make below would be sufficient, thanks. Since my comments are about clarity and not content, I leave it up to you; I won't block the document either way. > > > > > > In my personal opinion, it would make the document easier to read if you inlined at least a summary of the relevant definitions from [RFC9146], [RFC9000], [Sect. 6 of this document] into the intro. > > > > > > This is personal style, but I think that anything that's core to understanding the main points of a document should be inlined, rather than forcing the user to go fishing in a half-dozen other documents. I like the phrase "blah blah from [RFCxxxx], which is reproduced here for clarity". > > > > > > -Mike > > > "Knowing is a barrier which prevents learning" -- Frank Herbert, Dune. > > > > > > On Tuesday, June 10th, 2025 at 5:17 AM, Thomas Fossati thomas.fossati@linaro.org wrote: > > > > > > > Hi Mike, > > > > > > > Thanks very much for the detailed review. > > > > > > > On top of Achim's replay, see also a few other comments inline. > > > > > > > On Mon, Jun 09, 2025 at 11:51:50AM +0100, Mike Ounsworth wrote: > > > > > > > > [...] > > > > > Naïve question (I am not a DTLS / routing expert). Does this spec > > > > > introduce a new DDoS surface in the case that the new (preferred) path > > > > > is longer, and therefore the connection will keep pausing to do this > > > > > path-check? I expected to see somewhere a recommendation for a guard > > > > > against that – only do this once per pair of paths, or something > > > > > similar. > > > > > > > To trigger RRC you need to be able to send a "good" DTLS record, > > > > otherwise, the receiver will drop it on the floor and continue as if > > > > nothing happened. To do that, you either replay an old record and hope > > > > the receiver doesn't have anti-replay on (at least in some form -- see > > > > §6 of RFC9146), or you are racing a copy of an outstanding record over a > > > > shorter/faster path. It is not possible to make the receiver start > > > > doing RRC work otherwise, i.e., cheaply enough to introduce more DDoS > > > > surface. > > > > > > > > I would like to see the Introduction add a paragraph about > > > > > mandatory-to-implement and interop implications of this draft; give a > > > > > sense of whether this is a mandatory-to-implement extension to DTLS, > > > > > or optional, and whether one side of the connection can perform this > > > > > successfully even if the other end does not support it. I think the > > > > > text I’m looking for is: “This specification defines a RECOMMENDED > > > > > mechanism for DTLS 1.2 and 1.3. DTLS 1.2 and 1.3 implementations > > > > > SHOULD implement this and include it in all DTLS ClientHellos, but > > > > > note that no security value is obtained unless both parties support > > > > > it”, but I’ll leave it to the experts to frame the correct wording. > > > > > > > OK, makes sense. Would something like the following work? > > > > > > > A client offering the connection_id extension SHOULD also offer the > > > > rrc extension, unless the application using DTLS has its own address > > > > validation mechanism. > > > > > > > > Intro needs more description of what the vulnerability is, and which > > > > > party is gaining protection against which type of adversary by > > > > > implementing this. You have this nicely and in great detail in Section > > > > > 6, but I would pull a short summary up to the Intro. After reading > > > > > section 6, I see that you are solving two problems: > > > > > amplification-to-a-victim, and path-hijacking. You have some good > > > > > sentences in Section 6 that you could pull up into a short summary of > > > > > the issue and fix. > > > > > > > The intro defers to §6 of RFC9146 for providing the context and problem > > > > description, and to §6 of RFCTHIS "to gain a detailed understanding of > > > > the attacker model". IMHO we are good. > > > > > > > > Nit: Section 4: “Future extensions to the Return Routability Check > > > > > sub-protocol may define new message types.” … should that be a > > > > > normative “MAY”? > > > > > > > I don't think tehre is anything normative in that sentecne. > > > > > > > > Section 6: It would be nice if you synced up with the terminology for > > > > > type of attack / attacker as defined in Section 3 of RFC3552. What you > > > > > have is close to S. 3.2 of RFC3552; probably just needs a reference > > > > > and a sentence “We extend the definitions of “on-path” and “off-path” > > > > > attackers as given in [RFC3552] to more precisely fit the specifics > > > > > addressed by this specification”. Could / should also site definitions > > > > > in RFC 4949. > > > > > > > We could add: > > > > > > > This definition differs from that of Section 3.5 of RFC3552 in that > > > > an off-path attacker is able to observe packets. > > > > > > > However, we already reference RFC9000, which makes the exact same point. > > > > > > > Alternatively, to avoid repetition, we could refine the reference to > > > > RFC9000 (adding §21.1). > > > > > > > WDYT? > > > > > > > > Section 6.1.1: “When receiving a packet with a known CID and a spoofed > > > > > source address, an RRC-capable endpoint will…” Technically, the > > > > > endpoint doesn’t know for a fact that it’s spoofed, right? I assume > > > > > that the whole point of defining a challenge-response sub-protocol > > > > > here is to distinguish the legitimate path-changes from attacks, > > > > > right? I would say instead “When receiving a packet with a known CID > > > > > and a source address that does not match, the RRC-capable endpoints > > > > > will begin by assuming that it is spoofed and verify by …” > > > > > > > §6.1.1 needs to be read in the context established by §6.1 which > > > > describes the amplification attack. In such context, the sender is > > > > assumed to be the attacker that spoofs the source address to trick the > > > > receiver. > > > > > > > If that creates confusion, we could say instead: > > > > > > > When receiving a packet with a known CID that has a source address > > > > different from the one currently associated with the DTLS connection, > > > > [...] > > > > > > > It's slightly more clumsy but still readable. > > > > > > > > Section 6: “The attack is more reliable if relatively few packets are > > > > > sent or if packet loss coincides with the attempted attack.” I’m a > > > > > little confused about the grammar of this sentence. I could see this > > > > > meaning one of several things: That the attack is harder if the victim > > > > > channel has some naturally-occuring (unrelated) packet loss that the > > > > > attacker has no control over, but happens to coincide with the attack. > > > > > That the attacker needs to induce packet loss in order to perform the > > > > > attack, and this is easier if it’s an otherwise noise-free channel. > > > > > That the off-path that the attacker is trying to migrate to should be > > > > > noise-free. Either way, making this sentence more precise would help > > > > > > > The sentence says that the attacker has an easier life if: > > > > 1. the application layer exchange is somewhat sparse, which can help > > > > avoid dealing with the connection moving back to the legit path, > > > > 2. packet loss on the legit path occurs simultaneously as the attacker > > > > is executing the race, therefore increasing the chances of the attacker > > > > winning the race. > > > > > > > > Grammar: “In order to determine whether this path change was not > > > > > triggered by an off-path attacker” In English, you don’t use the > > > > > “whether … not” construction. I would suggest either: “... determine > > > > > whether this path change was triggered by …” or “... determine that > > > > > this path change was not triggered by …” > > > > > > > I like the second suggestion, thanks! > > > > > > > > Joke: Figure 5 looks like what happens when I try to change my tax > > > > > address with the government; and this triggers all sorts of paper mail > > > > > to all my registered addresses. > > > > > > > :-) > > > > > > > > You use language like “attacker trying to place itself on path”. Would > > > > > it be more evocative to say “hijack the path”? Your described attack > > > > > here seems to agree with the definition of “Hijack Attack” given in > > > > > RFC 4949. > > > > > > > Maybe, but I am not sure. The attack as a whole is a combination of > > > > active and passive wiretapping (in 4949 terms) whereas "hijack attack" > > > > is defined as "A form of active wiretapping". So the match doesn't seem > > > > perfect. > > > > > > > > “If the path via the attacker is reliably faster than the old path > > > > > despite multiple attempts to use that old path, it is not possible to > > > > > distinguish between an attack and an improvement in routing.” This is > > > > > funny. I am picturing a Wired.com article titled “Actor X hijacks the > > > > > entire internet by providing faster, more reliable service”. Right. > > > > > Hard to really call that an attack. > > > > > > > :-) > > > > > > > > Section 7 intro: I feel like this needs some tie-back to the > > > > > negotiation done during the ClientHello / ServerHello step. > > > > > > > We point to here in the forward direction (from §4): > > > > > > > The RRC sub-protocol consists of three message types: path_challenge, > > > > path_response and path_drop that are used for path validation and > > > > selection as described in Section 7. > > > > > > > I beelive this should be sufficient. > > > > > > > > Like, the entirety of Section 7 only happens if this session > > > > > negotiated to use RRC, right? > > > > > > > Yes > > > > > > > > Section 7.2 / 7.3 is literally the first time in the document that the > > > > > terms “Basic” / “Enhanced” appear. You at least need to introduce this > > > > > at the top of section 7. > > > > > > > What about: > > > > > > > It then initiates the return routability check. This document > > > > describes two kinds of checks: basic (Section 7.2) and enhanced > > > > (Section 7.1). The choice of one or the other depends on whether > > > > the off-path attacker scenario described in Section 6.2 is to be > > > > considered. > > > > > > > > Basic vs Enhanced something that needs to be negotiated? > > > > > Are these interop-equivalent and therefore implementer’s > > > > > choice? … some introduction needed. > > > > > > > I believe these specific points are already discussed in §7. > > > > > > > cheers, thanks! > > > > t
- [TLS] draft-ietf-tls-dtls-rrc-14 ietf last call S… Mike Ounsworth via Datatracker
- [TLS] Re: draft-ietf-tls-dtls-rrc-14 ietf last ca… Achim Kraus
- [TLS] Re: draft-ietf-tls-dtls-rrc-14 ietf last ca… Thomas Fossati
- [TLS] Re: draft-ietf-tls-dtls-rrc-14 ietf last ca… Mike Ounsworth
- [TLS] Re: draft-ietf-tls-dtls-rrc-14 ietf last ca… Thomas Fossati
- [TLS] Re: draft-ietf-tls-dtls-rrc-14 ietf last ca… Mike Ounsworth
- [TLS] Re: draft-ietf-tls-dtls-rrc-14 ietf last ca… Mike Ounsworth