All Projects → etairi → sidh-rs

etairi / sidh-rs

Licence: other
Supersingular Isogeny Diffie-Hellman in Rust

Programming Languages

rust
11053 projects
Sage
50 projects
assembly
5116 projects

Projects that are alternatives of or similar to sidh-rs

Sqleet
SQLite3 encryption that sucks less
Stars: ✭ 244 (+1933.33%)
Mutual labels:  cryptography
kyber-k2so
Go implementation of the Kyber (version 3) post-quantum IND-CCA2 KEM.
Stars: ✭ 23 (+91.67%)
Mutual labels:  cryptography
interbit
To the end of servers
Stars: ✭ 23 (+91.67%)
Mutual labels:  cryptography
Awesome Blockchain Rust
Collect libraries and packages about blockchain/cryptography in Rust
Stars: ✭ 251 (+1991.67%)
Mutual labels:  cryptography
gotts
A blockchain for non-collateralized stable-coins, follow MimbleWimble protocol but with explicit amount.
Stars: ✭ 48 (+300%)
Mutual labels:  cryptography
he-toolkit
The Intel Homomorphic Encryption (HE) toolkit is the primordial vehicle for the continuous distribution of the Intel HE technological innovation to users. The toolkit has been designed with usability in mind and to make it easier for users to evaluate and deploy homomorphic encryption technology on the Intel platforms.
Stars: ✭ 40 (+233.33%)
Mutual labels:  cryptography
Go Bip39
The BIP39 library for Go.
Stars: ✭ 238 (+1883.33%)
Mutual labels:  cryptography
cryptography
Cryptography course slides at Harbin Institute of Technology
Stars: ✭ 86 (+616.67%)
Mutual labels:  cryptography
stash-electron
Stash - The friendly secret storage made for teams
Stars: ✭ 18 (+50%)
Mutual labels:  cryptography
pqcrypto
👻 Post-quantum cryptography for Python.
Stars: ✭ 15 (+25%)
Mutual labels:  cryptography
Cryptopp
free C++ class library of cryptographic schemes
Stars: ✭ 3,150 (+26150%)
Mutual labels:  cryptography
Bitcoin
Bitcoin Core integration/staging tree
Stars: ✭ 60,211 (+501658.33%)
Mutual labels:  cryptography
tweedle
Generator and supporting evidence for security of the Tweedledum/Tweedledee pair of elliptic curves suitable for Halo
Stars: ✭ 16 (+33.33%)
Mutual labels:  cryptography
Libhydrogen
A lightweight, secure, easy-to-use crypto library suitable for constrained environments.
Stars: ✭ 247 (+1958.33%)
Mutual labels:  cryptography
Tangram.Bamboo
Tangram Bamboo CLI Wallet
Stars: ✭ 14 (+16.67%)
Mutual labels:  cryptography
Helib
HElib is an open-source software library that implements homomorphic encryption. It supports the BGV scheme with bootstrapping and the Approximate Number CKKS scheme. HElib also includes optimizations for efficient homomorphic evaluation, focusing on effective use of ciphertext packing techniques and on the Gentry-Halevi-Smart optimizations.
Stars: ✭ 2,749 (+22808.33%)
Mutual labels:  cryptography
Authenticator
🔒 Happy Two-Factor Verifying!
Stars: ✭ 53 (+341.67%)
Mutual labels:  cryptography
flame
Flame is an ActionScript library that provides a number of useful UI controls, collections, cryptographic services, and utilities to work with the Flex SDK.
Stars: ✭ 18 (+50%)
Mutual labels:  cryptography
virgil-sdk-cpp
Virgil Core SDK allows developers to get up and running with Virgil Cards Service API quickly and add end-to-end security to their new or existing digital solutions to become HIPAA and GDPR compliant and more.
Stars: ✭ 18 (+50%)
Mutual labels:  cryptography
WeDPR-Lab-Java-SDK
Java SDK of WeDPR-Lab-Core; WeDPR即时可用场景式隐私保护高效解决方案核心算法组件通用Java SDK
Stars: ✭ 18 (+50%)
Mutual labels:  cryptography

SIDH-RS Build Status

The SIDH-RS library is an efficient supersingular isogeny-based cryptography library written in Rust language. The library includes the ephemeral Diffie-Hellman key exchange (SIDH) as described in [1,2]. This scheme is conjectured to be secure against quantum computer attacks.

The library provides a generic field arithmetic implementation, therefore, making it compatible with many different architectures (such as x64, x86, and ARM). Significant portions of this code are ported from the Cloudflare's SIDH library. Also portions of the field arithmetic are ported from the Microsoft Research implementation. This library follows their naming convention, writing "Alice" for the party using 2^e-isogenies and "Bob" for the party using 3^e-isogenies.

This package does not implement SIDH key validation, so it should only be used for ephemeral Diffie-Hellman, i.e. each keypair should be used at most once.

Main Features

  • Supports ephemeral Diffie-Hellman key exchange.
  • Supports Linux OS, Mac OS and Windows OS.
  • Provides basic implementation of the underlying arithmetic functions in Rust to enable support on a wide range of platforms including x64, x86 and ARM.
  • Provides optimized implementations of the underlying arithmetic functions for x64 platforms using assembly for Windows and Linux.
  • Includes testing and benchmarking code.

Warning

This library is not actively maintained anymore. Furthermore, the code has not yet received sufficient peer review by other qualified cryptographers to be considered in any way, shape, or form, safe. The library was developed for experimentation purposes.

USE AT YOUR OWN RISK

Installation

To install, add the following to the dependencies section of your project's Cargo.toml:

sidh = "^0.2"

Then, in your library or executable source, add:

extern crate sidh;

By default, the benchmarks are not compiled without the nightly and bench features. To run the benchmarks, do:

cargo bench --features="nightly bench"

Example

extern crate rand;
extern crate sidh;

use rand::thread_rng;
use sidh::sidh::*;

fn main() {
    let mut rng = thread_rng();

    let (alice_public, alice_secret) = generate_alice_keypair(&mut rng);
    let (bob_public, bob_secret) = generate_bob_keypair(&mut rng);
    let alice_shared_secret = alice_secret.shared_secret(&bob_public);
    let bob_shared_secret = bob_secret.shared_secret(&alice_public);

    assert!(alice_shared_secret.iter().zip(bob_shared_secret.iter()).all(|(a, b)| a == b));
}

Documentation

Extensive documentation is available here.

License

SIDH-RS is licensed under the MIT License; see LICENSE for details.

Portions of the library are derived from Cloudflare's Go SIDH imlementation. The x64 field arithmetic implementation is derived from the Microsoft Research SIDH implementation.

References

[1] Craig Costello, Patrick Longa, and Michael Naehrig, "Efficient algorithms for supersingular isogeny Diffie-Hellman". Advances in Cryptology - CRYPTO 2016, LNCS 9814, pp. 572-601, 2016. The extended version is available here.

[2] David Jao and Luca DeFeo, "Towards quantum-resistant cryptosystems from supersingular elliptic curve isogenies". PQCrypto 2011, LNCS 7071, pp. 19-34, 2011.

[3] Craig Costello, David Jao, Patrick Longa, Michael Naehrig, Joost Renes, and David Urbanik, "Efficient compression of SIDH public keys". Advances in Cryptology - EUROCRYPT 2017, LNCS 10210, pp. 679-706, 2017. The preprint version is available here.

[4] Reza Azarderakhsh, Matthew Campagna, Craig Costello, Luca De Feo, Basil Hess, Amir Jalali, David Jao, Brian Koziel, Brian LaMacchia, Patrick Longa, Michael Naehrig, Joost Renes, Vladimir Soukharev, and David Urbanik, "Supersingular Isogeny Key Encapsulation". Submission to the NIST Post-Quantum Standardization project (to appear soon), 2017.

[5] Craig Costello, and Huseyin Hisil, "A simple and compact algorithm for SIDH with arbitrary degree isogenies". Advances in Cryptology - ASIACRYPT 2017 (to appear), 2017. The preprint version is available here.

[6] Armando Faz-Hernández, Julio López, Eduardo Ochoa-Jiménez, and Francisco Rodríguez-Henríquez, "A faster software implementation of the supersingular isogeny Diffie-Hellman key exchange protocol". Cryptology ePrint Archive: Report 2017/1015, 2017. The preprint version is available here.

[7] Gustavo H. M. Zanon, Marcos A. Simplicio Jr., Geovandro C. C. F. Pereira, Javad Doliskani, and Paulo S. L. M. Barreto, "Faster isogeny-based compressed key agreement". Cryptology ePrint Archive: Report 2017/1143, 2017. The preprint version is available here.

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].