Research preview

Security Model

Threat model, guarantees, limitations, and responsible use before any production evaluation.

Skip to content

Security goals ​

VORTEX-256 targets IND-CCA2 security as a KEM:

PropertyMeaning
ConfidentialityCiphertexts reveal nothing about the shared secret
IntegrityTampered ciphertexts produce wrong secrets (implicit rejection)
Forward secrecy (per session)Each encapsulation uses fresh randomness

Threat model ​

In scope (defended against) ​

ThreatMitigation
Passive eavesdroppingLattice hardness (RotMLWE) — ciphertext reveals nothing about shared secret
Ciphertext tamperingFO transform + implicit rejection — wrong secret returned, no error leak
Chosen-ciphertext attacksIND-CCA2 via FO — decapsulation safe even with attacker-crafted inputs
Quantum computersLattice assumption — no known polynomial-time quantum algorithm for RotMLWE

Out of scope (your responsibility) ​

ThreatWhat you must do
Private key compromiseProtect sk at rest (PEM mode 0600, HSM, KMS)
Side-channel attacksUse native C backend; avoid pure Python in timing-sensitive paths
Implementation bugsKeep dependencies updated; run test suite; report vulnerabilities
Algorithm breakthroughMonitor cryptanalysis; plan algorithm agility
Shared secret misuseDerive application keys with a proper KDF (HKDF, etc.) — don't use raw 32 B directly

Cryptographic assumptions ​

Primary: RotMLWE ​

Breaking VORTEX requires solving the Rotational Module Learning With Errors problem: given (a₀, b₀), (a₁, b₁), …, (a_{K-1}, b_{K-1}) where aᵢ = σⁱ(a) and bᵢ = aᵢ·s + eᵢ, recover the secret s.

CaseKnown relationship
K = 1Reduces to standard RLWE
K > 1Open research question — correlated instances share structure

Secondary: Random oracle model ​

The FO transform and KDF are analyzed in the random oracle model, assuming SHA-3 and SHAKE behave as ideal hash functions.

Security properties by operation ​

OperationSecurity levelNotes
generate_keypair()IND-CPA secure public keySecret s and rejection token z never exposed
encapsulate(pk)IND-CCA2 shared secretFresh randomness per call; deterministic given same coins
decapsulate(ct, sk)Implicit rejectionNever leaks validity via return value or exception (pure Python path)
PEM encodingEncoding only — no additional securityPrivate key files set to mode 0600

Key material handling ​

Do ​

✓  Store private keys encrypted at rest
✓  Use PEM with restrictive file permissions (automatic with write_pem_file)
✓  Rotate keys on compromise or schedule
✓  Derive application keys: HKDF(shared_secret, salt, info)
✓  Zero sensitive buffers after use (C library does this for stack copies)
✓  Use native backend in production-facing code paths

Don't ​

✗  Log public keys, private keys, ciphertexts, or shared secrets
✗  Commit .pem or .key files to version control
✗  Use the raw 32-byte shared secret directly as an AES key without derivation
✗  Assume IND-CCA2 extends to your application protocol without analysis
✗  Deploy in production without independent security review

Research preview limitations ​

VORTEX-256 has not been standardised by NIST and has not received the years of public cryptanalysis that ML-KEM (FIPS 203) has.

ConcernStatus
Novel assumption (RotMLWE)Published for community review
Parameter selectionBased on ML-KEM analogues; not independently optimised
Side-channel resistanceBest-effort in C; pure Python is not constant-time
Formal security proofFO reduction to RotMLWE; RotMLWE-to-RLWE reduction open for K>1
Post-quantum security levelEstimated ~128-bit quantum (same ring as Kyber-512)

Reporting vulnerabilities ​

If you discover a security issue:

  1. Do not open a public GitHub issue
  2. Email hello@bajpailabs.com with:
    • Description of the vulnerability
    • Steps to reproduce
    • Impact assessment
    • Suggested fix (if any)
  3. Allow 90 days for remediation before public disclosure

We follow coordinated disclosure practices.

Compliance guidance ​

RequirementVORTEX-256 status
FIPS 140 validated❌ Not validated
NIST-approved (FIPS 203)❌ Different algorithm
Export control (EAR)Consult legal counsel — open-source crypto software
GDPR / data protectionKEM itself is agnostic; your key management must comply

For regulated environments requiring NIST-approved algorithms, use ML-KEM (Kyber) instead.

Security checklist for integrators ​

□  Threat model documented for your use case
□  Private keys stored securely (encrypted, access-controlled)
□  Shared secret derived with HKDF before use as session key
□  Ciphertext length validated (768 bytes) before decapsulation
□  No secret material in logs, metrics, or error messages
□  Native backend used in timing-sensitive deployments
□  Key rotation policy defined
□  Independent security review completed (for production)