Skip to main content

qcrypt

Biblioteka kryptograficzna łącząca kryptografię post-kwantową (PQC) z symulacją kwantowej dystrybucji klucza (QKD / BB84).

Ważne zastrzeżenie

Czysty Python nie ma dostępu do sprzętu kwantowego. Ta biblioteka dzieli się na dwie realistyczne części:

  • qcrypt.pqc — prawdziwe, produkcyjne algorytmy odporne na ataki komputerów kwantowych (Kyber/ML-KEM, Dilithium/ML-DSA), działające na zwykłym procesorze już dziś. To jest realne zastosowanie.
  • qcrypt.qkd — symulacja matematyczna protokołu BB84 do celów edukacyjnych. Domyślnie nie wykonuje żadnych operacji na prawdziwych kubitach. Można podłączyć QiskitBackend, żeby faktycznie budować i wykonywać obwody kwantowe na symulatorze Qiskit Aer (lub realnym QPU IBM).

Instalacja

pip install -e .                    # rdzeń (AEAD, symulacja BB84, X25519)
pip install -e .[pqc]               # + Kyber/Dilithium (liboqs-python)
pip install -e .[qkd-hw]            # + prawdziwe obwody kwantowe (Qiskit)
pip install -e .[all]               # wszystko

liboqs-python wymaga skompilowania biblioteki C liboqs — zobacz https://github.com/open-quantum-safe/liboqs-python

Szybki start

1. Hybrydowa wymiana klucza (produkcyjna)

from qcrypt import HybridKEM, AEAD

bob = HybridKEM()
bundle = bob.generate_keypair()          # Bob -> wysyła do Alice

ciphertext, alice_secret = HybridKEM.encapsulate(bundle)   # Alice
bob_secret = bob.decapsulate(ciphertext)                    # Bob

assert alice_secret == bob_secret

cipher = AEAD(key=alice_secret)
blob = cipher.encrypt(b"tajna wiadomosc")
plaintext = AEAD(key=bob_secret).decrypt(blob)

2. Symulacja BB84 (edukacyjna)

from qcrypt.qkd.bb84 import BB84Protocol
from qcrypt.qkd.channel import QuantumChannel

# Kanał bez podsłuchu
channel = QuantumChannel(noise_level=0.02)
result = BB84Protocol(channel=channel, n_qubits=2048).run()
print(result.qber, result.eavesdropper_detected)

# Kanał z podsłuchem — QBER wzrośnie i zostanie wykryty
channel_eve = QuantumChannel(eavesdropper=True)
result_eve = BB84Protocol(channel=channel_eve, n_qubits=2048).run()
assert result_eve.eavesdropper_detected

3. CLI

python -m qcrypt.cli bb84-demo --qubits 4096
python -m qcrypt.cli bb84-demo --qubits 4096 --eve      # symulacja podsłuchu
python -m qcrypt.cli hybrid-demo --classical-only         # bez liboqs
python -m qcrypt.cli encrypt --key-hex <64 hex znaki> --in plik.txt --out plik.enc
python -m qcrypt.cli decrypt --key-hex <64 hex znaki> --in plik.enc --out plik.txt

Struktura

qcrypt/
├── pqc/
│   ├── kem.py          # Kyber/ML-KEM przez liboqs-python
│   ├── signatures.py    # Dilithium/ML-DSA przez liboqs-python
│   └── hybrid.py         # X25519 + Kyber połączone przez HKDF
├── qkd/
│   ├── bb84.py           # orkiestracja protokołu, sifting, QBER, privacy amplification
│   ├── channel.py        # model kanału + symulowany podsłuchujący (Eve)
│   └── backend.py        # SimulatedBackend (domyślny) / QiskitBackend (opcjonalny)
├── symmetric/
│   └── aead.py            # AES-256-GCM + HKDF do wyprowadzania klucza
├── keystore.py             # zapis/odczyt kluczy do JSON (base64)
├── exceptions.py
└── cli.py

Bezpieczeństwo

  • Implementacje PQC pochodzą z zaudytowanej biblioteki liboqs — nie implementujemy własnej kryptografii kratowej.
  • HybridKEM łączy X25519 z Kyber: złamanie musi dotyczyć obu algorytmów jednocześnie, zgodnie z zaleceniami NIST na okres przejściowy.
  • Moduł qkd jest edukacyjny. Nie używaj go jako jedynej warstwy bezpieczeństwa w systemie produkcyjnym bez realnego sprzętu kwantowego i zaufanego kanału uwierzytelniania klasycznego (BB84 wymaga uwierzytelnionego kanału klasycznego do sifting, inaczej podatny na man-in-the-middle).

Release files for quant-bvz-secure 0.1.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 quant-bvz-secure 0.1.1
File Size Uploaded
quant_bvz_secure-0.1.1.tar.gz 19.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for quant-bvz-secure 0.1.1
File Interpreter ABI Platform
quant_bvz_secure-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 42.0 kB

Release files / quant_bvz_secure-0.1.1.tar.gz

Download URL quant_bvz_secure-0.1.1.tar.gz
Size 19.7 kB
Tags Source
SHA-256 checksum
How to use checksums
bbe3ab8fc25ef855189b53b3e4bdbcb5c3ccfebba57f453887a5d9c1b7e5a2d0
BLAKE2b-256 checksum
How to use checksums
a79e7bfdb4e8f2646e8d4d7c8e803e76e3b19e5a31c42c6a207a55d1de11c0f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / quant_bvz_secure-0.1.1-py3-none-any.whl

Download URL quant_bvz_secure-0.1.1-py3-none-any.whl
Size 22.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
51a578c36af3f1c8af534041f1edd3e00dcda3cae4f1f5137bc8e47332c361ee
BLAKE2b-256 checksum
How to use checksums
3f690aca90cde1066e763f8d03c68fe3ec655b67f124e58b47d0543b580f69b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release history Release notifications | RSS feed

This release

0.1.1 This release

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