bmedicke / quantum_cryptography

demonstration of quantum cryptography 🐈 πŸ” , one-time pad communication via BB84. repo for our IT Security Master project
28 stars 10 forks source link
alice bb84-protocol beam-splitter bob cryptography docker docker-compose hardware jupyter-notebooks lasers master mcs mqtt photons quantum quantum-cryptography rabbitmq security theory thorlabs

quantum cryptography logo

Demonstration of quantum-cryptography-based one-time pad communication via
the BB84 algorithm using a non-single photon source.

Python version 3.9

project progress | contributors | repository structure | frequently asked questions


project progress

Kanban Boards: Everyone, Ben, Ferdi, Manu, Niko

GitHub milestones GitHub milestones GitHub commit activity

contributors

Author GitHub profile homepage
Benjamin Medicke bmedicke benmedicke.com
Ferdi Cevik Osomo3000 cf-projects
Manuel Nagel namanuel namanuel.github.io
Nikolai Benedikt nikobenedikt

repository structure

Here's a quick breakdown of what to find where in the repository:

frequently asked questions

Why build some components instead of using the respective ThorLabs versions?

Mainly to keep it open-source and reduce the size of the hardware setup. As an added bonus it lowers the cost and barrier of entry for anyone who is interested in replicating the project.

filter wheel from ThorLabs ThorLabs motorized filter wheel

What hardware do I need to run this project?

See Hardware for a list of required components and 3D models for printable parts.

Why use JupyterLab Notebooks as a frontend?

On one hand, JupyterLab provides an interactive, browser-based computing environment, which makes it easy to do exploratory coding. On the other hand, different types of cells in a notebook allow code and markdown-based documentation to live in the same document. We hope this makes it easier to follow both the code and BB84 protocol.

Is Python 3.9 absolutely required?

Yes. We make use of some of the new features.

When running pip install -r requirements.txt it fails with Building wheel for smbus (setup.py) ... error.

You are probably not on a Raspberry Pi with Raspbian (or a similar operating system). This is due to missing I2C. If you're just interested in seeing the notebooks and running some parts of them you can remove the smbus line from requirements.txt. You won't be able to use the quantum channel, of course.