SahyadriSahyadriAPI

Dilithium Post-Quantum Cryptography

Sahyadri uses CRYSTALS-Dilithium for all transaction signatures, making it the first DAG-based blockchain with native post-quantum protection.

Dilithium is a NIST-standardized lattice-based digital signature scheme selected in 2022 as the primary post-quantum signature algorithm. Unlike RSA and ECDSA, Dilithium resists attacks from both classical and quantum computers, ensuring long-term cryptographic security for all on-chain transactions.

The security of Dilithium is based on the hardness of the Module Learning With Errors (Module-LWE) problem, which is believed to be hard even for quantum computers. This makes Sahyadri one of the first blockchain networks to be truly quantum-resistant.

Technical Specifications

ParameterValueDescription
AlgorithmCRYSTALS-DilithiumNIST PQC Standard (FIPS 204)
ModeDilithium-3NIST Level 3 - balanced security & performance
Public Key Size~1,952 bytesLattice-based public key
Signature Size~3,293 bytesCompact for PQC standards
Secret Key Size~4,000 bytesLattice-based secret key
Security LevelNIST Level 3128-bit quantum security
Lattice Dimensionn = 1024Module rank k = 8
Signing Speed~7 msOptimized via dilithium-rs crate
Verification Speed~2 msFast verification for block validation
Implementationdilithium-rs + WASMRust crate compiled to WebAssembly
NIST StandardFIPS 204Selected August 2024
Security BasisModule-LWELearning With Errors problem
Key Generation~10 msFast keypair generation
Quantum Resistance128-bitAgainst quantum computer attacks
Classical Security~143-bitAgainst classical computer attacks

Why Dilithium?

Quantum Safe

Resists Shor's algorithm - can't be broken by quantum computers

NIST Approved

Official FIPS 204 standard - globally recognized

Compact Size

Smaller than RSA at equivalent security level

Fast Verification

~2ms verification - ideal for blockchain

WASM Support

Runs in browser - wallet signing possible

Provably Secure

Based on hard mathematical problems

Key Generation Example (Rust)

// Rust (dilithium-rs crate)
use dilithium::*;

// Generate keypair
let (pk, sk) = KeyGen::generate();

// Sign a message
let msg = b"Sahyadri transaction";
let sig = Sign::sign(&sk, msg);

// Verify signature
let valid = Verify::verify(&pk, msg, &sig);
assert!(valid);

Browser WASM Example

// JavaScript (WASM)
import { Dilithium } from '@sahyadri/wasm';

// Generate keypair in browser
const { publicKey, secretKey } = Dilithium.generateKeypair();

// Sign transaction
const signature = Dilithium.sign(secretKey, transactionHash);

// Verify signature
const valid = Dilithium.verify(publicKey, transactionHash, signature);
console.log(valid); // true

Security Comparison

AlgorithmQuantum SafeNIST StandardSignature Size
Dilithium-3 (Sahyadri)YesFIPS 204~3.3 KB
ECDSA (Bitcoin)NoNone~64 bytes
Ed25519 (Solana)NoNone~64 bytes
RSA-2048NoNone~256 bytes