All Projects → daira → tweedle

daira / tweedle

Licence: MIT License
Generator and supporting evidence for security of the Tweedledum/Tweedledee pair of elliptic curves suitable for Halo

Programming Languages

Sage
50 projects
python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to tweedle

jubjub
Supporting evidence for security of the Jubjub curve to be used in Zcash
Stars: ✭ 13 (-18.75%)
Mutual labels:  mathematics, elliptic-curves, sagemath
Gurvy
gurvy implements Elliptic Curve Cryptography (+Pairing) for BLS12-381, BLS12-377, BW6-761, and BN256. Originally developed (and used) by gnark
Stars: ✭ 66 (+312.5%)
Mutual labels:  cryptography, elliptic-curves
Constantine
Constant time pairing-based or elliptic curve based cryptography and digital signatures
Stars: ✭ 61 (+281.25%)
Mutual labels:  cryptography, elliptic-curves
Javascript
A repository for All algorithms implemented in Javascript (for educational purposes only)
Stars: ✭ 16,117 (+100631.25%)
Mutual labels:  cryptography, mathematics
Curve25519 Dalek
A pure-Rust implementation of group operations on Ristretto and Curve25519
Stars: ✭ 477 (+2881.25%)
Mutual labels:  cryptography, elliptic-curves
X25519
Public key cryptography library for Ruby providing the X25519 Diffie-Hellman function
Stars: ✭ 37 (+131.25%)
Mutual labels:  cryptography, elliptic-curves
Computer Science Resources
A list of resources in different fields of Computer Science (multiple languages)
Stars: ✭ 1,316 (+8125%)
Mutual labels:  cryptography, mathematics
Bitcoin Cryptography Library
Nayuki's implementation of cryptographic primitives used in Bitcoin.
Stars: ✭ 81 (+406.25%)
Mutual labels:  cryptography, elliptic-curves
Useful Crypto Resources
A place for useful crypto-related resources plus some of my fav stuff
Stars: ✭ 131 (+718.75%)
Mutual labels:  cryptography, elliptic-curves
Curv
Rust language general purpose elliptic curve cryptography.
Stars: ✭ 138 (+762.5%)
Mutual labels:  cryptography, elliptic-curves
Practical Cryptography For Developers Book
Practical Cryptography for Developers: Hashes, MAC, Key Derivation, DHKE, Symmetric and Asymmetric Ciphers, Public Key Cryptosystems, RSA, Elliptic Curves, ECC, secp256k1, ECDH, ECIES, Digital Signatures, ECDSA, EdDSA
Stars: ✭ 2,400 (+14900%)
Mutual labels:  cryptography, elliptic-curves
Bulletproofs
Bulletproofs are short non-interactive zero-knowledge proofs that require no trusted setup
Stars: ✭ 458 (+2762.5%)
Mutual labels:  cryptography, elliptic-curves
Wickr Crypto C
An implementation of the Wickr Secure Messaging Protocol in C
Stars: ✭ 279 (+1643.75%)
Mutual labels:  cryptography, elliptic-curves
Swift Crypto
Open-source implementation of a substantial portion of the API of Apple CryptoKit suitable for use on Linux platforms.
Stars: ✭ 1,005 (+6181.25%)
Mutual labels:  cryptography, elliptic-curves
Gcp Iot Core Examples
Google Cloud Platform IOT Core Examples
Stars: ✭ 103 (+543.75%)
Mutual labels:  cryptography, elliptic-curves
Fastecdsa
Python library for fast elliptic curve crypto
Stars: ✭ 158 (+887.5%)
Mutual labels:  cryptography, elliptic-curves
JSage
Something like Sage, but for the WebAssembly and JavaScript world.
Stars: ✭ 23 (+43.75%)
Mutual labels:  mathematics, sagemath
secp256k1-ml
Elliptic curve library secp256k1 wrapper for Ocaml
Stars: ✭ 18 (+12.5%)
Mutual labels:  elliptic-curves
Probability Theory
A quick introduction to all most important concepts of Probability Theory, only freshman level of mathematics needed as prerequisite.
Stars: ✭ 25 (+56.25%)
Mutual labels:  mathematics
savva3
Сайт Алексея Савватеева
Stars: ✭ 29 (+81.25%)
Mutual labels:  mathematics

Tweedledum/Tweedledee supporting evidence

This repository contains supporting evidence that the amicable pair of prime-order curves:

  • Ep : y^2 = x^3 + 5 over GF(p) of order q, called Tweedledum;
  • Eq : y^2 = x^3 + 5 over GF(q) of order p, called Tweedledee;

with

  • p = 2^254 + 4707489545178046908921067385359695873
  • q = 2^254 + 4707489544292117082687961190295928833

satisfy some of the SafeCurves criteria.

The criteria that are not satisfied are, in summary:

  • large-magnitude CM discriminant (both curves have CM discriminant of absolute value 3, as a consequence of how they were constructed);
  • completeness (complete formulae are possible, but not according to the Safe curves criterion);
  • ladder support (not possible for prime-order curves);
  • Elligator 2 support (indistinguishability is possible using Elligator Squared, but not using Elligator 2).

Tweedledum/Tweedledee is the first cycle output by sage amicable.sage --sequential --nearpowerof2 255 32.

(The --sequential option makes the output completely deterministic and so resolves ambiguity about which result is "first". For exploratory searches it is faster not to use --sequential.)

The cycle we call Tweedledum/Tweedledee has changed from the initial (September 2019) draft of the Halo paper.

Prerequisites:

  • apt-get install sagemath

Run sage verify.sage Ep and sage verify.sage Eq; or ./run.sh to run both and also print out the results.

amicable.sage also outputs isogenies (of degree up to ISOGENY_DEGREE_MAX) suitable for use with the "simplified SWU" method for hashing to an elliptic curve. This is based on code from Appendix A of Wahby and Boneh 2019. Note that simplified SWU is not necessarily the preferred method to hash to a given curve. In particular it probably is not for the Tweedle curves; they only have suitable isogenies of degree 23, which is rather large.

To check the correctness of the endomorphism optimization described in the Halo paper, run python3 injectivitylemma.py and python3 checksumsets.py. To also generate animations showing the minimum distances between multiples of ζ used in the proof, run ./animation.sh.

animation.sh has the following prerequisites:

  • apt-get install ffmpeg ffcvt
  • pip3 install bintrees Pillow

checksumsets.py on its own only requires the bintrees Python package.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].