There is a communication protocol that I believe creates the equivalent of a one time pad, with the downside that the secret message must be transferred multiple times. The protocol is so simple that I imagine that it has a name but I can't find a protocol which matches its description.
Assumptions:
- A client C wants to send a password P of L bytes to a Server S.
A function Z(P,M) exists whereby both P and M are L bytes and
Z(P,M)= P[i] xor M[i]; for all i < L
Thus the protocol would work as follows:
- C generates a random string of L bytes called CM. C sends to S:
Q0
whereQ0=Z(P,CM)
- S generates a random string of L bytes called SM. S sends to C:
Q1
whereQ1=Z(Q0,SM)
- C reapplies the CM mask to Q1. C sends to S
Q2
whereQ2=Z(Q1,CM)
. - S reapplies the SM mask to Q2. Q gets P from
P=Z(Q2,SM)
The protocol is taking advantage of the fact that the xor
operation is both associative and commutative.