paulveillard / cybersecurity-cryptography-rust

An ongoing & curated collection of awesome software best practices and techniques, libraries and frameworks, E-books and videos, websites, blog posts, links to github Repositories, technical guidelines and important resources about Cryptography in Rust.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cryptography in Rust

An ongoing & curated collection of awesome software best practices and techniques, libraries and frameworks, E-books and videos, websites, blog posts, links to github Repositories, technical guidelines and important resources about Cryptography in Rust.

Thanks to all contributors, you're awesome and wouldn't be possible without you! Our goal is to build a categorized community-driven collection of very well-known resources.

Table of Contents

Cryptography

Collection library

  • libsm A Rust Library of China's Standards of Encryption Algorithms (SM2/3/4).
  • mesalink MesaLink is a memory safe and OpenSSL-compatible TLS library.
  • orion Usable, easy and safe pure-Rust crypto.
  • rage age implementation. A simple, secure and modern encryption tool with small explicit keys, no config options, and UNIX-style composability.
  • ring Safe, fast, small crypto using Rust. (curve25519, aes-gcm, sha-256, sha-384, sha-512, hmac, hkdf, pbkdf2, p-256, p-384, x25519, chacha20-poly1305, ed25519).
  • rust-crypto A (mostly) pure-Rust implementation of various cryptographic algorithms.
  • rustls A modern TLS library in Rust.
  • sodiumoxide Sodium Oxide: Fast cryptographic library for Rust (bindings to libsodium).

Symmetric cryptography

  • aeads: Collection of Authenticated Encryption with Associated Data algorithms written in pure Rust.
  • block-ciphers Collection of block cipher algorithms written in pure Rust. (AES, Blowfish, DES + 3DES, Kuznyechik, Magma, RC2, Twofish).
  • stream-ciphers Collection of stream cipher algorithms.

Asymmetric Cryptography

RSA
  • RSA RSA implementation in pure Rust. (PKCS1v1.5: Encryption & Decryption, Sign & Verify).
DH
  • x25519-dalek Fast and efficient ed25519 signing and verification in Rust.

Hash Function

  • BLAKE3 Official implementations of the BLAKE3 cryptographic hash function.
  • hashes Collection of cryptographic hash functions written in pure Rust. (sha1, sha2, sha3, md4, md5, BLAKE2, RIPEMD-160, RIPEMD-320, GOST94, Grøstl, Streebog, Whirlpool).
  • tiny-keccak A tiny implementation of SHA-3, SHAKE, Keccak, and sha3sum in rust.
  • poseidon252 Starkad and Poseidon: New Hash Functions for Zero Knowledge Proof Systems.

Message Authentication Code

  • MACs Message authentication code algorithms written in pure Rust. (CMAC, DAA, HMAC, PMAC).

Digital Signature

Digital Signature Scheme
  • bls Aggregatable BLS sigantures. (w3f).
  • bls-signatures BLS Signatures in Rust.
  • ed25519-dalek Fast and efficient ed25519 signing and verification in Rust. (dalek)
  • milagro_bls BLS12-381 cryptography using Apache Milagro.
  • nisty NIST P-256 signatures for Cortex-M4 microcontrollers.
  • signatures Cryptographic signature algorithms (e.g. ECDSA, Ed25519).
Threshold Signature & Multi Party Signatures
  • multi-party-ecdsa Rust implementation of {t,n}-threshold ECDSA (elliptic curve digital signature algorithm).
  • multi-party-schnorr Rust implementation of multi-party Schnorr signatures over elliptic curves.
  • multiproof-rs A rust implementation of Alexey Akhunov's multiproof algorithm.
  • threshold_crypto A pairing-based threshold cryptosystem for collaborative decryption and signatures.

Rseudo Random Number Generator

  • rand A Rust library for random number generation.

Zero Knowledge Proofs

  • bellman zk-SNARK library. (zcash - librustzcash).
  • bellman (matter-labs) Bellman zkSNARK library for community with Ethereum's BN256 support.
  • bellman (filecoin-project) GPU parallel acceleration to the FFT and Multiexponentation algorithms in the groth16 prover.
  • bulletproofs (Dalek) A pure-Rust implementation of Bulletproofs using Ristretto.
  • bulletproofs (KZen-networks) Bulletproof Rust implementation for Aggregated Range Proofs over multiple elliptic curves.
  • Dusk-Zerocaf Fast, efficient and bulletproof-friendly cryptographic operations.
  • halo (prototype) a zkp system.
  • marlin A Rust library for the Marlin preprocessing zkSNARK.
  • merlin Composable proof transcripts for public-coin arguments of knowledge.
  • OpenZKP pure Rust implementations of Zero-Knowledge Proof systems.
  • rust-secp256k1-zkp ZKP fork for rust-secp256k1, adds wrappers for range proofs, pedersen commitments, etc.
  • sonic a protocol for quickly verifiable, compact zero-knowledge proofs of arbitrary computations.
  • Spartan High-speed zkSNARKs without trusted setup.
  • zexe Rust library for decentralized private computation.
  • ZoKrates A toolbox for zkSNARKs on Ethereum.

Homomorphic Encryption

Secure Multi-party Computation

white-city Network layer for MPC protocols.(include use Tendermint/TokioServer/RocketServer).

Theorem

Math

  • fiat-crypto Formally verified arithmetic implementations for several elliptic curves and word sizes, extracted to Rust from specifications written using in the Coq theorem prover.
  • nalgebra Linear algebra library for Rust.
  • num A collection of numeric types and traits for Rust. (Bigint).
  • rust-decimal A Decimal Implementation written in pure Rust suitable for financial calculations.

Elliptic Curve

  • BLS12-381 Implementation of the BLS12-381 pairing-friendly elliptic curve group.
  • bn Fork from zcash Pairing cryptography library in Rust. Barreto-Naehrig (BN).
  • curve25519-dalek Group operations on Ristretto and Curve25519..
  • Jubjub Implementation of the Jubjub elliptic curve group.
  • k256 Pure Rust implementation of secp256k1 using complete Weierstrass formulas
  • libsecp256k1-rs Pure Rust Implementation of secp256k1. (Wei Tang).
  • p256 Pure Rust NIST P-256 implementation using complete Weierstrass formulas
  • rust-secp256k1 Rust language bindings for Bitcoin secp256k1 library. (rust-bitcoin).

Attack Defense

Constant time

  • subtle Pure-Rust traits and utilities for constant-time cryptographic implementations.
  • subtle-encoding Hex, Bech32, and Base64 in constant-time(ish).

Zeroing memory

  • Zeroize Securely zero memory while avoiding compiler optimizations.

^ back to top ^

Others

  • Double Ratchet Pure Rust implementation of the Double Ratchet algorithm. (communicate securely).
  • kms-secp256k1 Multi Party Key Management System (KMS) for Secp256k1 Elliptic curve based digital signatures.
  • KDFs Collection of Key Derivation Functions written in pure Rust.
  • librustzcash Rust-language assets for Zcash. (bellman-zk-SNARK, pairing-elliptic curves).
  • molasses A Rust implementation of the Message Layer Security group messaging protocol.
  • MLSAG Multilayered Linkable Spontaneous Anonymous Group, This particular version leverages Ristretto255.
  • password-hashing Password-based key derivation functions. (PBKDF2, scrypt).
  • opaque-ke A pure Rust implementation of the recent OPAQUE PAKE.
  • PAKEs Password-Authenticated Key Agreement protocols. (SRP, spake2).
  • rcmixed Mixed cryptosystem. inspired by PGP.
  • RustySecrets A Rust implementation of threshold Shamir's secret sharing.
  • schnorrkel Schnorr VRFs and signatures on the Ristretto group.
  • vdf An implementation of Verifiable Delay Functions in Rust.

Contribute

Contributions are most welcome. Not so many constraints, only lowercase > uppercase, symbols > letters.

^ back to top ^

License

MIT License & cc license

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

To the extent possible under law, Paul Veillard has waived all copyright and related or neighboring rights to this work.

About

An ongoing & curated collection of awesome software best practices and techniques, libraries and frameworks, E-books and videos, websites, blog posts, links to github Repositories, technical guidelines and important resources about Cryptography in Rust.

License:MIT License