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ł
qkdjest 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)
| File | Size | Uploaded | |
|---|---|---|---|
| quant_bvz_secure-0.1.0.tar.gz | 19.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|