Go to file
Ashashin 41ce542c47 Doc 2021-08-08 12:43:09 +02:00
benches Fix benches 2021-08-08 11:25:53 +02:00
examples Fix examples 2021-08-08 11:30:53 +02:00
src Doc 2021-08-08 12:43:09 +02:00
.gitignore Add svg to bench 2021-08-04 21:32:19 +02:00
Cargo.toml Add flamegraph to dependencies and add bench files 2021-07-30 18:16:55 +02:00
LICENSE Initial commit 2020-08-27 22:21:46 +02:00
README.md Update readme 2021-08-04 21:45:10 +02:00

README.md

kybe-rs is a Pure Rust implementation of the CRYSTALS-KYBER lattice-based key encapsulation suite (KYBER 1), a post-quantum candidate submitted to the NIST standardization process 2.

Why kybe-rs?

The CRYSTALS-KYBER submission already comes with reference implementations, including optimised versions and as made through the 3rd round of NIST standardization process.

kybe-rs is concerned with providing high correctness guarantees: adherence to the CRYSTALS-KYBER specification, memory and type safety, and reproducibility across platforms. Extensive testing and documentation is desired. Performance matters but is a longer-term concern.

Status

Supported features and algorithms

  • Key encapsulation mechanism (KEM)
  • Public-key encryption (PKE)
  • All the parameters described in the NIST submission: kyber-512 and kyber-768.

The 2nd round updated specification (30 march 2019) is used as a basis for implementation.

Unsupported features and caveats

  • The implementation is not guaranteed to be constant time
  • The implementation is not no_std compatible (for non-essential reasons)

Dev options

Benchmark

Benchmarks with criterion:

cargo bench

Profiling

Profiling with flamegraph:

cargo flamegraph --example file [-o name.svg]

For any file.rs in the examples folder.

References and documentation