quantum_cryptographic_toolkit

Crates.ioquantum_cryptographic_toolkit
lib.rsquantum_cryptographic_toolkit
version0.2.0
sourcesrc
created_at2024-08-14 04:20:30.499796
updated_at2024-09-04 00:15:51.905645
descriptionA toolkit for developing, testing, and deploying quantum-resistant cryptographic algorithms.
homepagehttps://github.com/dkrizhanovskyi/quantum_cryptographic_toolkit
repositoryhttps://github.com/dkrizhanovskyi/quantum_cryptographic_toolkit
max_upload_size
id1336837
size101,039
Daniil Krizhanovskyi (dkrizhanovskyi)

documentation

https://docs.rs/quantum_cryptographic_toolkit

README

Quantum Cryptographic Toolkit

DOI

Description

The Quantum Cryptographic Toolkit is a collection of tools and libraries written in Rust, designed to develop, test, and deploy quantum-resistant cryptographic algorithms. It supports several well-known quantum-safe algorithms, making it a powerful resource for post-quantum cryptography.

Project Structure

The project is structured as follows:

  • src/algorithms/: Contains implementations of various quantum-resistant cryptographic algorithms, including:

    • NewHope: Lattice-based key exchange.
    • SPHINCS+: Stateless hash-based digital signature scheme.
    • McEliece: Code-based cryptosystem.
    • SIKE: Supersingular isogeny-based key encapsulation mechanism.
    • FrodoKEM and Kyber (located in experimental): Lattice-based key encapsulation algorithms.
  • src/profiling/: Contains tools for profiling the performance of cryptographic algorithms.

  • src/core.rs: Core library functionality providing the main interface for interacting with the algorithms and profiling tools.

  • src/main.rs: Entry point for running algorithm demonstrations and profiling.

Usage

To use the toolkit, you can initialize the core library and run demonstrations or profiling as shown below:

use quantum_cryptographic_toolkit::core::CryptoToolkit;

fn main() {
    let toolkit = CryptoToolkit::new();
    toolkit.run_algorithm_demo();
    toolkit.profile_algorithms();
}

Example - Using NewHope Algorithm

Here’s a simple example that demonstrates how to use the NewHope algorithm for key exchange:

use quantum_cryptographic_toolkit::algorithms::newhope::NewHope;

fn main() {
    let newhope = NewHope::new();
    let public_key = vec![1, 2, 3, 4];
    let shared_secret = newhope.exchange(&public_key);
    println!("Shared secret: {:?}", shared_secret);
}

Installation

To include the Quantum Cryptographic Toolkit in your Rust project, add the following to your Cargo.toml:

[dependencies]
quantum_cryptographic_toolkit = { path = "path/to/quantum_cryptographic_toolkit" }

Ensure that you have all the necessary dependencies installed, and run cargo build to compile the project.

Running with Docker

You can also use Docker to containerize and run the toolkit. To build and run the Docker image:

podman build -t quantum_cryptographic_toolkit .
podman run --rm -it quantum_cryptographic_toolkit

This will build the Docker container and run the project inside an isolated environment.

Examples

The repository contains several examples that demonstrate how to use the various cryptographic algorithms. You can run them by using cargo run --example <example_name>. Examples include:

  • NewHope Example:

    cargo run --example newhope_example
    
  • SPHINCS+ Example:

    cargo run --example sphincs_example
    

Contributing

Contributions are welcome! Please follow the guidelines outlined in the CONTRIBUTING.md file. Contributions can include bug reports, feature requests, or even improvements to the cryptographic algorithms implemented.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Commit count: 0

cargo fmt