KT2
KeyTree2 (KT2) is a 2nd generation, quantum-resistant cryptographic library used for Atlas' Data Access Layer. It is effectively a wrapper around multiple cryptographic primitives:
- Symmetric encryption: AES-256-GCM from ring
- Signatures: modified Dilithium3 from CRYSTALS (we've reduced SHAKE256's rounds down to 12), taken from crystals-dilithium
- Hashes: BLAKE3 from blake3
- Key encapsulation: Kyber768 from CRYSTALS from safe_pqc_kyber
Use at Your Own Risk
This library has not yet undergone a formal security audit by a recognized authority. As a result, there may be unknown security vulnerabilities, weaknesses, or potential flaws in the code. Users are advised to exercise caution when implementing or using this code.
Build
How to use
use Keypair;
let keypair = generate;
let sk = keypair.secret;
// pk is also available as keypair.public
let signature = keypair.sign;
// public key can now be separately derived from the secret key
let pk = from_sk;
let is_verified = pk.verify;
Test
Benchmarks
Benchmarks are run using criterion.rs:
Running on an Apple M1 Max
Benchmark | time |
---|---|
keypair generation | 93.799 µs |
signing | 125.73 µs |
signature verification | 82.825 µs |
Docs
Contributor Agreement
By contributing to this repository, you agree that your contributions will be licensed under the GPLv3 License.