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.0

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.0
File Size Uploaded
quant_bvz_secure-0.1.0.tar.gz 19.4 kB Details

Built distribution (wheel)

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

Total release size: 41.4 kB

Release files / quant_bvz_secure-0.1.0.tar.gz

Download URL quant_bvz_secure-0.1.0.tar.gz
Size 19.4 kB
Tags Source
SHA-256 checksum
How to use checksums
2f02b08de4e04d571648da60aaee1c48d42e7b677c6ed9ec376b808e5c2d888f
BLAKE2b-256 checksum
How to use checksums
2d138831d702732c575bfec50382ddfb41adac27cfb9263541ec85abca664352
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.0-py3-none-any.whl

Download URL quant_bvz_secure-0.1.0-py3-none-any.whl
Size 22.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
920b9697453d90be59941aef05edecde79e299d2d64f1d2615bb01ee1ee03634
BLAKE2b-256 checksum
How to use checksums
50def33dfb1042feadc22ac2385a2f1a86de23f5adc54b085e8613a1c10ac240
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

0.1.1

2 release files

This release

0.1.0 This release

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