Re: [secdir] [Last-Call] Secdir last call review of draft-ietf-dtn-tcpclv4-15

Brian Sipos <> Wed, 13 November 2019 15:53 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 7CCD9120816; Wed, 13 Nov 2019 07:53:45 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 85VjEq8Q0aa3; Wed, 13 Nov 2019 07:53:42 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id A4952120073; Wed, 13 Nov 2019 07:53:41 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901;; cv=none; b=g2WOQxPdMC7mxjvNJX7Bwi9jaTEHjarhDd8YWXMr6nS3BwTrb1HImaemoHSJMA5NQyuq2IShm/uKFgg8k28To3BuDc9zX0ks/3BNuF7BXbdILVi7wrOPcjBBhnNChlYD7xbm8vN1wXAXqR0Ch/YcLgz2n85GwmhaOr8y7+prqlHV71LQgzcxIVrtSU5UEGJqzxV4FcVY3p1XNsFt2sZfu53qIjv8OOUETYo7iVXUEcGAzHe4n0i0zofqX+/i6wL7Y4owPrEw+tb9FNTsoP/Ug2V376Rb1Kutu6iBZuRHaCdUDh9VCW/g/+qZDQcfqqhOttwaYR9CI7oQHH8dkAY7Tw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8vkCgtARTqNsP/nlkMgHzxulM8RkzGlWpv4hd44/kxM=; b=ZtOu//rJDdd3dUayuZjH9LMFMrOiIQrqFfD+rW5nTwvsoYmvkV7yV1Qobf5YJTXdSRGU9//VF/iW7qpJzRxEy4QgDnQ7d3i9yZZXDfTw8EKa4I51MFuTkvfCEZDOmwW7eXX1+Fb9ZP8QaqIAaKWkNcwlST19aBkBcXe5SbHowqgwEQphd3yZLudINC6KVvDletWeNrr5DxI0cWA/EhwS47/Wc8GFez3i82J6vdivlNMQm2gOie73FFfyIogOB2xfzIty+hw9RafUpafFPx8kyFNMvdzssP0qBb+AQfvxzqt6HNBWt4sfx2dDReWNJXkYWG11CFK6oKNr8wCxbAkmTQ==
ARC-Authentication-Results: i=1; 1; spf=pass; dmarc=pass action=none; dkim=pass; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=selector2-rkfeng-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8vkCgtARTqNsP/nlkMgHzxulM8RkzGlWpv4hd44/kxM=; b=CwhItNqSFy9jMKPVdzQ5fBucLkf+are2TGORVztB8L49xT/KJOMtZxpiapI4DpN6Rb+bhAEK32UvhZQTahnfKDV2kV0TuDZhfDXtbMTqgs/TFs7jdyZCrBLStGHewu6sZIN/ryURLYPW+2CKZ8TJyt0reAshB8bhx4M8p1TUQUs=
Received: from ( by ( with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2451.21; Wed, 13 Nov 2019 15:53:38 +0000
Received: from ([fe80::701b:4c2c:9db8:7370]) by ([fe80::701b:4c2c:9db8:7370%3]) with mapi id 15.20.2451.023; Wed, 13 Nov 2019 15:53:38 +0000
From: Brian Sipos <>
To: Christopher Wood <>, "" <>
CC: "" <>, "" <>, "" <>
Thread-Topic: [Last-Call] Secdir last call review of draft-ietf-dtn-tcpclv4-15
Thread-Index: AQHVlQsiZv1NUR8az0SiDiIPZNLET6d+80gAgAKzuko=
Date: Wed, 13 Nov 2019 15:53:38 +0000
Message-ID: <>
References: <>, <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
authentication-results: spf=none (sender IP is );
x-originating-ip: []
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 6af63337-33e3-490c-f6a2-08d76851a610
x-ms-traffictypediagnostic: MN2PR13MB2990:
x-microsoft-antispam-prvs: <>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 0220D4B98D
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(346002)(39830400003)(136003)(366004)(376002)(15404003)(189003)(199004)(53546011)(105004)(7736002)(74316002)(446003)(486006)(8936002)(19627405001)(11346002)(606006)(229853002)(81166006)(81156014)(8676002)(256004)(14444005)(6506007)(476003)(33656002)(76176011)(7696005)(52536014)(102836004)(99286004)(316002)(80792005)(5660300002)(54906003)(110136005)(86362001)(26005)(186003)(66556008)(64756008)(66476007)(66446008)(66066001)(2906002)(14454004)(6246003)(9686003)(508600001)(54896002)(6306002)(71190400001)(4326008)(966005)(55016002)(71200400001)(3846002)(6116002)(25786009)(236005)(76116006)(66946007)(6436002)(2501003); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR13MB2990;; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1;
received-spf: None ( does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: pkLhwadupMqAWSmZQZTg76lyhVfpsmlj2OBuc1ZaTFHNw0MLVZ5XXF9JLgFLCHRi4kJpA8ue1ezekFAr7FVtTRiaPJOqnqWq+gT+JfVpHss+aNM3+KJvDqEx8dYOB5CZMTi7NgKFceqt2Xj8srdeOHzMl89l/VyBVSM0Bd1FnrKMan4ES1k9S0Cet/BNm7sDFROqH2q8ZnEGC8aqBZcro8/bSlhqA5km/pE4l0xL21ggsoJhktv0nTe3/Y2PwPIq/nV/zGIHI/62Wq/AhZn27i0rWxAtHq5T92Smsq+TIVYyexWecHTxsbsYGgh4fcwai10WPQV5f7eT5wblSYWxC+bTo9k1DqpJ8s+CRoge0kjnAghWU+4Hwb/jr2f3iaC1ZkuS+aV6/mrBKFE8tLKtV0XhwuC2kUmMH6d3eXwWZwWri7yB8D9nN5Akzu0C6aSj
x-ms-exchange-transport-forked: True
Content-Type: multipart/alternative; boundary="_000_MN2PR13MB3520EBCB4F7786ABFDED76EE9F7B0MN2PR13MB3520namp_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 6af63337-33e3-490c-f6a2-08d76851a610
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Nov 2019 15:53:38.2794 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 4ed8b15b-911f-42bc-8524-d89148858535
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: Qnprdu/+NmnjPrrHcGz/RPE9Bg5cldl+Y8Cxs7o9oqazJedvMTWIJ0Y5f7u4ltQz5wSbXL/LIWZ63pakTYnNEg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB2990
Archived-At: <>
Subject: Re: [secdir] [Last-Call] Secdir last call review of draft-ietf-dtn-tcpclv4-15
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Security Area Directorate <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 13 Nov 2019 15:53:46 -0000

Thank you for these comments. My responses are inline below with prefix "BS: ". I have been making edits to a future draft which is not yet uploaded.

From: Christopher Wood <>;
Sent: Wednesday, November 6, 2019 20:57
To: <>;
Cc: <>;; <>;; <>;
Subject: Re: [Last-Call] Secdir last call review of draft-ietf-dtn-tcpclv4-15

Oops. Datatracker butchered the formatting. Let's try that again:


Reviewer: Christopher Wood
Review result: Has Issues

- Section 1.1, fourth bullet: I assume certificate revocation is also out of scope. If so, listing this explicitly might be useful. If not, why not? Relatedly, is pre-shared key authentication supported? If so, perhaps we should mention that this too is out of scope?
BS: I added explicit out-of-scope indication for both revocation and PSK (and other non-certificate) use.

- If TLS sits below TCPCL and if resumption is used, what is the definition of a session's lifetime? Is it still bound to the underlying TCP connection lifetime? I would suggest that the definition be generalized to accommodate TLS, e.g., perhaps the lifetime is bound to the underlying transport state lifetime. Relatedly, is TLS session resumption supported (or encouraged)? When discussing TLS session establishment in Section 4, this seems to be omitted.
BS: I added text to Section 4 to indicate both the lifetime of TLS sessions and the ability to attempt to resume sessions.

- Section 3.2, first paragraph: What does "initiate TLS security" mean, exactly? Does this mean the initiator sends a TLS ClientHello upon TCP connection establishment, or only after some other TCPCL headers are exchanged? Similarly, is the Node ID transferred used in authenticating such a TLS connection? If so, how? Is the Node ID sent as the TLS SNI, as hinted at in Section 4.4.1 and 4.4.2, is it included in the responder's certificate SAN list, etc? I think specific details are needed here, perhaps with forward pointers to Section 4 as needed.
BS: I rephrased the first paragraph and added a reference to Section 4. The text in Section 3 is supposed to be higher-level and informative, where Section 4 is requirements.

- Section 3.2: It's not clear to me how SESS_TERM translates to graceful TLS termination (to avoid truncation attacks). The state machine diagram outlined in Section 3.3 suggests that SESS_TERM, once negotiated, does imply the end of the data transfer. It therefore seems possible for an attacker to truncate data sent between receipt of SESS_TERM and TCP FIN by simply closing the TCP connection. It would be good to require use of a TLS closure alert when finished to avoid this type of truncation. (Maybe BP prevents this by marking data transfer lengths. However, even if that's the case, proper use of TLS seems prudent.)
​BS: I added a requirement to send Closure Alert before shutting down the TLS session. The TCPCL messages are all fixed-length or self-indicated length so there is no possibility of data truncation.

- Section 4, first paragraph: If entities are encouraged to keep sessions alive for as long as possible, guidance on how to update TLS keying material (via key updates or explicitly tearing down the connection and starting anew) seems prudent. TLS has a bound on how much data can be encrypted under one key.
BS: I added text to Security Considerations section to include a reference about key use limits and key updates.

- Section 4: This text:

  Once a TCP connection is established, each entity MUST immediately
  transmit a contact header over the TCP connection.

suggests that TLS does *not* proceed as normal upon TCP connection establishment. This is quite problematic, since any active attacker can simply muck with the ContactHeader CAN_TLS bit to disable TLS, right? Is this threat not considered in scope? Relatedly, what is the threat model? (SSL stripping is mentioned in Section 8, but without mention of a threat model.) "Secure" sessions subject to active downgrade do not offer much in the way of security, and the document should acknowledge that in the Security Considerations. Concretely, how about the following text to replace the second paragraph in Section 8?

   TCPCL does not protect against active network attackers. In particular, an
   active man-in-the-middle attackers to set the CAN_TLS flag to 0 on either
   side of a TCPCL ContactHeader exchange.  This leads to the "SSL Stripping"
   attack described in [RFC7457].

   If TLS is desired for use on any TCPCL network, it is strongly encouraged that
   the security policy disallow use of TCPCL when "Enable TLS" is
   negotiated to false.  This requires that the TLS handshake occurs,
   regardless of the policy-driven parameters of the handshake and
   policy-driven handling of the handshake outcome.
BS: Your statements are definitely true. The purpose of the CAN_TLS flag has been clarified in Section 4.2 "Contact Header", and Section 8 is updated to have a stronger recommendation for policy to require TLS use when TLS is available.
The purpose of the CAN_TLS flag is to allow the use of TCPCL on entities which simply do not have a TLS implementation available. This was a stated goal of the DTN WG due to the desire to use TCPCL in environments where the entities are constrained (TLS is unavailable) but the network is trusted.
Regarding the threat model, this is something I need to look into and find some examples of in other RFCs.

- Section 4.4.2: Why is the recommendation that entities "SHOULD terminate the session" if the peer's certificate is untrusted, rather than "MUST terminate the session"? In what circumstances would an entity not want to terminate the connection? (Later text mentions that this may be allowed by "security policy," in which case we should mention that here.)
BS: I updated these requirements to SHALL and made sure they are all conditioned on policy rules.

- Section 4.4.2, fourth paragraph: Why is host name validation done *after* TLS completes, rather than during the connection? This seems wrong, though I suspect I'm misunderstanding the details.
BS: I updated the text to read "Either during or immediately after the TLS handshake..." The only reason for this is some TLS implementations allow interrupting the handshake but some only allow inspecting the results of the handshake.

- 4.7, Enable TLS: If security policy allows the absence of TLS, why not just always use TLS and have that policy tune TLS peer authentication? (See for an example of this.) It seems strange that opportunistic security is supported (and desired as a feature?) yet not always used.
BS: Per the earlier response to Section 4 text, the reason to allow non-TLS sessions is purely for constrained entities. The text in Section 4.2 and Section 8 are updated to clarify the CAN_TLS flag to indicate the presence of TLS in the network stack, not really a configuration parameter.

- Section 8: I see no reason why one would want to use TLS for authentication without any form of confidentiality. I would remove text referencing this use case.
BS: I removed this text to avoid confusion.

- Section 8: In describing volumetric DoS attacks, it might help to consider the "opposite" sort of attack, e.g., similar to what the HTTPT/2 data dribble attack exploited? (
BS: This is a good catch, I added Section 8 text to warn against accepting too-small Segment MRU or Transfer MRU parameters.

- Section 2.1, TCP Connection: typo in "and other states association" (should be associated?)
BS: Fixed this typo.
- Section 2.1, Transmission Intermediate Progress: typo "transferr" (and elsewhere)
BS: Fixed this typo.
- Inconsistent notation of SESS_TERM (it's referred to as SESSTERM in lots of places)
BS: The "SESS_TERM" was a message while a "SESSTERM" was an activity. I renamed the activity to "ST" to be consistent with other abbreviated activity names.
- Section 3.4, last paragraph: typo "from from"
BS: Fixed this typo.
- Section: typo "negotating"
BS: Fixed several of this typo.