[Acme] Client-controlled values

Jacob Hoffman-Andrews <jsha@eff.org> Wed, 07 January 2015 19:29 UTC

Return-Path: <jsha@eff.org>
X-Original-To: acme@ietfa.amsl.com
Delivered-To: acme@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 93D1A1A1A3C for <acme@ietfa.amsl.com>; Wed, 7 Jan 2015 11:29:19 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.011
X-Spam-Level:
X-Spam-Status: No, score=-7.011 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_HELO_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
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 5X8aRxz_5xB3 for <acme@ietfa.amsl.com>; Wed, 7 Jan 2015 11:29:17 -0800 (PST)
Received: from mail2.eff.org (mail2.eff.org [173.239.79.204]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 288A61A01AE for <acme@ietf.org>; Wed, 7 Jan 2015 11:29:17 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=eff.org; s=mail2; h=Content-Transfer-Encoding:Content-Type:Subject:To:MIME-Version:From:Date:Message-ID; bh=a0dezs/6MiN0j5tfFEGRqUXwrfV29YcvGYe8/V1T8yo=; b=RAfFVV+yfUY7Zz/xJrkW3U09wk0N+Ddzs/X6iC/vmkJ5eEE2XOouzKeYJB0uQcMPIwkUo7FdVIHXduIIMLCMO6/PBNroDoSg6HrToKkDGyTUQo7AgAIMlWtavPiZbki5ZZwHrhmzKNH5kWet2ZkSEukSBM1+Ab6MlfIIpId0IZw=;
Received: ; Wed, 07 Jan 2015 11:29:16 -0800
Message-ID: <54AD890A.1030004@eff.org>
Date: Wed, 07 Jan 2015 14:29:14 -0500
From: Jacob Hoffman-Andrews <jsha@eff.org>
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.3.0
MIME-Version: 1.0
To: acme@ietf.org
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 7bit
Archived-At: http://mailarchive.ietf.org/arch/msg/acme/ryMg9u_xHlW9O3Y_FDo2KpUBU2U
Subject: [Acme] Client-controlled values
X-BeenThere: acme@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Automated Certificate Management Environment <acme.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/acme>, <mailto:acme-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/acme/>
List-Post: <mailto:acme@ietf.org>
List-Help: <mailto:acme-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/acme>, <mailto:acme-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 07 Jan 2015 19:29:19 -0000

In the current version of the spec, for SimpleHTTPS Validation, the 
client can specify the path (under .well-known/acme-challenge) where the 
server should expect to find a copy of the token. The goal as I 
understand it is to allow a single client to manage multiple pending 
authorization requests without file collisions. However, I think this 
adds unnecessary complexity and risk.

Proposal: For the SimpleHTTPS challenge, the client should not provide a 
path. The server should always fetch 
.well-known/acme-challenge/<token>.txt, and should expect the contents 
to equal <token>.

For DVSNI and DNS challenges, the client provides a random string `s', 
to be hashed with the server's random string `r'. What sort of attack 
does this protect against? It seems unnecessarily risky to allow the 
client input into the hash, and leads to some issues like 
https://github.com/letsencrypt/acme-spec/issues/12.

Proposal: For the DVSNI and DNS challenges, the client should not 
provide a random string `s', but should directly sign the server's 
random string `r'.a