Durante la mia passeggiata al lavoro oggi ho pensato al seguente algoritmo di crittografia e non sono riuscito a determinare il difetto. Usa un time pad che non ha bisogno di essere condiviso e ha un sapore di scambio chiave Diffie-Hellman ad esso:
-
Dire che Alice vuole inviare un messaggio M a Bob così lei genera un casuale un pad singolo A e invia M '= (M xor A) a Bob.
-
Bob genera anche un pad monouso B e invia M '' = (M 'xor B) indietro ad Alice.
-
Alice usa di nuovo il suo pad singolo e invia M '' '= (M' 'xor A) torna a Bob.
-
Bob quindi recupera semplicemente il messaggio originale che è (M '' ' xor B).
Quella cifra inviata nel passaggio 1 è (M xor A). Il cypher invia al punto 2 è (M xor A xo B). Il mittente del cypher nel passaggio 3 è (M xo A xo B xo A) = (M xo B). Bob quindi può decodificare il messaggio finale M = (M xo B xo B). Tutti gli intercettatori vedono solo i messaggi crittografati con una combinazione sicura dei tasti A e B. Anche se Bob può determinare il blocco A di Alice nel passaggio 3, non è mai stato necessario condividere chiavi.
Ecco un semplice esempio a 32 bit (^ = xor):
M = 1234ABCD secret message
A = 4A3109AD Alice's key
B = F499803C Bob'e key
M = 1234ABCD
M^A = 5805A260
M^A^B = AC9C225C
M^A^B^A = E6AD2BF1
M^A^B^A^B = 1234ABCD
Perché non è perfettamente sicuro? (P.S., sto ignorando i problemi di fiducia e le questioni man-in-the-middle - che possono essere dov'è il problema)