| The original paper [1] is much clearer about the actual algorithm. The below is pretty much pulled straight from it, although I simplify it slightly (by assuming one pattern, etc.) First, Alice and Bob decide on a pattern P. Then they each compute a key K(A) and K(B) using the pattern P by shining P through their slab. Then, they publicly publish P and K(A) ⊕ K(B). (Apologies for the lack of good mathematical notation, but HN is not a great medium for such.) Because P, K(A), and K(B) are all random, the attacker learns no useful information from these two published items. Now, for Alice to encrypt a message m, she computes K(A) ⊕ m and sends it to Bob. Once Bob gets it, he uses the public pattern P to recreate K(B). Then he uses the publicly published K(A) ⊕ K(B) to compute: K(B) ⊕ [K(A) ⊕ K(B)] ⊕ (K(A) ⊕ m) which is in fact m. At any time, the Eve can only know P (useless since she doesn't have either slab) and K(A) ⊕ K(B), which is not enough to recover the key or message. [1]: http://arxiv.org/abs/1305.3886 |
So here is my issue:
Eve knows P, so she can steal the object and hence compute K(B).
The difficulty in "copying" the object is only significant when Eve does not know P.
But that same difficulty would apply if K(A) and K(B) were random numbers that Alice and Bob generated when they met.
Or is the point that Alice and Bob generate K(A) + K(B) for a lot of values of P, and then randomly select the ones to use when sending a message? That doesn't seem to be what the authors intended, although it would now be secure against stealing the object for a short amount of time.