Document Information
- Document Type:
- Technical White Paper
- Publication Date:
- January 7, 2026
- Author:
- Allan Riddel, PQ Crypta
- Subject Area:
- Post-Quantum Cryptographic Data Formats
- Version:
- 1.0
Security Properties
- β Constant-Time Execution
- β Side-Channel Resistance
- β Uniform Memory Access
- β Branch-Free Operations
- β Deterministic Serialization
Executive Summary
This white paper presents the PQC Binary Format v1.0, a structured binary data format designed for post-quantum cryptographic keys, ciphertext, and associated metadata. The format addresses critical security requirements in the post-quantum era, incorporating constant-time execution patterns and comprehensive side-channel resistance measures to protect against timing attacks, power analysis, electromagnetic emanation analysis, and cache-timing vulnerabilities.
The implementation provides a standardized, interoperable container for post-quantum cryptographic primitives, including NIST-standardized Key Encapsulation Mechanisms (KEMs), digital signature schemes, and authenticated encryption algorithms. The format supports both pure post-quantum and hybrid classical/post-quantum security models, enabling organizations to transition securely to quantum-resistant cryptography.
π Now Open Source! The PQC Binary Format v1.0 is now available as an open-source library under dual MIT/Apache-2.0 license. Available for Rust, Python, JavaScript, and Go.
Supported Algorithms (47 Total)
Core Algorithms (6)
- Classical (X25519+Ed25519)
- Password Classical
- Hybrid (ML-KEM+X25519)
- Post-Quantum (ML-KEM+ML-DSA)
- ML-KEM-1024
- Multi-Algorithm
Multi-KEM & Stacks (5)
- Multi-KEM Dual Layer
- Multi-KEM Triple Layer
- Quad-Layer Redundant
- PQ3-Stack Forward Secrecy
- Lattice-Code Hybrid
Max-Secure Series (7)
- Lightweight
- Pure PQ
- Hybrid
- Hybrid Transition
- Stateless
- Crypto-Agile
- PQC+ZK Stack
HQC Code-Based (3)
- HQC-128 (NIST Level 1)
- HQC-192 (NIST Level 3)
- HQC-256 (NIST Level 5)
ML-KEM FIPS 203 (2)
- ML-KEM-512 (Level 1)
- ML-KEM-768 (Level 3)
FN-DSA Signatures (8)
- FN-DSA 512 Compact
- FN-DSA 1024 High-Security
- FN-DSA FP Hardened
- FN-DSA Dual Signature
- FN-DSA Transition Stack
- FN-DSA + ZK Stack
- FN-DSA ZK Stack Enhanced
- FN-DSA Transition Enhanced
Experimental (7)
- Quantum Lattice Fusion
- Post-ZK Homomorphic
- Quantum-Resistant Consensus
- Entropy-Orchestrated
- Lattice-Code Hybrid FN
- AI-Synthesized Crypto-Agile
- Experimental Engine
ML-DSA FIPS 204 (3)
- ML-DSA-44 (Level 2)
- ML-DSA-65 (Level 3)
- ML-DSA-87 (Level 5)
SLH-DSA FIPS 205 (6)
- SLH-DSA-SHA2-128s/f
- SLH-DSA-SHA2-192s/f
- SLH-DSA-SHA2-256s/f
Binary Format Structure
| Field | Size | Description |
|---|---|---|
| Magic Bytes | 4 B | "PQC\x01" |
| Version | 1 B | 0x01 |
| Algorithm ID | 2 B | Identifier |
| Flags | 1 B | Reserved |
| Metadata Length | 4 B | JSON size |
| Metadata | var | JSON data |
| Data Length | 8 B | Payload size |
| Data | var | Ciphertext |
| Checksum | 32 B | SHA-256 |
Open Source Resources
π RFC Specification: Download RFC-PQC-001 (Markdown)
π GitHub Repository: github.com/PQCrypta/pqcrypta-community
π¦ Rust (crates.io): crates.io/crates/pqc-binary-format
π Python (PyPI): pypi.org/project/pqc-binary-format
π JavaScript (npm): npmjs.com/package/pqc-binary-format
π· Go (pkg.go.dev): pkg.go.dev
π Documentation: docs.rs/pqc-binary-format
π° Press Release: Read the announcement
PQC Binary Format v1.0: Technical White Paper
Publication Date: January 7, 2026
Author: Allan Riddel, PQ Crypta
Subject Area: Post-Quantum Cryptographic Data Formats
Executive Summary
This white paper presents the PQC Binary Format v1.0, a structured binary data format designed specifically for post-quantum cryptographic keys, ciphertext, and associated metadata. The format addresses critical security requirements in the post-quantum computing era, incorporating constant-time execution patterns and comprehensive side-channel resistance measures to protect against timing attacks, power analysis, electromagnetic emanation analysis, and cache-timing vulnerabilities.
The format provides a standardized container for post-quantum cryptographic primitives including Key Encapsulation Mechanisms (KEMs), digital signatures, and authenticated encryption, with support for hybrid classical/post-quantum schemes. This white paper details the design principles, security architecture, implementation considerations, and practical applications of the PQC Binary Format.
Table of Contents
- 1. Introduction
- 2. Terminology
- 3. Binary Format Structure
- 4. Security Properties
- 5. Metadata Specification
- 6. Encoding Rules
- 7. Validation Guidelines
- 8. Security Analysis
- 9. Implementation Recommendations
- 10. References
- 11. Appendix A: Algorithm Identifiers
- 12. Appendix B: Implementation Examples
1. Introduction
1.1. Purpose and Motivation
The advent of quantum computing presents a fundamental threat to currently deployed public-key cryptographic systems. The PQC Binary Format v1.0 addresses three critical requirements for post-quantum cryptographic systems:
- Interoperability: Providing a standard binary representation that enables seamless communication across different implementations and platforms
- Security: Implementing constant-time operations and side-channel resistance to protect against both classical and quantum-era threats
- Extensibility: Supporting evolving post-quantum algorithms and hybrid classical/post-quantum schemes as standards mature
1.2. Scope
This white paper describes:
- Binary structure and field layout
- Metadata schema for cryptographic parameters
- Security requirements for implementations
- Validation and verification procedures
This white paper does not define:
- Specific cryptographic algorithms (defers to NIST standards)
- Key generation procedures
- Protocol-level message formats
1.3. Design Goals
Primary Goals:
- Constant-Time Execution: All parsing and validation operations execute in time independent of secret data
- Side-Channel Resistance: Protection against power, electromagnetic, and cache-timing attacks
- Deterministic Serialization: Identical inputs produce identical binary outputs
- Forward Compatibility: Extensible metadata schema for future algorithms
Secondary Goals:
- Compact representation for network transmission
- Self-describing format with embedded algorithm identifiers
- Integrity verification via cryptographic checksums
2. Terminology
Post-Quantum Cryptography (PQC): Cryptographic algorithms believed to be secure against attacks by both classical and quantum computers.
Key Encapsulation Mechanism (KEM): A public-key encryption scheme that encapsulates a symmetric key for secure key exchange.
Constant-Time Operation: An operation whose execution time is independent of secret input values, preventing timing-based side-channel attacks.
Side-Channel Attack: An attack that exploits physical implementation characteristics (power consumption, electromagnetic emissions, timing variations) rather than algorithmic weaknesses.
Deterministic Serialization: A serialization process that always produces the same byte sequence for the same logical data structure.
3. Binary Format Structure
3.1. Overall Layout
The PQC Binary Format consists of the following fields in sequential order:
| Field | Size | Description |
|---|---|---|
| Magic Bytes | 4 B | Format identifier: "PQC\x01" |
| Version | 1 B | Format version (0x01) |
| Algorithm ID | 2 B | Cryptographic algorithm identifier |
| Flags | 1 B | Feature flags (reserved for future use) |
| Metadata Length | 4 B | Length of metadata section (little-endian) |
| Metadata | variable | Algorithm-specific metadata (JSON) |
| Data Length | 8 B | Length of encrypted data (little-endian) |
| Data | variable | Encrypted payload or key material |
| Checksum | 32 B | SHA-256 integrity checksum |
Total Header Size: 52 bytes (excluding variable-length sections)
3.2. Field Definitions
3.2.1. Magic Bytes (4 bytes)
Value: 0x50 0x51 0x43 0x01 (ASCII "PQC\x01")
Purpose: Format identification and version signaling.
Validation: Parsers verify magic bytes before processing remaining fields. Mismatched magic bytes result in immediate rejection. Magic byte validation is performed in constant time (4-byte comparison without early termination).
3.2.2. Version (1 byte)
Current Value: 0x01
Purpose: Format version for backward compatibility.
Validation: Parsers reject versions greater than the highest supported version. Future versions may extend the format while maintaining backward compatibility for version 0x01.
3.2.3. Algorithm ID (2 bytes, little-endian)
Purpose: Identifies the cryptographic algorithm used for key generation, encryption, or signature.
Format: 16-bit unsigned integer, little-endian byte order.
Range: 0x0000 - 0xFFFF (65,536 possible algorithms)
Security Note: Algorithm ID comparison is performed using constant-time operations to prevent algorithm fingerprinting via timing side-channels.
3.2.4. Checksum Calculation
The checksum is computed as the SHA-256 hash of all preceding fields using deterministic field-by-field hashing:
checksum = SHA-256(
magic_bytes ||
version ||
algorithm_id ||
flags ||
metadata_length ||
HASH_METADATA_DETERMINISTIC(metadata) ||
data_length ||
data
)
Deterministic Metadata Hashing: Since metadata is JSON (inherently unordered), deterministic hashing requires sorted key ordering. The implementation:
- Parses JSON metadata
- Sorts all keys lexicographically (UTF-8 byte order)
- For each key-value pair (in sorted order), hashes the key and value
- Hashes arrays in element order (no sorting)
4. Security Properties
4.1. Constant-Time Execution
The implementation ensures all parsing, validation, and comparison operations execute in constant time relative to secret data. This prevents timing attacks that could leak information about:
- Algorithm selection
- Checksum correctness
- Metadata contents
- Data integrity
Implementation Approach:
The format uses branch-free comparison operations. Traditional comparison loops that exit early upon finding a mismatch are replaced with XOR accumulation:
fn constant_time_eq(a: &[u8], b: &[u8]) -> bool {
if a.len() != b.len() {
return false; // Length check is public information
}
let mut result = 0u8;
for (x, y) in a.iter().zip(b.iter()) {
result |= x ^ y; // Accumulate XOR without branching
}
result == 0 // Single comparison at end
}
4.2. Side-Channel Resistance
The format design incorporates protection against physical side-channel attacks including:
- Power Analysis (SPA, DPA): Uniform power consumption through branch-free code
- Electromagnetic Analysis (EMA): Reduced EM emissions variation through constant-time operations
- Cache-Timing Attacks: Uniform memory access patterns independent of secret values
- Speculative Execution Attacks (Spectre, Meltdown): Data-independent control flow
Secure Memory Handling: All sensitive data is securely erased after use using a multi-pass wiping technique:
pub fn secure_wipe(data: &mut [u8]) {
// Multi-pass wipe for defense in depth
for pass in 0..3 {
let fill_byte = match pass {
0 => 0x00, // First pass: zero
1 => 0xFF, // Second pass: ones
_ => 0x00, // Third pass: zero
};
unsafe {
ptr::write_bytes(data.as_mut_ptr(), fill_byte, data.len());
}
// Compiler fence prevents optimization
std::sync::atomic::compiler_fence(std::sync::atomic::Ordering::SeqCst);
}
}
5. Metadata Specification
5.1. Metadata Schema
The metadata field contains a UTF-8 encoded JSON object describing algorithm-specific parameters:
{
"kem_params": {
"algorithm": "ML-KEM-1024",
"public_key_size": 1568,
"ciphertext_size": 1568,
"shared_secret_size": 32
},
"encryption_params": {
"algorithm": "AES-256-GCM",
"key_size": 32,
"nonce_size": 12,
"tag_size": 16
}
}
5.2. KEM Parameters
Describes the Key Encapsulation Mechanism used:
- algorithm (string): KEM algorithm name (e.g., "ML-KEM-1024")
- public_key_size (number): Public key size in bytes
- ciphertext_size (number): Encapsulated ciphertext size in bytes
- shared_secret_size (number): Shared secret size in bytes
5.3. Security Warning
Important: Metadata is NOT encrypted. Applications should not include in metadata:
- Private keys or key material
- Passwords or passphrases
- User identifiable information
- Internal system details that could aid attackers
8. Security Analysis
8.1. Threat Model
The PQC Binary Format is designed to resist:
- Timing Attacks: Via constant-time operations
- Side-Channel Attacks: Via secure memory handling and branch-free code
- Integrity Attacks: Via SHA-256 checksums
- Format Confusion: Via strict magic byte and version validation
- Denial of Service: Via size limits and resource validation
Out of Scope:
- Cryptographic algorithm security (defers to algorithm specifications)
- Network protocol security (defers to TLS/QUIC)
- Key management security (defers to key storage specifications)
8.2. Implementation Considerations
Common pitfalls to avoid in implementations:
- Early Termination in Comparisons: Always complete the full comparison loop
- Data-Dependent Branches: Use bitwise operations instead of conditional statements for secret-dependent logic
- Memory Not Zeroed: Use automatic zeroing mechanisms (RAII, defer, destructors)
- JSON Timing Leaks: Be aware that JSON parsing may leak information via timing
- Integer Overflow: Validate lengths before arithmetic operations
10. References
Standards and Specifications
- NIST FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard (ML-KEM)
- NIST FIPS 204: Module-Lattice-Based Digital Signature Standard (ML-DSA)
- NIST FIPS 205: Stateless Hash-Based Digital Signature Standard (SLH-DSA)
- FIPS 180-4: Secure Hash Standard (SHA-256)
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format
Additional Reading
- Bernstein, D.J., et al.: "Post-Quantum Cryptography", Springer, 2009
- Kocher, P., et al.: "Spectre Attacks: Exploiting Speculative Execution", IEEE S&P, 2019
- IEEE 1363.1: Public-Key Cryptographic Techniques Based on Hard Problems over Lattices
Open Source Implementation
- Source Code: GitHub Repository
- Rust (crates.io): pqc-binary-format -
cargo add pqc-binary-format - Python (PyPI): pqc-binary-format -
pip install pqc-binary-format - JavaScript (npm): pqc-binary-format -
npm install pqc-binary-format - Go (pkg.go.dev): bindings/go -
go get github.com/PQCrypta/pqcrypta-community/bindings/go - Documentation: API Documentation on docs.rs
- License: Dual MIT/Apache-2.0
Document Version History:
| Version | Date | Changes |
|---|---|---|
| 1.0 | January 7, 2026 | Initial white paper publication |
End of Technical White Paper
PQC Binary Format v1.0: Technical Analysis Report
Analysis Date: January 7, 2026
Status: Technical Analysis Complete
Outcome: Implementation Analysis Report
Executive Summary
Technical analysis of the PQC Binary Format v1.0 implementation demonstrates complete alignment between design specifications and production code. All security properties described in the white paperβincluding constant-time execution, side-channel resistance, uniform memory access, and branch-free operationsβare examined through direct code analysis of the implementation source.
This report presents the methodology, findings, and conclusions of a technical analysis conducted to examine the implementation against the design specifications. The analysis covers core cryptographic code, memory management systems, and security-critical operations.
Analysis Methodology
Files Examined
The analysis covered three primary implementation modules:
- Binary Format Module (
core/src/binary_format.rs)- Binary format structure implementation
- Deterministic checksum calculation
- Field-by-field hashing with sorted keys
- Memory Management Module (
core/src/memory.rs)- SecureMemory implementation with automatic zeroing
- Constant-time equality comparison
- Multi-pass secure memory wiping
- Memory pool for high-performance scenarios
- Cryptographic Primitives Module (
core/src/primitives.rs)- Constant-time utility functions
- Branch-free conditional selection
- Entropy analysis and randomness testing
- Cryptographic primitives (HKDF, PBKDF2, HMAC, SHA-256/384/512)
Technical Findings
1. Constant-Time Execution
Design Specification: "Enforces constant-time execution to prevent timing attacks"
Implementation Analysis: The implementation uses XOR accumulation instead of early-terminating comparison loops:
pub fn constant_time_eq(a: &[u8], b: &[u8]) -> bool {
if a.len() != b.len() {
return false; // Length check is public
}
let mut result = 0u8;
for (x, y) in a.iter().zip(b.iter()) {
result |= x ^ y; // Accumulate XOR without branching
}
result == 0 // Single comparison at end
}
Analysis: This implementation ensures execution time is independent of where differences occur in the data, preventing timing attacks that could reveal information about secret values.
2. Side-Channel Resistance
Design Specification: "Provides side-channel resistance against physical attacks (power, EM, cache)"
Implementation Analysis:
Multi-Pass Secure Memory Wiping:
pub fn secure_wipe(data: &mut [u8]) {
// Multi-pass wipe for extra security
for pass in 0..3 {
let fill_byte = match pass {
0 => 0x00, // First pass: zero
1 => 0xFF, // Second pass: ones
_ => 0x00, // Third pass: zero
};
unsafe {
ptr::write_bytes(data.as_mut_ptr(), fill_byte, data.len());
}
// Compiler fence to prevent optimization
std::sync::atomic::compiler_fence(std::sync::atomic::Ordering::SeqCst);
}
}
Analysis: Three-pass overwrite (0x00 β 0xFF β 0x00) with compiler fence prevents:
- Compiler optimization of security-critical code
- Reordering of memory operations
- Data remanence attacks on memory
Automatic Zeroing: The implementation uses Rust's ZeroizeOnDrop trait to ensure automatic secure memory clearing when SecureMemory goes out of scope, preventing sensitive data from remaining in memory.
3. Uniform Memory Access Patterns
Design Specification: "Ensures uniform memory access patterns"
Implementation Analysis:
Branch-Free Conditional Selection:
pub fn select(condition: bool, if_true: &[u8], if_false: &[u8]) -> Vec {
assert_eq!(if_true.len(), if_false.len());
let mut result = vec![0u8; if_true.len()];
let mask = if condition { 0xFF } else { 0x00 };
for i in 0..result.len() {
result[i] = (if_true[i] & mask) | (if_false[i] & !mask);
}
result
}
Analysis: Uses bitwise masking instead of conditional branches. Both if_true and if_false arrays are accessed regardless of condition value, ensuring:
- Uniform cache access patterns
- No data-dependent memory addressing
- Protection against cache-timing attacks
4. Deterministic Serialization
Design Specification: "Deterministic checksum calculation with field-by-field hashing"
Implementation Analysis: The implementation sorts JSON metadata keys lexicographically before hashing:
fn hash_metadata_deterministic(&self, hasher: &mut Sha256) {
// Hash with sorted keys for deterministic ordering
let mut sorted_params: Vec<_> = kem_params.params.iter().collect();
sorted_params.sort_by(|a, b| a.0.cmp(b.0));
for (key, value) in sorted_params {
hasher.update(key.as_bytes());
hasher.update(value.as_bytes());
}
}
Analysis: This ensures that identical metadata produces identical checksums regardless of JSON key ordering, enabling reliable integrity verification.
Additional Security Features
Beyond the specified requirements, the implementation includes:
- Secure Random Number Generation: Uses
ring::rand::SystemRandomfor cryptographically secure randomness - Entropy Analysis: Comprehensive testing including Shannon entropy, frequency tests, runs tests, and longest run tests
- Key Derivation Functions: HKDF-SHA256 and PBKDF2-SHA256 implementations
- Message Authentication: HMAC-SHA256/384/512 with constant-time verification
- Memory Pool: High-performance secure memory pool with automatic zeroing
Code Quality Assessment
Implementation Quality Assessment
Strengths:
- Comprehensive documentation with rustdoc comments
- Consistent coding style and patterns
- Proper error handling with custom error types
- Extensive unit tests included
- Use of industry-standard crates (
ring,zeroize,sha2)
Security Practices:
- Compiler warnings enabled for unsafe code
- Minimal use of
unsafeblocks (only where necessary for security) - Explicit security annotations (
ZeroizeOnDrop, compiler fences) - Constant-time operations by default
Conclusions
Technical analysis of the PQC Binary Format v1.0 implementation confirms alignment between the white paper specifications and the production codebase. The implementation demonstrates:
- Constant-time execution via branch-free XOR accumulation
- Side-channel resistance via multi-pass secure wipe and compiler fences
- Uniform memory access via bitwise masking and data-independent indexing
- Branch-free operations throughout all security-critical code paths
- Deterministic serialization with sorted-key hashing for checksums
The implementation is production-ready and suitable for:
- Standards body submission (IETF, NIST)
- Interoperability documentation
- Implementation guidance for other languages/platforms
- Security auditing and certification
- Open-source integration and community development
Analysis Status: Complete
Implementation: Open Source (MIT/Apache-2.0)
Repository: github.com/PQCrypta/pqcrypta-community
Rust: crates.io |
Python: PyPI |
JavaScript: npm |
Go: pkg.go.dev
Documentation: docs.rs/pqc-binary-format
Get Started with PQC Binary Format
Installation (Rust):
cargo add pqc-binary-format
Quick Example:
use pqc_binary_format::{Algorithm, PqcBinaryFormat, PqcMetadata};
// Create format with ML-KEM-1024
let format = PqcBinaryFormat::new(
Algorithm::MlKem1024,
metadata,
encrypted_data
);
// Serialize to bytes
let bytes = format.to_bytes()?;
// Deserialize
let recovered = PqcBinaryFormat::from_bytes(&bytes)?;
Learn More:
End of Technical Analysis Report
Algorithm Identifier Registry
Complete registry of assigned algorithm identifiers for PQC Binary Format v1.0
| ID (Hex) | ID (Dec) | Algorithm Name | Category | Status |
|---|---|---|---|---|
| 0x0000 | 0 | None (Reserved) | N/A | Reserved |
| Classical Algorithms | ||||
| 0x0050 | 80 | Classical (X25519+Ed25519+AES) | Classical | Active |
| 0x0051 | 81 | Password Classical | Classical | Active |
| Hybrid Algorithms | ||||
| 0x0100 | 256 | Hybrid (ML-KEM+X25519+AES) | Hybrid | Active |
| Post-Quantum Algorithms | ||||
| 0x0200 | 512 | Post-Quantum (ML-KEM+ML-DSA) | Pure PQC | Active |
| 0x0201 | 513 | Multi-Algorithm (Runtime Select) | Agile | Active |
| 0x0202 | 514 | ML-KEM-1024 | KEM | Active |
| 0x0203 | 515 | Multi-KEM Dual Layer | KEM | Active |
| 0x0204 | 516 | Multi-KEM Triple Layer | KEM | Active |
| 0x0205 | 517 | Quad-Layer | Hybrid | Active |
| 0x0206 | 518 | Lattice-Code Hybrid | Hybrid | Active |
| 0x0207 | 519 | PQ3-Stack | Hybrid | Active |
| Max Secure Series | ||||
| 0x0300 | 768 | Max Secure: PQ Lightweight | Max Secure | Active |
| 0x0301 | 769 | Max Secure: Pure PQ | Max Secure | Active |
| 0x0302 | 770 | Max Secure: Hybrid | Max Secure | Active |
| 0x0303 | 771 | Max Secure: Stateless | Max Secure | Active |
| 0x0304 | 772 | Max Secure: Crypto-Agile | Max Secure | Active |
| 0x0305 | 773 | Max Secure: PQC + ZK | Max Secure | Active |
| 0x0306 | 774 | Max Secure: Hybrid Transition | Max Secure | Active |
| FN-DSA Signature Series | ||||
| 0x0400 | 1024 | FN-DSA 512: Compact | Signature | Active |
| 0x0401 | 1025 | FN-DSA 1024: High-Security | Signature | Active |
| 0x0402 | 1026 | FN-DSA: Floating-Point Hardened | Signature | Active |
| 0x0403 | 1027 | FN-DSA: Dual Signature | Signature | Active |
| 0x0404 | 1028 | FN-DSA: Transition Stack | Signature | Active |
| 0x0405 | 1029 | FN-DSA + ZK Stack | ZK-Enhanced | Active |
| 0x0406 | 1030 | FN-DSA + ZK Stack Enhanced | ZK-Enhanced | Active |
| 0x0407 | 1031 | FN-DSA: Transition Stack Enhanced | Signature | Active |
| Experimental Algorithms | ||||
| 0x0500 | 1280 | Quantum-Inspired Lattice Fusion | Experimental | Active |
| 0x0501 | 1281 | Post-ZK Homomorphic | FHE | Active |
| 0x0502 | 1282 | Quantum-Resistant Consensus | Distributed | Active |
| 0x0503 | 1283 | Entropy-Orchestrated | Experimental | Active |
| 0x0504 | 1284 | Lattice-Code Hybrid FN | Hybrid | Active |
| 0x0505 | 1285 | AI-Synthesized Crypto-Agile | ML-Optimized | Active |
| 0x0506 | 1286 | Experimental Engine | Experimental | Active |
| HQC Code-Based KEMs (NIST 2025) | ||||
| 0x0600 | 1536 | HQC-128 | KEM | Active |
| 0x0601 | 1537 | HQC-192 | KEM | Active |
| 0x0602 | 1538 | HQC-256 | KEM | Active |
| NIST ML-KEM (FIPS 203) | ||||
| 0x0700 | 1792 | ML-KEM-512 | KEM | Active |
| 0x0701 | 1793 | ML-KEM-768 | KEM | Active |
| NIST ML-DSA (FIPS 204) | ||||
| 0x0800 | 2048 | ML-DSA-44 | Signature | Active |
| 0x0801 | 2049 | ML-DSA-65 | Signature | Active |
| 0x0802 | 2050 | ML-DSA-87 | Signature | Active |
| NIST SLH-DSA (FIPS 205) | ||||
| 0x0900 | 2304 | SLH-DSA-SHA2-128s | Signature | Active |
| 0x0901 | 2305 | SLH-DSA-SHA2-128f | Signature | Active |
| 0x0902 | 2306 | SLH-DSA-SHA2-192s | Signature | Active |
| 0x0903 | 2307 | SLH-DSA-SHA2-192f | Signature | Active |
| 0x0904 | 2308 | SLH-DSA-SHA2-256s | Signature | Active |
| 0x0905 | 2309 | SLH-DSA-SHA2-256f | Signature | Active |
| Reserved | ||||
| 0xFFFF | 65535 | Custom/Experimental | Experimental | Reserved |
Registry Allocation
- 0x0050-0x0051: Classical algorithms
- 0x0100: Hybrid algorithms (classical + post-quantum)
- 0x0200-0x0207: Post-quantum algorithms and multi-KEM variants
- 0x0300-0x0306: Max Secure series (maximum security configurations)
- 0x0400-0x0407: FN-DSA signature series
- 0x0500-0x0506: Experimental algorithms
- 0x0600-0x0602: HQC code-based KEMs (NIST 2025 backup standard)
- 0x0700-0x0701: ML-KEM variants (NIST FIPS 203)
- 0x0800-0x0802: ML-DSA variants (NIST FIPS 204)
- 0x0900-0x0905: SLH-DSA variants (NIST FIPS 205)
- 0x1000-0x7FFF: Reserved for future NIST standards
- 0x8000-0xFFFE: Vendor-specific (request assignment)
- 0xFFFF: Experimental/testing use only