Tags: bb84 maninthemiddle quantum crypto 

Rating: 5.0

Going into this question, we had no knowledge of quantum crypto - the wikipedia article and this youtube video were a good intro for this question.

Once we had a decent idea of what was going on with the protocol, we nc to the server and see that we are able to intercept or not intercept qubits. If this was a classical data stream, all we would have to do is intercept the bits and forward them on; however, we can't do that here because intercepting qubits and measuring them changes their value. This means that when we intercept a qubit and forward on what we measured, we can't be certain this is an identical qubit to what we received.

At this point we started coding the python script that would interact with the server. The first goal was to make a program that could get to the end of the communications. All this program would do is forward packets until both sides of the connection dropped (hopefully after they had sent their classical message).

The next goal was to make a function that would allow the script to intercept a single packet at any given point and optionally forward on what the measured value was. After that, we could really start working on the problem.

Original writeup (https://github.com/n0l3ptr/Plaid2017/tree/master/BB8).