Skip to main content

KeyBraid — cross-platform hybrid post-quantum master-secret encryption

Project description

KeyBraid for Python

Cross-platform master-secret encryption. Encrypt on Python, decrypt on Node.js, Flutter, or Java — and vice versa.

  • Cipher: XChaCha20-Poly1305 (AES-256-GCM fallback)
  • Key derivation: HKDF-SHA3-512 → SHA3-512 final key
  • Spec: ../spec/SPEC-v3.md

Requirements

  • Python 3.10+
  • uv (recommended) or pip

Installation

cd python
uv sync --extra dev

Quick start

from keybraid import decrypt, encrypt, derive_key1, derive_key2, key_fingerprint

package, master_secret = encrypt("secret message")
plain = decrypt(package, master_secret)

key1 = derive_key1(master_secret)
key2 = derive_key2(master_secret)
fp = key_fingerprint(master_secret)

Optional password protection

from keybraid import protect_master_secret

protected, salt = protect_master_secret(master_secret, "user-password")
package, _ = encrypt("data", protected)

API reference

Function Description
generate_master_secret() Random 256-char Base62 master secret
derive_key1(master_secret) Deterministic Key1
derive_key2(master_secret) Deterministic Key2
encrypt(plain_text, master_secret=None) Returns (EncryptedPackage, master_secret)
decrypt(package, master_secret) Returns plaintext
key_fingerprint(master_secret) SHA3-256 fingerprint (Base64)
protect_master_secret(master_secret, password) Argon2id-protected master secret

Encrypted package

{
  "version": "v3",
  "algorithm": "XChaCha20-Poly1305",
  "nonce": "...",
  "ciphertext": "...",
  "tag": "..."
}

Tests

uv run pytest -q
uv run python scripts/vectors_v3.py

Cross-platform vectors: ../spec/test-vectors-v3.json

Security

  • Store master_secret separately from the encrypted package.
  • Each encrypt() without a master secret generates a new random master secret.

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

keybraid-4.0.0.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

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

keybraid-4.0.0-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file keybraid-4.0.0.tar.gz.

File metadata

  • Download URL: keybraid-4.0.0.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for keybraid-4.0.0.tar.gz
Algorithm Hash digest
SHA256 7e0e11fe838193c1dde57cb5276674d15f3ad1d1e4dbd0b624150285656e2874
MD5 976ffef6828db1eb43ab3edb80342996
BLAKE2b-256 8ad3ff3c520fe03b93bfc6c9459d5ffe4ae4ed2e79c2e4f858cbf9a2ebe967f8

See more details on using hashes here.

File details

Details for the file keybraid-4.0.0-py3-none-any.whl.

File metadata

  • Download URL: keybraid-4.0.0-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for keybraid-4.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 40bc5701bc9742e545d9fbba422341ae78caa5fe06f5a00dd77ba61fe8343e06
MD5 b84fdb24d3c055bf58521854aaf80ea6
BLAKE2b-256 1d66ad1ef6cc66254648c5b65fbee1b21de61533b62a9b9dadde0d2b30e9c305

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