[curves] Curves for pairings
zooko at leastauthority.com
Sun Sep 25 16:58:05 PDT 2016
Thank you for doing this research and posting, trevp!
I'm glad to hear this opinion from Mike Scott that these attacks on BN
curves are unlikely to get a lot better, because in the Zcash project,
which is the new version of the Zerocash protocol ¹, we decided that
we would just stick with BN128 for now rather than try to hastily find
a new curve. Our deliberations about that are visible here: ².
What it boils down to is:
a) We believed (uncertainly) that BN128 still has at least 96 bits of
security, taking this attack into account. I'm glad of this email
thread to help bring to our attention any reasons to think otherwise!
b) Pairing performance is critical for us. A curve like Michael Scott
suggested that took 2.5 times as long for a pairing operation would
almost certainly blow our performance budget and we'd have to do some
serious re-engineering to get it back.
² https://github.com/zcash/zcash/issues/714# understand the concrete
security level of the BN_128 curve in libsnark
On Sat, Sep 24, 2016 at 3:00 PM, Michael Scott <mike.scott at miracl.com> wrote:
> Hello Trevor,
> Great that you raise these issues.
> In my opinion the new security estimates are reliable. There was always a
> suspicion (I recall discussing it over a decade ago) that the DL problem in
> these fields might/must be easier due to the special form of the modulus
> used in pairing-friendly constructions like BN curves. However for what its
> worth my gut tells me that further improvements may be difficult.
> Unfortunately these developments will set back efforts at standardization.
> Clearly to achieve security levels equivalent to AES-128/192/256 will
> require larger fields and/or larger embedding degrees.
> I would tentatively suggest that BN curves (which appeared to be such a
> perfect fit for AES-128 security), may no longer be so useful. Which is a
> bit tragic, as they were so nice! And we will have to live with curves with
> a \rho value greater than 1.
> I suspect that BLS curves with k=12 must now be a better fit (but maybe not
> the best) for AES-128. Here we are experimenting with a 455-bit BLS curve,
> derived from the parameter x=0x10000020000080000800. In some experiments our
> code is 2.5 times slower to calculate a pairing on this curve compared with
> a 256-bit BN curve.
> However there is a lot of work to be done now to determine the optimal curve
> to use for each desired level of security.
> Mike Scott
> On Fri, Sep 23, 2016 at 7:15 PM, Trevor Perrin <trevp at trevp.net> wrote:
>> Hi all,
>> Last January we discussed elliptic curves for pairing-based crypto
>> ("Curves and code for Identity-based Encryption" ).
>> People recommended 256-bit Barreto-Naehrig ("BN") curves  for ~128
>> bits security, and code such as:
>> - RELIC from Diego Aranha [3,4]
>> - DCLXVI from Naehrig et al 
>> - Golang's version, from Adam Langley 
>> - MIRACL from Michael Scott 
>> - herumi/ate-pairing from Shigeo and Tadanori 
>> Mike Hamburg's comment was insightful :
>> BN curves only really shine at the ~WF128 level, where a 256-bit curve
>> matches a 256*12-bit extension field discrete log problem (EFDLP). At
>> higher WFs (or if you’re worried about improvements in EFDLP), you
>> need a higher embedding degree so that the EFDLP will be harder, or
>> else a very large base field.
>> It also seemed like 256-bit BN curves were becoming popular, at least
>> in experimental systems like:
>> - Pond , using BBS signatures to prevent message spam
>> - SNARKs  as used by Zerocash , using pairings for
>> zero-knowledge proofs of correct program execution
>> - Apache Milagro [13,14], which proposes ID-based crypto instead of
>> Certificate Authorities
>> - "Puncturable encryption" [15,16], which proposes Attribute-Based
>> Encryption and Hierarchical IBE for message forward secrecy
>> - (maybe?) Intel SGX, which uses "EPID" group signatures for remote
>> attestation [17,18]
>> Unfortunately, "improvements in EFDLP" (as Mike called it) have
>> seemingly happened, in the last several months.
>> Kim and Barbulescu's "Extended Tower Number Field Sieve"  improves
>> the efficiency of calculating "finite field" (i.e. NOT elliptic curve)
>> discrete logs mod p^n, where p is large-ish and n is certain values,
>> like 6 or 12.
>> There was a great writeup by Aurore Guillevic on the ellipticnews blog
>> , and in a recent presentation . I'll try to boil it down
>> even more:
>> The attack is relevant to pairing-friendly curves (like BN) that
>> support a "pairing" operation. A pairing maps points on the elliptic
>> curve to values in some "extension field". Security depends on both
>> the EC-DLP for the elliptic curve, and also DLP on the extension
>> 256-bit BN curves have a field prime p of 256 bits and an "embedding
>> degree" of 12, so the extension field is mod p^12, where p^12 has 3072
>> bits. The hope was that 256-bit EC-DLP and 3072-bit DLP would both
>> have security ~128 bits, so this would be nicely matched.
>> However, Kim and Barbulescu showed that DLP where the modulus is a
>> 3072-bit (prime^12) is easier than DLP for a 3072-bit prime. How much
>> easier isn't clear, though by a "crude and naive estimation" they
>> suggest increasing the size of relevant curves by a third (Section 6).
>> Mehdi Tibouchi has a similar estimate : "after this attack,
>> 256-bit Barreto-Naehrig curves no longer offer 128 bits of security,
>> but perhaps closer to 96 or so".
>> Which raises questions:
>> * How reliable are the security estimates?
>> * Is this attack likely to be improved?
>> * Can the attacks benefit from precalculation (like Logjam ), or
>> does the work have to be repeated for each discrete log?
>> * What curves should new systems be based on?
>> I believe Voltage was using supersingular curves with embedding degree
>> 2 (over a prime field) for Identity-Based Encryption . GCHQ has
>> been promoting the "SAKKE" IBE scheme for various uses [25,26,27], and
>> I believe that uses similar curves . However, IIUC, an embedding
>> degree of 2 means that ~128 bits of security requires a ~1536 bit
>> elliptic curve (to get a 3072 bit extension field). That seems pretty
>> slow, e.g. if a BN pairing is an order-of-magnitude slower than a
>> "regular" elliptic curve scalarmult, this seems like it would be
>> another order of magnitude slower.
>> Are there better options, for ~128 bits security?
>>  https://moderncrypto.org/mail-archive/curves/2015/#402
>>  https://eprint.iacr.org/2005/133
>>  https://github.com/relic-toolkit
>>  https://eprint.iacr.org/2013/722
>>  http://polycephaly.org/projects/dclxvi/
>>  https://godoc.org/golang.org/x/crypto/bn256
>>  https://github.com/miracl/MIRACL/
>>  https://github.com/herumi/ate-pairing
>>  https://moderncrypto.org/mail-archive/curves/2015/000405.html
>>  https://github.com/agl/pond
>>  https://eprint.iacr.org/2013/507
>>  http://zerocash-project.org/media/pdf/zerocash-oakland2014.pdf
>>  https://milagro.apache.org/
>>  https://github.com/imichaelmiers/libforwardsec/
>>  https://eprint.iacr.org/2009/095
>>  https://eprint.iacr.org/2015/1027
>>  https://www.lorentzcenter.nl/lc/web/2016/834/presentations/Guillevic
>>  https://weakdh.org/
>>  https://tools.ietf.org/html/rfc5091
>>  https://tools.ietf.org/html/draft-barnes-mikey-sakke-mcptt-00
>>  http://www.securechorus.com/
>>  https://tools.ietf.org/html/rfc6508
>> Curves mailing list
>> Curves at moderncrypto.org
> Curves mailing list
> Curves at moderncrypto.org
Founder and CEO
https://LeastAuthority.com — Freedom matters.
More information about the Curves