Skip to main content

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

Metadata

Release files for vortex-pqc 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vortex-pqc 1.0.1
File Size Uploaded
vortex_pqc-1.0.1.tar.gz 33.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vortex-pqc 1.0.1
File Interpreter ABI Platform
vortex_pqc-1.0.1-cp310-cp310-macosx_26_0_arm64.whl CPython 3.10 CPython 3.10 macOS 26.0+ ARM64 Details

Total release size: 70.2 kB

Release files / vortex_pqc-1.0.1.tar.gz

Download URL vortex_pqc-1.0.1.tar.gz
Size 33.1 kB
Tags Source
SHA-256 checksum
How to use checksums
5637f9cdc5616bb417810040ae2b2ff7fc7c05f511e6ddbc44cedc2fb178d1bb
BLAKE2b-256 checksum
How to use checksums
951193b5ea7c1b95f6267081ad271009d76f81d4638cbea9be9407e3784971ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.20

Release files / vortex_pqc-1.0.1-cp310-cp310-macosx_26_0_arm64.whl

Download URL vortex_pqc-1.0.1-cp310-cp310-macosx_26_0_arm64.whl
Size 37.1 kB
Tags CPython 3.10 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
b9d93b7d599663f986e7fcd95b508210c07c18020e7066822fd858c55df515ac
BLAKE2b-256 checksum
How to use checksums
01f60729f33912bb398a77c02fba0a04781026e0ce6c6a2c70cc5e58c37056ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.20

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page