Re: [tcpinc] Ben Campbell's Yes on draft-ietf-tcpinc-tcpcrypt-09: (with COMMENT)

Daniel B Giffin <> Fri, 17 November 2017 07:32 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 9320A128C81; Thu, 16 Nov 2017 23:32:33 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id HYyNZos2kMBZ; Thu, 16 Nov 2017 23:32:32 -0800 (PST)
Received: from ( [IPv6:2001:470:806d:1::9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 1646012741D; Thu, 16 Nov 2017 23:32:32 -0800 (PST)
Received: from (localhost []) by (8.15.2/8.15.2) with ESMTP id vAH7WVQS061115; Thu, 16 Nov 2017 23:32:31 -0800 (PST)
Received: (from dbg@localhost) by (8.15.2/8.15.2/Submit) id vAH7WVsg082876; Thu, 16 Nov 2017 23:32:31 -0800 (PST)
Date: Thu, 16 Nov 2017 23:32:31 -0800
From: Daniel B Giffin <>
To: Ben Campbell <>
Cc: The IESG <>,, Kyle Rose <>,,
Message-ID: <>
References: <>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <>
Archived-At: <>
Subject: Re: [tcpinc] Ben Campbell's Yes on draft-ietf-tcpinc-tcpcrypt-09: (with COMMENT)
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: "Working group mailing list for TCP Increased Security \(tcpinc\)" <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 17 Nov 2017 07:32:34 -0000

Ben Campbell wrote:
> ----------------------------------------------------------------------
> ----------------------------------------------------------------------
> In section 3.3, the last bullet: Why are the SHOULDs not MUSTs? Do you envision
> times where it might make sense not refresh an ephemeral public key, or write
> one to persistent storage?

No, I can't really envision the reason for persistent
storage, but it's conceivable there is some setting where
there is a safe way to cache private keys in something that
is technically "persistent".  Perhaps it is silly to worry
about allowing this, but I don't want to cause undue trouble
by specifying a MUST on something that would anyway be
difficult to detect from outside the implementation.

Anyway, I've strengthened the language to "MUST be refreshed
as frequently as practically possible" and also referenced
the Security Considerations section:

   o  "PK_A", "PK_B": ephemeral public keys for hosts A and B,
      respectively.  These, as well as their corresponding private keys,
      are short-lived values that MUST be refreshed as frequently as
      practically possible.  The private keys SHOULD NOT ever be written
      to persistent storage.  The security risks associated with the
      storage of these keys are discussed in Section 8.

The relevant paragraph of Security Considerations now reads:

   Tcpcrypt uses short-lived public keys to provide forward secrecy.
   That is, once an implementation removes these keys from memory, a
   compromise of the system will not provide any means to derive the
   session keys for past connections.  All currently-specified key
   agreement schemes involve ECDHE-based key agreement, meaning a new
   keypair can be efficiently computed for each connection.  If 
   implementations reuse these parameters, they MUST limit the lifetime
   of the private parameters as far as practical in order to minimize
   the number of past connections that are vulnerable.  Of course,
   placing private keys in persistent storage introduces severe risks
   that they may not be destroyed reliably and in a timely fashion, and
   SHOULD be avoided at all costs.