Re: [TLS] Encrypting record headers: practical for TLS 1.3 after all?

Yoav Nir <> Tue, 01 December 2015 14:22 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 473C31A0AFE for <>; Tue, 1 Dec 2015 06:22:32 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id ZyvALimPYyVJ for <>; Tue, 1 Dec 2015 06:22:29 -0800 (PST)
Received: from ( [IPv6:2a00:1450:400c:c09::22c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id C3C451A1A62 for <>; Tue, 1 Dec 2015 06:22:27 -0800 (PST)
Received: by wmvv187 with SMTP id v187so209096490wmv.1 for <>; Tue, 01 Dec 2015 06:22:26 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20120113; h=content-type:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=QB91p/iGM2qMlkp1vDp9V+ystd3sNV7E6vkQOsOszmM=; b=a1rd0CxbnwbQfGDPO5mDqzDE8zERvd6OyAmOIUkxYWNzDrzLWn6ZwKx1IkptYFKGp+ dhvdclfV5tzWrewUYZ0gdxdvMxeg1JXXviLzSzEPl+Zybt/Ol5KKjaxIJ7hJVSLF04vm P/fZADepILmWVTVAECIyl7Gc0oypgIJ/WOpt51uHMRl6iuPmvyAmRYeaCnuE8XQBfCj/ qvDdYhxZuFttBc+S+5YzY4xO7zfprnAxvSvyHw2PmhjOmBsBTtBH4FnTS7AqvtAdzvN2 cr1gITnTDvniLsYPhJOhaDq+OUMPUkqPyG153OG/6SRNwgZsXdBd7y4chX6XZ2ejRb1V /2Cw==
X-Received: by with SMTP id ba9mr44900701wjb.125.1448979746439; Tue, 01 Dec 2015 06:22:26 -0800 (PST)
Received: from [] ( []) by with ESMTPSA id jj3sm284692wjb.13.2015. (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 01 Dec 2015 06:22:25 -0800 (PST)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 9.1 \(3096.5\))
From: Yoav Nir <>
In-Reply-To: <>
Date: Tue, 01 Dec 2015 16:22:23 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <>
References: <> <> <> <>
To: Hubert Kario <>
X-Mailer: Apple Mail (2.3096.5)
Archived-At: <>
Subject: Re: [TLS] Encrypting record headers: practical for TLS 1.3 after all?
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 01 Dec 2015 14:22:32 -0000

On 1 Dec 2015, at 1:02 PM, Hubert Kario <> wrote:

>>>> If you think it is practical for the TLS 1.3 standard to specify a
>>>> single, fixed record size that all implementations of TLS 1.3 must
>>>> use (i.e., explicitly freeze not only the version field but the
>>>> length field), then that would be great for traffic analysis
>>>> protection and on that basis I would support that proposal.  But
>>>> that frankly seems to me likely a bit too much to ask given the
>>>> diversity of TLS implementations and use-cases.  Tell me if you
>>>> believe otherwise.> 
>>> That will just round up to a multiple of 256 bytes the data sizes
>>> transmitted. Hardly an improvement over the current 16 byte blocks.
>> Closer to 512 bytes is better.
> Either hardly helps if you're not transferring packets with null data to 
> really hide the amount of data transferred.

I think this is not as black and white as you suggest. 

It is possible to totally hide the actual data stream by sending a constant-rate stream of constant-size data records regardless of the availability of actual data. This is a perfect counter-measure to traffic analysis but it has a huge cost in bandwidth. Endpoints who do that might well be considered to be DoS-ing the network. 

There are less drastic ways. You could add small variations to the timing and sizes of records, adding a little padding, splitting and combining the application writes, perhaps with the addition of the occasional burst of fake traffic. This can have a relatively small overhead and obscure the real sizes and number of requests. An attacker will still have an approximation of the amount of real traffic is actually passed, but would not be able to guess which Wikipedia article you are viewing or what part of the world you are looking at with your favorite maps website. This is not as perfect as the full traffic flow confidentiality above, but it would be more palatable to network administrators and to people who pay for Internet access by the megabyte.

I don’t think this is the same as encryption where you either have perfect security or you have nothing at all. There can be incremental gains that are worth having at significantly lower cost than the perfect TFC.