Skip to main content

VORTEX-256: Novel post-quantum KEM based on Rotational Module LWE (RotMLWE)

Project description

Bajpai Labs

Post-Quantum KEM RotMLWE Python 3.10+ MIT License

VORTEX-256

A new lattice KEM built on Rotational Module Learning With Errors
Same footprint as Kyber-512 · Entirely different mathematics · Standalone library
A Bajpai Labs project · postquantumlabs.in/library/vortex-pqc

CI PyPI Library Documentation


                              ╭──────────────────────────────────────╮
                              │                                      │
         ρ  ──▶  a₀ ──σ──▶  a₁ ──σ──▶  a₂ ──σ──▶  …               │
                              │         Frobenius orbit              │
                              │         of a single ring element     │
                              ╰──────────────────────────────────────╯
                                           │
                              bᵢ = aᵢ · s + eᵢ     (K correlated instances)
                                           │
                              pk  ·  ct  ·  32-byte shared secret

✦ At a glance

The invention

ML-KEM samples a full k×k matrix of random ring elements.

VORTEX-256 samples one element a, then derives the public structure from its Frobenius orbit:

σ : f(x) ↦ f(x³ mod x²⁵⁶+1)

a₀ = a
a₁ = σ(a₀)
bᵢ = aᵢ · s + eᵢ

One secret s. K rotations. A new hardness assumption — RotMLWE.

The footprint

Identical wire sizes to Kyber-512 — drop-in at the byte level.

Object Size
Public key 800 B
Private key 1 248 B
Ciphertext 768 B
Shared secret 32 B
Kyber-512 VORTEX-256
XOF calls at keygen 4 1
Secret type vector scalar
Assumption MLWE RotMLWE

✦ Install

pip install vortex-pqc

No runtime dependencies. Compiles an optional native extension when a C toolchain is present; otherwise falls back to a pure-Python reference.


✦ Thirty seconds to a shared secret

from vortex_pqc import generate_keypair, encapsulate, decapsulate

alice = generate_keypair()
bob   = encapsulate(alice.public_key)

# bob sends bob.data (768 B) to alice
alice_secret = decapsulate(bob.data, alice.private_key)

assert alice_secret == bob.shared_secret   # both parties agree


✦ How the exchange works

sequenceDiagram
    participant Alice
    participant Bob

    Note over Alice: generate_keypair()
    Alice->>Alice: pk (800 B) · sk (1248 B)

    Alice->>Bob: public key

    Note over Bob: encapsulate(pk)
    Bob->>Bob: ct (768 B) · ss (32 B)

    Bob->>Alice: ciphertext

    Note over Alice: decapsulate(ct, sk)
    Alice->>Alice: ss (32 B)

    Note over Alice,Bob: shared secrets match

✦ PEM keys

Standard Base64 PEM — compatible with everyday tooling.

from vortex_pqc import PEMKind, write_pem_file, read_pem_file

write_pem_file("key.pem", PEMKind.PRIVATE_KEY, alice.private_key)
sk = read_pem_file("key.pem", PEMKind.PRIVATE_KEY)
-----BEGIN VORTEX256 PRIVATE KEY-----
AQDQABAAABAAAA0AAAAAAPDP/gzQAhAAAAAAAA3QAA0AAPDPAQAAASAAAADQ/wwA
...
-----END VORTEX256 PRIVATE KEY-----

Private key files are written with mode 0600.


✦ C library

cd c && make lib && make test && make demo
#include "vortex_pqc.h"

uint8_t pk[VORTEX_PUBLIC_KEY_BYTES];
uint8_t sk[VORTEX_PRIVATE_KEY_BYTES];
uint8_t ct[VORTEX_CIPHERTEXT_BYTES];
uint8_t ss[VORTEX_SHARED_SECRET_BYTES];

vortex_keypair(pk, sk);
vortex_enc(pk, ct, ss);
vortex_dec(ct, sk, ss);

✦ Documentation

Library home → · Full documentation → · Published docs →

Enterprise: Bajpai Labs

GuideForYou'll learn
OverviewEveryoneWhat VORTEX is, design goals, positioning
QuickstartUsersInstall, first exchange, PEM files
Integration guideDevelopersClient–server protocol, session keys
Core conceptsLearnersKEM, RotMLWE, Frobenius, FO transform
Security modelSecurity engineersThreat model, guarantees, limitations
API referenceIntegratorsPython and C API, byte layouts
ComparisonEvaluatorsvs ML-KEM, NTRU, other PQC
FAQEveryoneCommon questions answered

✦ For developers

git clone https://github.com/bajpai-labs/vortex-pqc.git
cd vortex-pqc
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
make test

→ Full workflow in the Development Guide


✦ Security

Research prototype. VORTEX-256 introduces a novel hardness assumption that has not received the years of independent cryptanalysis behind NIST-standardised ML-KEM. Suitable for research, education, and prototyping. Not recommended for production without a formal security review.


✦ Related

This project is fully independent from Kyber-PQC (ML-KEM-512).


Institutional Backing & Maintenance

Post-Quantum Labs is an open-source research and development initiative of Bajpai Labs. All frameworks, kernel-level optimizations, and cryptographic implementations hosted here are engineered and maintained by our core systems architecture team.

Operational Hub Technical Documentation
Bajpai Labs Post-Quantum Labs

Enterprise Support & Custom Integrations: Need deterministic sub-microsecond performance, hardware-software co-design, or custom PQC migration frameworks? Contact our corporate consulting arm at Bajpai Labs.


Maintenance & Ownership

This library is part of the open-source ecosystem developed by Post-Quantum Labs, a wholly-owned division of Bajpai Labs.

License

MIT License. See LICENSE for details.

GitHub PyPI Library

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vortex_pqc-1.0.1.tar.gz (33.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vortex_pqc-1.0.1-cp310-cp310-macosx_26_0_arm64.whl (37.1 kB view details)

Uploaded CPython 3.10macOS 26.0+ ARM64

File details

Details for the file vortex_pqc-1.0.1.tar.gz.

File metadata

  • Download URL: vortex_pqc-1.0.1.tar.gz
  • Upload date:
  • Size: 33.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for vortex_pqc-1.0.1.tar.gz
Algorithm Hash digest
SHA256 5637f9cdc5616bb417810040ae2b2ff7fc7c05f511e6ddbc44cedc2fb178d1bb
MD5 f924c503798efb35ffd474377d0cb576
BLAKE2b-256 951193b5ea7c1b95f6267081ad271009d76f81d4638cbea9be9407e3784971ed

See more details on using hashes here.

File details

Details for the file vortex_pqc-1.0.1-cp310-cp310-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for vortex_pqc-1.0.1-cp310-cp310-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 b9d93b7d599663f986e7fcd95b508210c07c18020e7066822fd858c55df515ac
MD5 c00142f4cbf2f16a716cfcf21d826c57
BLAKE2b-256 01f60729f33912bb398a77c02fba0a04781026e0ce6c6a2c70cc5e58c37056ab

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page