Secure key rate optimizer for finite-size 1-decoy BB84 QKD

Calculate ideal parameters and secure key rates for finite-size 1-decoy BB84 quantum key distribution (QKD) systems.

Based on Wiesemann et al., A consolidated and accessible security proof for finite-size decoy-state quantum key distribution. Quantum 10, 2037 (2026) and the corresponding Python solver by Jerome Wiesemann.

l=sZ,0l+sZ,1l(1h(ΛXu+γ))leakEClog22ϵcor4log215ϵsec24l = s_{\mathsf{Z},0}^\mathrm{l} + s_{\mathsf{Z}, 1}^\mathrm{l} \big( 1 - h(\Lambda_\mathsf{X}^\mathrm{u} + \gamma) \big) - \mathrm{leak}_{\mathrm{EC}} - \log_2{\frac{2}{\epsilon_\mathrm{cor}}} - 4\log_2{\frac{15}{\epsilon_\mathrm{sec}' \sqrt[4]{2}}}

Changelog

v0.4.2 2026-04-11
  • Fixed:
    • The plot hover overlays now show values separated by This and Comparison.
  • Changed:
    • Removed the top Attenuation [dB] axis from the top of both plots.
v0.4.1 2026-04-04
  • Changed:
    • Moved the Max distance control into the Plot collapsible
    • Moved the Raman scattering cross section into the Optical noise collapsible
v0.4.0 2026-04-01
  • Added:
    • Optical noise model with two modes (fixed at receiver, Raman co-propagation)
    • Raman scattering noise for co-propagation with classical channel at 1550 nm over the same fiber
    • Quantum channel wavelength selection (1310 nm / 1550 nm)
    • Receiver optical filter bandwidth parameter
    • Dual-wavelength fiber attenuation fields (1310 nm and 1550 nm)
    • More fiber presets with more parameters
  • Changed:
    • Solver sweep controls now use distance in km (including max range), while attenuation is derived internally from distance and fiber loss
    • Charts swapped x-axes: distance (km) is now the primary (bottom) axis, attenuation (dB) is the secondary (top) axis
v0.3.0 2026-03-19
  • Added:
    • Parameters plot selector for μ₂ display mode
    • Solver options "Optimized" and "Fixed" for all 4 paramaters μ₁, μ₂/μ₁, P(μ₁), and P(Z)
v0.2.3 2026-03-18
  • Fixed:
    • Info tooltips can now be opened on touch devices by tapping the info icon
v0.2.2 2026-02-24
  • Fixed:
    • Corrected error in secondary x-axis (distance) in Python script plot
v0.2.1 2026-02-22
  • Fixed:
    • Severe performance degradation with small step sizes (e.g. 0.01 dB), most noticeable in Firefox, caused by flooding the UI with thousands of individual updates for zero-SKR points
  • Changed:
    • Adjusted allowed parameter ranges
    • UI polish
v0.2.0 2026-02-20
  • Added:
    • Save, Save as, load, rename, delete configurations using browser local storage
    • Share configuration via URL using base64-encoded JSON
    • Configuration versioning
    • Config version and zod schema validation at configuration load time
    • Reset button to reset all parameters to default values
    • CSV export
    • Option to add a comparison SKR line overlay in the SKR plot
    • New SKR display mode: PA compression (in addition to absolute and relative)
    • Input validation to prevent unphysical parameter combinations
    • Option to show GLLP SKR line
      • Assumes Alice transmits perfect single-photon states.
      • Detector properties, qubit encoding (polarization/timebin-phase), and basis choice (active/passive) are fully taken into account.
      • Intrinsic error for polarization encoding, and separate Z and X errors for timebin-phase encoding are included.
      • p_Z configurable, always the same for Alice and Bob.
      • No finite-size effects. The PA compression is essentially `1 - h(q_Z) - h(q_X)`.
      • Perfect error correction, i.e., error correction inefficiency is assumed to be f_EC = 1.
  • Fixed:
    • Now clipping `p_err_Z_mu2` to max. values of 0.5
  • Changed:
    • UI migrated to ShadCN UI components
v0.1.0 2026-02-08
  • Initial release.
  • Features:
    • Configuration options
      • System
        • Qubit transmission rate
        • Qubit encoding: polarization, or timebin-phase
          • For polarization encoding: Intrinsic error
          • For timebin-phase encoding: Separate Z and X error. Z error relates to mu1.
        • Bob's basis choice method: passive, active
      • Detectors
        • Detector presets
        • Dark-count rate
        • Photon detection efficiency
        • Dead time
      • Fiber channel
        • Fiber presets
        • Attenuation
      • Post-processing & Security proof
        • epsilon_sec
        • epsilon_cor
        • Block size
        • Way in which block size is defined: Qubits transmitted by Alice, or Z detections by Bob
        • EC inefficiency
        • Concentration inequality: Hoeffding, Azuma, or asymptotic
        • Serfling bound: original, improved (Fung), or asymptotic
      • Solver
        • Max. attenuation
        • Step size mode: (fixed or adaptive)
          • For fixed: Step size
          • For adaptive
            • Initial step size
            • Fine step size
            • QBER threshold above which to switch to fine step size
    • Export as Python script
    • Display of max. distance and attenuation
    • Plot of SKR vs. attenuation
      • Configurable SKR display: Absolute, relative
    • Plot of optimized parameters
    • Pressing enter triggers calculation from input fields

License

This tool is licensed under CC BY-NC-SA 4.0.

"Commercial use" includes, but is not limited to, use by or on behalf of any for-profit entity, use in connection with any revenue-generating activity, and internal business use within any commercial organization. For commercial licensing, please write to contact@jankrause.org.