Simulator (qkdsec.sim)¶
BB84 QKD protocol simulator.
Two backends are available:
"classical"— pure-Python probabilistic simulation. No extra dependencies."qiskit"— real quantum circuits on IBM Qiskit Aer with depolarizing noise. Requires thesimextra:pip install qkdsec[sim].
Example
>>> from qkdsec.sim import BB84Protocol
>>> result = BB84Protocol(error_rate=0.01).run(n_bits=4096)
>>> if result.secure:
... print(result.final_key.hex())
- class qkdsec.sim.BB84Protocol(error_rate=0.01, eavesdrop=False, eavesdrop_fraction=1.0, qber_threshold=0.11, sample_fraction=0.1, backend='qiskit')[source]¶
Bases:
objectFull BB84 QKD protocol.
- Parameters:
error_rate (
float) – Background channel error rate (without eavesdropping). Default 0.01.eavesdrop (
bool) – Simulate an intercept-resend eavesdropper. Default False.eavesdrop_fraction (
float) – Fraction of qubits Eve intercepts. Only used when eavesdrop=True.qber_threshold (
float) – Maximum tolerable QBER. Protocol aborts above this. Default 0.11.sample_fraction (
float) – Fraction of sifted bits sacrificed for QBER estimation. Default 0.10.backend (
str) –"qiskit"— IBM Qiskit Aer simulator (requires qkdsec[sim] extra)."classical"— pure-Python probabilistic simulation (no extras).
- class qkdsec.sim.BB84Result(final_key, key_length_bits, raw_bits, sifted_bits, qber, eavesdropper_detected, secure, backend_used='qiskit', sift_ratio=0.0, block_error_rates=None, error_variance=0.0, max_burst_length=0)[source]¶
Bases:
object- Parameters:
- class qkdsec.sim.BB84Protocol(error_rate=0.01, eavesdrop=False, eavesdrop_fraction=1.0, qber_threshold=0.11, sample_fraction=0.1, backend='qiskit')[source]¶
Bases:
objectFull BB84 QKD protocol.
- Parameters:
error_rate (
float) – Background channel error rate (without eavesdropping). Default 0.01.eavesdrop (
bool) – Simulate an intercept-resend eavesdropper. Default False.eavesdrop_fraction (
float) – Fraction of qubits Eve intercepts. Only used when eavesdrop=True.qber_threshold (
float) – Maximum tolerable QBER. Protocol aborts above this. Default 0.11.sample_fraction (
float) – Fraction of sifted bits sacrificed for QBER estimation. Default 0.10.backend (
str) –"qiskit"— IBM Qiskit Aer simulator (requires qkdsec[sim] extra)."classical"— pure-Python probabilistic simulation (no extras).
- __init__(error_rate=0.01, eavesdrop=False, eavesdrop_fraction=1.0, qber_threshold=0.11, sample_fraction=0.1, backend='qiskit')[source]¶