Re: Quic: the elephant in the room

Andrew McConachie <> Mon, 12 April 2021 10:36 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 3AB703A1785 for <>; Mon, 12 Apr 2021 03:36:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id Mg_RgZ1v9azB for <>; Mon, 12 Apr 2021 03:36:48 -0700 (PDT)
Received: from ( [IPv6:2607:f8b0:4864:20::132]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 8F7163A1784 for <>; Mon, 12 Apr 2021 03:36:48 -0700 (PDT)
Received: by with SMTP id b17so10558678ilh.6 for <>; Mon, 12 Apr 2021 03:36:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=xTzHi51IxWu8qqdrdHjpA24SSGf9xaSQ2IQohBlaJb4=; b=NcCACF0uzNvs3hgeXW/y6Gg1jil8pbJvouedKJ25tmS6Xqnd6qzbrGBaby6H4xxAt5 AmuOXKamb5WWnPNeccydntipnIYx8nmSAQJfE5BMBqz/VdAnT5wQT7tuHNc+hpbMN/Ae pMvs1mPzin6ValRZSsLsDaqNxBauu1CQNYUCHNtaK9KM/cfGGSXdYjhv38h34Wt3D9h/ 8ntrqv4hAnzjHQZJJnFHcq/ksT/Gy0Xf/cyvyS5FifkFZBaqvqCQouSVi3+mj+3CcjwS je/AE/ay/bFezXKVy2flJ65lh3ej/qDE/uL1fg78jkfLmQsKSZRTWxbgtWNBBX7TORSc 2Wug==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=xTzHi51IxWu8qqdrdHjpA24SSGf9xaSQ2IQohBlaJb4=; b=lrOA0C8TS6cXS+4NEhPCkZjlT1Q8BymAGcxtqHCYTpzpZrysNbc+WQ3rULyC46gxe6 kUFWYUz7U4zNwTerMCfP3aoIhTIPiI/e7yM4Bxrqk3ZXuyAv5zXbwp0AkUEVRmBnltmm T+xMHYEknPO1fle6+ID/6nirUEYOotYOmun4Ff+CbwfVdlF2MZC2aABngavQyputlpBT n0FEFmlUykbcy0Mwxuee+D5Qct5UgTYL0ojSy40eojE9wsN7WkNOF7IRZAR6J/ECKEg5 3xYcQUNVw+vr90Ga/QAcY8JRn9eZh6Fb5GZFPa/F3XDFKz0JslDYPMD3g/2Ew+I5FSXk joWA==
X-Gm-Message-State: AOAM533WH95vJnsoRjmSPa887KmazAgA1OeFaisjPu0+2ff4HlOeMAOh v9TLjr66/TDh0UJVm1eg/XhBPQ==
X-Google-Smtp-Source: ABdhPJxn8+gacpr5xQdzbl21u/UHn8s+tNB8MINyX7LWHGa1KMD8/xKtkJB+6ScrPbBGtFGSXXnAhw==
X-Received: by 2002:a92:c566:: with SMTP id b6mr21371402ilj.162.1618223807184; Mon, 12 Apr 2021 03:36:47 -0700 (PDT)
Received: from [] ([2a02:a212:9285:29f0:ac08:d99:63c3:56f5]) by with ESMTPSA id g6sm3822996ilr.30.2021. (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Apr 2021 03:36:46 -0700 (PDT)
From: "Andrew McConachie" <>
To: "Michael Thomas" <>
Cc: "Salz, Rich" <>, "Phillip Hallam-Baker" <>, "IETF Discussion Mailing List" <>
Subject: Re: Quic: the elephant in the room
Date: Mon, 12 Apr 2021 12:36:43 +0200
X-Mailer: MailMate (1.13.2r5673)
Message-ID: <>
In-Reply-To: <>
References: <> <> <> <> <>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 8bit
Archived-At: <>
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: IETF-Discussion <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Mon, 12 Apr 2021 10:36:53 -0000

On 11 Apr 2021, at 20:13, Michael Thomas wrote:

> On 4/11/21 10:23 AM, Salz, Rich wrote:
>>   * I don't see why [DNS timeouts] it can't be long lived, but even
>>     normal TTL's would get amortized over a lot of connections. Right
>>     now with certs it is a 5 message affair which cannot get better.
>>     But that is why one of $BROWSERVENDORS doing an experiment would
>>     be helpful.
>> There are use-cases where a five-second DNS TTL is important.  And 
>> they’re not amortized over multiple connections from **one** user, 
>> but rather affect **many** users.  Imagine an e-commerce site 
>> connected to two CDN’s who needs to switch.
> The worst case is that it devolves into what we already have: 5 
> messages assuming NS records are cached normally.
> Another approach using current infrastructure would be for the client 
> to cache the certs and hand the server cert the fingerprint(s) in the 
> ClientHello and the server sends down the chosen cert's fingerprint 
> instead of the cert which could get it back to 3 messages too. That 
> would require hacking on TLS though (assuming that somebody hasn't 
> already thought of this). That has the upside is that it's the server 
> chooses whether it wants to use the cached version or not too.

For the past 2 years or so I’ve been performing HTTPS DANE validation 
on all TLS 1.1 and 1.2 connections egressing my house. I use custom code 
written for OpenWRT that installs ACLs to block TLS connections that 
fail DANE validation.

More info here.

The short story is that it works pretty well. I usually forget I have it 
running, and on the off chance I hit a website with invalid TLSA RRs 
that gets blocked it usually takes me a few minutes to try and figure 
out why the website isn’t loading.

One thing I’ve learned from this experiment is that, atleast in my 
situation, DNS is always faster than any TLS setup time that matters. 
The web is horrendously slow, so even if TLS setup completes my OpenWRT 
box will kill the TLS connection long before any real data gets 
transferred. These things happen asynchronously, and I have Unbound 
running directly on the OpenWRT box, so DNS always wins. But even if the 
TLS handshake were to complete fully and only then get killed by OpenWRT 
it would be the same outcome.

When looking at how one might implement DANE for HTTPS/TLS I don’t see 
any reason to handle these things sequentially. You don’t have to 
change TLS you just have to do things asynchronously. Query for TLSA RRs 
at the same time as sending the TLS ClientHello, and kill the connection 
setup when/if DANE validation fails. On the off chance that the DNS 
actually takes longer than TLS, maybe delay sending data via TLS until 
DNS responds. But I bet this almost never happens.

If you really don’t want any slow down from DANE just setup TLS 
normally and only kill it once DANE validation fails. The web is so slow 
that the chances something significant will happen prior to the client 
fetching the TLSA RR and performing DANE validation are practically nil.