Contents

#reused key attack

参考《白帽子讲web安全》第11章 加密算法和随机数。

流密码加密算法的使用中,最常见的错误是使用同一个密钥进行多次加解密。流密码的加密是基于异或(XOR)操作进行的。XOR操作规则如下:

1 xor 1=0 
1 xor 0=1 
0 xor 1=1 
0 xor 0=0 

假设有密钥C,明文A,明文B,那么XOR加密可以表示为:

E(A) = A xor C
E(B) = B xor C

密文是公开的,所以很容易计算

E(A) xor E(B)

根据异或的规则,如果两个数相同,则xor运算的结果为0。

E(A) xor E(B) = (A xor C) xor (B xor C) = A xor C xor B xor C = A xor B

所以E(A),E(B),A,B四个数据中只要知道3个就可以推算出剩下的一个。这个过程完全不需要密钥C的参与。

Contents