Re: [Acme] Predictability of http-01 challenge response

Niklas Keller <> Tue, 26 January 2016 10:58 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 758BF1ACEC7 for <>; Tue, 26 Jan 2016 02:58:55 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.027
X-Spam-Status: No, score=-1.027 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, HELO_EQ_DE=0.35, HTML_MESSAGE=0.001] autolearn=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id Vj7WQQ7j5eVE for <>; Tue, 26 Jan 2016 02:58:53 -0800 (PST)
Received: from ( [IPv6:2a01:238:20a:202:5300::2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 4C23F1ACECD for <>; Tue, 26 Jan 2016 02:58:52 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1453805930; l=4687; s=domk;; h=Content-Type:Cc:To:From:Subject:Date:References:In-Reply-To: MIME-Version; bh=PWXuCcMrH8OOGYuaZ2KLzp7AqRTh1aeeHBXSEqw1ofQ=; b=PnpTNgMp/6vYen4DWr75JjpQoqGPMSfBAXMC4/hZuvgzU6KIOs9KPt8Qao3Kb+9Tcpv 88qVvP8J0bjbXyUGZuggUmT1yHt1g9Z3qPe3tboms9Q5JBui95PwX6z3WkOuk56DM03EE rsEIgArBqxXKtGuYBWO2rZnu5pJvIajceFU=
X-RZG-AUTH: :IWkkfkWkbvHsXQGmRYmUo9mls2vWuiu+7SLGvomb4bl9EfHtO3c6
Received: from ([]) by (RZmta 37.15 AUTH) with ESMTPSA id z068ecs0QAwoTQf (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA (curve secp384r1 with 384 ECDH bits, eq. 7680 bits RSA)) (Client did not present a certificate) for <>; Tue, 26 Jan 2016 11:58:50 +0100 (CET)
Received: by with SMTP id n5so123710124wmn.0 for <>; Tue, 26 Jan 2016 02:58:50 -0800 (PST)
X-Gm-Message-State: AG10YOQ6Za/lc/D2xmqul7cQS09J8PiZtsUiD1/fCL1a3QOfjBOoOTMEuaYju/EsqVmvT2xq4BUR6hA6BKOYTA==
MIME-Version: 1.0
X-Received: by with SMTP id f90mr22521578wmi.60.1453805930079; Tue, 26 Jan 2016 02:58:50 -0800 (PST)
Received: by with HTTP; Tue, 26 Jan 2016 02:58:50 -0800 (PST)
In-Reply-To: <20160126014833.GA16635@andover>
References: <20160126014833.GA16635@andover>
Date: Tue, 26 Jan 2016 11:58:50 +0100
X-Gmail-Original-Message-ID: <>
Message-ID: <>
From: Niklas Keller <>
To: Hugo Landau <>
Content-Type: multipart/alternative; boundary=001a1147bd3208fff1052a3a924b
Archived-At: <>
Subject: Re: [Acme] Predictability of http-01 challenge response
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Automated Certificate Management Environment <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 26 Jan 2016 10:58:55 -0000

2016-01-26 2:48 GMT+01:00 Hugo Landau <>et>:

> Someone pointed out to me that the http-01 challenge can be satisfied
> using no knowledge other than the account fingerprint.
> For example, as an nginx config:
>   location ~ "^/\.well-known/acme-challenge/(-_a-zA-Z0-9]+)$" {
>     default_type text/plain;
>     return 200 "$1.ACCOUNT_THUMBPRINT";
>   }
> Was this an intended design feature of the http-01 challenge?
> Perhaps more pertinently I should ask, is this property desirable?
> This reduces the http-01 challenge to what is essentially an account key
> nomination, alebit with a random token (probably needed to satisfy CA/B
> forum requirements). I've previously suggested that e.g. the DNS
> challenge be changed similarly. In that regard it's quite convenient.
> I'm just mildly worried that this property doesn't seem to have been
> particularly noticed or discussed, in terms of its security properties.
> Musing a little, if this property was deemed desirable, the possibility
> of multiple account keys could be better accommodated by including say,
> a hash of the account key thumbprint in the URL. Reasoning: The response
> value shouldn't match the request value to guard against webservers
> which for some reason echo everything they see. A hash of an account key
> thumbprint is sufficient to identify an account amongst a list of known
> accounts, for the purposes of determining which account an ACME server
> is soliciting an endorsement for.
> OTOH if this property was deemed undesirable the token in the URL could
> be hashed; the response would then prove the server knew the token.

The challenge is to provide the payload on a specific host, not to know
some random token.

If a server knows the account finger print, it can solve challenges made to
it, but that doesn't help to get certificates for other hostnames.

Niklas Keller