Re: [TLS] Certificate compression draft

Martin Thomson <martin.thomson@gmail.com> Tue, 07 March 2017 00:38 UTC

Return-Path: <martin.thomson@gmail.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 935C6129559 for <tls@ietfa.amsl.com>; Mon, 6 Mar 2017 16:38:18 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level:
X-Spam-Status: No, score=-2.699 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, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=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 uQbBB34vhdXU for <tls@ietfa.amsl.com>; Mon, 6 Mar 2017 16:38:16 -0800 (PST)
Received: from mail-qk0-x232.google.com (mail-qk0-x232.google.com [IPv6:2607:f8b0:400d:c09::232]) (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 ADCD112941C for <TLS@ietf.org>; Mon, 6 Mar 2017 16:38:16 -0800 (PST)
Received: by mail-qk0-x232.google.com with SMTP id 1so183350688qkl.3 for <TLS@ietf.org>; Mon, 06 Mar 2017 16:38:16 -0800 (PST)
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=OlI7x6xZ++JeCO4vMG5G0Dy57IuVXqTcCtRNiJLQY8c=; b=DePz2yvxAJDTdWPccYvDd0nrB8uEX/rxjtPpTDvETcqPjDUUWYm1ZRHBzsiPGaIxXy Srve7SGKhSzvhefdjUKRYme0peAhqctOIaTzvqWxb9NRynF6i4kIva685TzPx+Du0hIB /AdlbSzmbZE65eitTatX0+klajoNL2Wf++bEcRIzfKpvWtzrBaphOK0hP1YaTtb2+Q1F 7knfr0ty74ihMtYa6lqRWBim18audqrBiCFjI0DDUErvn2yvyHfvpsgfcwYP6wHV3aED VZ9tI2oRkrbUngh/S/KY/ae6nVNF6TN5nlG9xcqTYxCYDuuwdJcwexNFdQFyg+e3+F89 Sd4A==
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=OlI7x6xZ++JeCO4vMG5G0Dy57IuVXqTcCtRNiJLQY8c=; b=eMj8TKL87CB3ppTvkk6M5JweHqzr3L0eeb8WdjNZk2YSk4q/2DCuZhPaaWl7iG35qE K3SFRVuIlyvtsvaQSg66ne8vqWfYRmI05gp8fHyVXDmRTHWgHNPyJuAl1VNWA/d0INT1 5BAhRtKNNcpSj0weIzEyKxBgY5HzrJxqiHoYwAjaRn3R0q3z49YMy7PYIbTl773nRUCF 4QsaPiA2p6vDY5kGgBP50Bh6wP5DdXwOj9ScILyBR96IISvJWGElHgh8Nj9dYzGENpK/ txaehUY6szrS0ZQiAHQFDog6HAk7zkVUFiT4SMGjUXRK3uzTFrimilhw+ZReClBE0+5g AcEw==
X-Gm-Message-State: AMke39mE/EqEUAmmt8BKRDqDrTXHJjn0knozl2AUOTyU/zD3KzH4UdCf70KSvoVENIT82pVDbuJ/kwc4ZYaM2Q==
X-Received: by 10.55.27.219 with SMTP id m88mr16960720qkh.147.1488847095791; Mon, 06 Mar 2017 16:38:15 -0800 (PST)
MIME-Version: 1.0
Received: by 10.140.19.112 with HTTP; Mon, 6 Mar 2017 16:38:15 -0800 (PST)
In-Reply-To: <CAAZdMaeXxA=UC5afPfi-U_zzJYtVVLZtkPvP2hAZmqpqzj5DTw@mail.gmail.com>
References: <CAAZdMacAcSUL4sqLPA1E9-z_VaUSd1P5PpPryO+XQso0eUtThw@mail.gmail.com> <CABkgnnU54SeYDBL=YBRQn0ZThk=C59Rztvr2zkUCLSSv2cKTDg@mail.gmail.com> <CAAZdMaf9n_37soxdJ9ACFFke=iXyux82QEVnr5XgmS2bs2FTYA@mail.gmail.com> <DDF306CD-EFC5-4E24-8ADE-64C432CEEAE4@cloudflare.com> <CAAZdMaeXxA=UC5afPfi-U_zzJYtVVLZtkPvP2hAZmqpqzj5DTw@mail.gmail.com>
From: Martin Thomson <martin.thomson@gmail.com>
Date: Tue, 7 Mar 2017 11:38:15 +1100
Message-ID: <CABkgnnWp97aT0zN5WjSQBydFra_kWLsZG0BckS8qeRBXUFpvYw@mail.gmail.com>
To: Victor Vasiliev <vasilvv@google.com>
Content-Type: text/plain; charset=UTF-8
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/6YWGQcVNgHCDHvD71v7Phbw56-M>
Cc: "tls@ietf.org" <TLS@ietf.org>
Subject: Re: [TLS] Certificate compression draft
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tls>, <mailto:tls-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tls/>
List-Post: <mailto:tls@ietf.org>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 07 Mar 2017 00:38:18 -0000

Seems like you might get some traction with adding www. .com, some DN
fields (CN=, O=, C=), common OIDs, with some OIDs attached to values
(like key usage and signature algorithm).  Most of that is relatively
short though.

On 7 March 2017 at 11:15, Victor Vasiliev <vasilvv@google.com> wrote:
> Hi Vlad,
>
> This is still an open issue:
> https://github.com/ghedo/tls-certificate-compression/issues/2
>
> The problem here is creating a dictionary that is both neutral with respect
> to
> the certificate's issuing authority, and actually has a noticeable effect.
> So
> far my personal attempts at making such a dictionary have not been very
> successful, but this might change.  Even if we get a dictionary, I do not
> expect the effect to be large compared to the effect of just compressing the
> chain in the first place.
>
>   -- Victor.
>
> On Mon, Mar 6, 2017 at 6:32 PM, Vlad Krasnov <vlad@cloudflare.com> wrote:
>>
>> Hi Victor,
>>
>> Have you considered creating a common dictionary, similarly to what SPDY
>> did for header compression?
>>
>> Cheers,
>> Vlad
>>
>>
>> On Mar 6, 2017, at 3:23 PM, Victor Vasiliev <vasilvv@google.com> wrote:
>>
>> Hi Martin,
>>
>> I've measured the effect of compression on a corpus of popular website
>> certificate chains I had lying around (Alexa Top 100k from a few years
>> ago),
>> and the effect seems to be about -30% of size at the median and -48% at
>> 95th
>> percentile (with Brotli, subtract 3-5% for zlib).
>>
>> I think the most dramatic effect from the compression is observed for the
>> certificates with a lot of SNI values, which is not uncommon.
>>
>>   -- Victor.
>>
>> On Mon, Mar 6, 2017 at 6:06 PM, Martin Thomson <martin.thomson@gmail.com>
>> wrote:
>>>
>>> Hi Victor,
>>>
>>> Do you have any evidence to suggest that this reduces size in any
>>> meaningful way?  Certificates tend to include both repetitious values
>>> (OIDs), and non-repetitious values (keys).
>>>
>>> On 7 March 2017 at 09:58, Victor Vasiliev <vasilvv@google.com> wrote:
>>> > Certificate compression has been discussed on this list briefly before,
>>> > and
>>> > there was some interest in at least considering a draft for it.  The
>>> > draft
>>> > now
>>> > exists (co-authored by Alessandro and myself), and it can be found at:
>>> >
>>> >
>>> > https://datatracker.ietf.org/doc/draft-ghedini-tls-certificate-compression/
>>> >   [ GitHub repo: https://github.com/ghedo/tls-certificate-compression ]
>>> >
>>> > The proposed scheme allows a client and a server to negotiate a
>>> > compression
>>> > algorithm for the server certificate message.  The scheme is purely
>>> > opt-in
>>> > on
>>> > both sides.  The current version of the draft defines zlib and Brotli
>>> > compression, both of which are well-specified formats with an existing
>>> > deployment experience.
>>> >
>>> > There are multiple motivations to compress certificates.  The first one
>>> > is
>>> > that
>>> > the smaller they are, the faster they arrive (both due to the transfer
>>> > time
>>> > and
>>> > a decreased chance of packet loss).
>>> >
>>> > The second, and more interesting one, is that having small certificates
>>> > is
>>> > important for QUIC in order to achieve 1-RTT handshakes while limiting
>>> > the
>>> > opportunities for amplification attacks.  Currently, TLS 1.3 over TCP
>>> > without
>>> > client auth looks like this:
>>> >
>>> >   Round trip 1: client sends SYN, server sends SYN ACK
>>> >     Here, the server provides its own random value which client will
>>> >     have to echo in the future.
>>> >   Round trip 2: client sends ACK, ClientHello, server sends
>>> > ServerHello...Finished
>>> >     Here, ACK confirms to server that the client can receive packets
>>> > and is
>>> > not
>>> >     just spoofing its source address.  Server can send the entire
>>> > ServerHello to
>>> >     Finished flight.
>>> >
>>> > In QUIC, we are trying to merge those two rounds into one.  The
>>> > problem,
>>> > however, is that the ClientHello is one packet, and
>>> > ServerHello...Finished
>>> > can
>>> > span multiple packets, meaning that this could be used as an
>>> > amplification
>>> > attack vector since the client's address is not yet authenticated at
>>> > this
>>> > point.
>>> > In order to address this, the server has to limit the number of packets
>>> > it
>>> > sends
>>> > during the first flight (i.e. ServerHello...Finished flight).  Since
>>> > certificates make up the majority of data in that flight, making them
>>> > smaller
>>> > can push them under the limit and save a round-trip.
>>> >
>>> > Cheers,
>>> >   Victor.
>>> >
>>> > _______________________________________________
>>> > TLS mailing list
>>> > TLS@ietf.org
>>> > https://www.ietf.org/mailman/listinfo/tls
>>> >
>>
>>
>> _______________________________________________
>> TLS mailing list
>> TLS@ietf.org
>> https://www.ietf.org/mailman/listinfo/tls
>>
>>
>