Re: [Cfrg] [CFRG] Safecurves v Brainpool / Rigid v Pseudorandom

Michael Hamburg <> Tue, 14 January 2014 00:56 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id BB5CA1AE1BB for <>; Mon, 13 Jan 2014 16:56:58 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: 1.557
X-Spam-Level: *
X-Spam-Status: No, score=1.557 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FH_HOST_EQ_D_D_D_D=0.765, FH_HOST_EQ_D_D_D_DB=0.888, HELO_MISMATCH_ORG=0.611, HOST_MISMATCH_NET=0.311, HTML_MESSAGE=0.001, RDNS_DYNAMIC=0.982, SPF_PASS=-0.001] autolearn=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id xiqJ07Lh4xaU for <>; Mon, 13 Jan 2014 16:56:56 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id A8D371AE01F for <>; Mon, 13 Jan 2014 16:56:56 -0800 (PST)
Received: from [] ( []) by (Postfix) with ESMTPSA id 54E353AA03; Mon, 13 Jan 2014 16:55:07 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;; s=sldo; t=1389660907; bh=U+kdl8GwVRwqnInk60FyRfJlzV4klfgfOU3eQe12yGk=; h=Subject:From:In-Reply-To:Date:Cc:References:To:From; b=I9j9Ypa+IGbG3g9qIb5a5cS2BBoJNvL++nCLI4M3lydw+7Dj3FIVyeEPkUWCsm/kG rBkem+8KJ7uOB7UMIHu+n6jHOK6gn3H7DGWGIbL8rM7t67Sh0KwAIE3hwfEakCAird my354mLHykOPS1L7WOoIiytyszzsjt0JFWliWOHQ=
Content-Type: multipart/alternative; boundary="Apple-Mail=_687856FA-F007-425C-8625-AFB4D24E6C1C"
Mime-Version: 1.0 (Mac OS X Mail 7.1 \(1827\))
From: Michael Hamburg <>
In-Reply-To: <>
Date: Mon, 13 Jan 2014 16:56:41 -0800
Message-Id: <>
References: <> <>
To: Watson Ladd <>
X-Mailer: Apple Mail (2.1827)
Cc: Dan Brown <>, "" <>
Subject: Re: [Cfrg] [CFRG] Safecurves v Brainpool / Rigid v Pseudorandom
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Crypto Forum Research Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 14 Jan 2014 00:56:58 -0000

On Jan 13, 2014, at 4:36 PM, Watson Ladd <> wrote:

> On Mon, Jan 13, 2014 at 3:07 PM, Dan Brown <> wrote:
>> Watson,
>> I had requested to keep this thread focused, specifically in the impact pseudorandom v rigid on security, but you declined to engage. Is it that you think this security issue unimportant, even though you concede with my narrow point?
> I think it's completely bogus. People aren't primarily interested in
> the Chicago curves because of unknown attacks, but NSA cookery over
> NIST+the efficiency and security benefits they offer.

Speak for yourself.  I’m interested in a standard which has a better chance of resisting unknown attacks, and I’m not as concerned about NSA cookery as you are.

I agree that random (or pseudorandom) curves are preferable to rigid ones, so long as they are generated with the rest of the Safecurves properties.  The problem is, they are much harder to generate.  Maybe shake up some dice or Boggle boards at the CRYPTO rump session?  Or make a Bitcoin donation to EFF annotated with the hash of your software, and use the hash of its block?  Dunno.  The Brainpool method has too many degrees of freedom to convince everyone.

Either way, I feel that the highest practical ECC security level would come from a verifiably pseudorandom curve over a verifiably pseudorandom field.  This is because it will take either a significant mathematical breakthrough or a quantum computer to break existing 120s-ish-bit-secure curves such as Curve25519, anytime in the foreseeable future.  If it’s a quantum computer or a breakthrough that kills all curves, we’re screwed.

So that leaves a breakthrough which kills only curves with special properties, or only improves speed somewhat (eg, p^1/4 instead of p^1/2).  Given that, should we choose curves with known special properties that aren’t required for security?  (Small d, special fields?)  Or should we try to be as random as possible, constrained only by properties that have a good security argument?

The downsides are difficulty of generation, and speed: a random field would be at least twice as slow.  So if I had to take 3 next-gen curves to a desert island, I’d go for:

* Ed25519.  It’s deployed, it’s implemented, it’s significantly faster and easier to make secure than NIST P256.  There are other options, but this one works.  Once again, probably nobody is going to break this with a rho attack in the next couple of decades.

* Something with a bigger fast field.  Ed448-Goldilocks is my entry for that, but the others are also fine.  A pseudorandom $d$ value would probably improve things, if you could get confidence that it’s not rigged.  Whichever way this goes, ops on such a curve will take about 4x as long as Ed25519 in software.

* A pseudorandom curve over a pseudorandom 512-bit field.  Operations on such a curve will probably take at least 12x as long as Ed25519, and at least 16x if it’s a short Weierstrass curve.

In any case, if we list any pseudorandom curves, they should have most of the Safecurves properties except rigidity.  Some of the properties really aren’t necessary (eg, Elligator), and basically end up just requiring Edwards curves.  There’s a decent case that Edwards is a better shape than short Weierstrass anyway though, and in that case we should go for all the properties except rigidity.

— Mike