All Projects → defeo → Ss Isogeny Software

defeo / Ss Isogeny Software

Licence: gpl-3.0
Software for "Quantum-Resistant Cryptosystems from Supersingular Elliptic Curve Isogenies"

Programming Languages

python
139335 projects - #7 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Ss Isogeny Software

schnorr-nizk
Schnorr Protocol for Non-interactive Zero-Knowledge Proofs
Stars: ✭ 67 (-16.25%)
Mutual labels:  elliptic-curves
Bulletproofs
Bulletproofs are short non-interactive zero-knowledge proofs that require no trusted setup
Stars: ✭ 458 (+472.5%)
Mutual labels:  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 (+1156.25%)
Mutual labels:  elliptic-curves
2D-Elliptic-Mesh-Generator
2D orthogonal elliptic mesh generator which solves the Winslow partial differential equations
Stars: ✭ 36 (-55%)
Mutual labels:  elliptic-curves
Wickr Crypto C
An implementation of the Wickr Secure Messaging Protocol in C
Stars: ✭ 279 (+248.75%)
Mutual labels:  elliptic-curves
Ellipticcurvekeypair
Sign, verify, encrypt and decrypt using the Secure Enclave
Stars: ✭ 589 (+636.25%)
Mutual labels:  elliptic-curves
ed448
A golang implementation of Ed448-Goldilocks. This is a mirror of https://bugs.otr.im/otrv4/ed448
Stars: ✭ 36 (-55%)
Mutual labels:  elliptic-curves
Gurvy
gurvy implements Elliptic Curve Cryptography (+Pairing) for BLS12-381, BLS12-377, BW6-761, and BN256. Originally developed (and used) by gnark
Stars: ✭ 66 (-17.5%)
Mutual labels:  elliptic-curves
Kyber
Advanced crypto library for the Go language
Stars: ✭ 412 (+415%)
Mutual labels:  elliptic-curves
X25519
Public key cryptography library for Ruby providing the X25519 Diffie-Hellman function
Stars: ✭ 37 (-53.75%)
Mutual labels:  elliptic-curves
zax
NaCl-based Cryptographic Relay
Stars: ✭ 62 (-22.5%)
Mutual labels:  elliptic-curves
tweedle
Generator and supporting evidence for security of the Tweedledum/Tweedledee pair of elliptic curves suitable for Halo
Stars: ✭ 16 (-80%)
Mutual labels:  elliptic-curves
Opmsg
opmsg message encryption
Stars: ✭ 704 (+780%)
Mutual labels:  elliptic-curves
secp256k1-ml
Elliptic curve library secp256k1 wrapper for Ocaml
Stars: ✭ 18 (-77.5%)
Mutual labels:  elliptic-curves
Sigtool
Ed25519 signing, verification and encryption, decryption for arbitary files; like OpenBSD signifiy but with more functionality and written in Golang - only easier and simpler
Stars: ✭ 49 (-38.75%)
Mutual labels:  elliptic-curves
pairing
Optimised bilinear pairings over elliptic curves
Stars: ✭ 44 (-45%)
Mutual labels:  elliptic-curves
Curve25519 Dalek
A pure-Rust implementation of group operations on Ristretto and Curve25519
Stars: ✭ 477 (+496.25%)
Mutual labels:  elliptic-curves
Tweetnacl Js
Port of TweetNaCl cryptographic library to JavaScript
Stars: ✭ 1,176 (+1370%)
Mutual labels:  elliptic-curves
Constantine
Constant time pairing-based or elliptic curve based cryptography and digital signatures
Stars: ✭ 61 (-23.75%)
Mutual labels:  elliptic-curves
Jc curve25519
Javacard implementation of Curve25519 (prototype, work-in-progress)
Stars: ✭ 18 (-77.5%)
Mutual labels:  elliptic-curves

Quantum-Resistant Cryptosystems from Supersingular Elliptic Curve Isogenies

Copyright 2011-2016 Luca De Feo http://defeo.lu/.

This software implements the cryptosystem described in

D. Jao and L. De Feo, Towards quantum-resistant cryptosystems from supersingular elliptic curve isogenies. Post-Quantum Cryptography, Nov 2011, Taipei, Taiwan. Springer, LNCS 7071, pp. 19-34, 2011.

L. De Feo, D. Jao and J. Plût, Towards quantum-resistant cryptosystems from supersingular elliptic curve isogenies. Journal of Mathematical Cryptology, 8(3), pp. 209-247. De Gruyter, 2014.

WARNING: This code is obsolete. For a modern treatment, please see the official code for the NIST candidate SIKE, and the additional implementations referenced here.

Installation

Just clone or download this repo.

You will need a recent version of Sage and a C compiler. This version has been tested with Sage 6.10 and gcc 5.2.1.

Usage

In a Sage shell type

sage: load('pqcrypto11.sage')

Some predefined key sizes are stored in a string-indexed dictionary called 'parameters'. Read pqcrypto11.sage to find them out.

Public data for a cryptosystem are generated via a call to ss_isogeny_gen. For example, to obtain parameters relative to a 40-bit prime, type

sage: set_verbose(1)
sage: pdata = ss_isogeny_gen(**parameters['2-3-40'])

The key exchange is performed by ss_isogeny_exchange. Type

sage: ss_isogeny_exchange(*pdata)
sage: set_verbose(0)

The function ss_isogeny runs both previous functions in one. The previous sequence of commands is equivalent to

sage: ss_isogeny('2-3-40', verbose=1)

Additional parameters can be passed to these functions, read pqcrypto11.sage.

NOTE: The file gfp2.c can be compiled as a standalone program with

gcc -lgmp gfp2.c

Then it can be run to gather estimates on the running times of doublings, triplings, 2 and 3-isogeny evaluations. These data can be used to tune up (via the dictionary "weights" in pqcrypto11.sage) the key exchange algorithm.

Thanks

Many thanks to those who have helped in testing and fixing this software.

  • David Jao,
  • Jérôme Plût,
  • Erik Nellessen.
  • Adarsh Saraf,
  • Srinath,
  • Miha Marolt @miham
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].