Skip to content
This repository has been archived by the owner on Oct 8, 2024. It is now read-only.

demonstration of quantum cryptography 🐈 πŸ” , one-time pad communication via BB84. repo for our IT Security Master project

Notifications You must be signed in to change notification settings

bmedicke/quantum_cryptography

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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:

  • Theory πŸ’­ describes the the BB84 algorithm and required theory
  • Hardware πŸ”­ collects information about which hardware was used and how to set it up
  • 3D models πŸ—οΈ holds printable components
  • Setup πŸ§‘πŸ»β€πŸ’» installation instructions for the software and required services
  • Notebooks πŸͺ contains the actual JupyterLab Notebooks for Alice, Bob and Eve
  • Guidelines βœ’οΈ coding and contribution guidelines
  • qcrypt docs πŸ“œ documentation for the quantum crypto library

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.