D
O

N
O
T

F
E
E
D

T
H
E

B
U
G
S

# Save the tristate

[CSAW Qualifiers, 2021]

category: misc

by unknown

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`

/writeups/ \$

\$