Re: Privacy holes (was: Re: Getting to consensus on packet number encryption)

Kazuho Oku <kazuhooku@gmail.com> Fri, 06 April 2018 09:14 UTC

Return-Path: <kazuhooku@gmail.com>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2AF8C1200F1 for <quic@ietfa.amsl.com>; Fri, 6 Apr 2018 02:14:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level:
X-Spam-Status: No, score=-1.999 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, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Xxlo9XCQVrl2 for <quic@ietfa.amsl.com>; Fri, 6 Apr 2018 02:14:42 -0700 (PDT)
Received: from mail-pl0-x22e.google.com (mail-pl0-x22e.google.com [IPv6:2607:f8b0:400e:c01::22e]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 811AA120047 for <quic@ietf.org>; Fri, 6 Apr 2018 02:14:42 -0700 (PDT)
Received: by mail-pl0-x22e.google.com with SMTP id s10-v6so273777plp.0 for <quic@ietf.org>; Fri, 06 Apr 2018 02:14:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=ahALOtNVHBto2+OGZ7wu1cM0exRHJDSSXS3BkuMqY8w=; b=NkMWb94bfk//KLi6dHGsRYi8t8SrwdQaHBQovI4UcqibSnduPe7HMN3rxzVLDsH2h8 K5F4i+LpVCLET9ZOc2kBuvlaJ9msMTCJTCOJT84mFNSeePoJEHLEbL+8NMNBTaSua7VJ Lp30kj9FRnJqi6VU6lW6O6HYC/wbipA2jogV+15daOqgWZr7SKE0tf3QO19BYEd+0nmE w69C2+dApb0MHMCBOP6Xkz47rnPgMraFAUcTfYL13Wd3auDQAODOWqvTvrjVM1l+p77m /e1pls3Kh/ldTBMBa5YdZPDD7vXWpDrKzD7l21Kq5Qcj+99/0V3ARmK05OXuhyWTO/lS 01SA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=ahALOtNVHBto2+OGZ7wu1cM0exRHJDSSXS3BkuMqY8w=; b=EpMs7Pz51Gv4NZo7rRMlX9s7jUWqcJF6GUnUmQn9xJ/8MutnF5LtHv/nQWVqpBfdGD XI4/H5oWd9WIv8yzgR0+3iw4Px/8u9N+kEVqfESDUlUNsiIotqLQPodci7RDXiyP9niz HC3WVDXsk3pPR2h4G5N0qceaRyMpSBYVQ+vRusR8qzS+dsT2jTTjG/LeEkz9JlOjZTcn r003HtO7a2WZ8kTaTNN1tJNwRKVxCYjnA0CG+K0z6rBGRhSNvFbR6xJ3+XBLzbwVyD6m 9jH7DJsCBohN2OuNdmPlUc1tLExOG9DisURXR8ngiJzY1yQicoTheJed0TcF5Y6zLSqP WCMw==
X-Gm-Message-State: AElRT7FWa8zvgL5FegV73s1510BB6ihd/7ZvSGrRFryKYroeQRXBA2IK xyMwCJOwjC+c0fRFIKICg170aM9qexS2g5xBnGw=
X-Google-Smtp-Source: AIpwx481iJBGnX/JJmvK71ah8ORBcD/nOuofs8gumsLxiulEaTyT9jOCvWfgVFaSYWkndm1hvtmr8Og8n74MTz3AD8M=
X-Received: by 2002:a17:902:bd91:: with SMTP id q17-v6mr24650113pls.330.1523006082028; Fri, 06 Apr 2018 02:14:42 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.100.145.130 with HTTP; Fri, 6 Apr 2018 02:14:41 -0700 (PDT)
In-Reply-To: <29F2FB1B-3A82-4E60-A4A5-70AC36CEEC54@trammell.ch>
References: <7fd34142-2e14-e383-1f65-bc3ca657576c@huitema.net> <BBB8D1DE-25F8-4F3D-B274-C317848DE872@akamai.com> <CAN1APdd=47b2eXkvMg+Q_+P254xo4vo-Tu-YQu6XoUGMByO_eQ@mail.gmail.com> <CAKcm_gMpz4MpdmrHLtC8MvTf5uO9LjD915jM-i2LfpKY384O2w@mail.gmail.com> <HE1PR0702MB3611A67E764EE1C7D1644FAD84AD0@HE1PR0702MB3611.eurprd07.prod.outlook.com> <d8e35569-e939-4064-9ec4-2cccfba2f341@huitema.net> <CACpbDccqKoF-Y1poHMN2cLOK9GOuvtMTPsF-QEen3b30kUo9bg@mail.gmail.com> <CAKcm_gNffwpraF-H2LQBF33vUhYFx0bi_UXJ3N14k4Xj4NmWUw@mail.gmail.com> <40C1F6FE-2B2C-469F-8F98-66329703ED50@mnot.net> <21C36B57-6AE2-40EF-9549-7196D7FA9B45@tik.ee.ethz.ch> <B176FC07-887D-4135-B01E-FE8B4986A5EE@mnot.net> <CAKcm_gOCeocLyrYpOS7Ud332xdz3xHSH0psPN8T6BGRjoL9ptQ@mail.gmail.com> <CY4PR21MB0630FA0EDD343396AD414641B6A40@CY4PR21MB0630.namprd21.prod.outlook.com> <CAN1APde13JTzCvKFFvMd183Fka6QGD1kGBjsa9fcoLrYeA2hsA@mail.gmail.com> <CY4PR21MB0630C0FD4FBECBFEC3C863BBB6A40@CY4PR21MB0630.namprd21.prod.outlook.com> <759C5BE4-DE4C-4A82-929C-B03234B88A37@huitema.net> <CAJGwveB=qs+J2iBQRs3d5jdGuP9yBWoAgv0t3mwD=Wrf6Q5g8g@mail.gmail.com> <F395D018-FFCA-405F-BBD5-1313C6F6DAF9@huitema.net> <CABkgnnWAgGJaKs8teKTURiNDRA61fRhN6pxYQuD1MbkPDqasKQ@mail.gmail.com> <2F06334E-C3DF-4034-A6A4-AF383505D930@trammell.ch> <CABkgnnX1=h4qx+3YjXj=ZME5ihZbJ2rqE8zeT4j84dJj0ZfZGg@mail.gmail.com> <29F2FB1B-3A82-4E60-A4A5-70AC36CEEC54@trammell.ch>
From: Kazuho Oku <kazuhooku@gmail.com>
Date: Fri, 06 Apr 2018 18:14:41 +0900
Message-ID: <CANatvzzoAK0SRrLOfz6HecbsE3oevWWkzJcfhceuqECF0VL=MA@mail.gmail.com>
Subject: Re: Privacy holes (was: Re: Getting to consensus on packet number encryption)
To: "Brian Trammell (IETF)" <ietf@trammell.ch>
Cc: Martin Thomson <martin.thomson@gmail.com>, Mirja Kühlewind <mirja.kuehlewind@tik.ee.ethz.ch>, QUIC WG <quic@ietf.org>, Christian Huitema <huitema@huitema.net>, Frederick Kautz <fkautz@alumni.cmu.edu>
Content-Type: multipart/alternative; boundary="00000000000082993105692a7cbd"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/TYUjVsdm3-0hQGTkl_9cKIsRN7U>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 06 Apr 2018 09:14:46 -0000

2018-04-06 17:36 GMT+09:00 Brian Trammell (IETF) <ietf@trammell.ch>:

>
>
> > On 6 Apr 2018, at 09:45, Martin Thomson <martin.thomson@gmail.com>
> wrote:
> >
> > We do have data about rate of binding creation, courtesy of tests done
> > for WebRTC.  In essence, bindings can be created at rates that exceed
> > most needs (I think that they went down to single digit milliseconds,
> > far lower than I think is relevant here).
>
> There are two relevant metrics here: binding creation rate and maximum
> concurrent state. The latter is where I expect there to be more
> variability, and potential unfortunate side effects of an engineering
> decision made with a single consideration. "People stuck behind marginal
> NATs outside their own control don't deserve to use QUIC" is not a great
> statement to make, even accidentally.
>
> > Justin Uberti has the numbers, but I struggled to find the email or
> > slides; we can ask if you care. This result differed from the data
> > that was available when STUN was first developed, where it was found
> > that there were non-trivial numbers of NAT devices that lost bindings
> > below 20ms (see https://tools.ietf.org/html/rfc5245#appendix-B.1).
>
> This is useful, thanks!
>
> > The question about exhaustion is relevant, I agree.  There, the value
> > doesn't need measurement as much as asking the right person what their
> > configuration is.  Take the number of ports open for bindings per IP,
> > the duration of a binding, and how many clients are expected to be
> > behind each IP address or how many bindings each client is limited to.
> > We'd probably need to just ask a few CGNAT operators; anything smaller
> > is unlikely to be as sensitive as something that runs at a decent
> > scale.  But getting data in the usual fashion - making bindings until
> > something breaks - might be a little antisocial.
>
> Agreed that CGNAT is where the highest pain magnitude will be, but there
> is a very long tail of CPE out there, where configuration information will
> be harder to come by. But that's why we have a TCP fallback, I guess.
>
> > If we're going to saturate NAT bindings with this, then a signal might
> > be a good solution.  Or it might just be that we can recommend a rate
> > limit on these little migrations.  Based on typical timeouts on UDP
> > (30s is very common, see also experience with ICE), we could say that
> > a little migration every 10s is OK and you only have each connection
> > taking 3 bindings.  That doesn't seem that bad.
>
> It's multiplicative by a factor of three, which means that the max flow
> concurrency will reduce by a factor of three. I agree it's probably
> tolerable, but we do need to understand what we're actually getting for
> that cost. I remain dubious about the actual privacy benefits WRT third
> party passive surveillance here -- they don't accrue at all unless there's
> a CGNAT in the way that doesn't bind an address/port range to a customer at
> a given point in time. In the common case, ISTM that just burn more
> in-network state than they additionally require at the surveillance point
> to track the change. Defenses with such scaling curves are not a good idea.
>

I think I share the same concern.

One way to minimize the impact could be to suggest certain amount of
connections (e.g., 5%) to gratuitously migrate to a new tuple just once,
right after the connection is being established.

If we specify that way, we can assume that the impact on the NAT will be
having 5% more flows. Middlebox vendor that mistakenly tries to use the
cleartext bits in the packet header as the signal of connection initiation
will also see failures at the same rate.


> Another issue this raises: this will wreak varying levels havoc on
> anything that uses IPFIX, NetFlow, sFlow, or similar technologies for
> accounting or forensics. For accounting, whether two flow records happen to
> represent the same flow is irrelevant, since they'll generally be dumped
> into larger aggregates anyway. Replacing a single long-lived flow (a common
> max active time is 30min) with its equivalent split into 10s windows will
> lead to a 180x increase in export bandwidth for these flows in the first
> stage of the collection infrastructure, but the flow counts handled by
> these infrastructures (when connected to the open Internet) are usually
> dominated by single-packet UDP and ICMP garbage anyway, so this probably
> won't have too terrible an impact.
>
> Most such infrastructures are sampled (sFlow explicitly so), and there are
> well-known issues with differential visibility of packet-sampled flows
> based on flow duration. QUIC flows rotating ports every 10s would be
> systematically undercounted with respect to long-duration TCP flows, which
> will provide a strong incentive for correction if it materially impacts
> settlement.
>
> Especially forensics for operational security will remain very interested
> in understanding whether a group of 5-tuple flows are related to the same
> activity. In most enterprise environments, though, any CGNAT mappings are
> reversable, so there will not necessarily be a strong incentive
>
> I want to like this proposal, but I'm increasingly left with the
> impression that this is neither a particularly useful nor a completely safe
> thing to do at scale.
>
> Cheers,
>
> Brian
>
> >
> > On Fri, Apr 6, 2018 at 5:16 PM, Brian Trammell (IETF) <ietf@trammell.ch>
> wrote:
> >> (Repeating and expanding my comment on #1269 to the list)
> >>
> >> +1 to CID rotation being pointless if we don't do this. However, this
> seems dangerous if not done carefully, and it links CID rotation rate to
> the maximum usable UDP port consumption rate, which is (most probably)
> widely variable across access networks and (AFAICT) largely unknown in the
> literature. We have anecdata here, and we need data.
> >>
> >> Note that QUIC presently doesn't have an advisory on-path state
> clearance signal (we hsd discussed this as a signal bound to public reset
> in #20, but it morphed into Stateless Reset, which has completely different
> semantics), which means that there is neither a present nor yet a potential
> future method to reduce the NAT state load this will generate.
> >>
> >> I'd feel a lot less apprehensive about this if there were an advisory,
> integrity-protected signal meant for path consumption to clear state for a
> path. Of course it wouldn't be used at all on day one, but the tradeoff it
> presents is "hey, this is QUIC, it will burn through your UDP port state
> faster than any other UDP protocol and multiplicatively faster than TCP;
> but hey look, you can clear state when you see this path-verifiable singal
> to reduce the impact this has."
> >>
> >> Cheers,
> >>
> >> Brian
> >>
> >>> On 6 Apr 2018, at 02:38, Martin Thomson <martin.thomson@gmail.com>
> wrote:
> >>>
> >>> On Fri, Apr 6, 2018 at 2:08 AM, Christian Huitema <huitema@huitema.net>
> wrote:
> >>>>> On Apr 5, 2018, at 8:58 AM, Frederick Kautz <fkautz@alumni.cmu.edu>
> wrote:
> >>>>>
> >>>>> Are you concerned that middleware boxes may be trained to reject
> migrations, thereby forcing a new connection with a visible negotiation?
> >>>>
> >>>> Yes. Hence the need to grease. For example, have clients do some
> gratuitous migration to a new source port number rather frequently.
> >>>
> >>> This seems like a simple fix, particularly since Mike recently added
> >>> text that suggests occasional use of new connection IDs.  In the
> >>> spirit of keeping the wheels greased:
> >>>
> >>> https://github.com/quicwg/base-drafts/pull/1269
> >>>
> >>
>
>


-- 
Kazuho Oku