two-time-pad的安全漏洞及其应用

two-time-pad的安全漏洞及其应用

two-time-pad加密算法是针对one-time-pad密钥和明文一样长的缺陷做出的一种改进,但是存在严重的安全漏洞。windows NT和802.11b都使用two-time-pad进行加密。

  • 原理
  • windows NT(PPTP)
  • 802.11b(WEP)

原理

为了缩小密钥空间,将同一个密钥用于加密不同的明文。

c1=m1 XOR k
c2=m2 XOR k
这样,c1 XOR c2= m1 XOR m2。只需对每2个密文进行异或运算并判断结果是否有意义即可。

应用1:windows NT(PPTP)

PPTP:point-to-point transfer protocol
一种客户端和客户端之间通过服务器通信的协议
工作流程

Created with Raphaël 2.1.2 client(k) client(k) server(k) server(k) c1=m1 XOR PRG(k) c2=m2 XOR PRG(k)

attacker截获c1,c2,即可获取服务器和客户端之间的交流内容。

改进策略:

Created with Raphaël 2.1.2 client(k1) client(k1) server(k1) server(k1) server(k2) server(k2) client(k2) client(k2) c1=m1 XOR PRG(k1) c2=m2 XOR PRG(k2)

应用2:802.11b(WEP)

工作流程:RC4算法

Created with Raphaël 2.1.2 client(IV(i) k) client(IV(i) k) server(IV(i) k) server(IV(i) k) c(i)=m(i) XOR PRG(IV(i)||k)

IV(i):{0,1}24 每发送一条新消息递增1.这是为了防止两条信息使用相同的key。但是,每过2^24(差不多1600万)条消息,IV就会重复。而且用于加密相邻两条消息的key除了IV中1位不同之外,其他全部相同,这些key们被PRG之后仍然有规律可循。
||:消息字符串的连接

改进策略

Created with Raphaël 2.1.2 client(k) client(k) server(k) server(k) c=m XOR PRG(k)

m=m(1)||m2||……||m(n)
注意:这种序列化的加密方法导致内容和位置一一对应不能用于磁盘存储文件。 磁盘的数据是可以更改的,用户对于一个文件某处做的修改唯一对应密文中的某个位置。如果attacker知道用户可能修改的内容(m),结合修改的位置(c),就可能推测出密钥。优秀的磁盘数据加密方法应当是修改了一处内容,会波及其他没有被修改的内容。

你可能感兴趣的:(密码学)