Save the tristate
[CSAW Qualifiers, 2021]
An evil plan to get the flag.
Step 1: Get correct base
This requires 256 steps to iteratively guess the bases. In my case, I just appended one more "x" and sent it to the server to check, if I got an error I corrected it to a "+". After 256 iterations I got the correct base.
Step 2: remember QKD and decrypt flag
After correctly obtaining the key the server gives us a byte string with 256 qbits. A (smaller) example is: 0.707 + 0.707i, -0.707 + 0.707i, 0.0 + 1.0i, 1.0 + 0.0i, 1.0 + 0.0i, 0.707 + 0.707i, ...
This corresponds to our key: xx+++xx...
~~We could have not used the key exchange part in my opinion, since it is fairly clear what we need to do. ~~
Each polar coordinate corresponds to a bit measured with the base.
- 0.707 + 0.707i translates to 0 (equivalent to 45° polarization)
- -0.707 + 0.707i translates to 1 (equivalent to 135° polarization)
- 0.0 + 1.0i translates to 1 (equivalent to 0° polarization)
- 1.0 + 0.0i translates to 0 again (equivalent to 90° polarization)
Using this decoding, we get a bitstring which is the ascii encoding of
semi-aquatic mammal of action!
Step 3: use the key
The server now asks for a key. This is not the key base we obtained before, but instead the semi-aquatic mammal string we got before. After sending this, we get the flag:
flag{MO0O0O0O0M PH1NE4S & F3RB R T4LK1NG 2 AL1ENS 0V3R QKD!!!}
optional soundtrack: https://www.youtube.com/watch?v=mcBk2ov_qmw