Re: [tcpm] Privacy problems of TCP Fast Open

Michael Tuexen <> Tue, 21 May 2019 19:57 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id AFCE31200D6 for <>; Tue, 21 May 2019 12:57:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.59
X-Spam-Status: No, score=-2.59 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, T_SPF_HELO_PERMERROR=0.01] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id Vkbwfmv-q3jD for <>; Tue, 21 May 2019 12:57:02 -0700 (PDT)
Received: from ( [IPv6:2001:638:a02:a001:20e:cff:fe4a:feaa]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 782A3120044 for <>; Tue, 21 May 2019 12:57:02 -0700 (PDT)
Received: from [IPv6:2003:cd:6f38:4a00:d9db:e8ce:b83f:a6ec] ( [IPv6:2003:cd:6f38:4a00:d9db:e8ce:b83f:a6ec]) (Authenticated sender: lurchi) by (Postfix) with ESMTPSA id B8130721E2823; Tue, 21 May 2019 21:56:59 +0200 (CEST)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
From: Michael Tuexen <>
In-Reply-To: <>
Date: Tue, 21 May 2019 21:56:59 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <>
References: <> <> <> <> <> <> <> <>
X-Mailer: Apple Mail (2.3445.104.11)
Archived-At: <>
Subject: Re: [tcpm] Privacy problems of TCP Fast Open
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 21 May 2019 19:57:06 -0000

> On 21. May 2019, at 21:22, Erik Sy <> wrote:
> On 5/21/19 18:34, Michael Tuexen wrote:
>>> On 21. May 2019, at 14:25, Erik Sy <> wrote:
>>> On 5/21/19 12:18, Michael Tuexen wrote:
>>>>> On 21. May 2019, at 09:52, Erik Sy <> wrote:
>>>>> Hi Michael,
>>>>> thanks for this question!
>>>>> Yes, TFO cookies are bound to the clients (local) IP address. However, a
>>>>> client with a static local IP address in a home network will use the
>>>>> same TFO cookie independently of it's publicly visible IP address. As a
>>>>> result, TFO cookies present an independent tracking mechanism, which
>>>>> does not necessarily rely on the client's publicly visible IP address.
>>>> How often do the public addresses change?
>>> I do not have a general answer to your question. In the case of my home
>>> network, my ISP assigns me at least every 24 hours a new IPv4 address.
>> I also had this on my DSL line (I guess we both live in Germany),
>> but since my telephone line was moved to "all IP", the assignment stays
>> up for months.
>>> Additionally, I can initiate a change of my network's public IP address
>>> at anytime.
>> Sure.
>>> TFO cookies allow basically unlimited tracking periods because they do
>>> not have an expiration mechanism. Thus, even infrequently changed IP
>>> addresses can be correlated.
>> An implementation can do implement such a thing and even allow an API for it.
> Yes, I agree with you that implementations can go beyond RFC 7413 and
> implement an expiration mechanism limiting feasible tracking periods.
>> For testing I'm flushing the cookie cache quite often...
>>>> One could extend the TFO API in
>>>> a way that the application can request a new cookie by only sending 
>>>> a cookie request.
>>> I do not think this is an appropriate countermeasure.
>>> From my perspective, caching TFO cookies in the kernel is a more
>>> fundamental privacy problem. This design requires applications to share
>>> a pool of TFO cookies, which allows tracking across several
>>> applications. For example, this prevents user's to separate their online
>>> activities across different browsers.
>> They would share the IP address. If they decide to trigger a new address
>> binding on the access router, why couldn't they trigger flushing the
>> cache?
> Flushing the cache presents a performance versus privacy trade off
> because flushing increases the chance of a cache miss preventing a 0-RTT
> handshake.
Sure it does. It was just meant as an equivalent to resetting the
public IP address of your access router. This also affects all outgoing
> Thus, an application that often flushes the cache degrades the
> performance of all other applications sharing the same pool of TFO cookies.
> As a result, the application with the highest privacy requirements
> limits the TFO performance of all other applications.
> Furthermore flushing has difficulties to separate applications running
> at the same time. For example, running a browser window in the normal
> browsing mode and another window in the private browsing mode
> (incognito). In this scenario, only excessive flushing can prevent an
> online tracker to link the user's online activities across both browser
> windows.
Can't they both be linked by the IP address being used?
> From my perspective, an approach that delegates the caching to the
> application itself, is the better solution to address this privacy
> versus performance trade off. Moreover, I believe users tend to make the
How does this prevent "tracking by IP-address" compared to "tracking
by TFO cookie"?

Best regards
> application/browser vendor responsible to protect their privacy. Thus,
> these vendors require appropriate measures to control their users' privacy.
> Best regards,
> Erik
>> Best regards
>> Michael
>>>>> Returning to your example, onion routing does not necessarily protect
>>>>> you against tracking via TFO cookies.
>>>> Yepp, that is what I wanted to say. 
>>>> But using TFO in that case doesn't
>>>> make much sense.
>>> Yes, TFO does not make sense if user privacy is at stake. Thus, we
>>> should warn users about these risks of RFC 7413.
>>> Best regards,
>>> Erik