Skip to content

linuszheng/quantum-key-distribution

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Overview

https://clipchamp.com/watch/7NuLBKUD2G0

Our project is a visual demonstration of how quantum key distribution (BB84 protocol) works through a live and interactive simulation.

A major challenge of symmetric cryptographic schemes is safely selecting and communicating a shared "key". Our project illustrates how Quantum Computing allows us to implement secure key distribution protocols by taking advantage of qubits' tendency to "collapse" if observed by an unauthorized third agent. Our project walks through the entirety of this process, from the generation of the initial bitstrings to the final validation step. Each of these stages is also visualized through an intuitive, real-time user interface.

A great feature of our interactive system is users' ability to choose to play as one of three entities: Alice who generates the key, Bob who receives it, and Eve who attempts to "eavesdrop" and acquire the key without being detected. By choosing the length of the key or selecting which qubits Eve should try to measure, players can discover the protocol's strengths and vulnerabilities under different conditions in a fun and engaging way.

In addition to demonstrating the functionality of the BB84 key distribution protocol, our project educates the audience about the concept of quantum measurement and the way it causes qubits to collapse to different states depending on the basis being used. It also provides a valuable connection between theoretical quantum concepts and useful real-world applications.

Directions

Running the backend

Only required for the first time


cd backend
python3 -m venv venv
. venv/bin/activate
pip3 install -r requirements.txt

Run the server


./launch-server.sh

Running the frontend

Only required for the first time


cd frontend
npm install

Run the client


npm start

How we used Qiskit

We used Qiskit to simulate the qubits transmitted from Alice to Bob through the "Quantum Channel" visible in our UI. More specifically, we created QuantumCircuit objects which contained quantum bits. These qubits were then modified using Pauli-X and Hadamard gates. They were also measured into classical bit registers. While we used a simulator to run our circuits, they are also compatible with real IBM quantum computers.

What we learned

Through this project, we learned the basics of quantum computing, such as creating qubits, using quantum gates, and performing measurements with different bases. Additionally, we gained a better understanding of quantum cryptography and private key encryption. Finally, this project boosted our knowledge of the mathematical representations of qubits and the ways in which they can be manupulated using linear algebra.