Simulation and Analysis of QKD currently supporting the BB84 variant. -


The QKD Simulator web application is powered by a simulation engine that includes a complete Quantum Key Distribution toolkit. The web application and the QKD toolkit have been developed by Arash Atashpendar under the supervision of Professor Peter Y. A. Ryan. You can reach us here if you have any feedback or questions.

Quantum key distribution (QKD), also referred to as quantum key expansion or establishment, is arguably the most widely known and commercially available application of quantum cryptography. In short, QKD makes use of the properties of quantum mechanics to guarantee secure communication by facilitating the long-standing problem of secure secret key distribution between two parties.

The implementation of the Quantum Key Distribution (QKD) toolkit that powers this website is done entirely in Python and it makes use of various scientific libraries. Moreover, it comes with an easy-to-use API for developers, scientists or enthusiasts wanting to adjust things to their needs. The backend is built in a flexible and reusable manner by using a component-based and fully modular approach such that each sub-protocol can be manipulated in an isolated way. The current version provides a complete implementation of the entire QKD stack, i.e., Quantum Channel, Sifting, Authentication using Universal Hashing, Error Estimation, Reconciliation/Error Correction and Privacy Amplification. The quantum channel currently only supports the BB84 protocol. More protocols will be gradually added to the framework.

QKD Toolkit Details

The QKD Simulation Toolkit powering this website's simulation engine is implemented entirely in Python and makes use of standard scientific libraries such as Scipy, Numpy, Matplotlib, Quantum Information Toolkit (QIT), BitVector, PyCrypto.


Feel free to get in touch with us using in case you have any questions or if you need a privileged account. Should you want to run more resource-intensive simulations for much larger qubit counts, feel free to let us know. We could run simulations for you locally upon request and provide you with the results.

QKD Simulation

Choose a simulator based on the properties of QKD that you would like to further investigate, fine-tune the initial parameters and define constraints for each subprotocol and run the simulator.

View example »

Detailed Analysis

Each simulation run will present you with a highly detailed set of results covering every step of the protocol, including internal details of every sub-protocol, e.g. sifting, error correction, privacy amplification, etc. along with a summary of statistics.

View example »


Most simulation types will create high quality publication ready plots illustrating core properties of QKD and more specifically, those of each run. We can run resource-intensive simulations for you locally upon request.

View plots »