为什么不可能实现“无限”一次性填充算法?

时间:2015-05-30 08:14:32

标签: encryption encryption-symmetric

我已经对此做了一些研究,但我仍然不确定为什么这不能实现。如果我们可能通过USB或其他物理安全方法共享初始OTP,我们当然可以在后面的消息中包含下一个OTP。

[编辑:更具体地说,如果我采用双倍长度的垫,将其分成x和y。然后使用x加密消息,并使用y两次加密下一个pad,那会不安全吗?]

2 个答案:

答案 0 :(得分:4)

您必须将每个消息位与相同大小的OTP位配对。 OTP数量有限。

如果将所有OTP位与下一个OTP的位配对...

a b c d e ...
q w e r t ...

没有留言的余地。如果你继续花费你的OTP转移另一个OTP,那么永远不会有留言的空间。

你不能压缩OTP,因为OTP的强度是它完全随机 - 这使得代码破坏者无法做到,因为没有模式可以锁定。

压缩是一种技术,通过查找模式并用更短的替换它们来工作......大型重复块在这里和那里随处可见"信号 - 根据定义,没有完全随机的模式,因此OTP不可压缩。

如果你可以稍微压缩一下,你就可以做到这一点,但不再将它描述为OTP,它很弱 - 并且还大量浪费带宽。如果你可以压缩很多,那就把你的随机数生成器扔掉吧。

在linux机器上快速测试概念:

$ dd if=/dev/urandom of=/tmp/test count=10k
    -> 5Mb file of randomness

$ bzip2 /tmp/test 
    -> 5.1Mb file
$ gzip /tmp/test
    -> 5.1Mb file

通过添加所有bzip / gzip文件格式信息而不执行任何其他操作,压缩打击垫会使其变大。

答案 1 :(得分:0)

除了缺乏模式之外,使One-Time Pad强大的原因在于无法判断所使用的密钥是否正确。消息可以被解密以显示一些“接管世界”的场景,但实际上,每个使用该确切长度的密钥加密的消息都有一个密钥,可以逐字逐句地显示完全相同的消息。这意味着您可以获得实际解密的消息和正确的密钥,但是不可能知道这是这种情况,并且因为字面意义上任何消息(并且我确实意味着字面意义)都可能是结果。即使橡胶软管解密也行不通。即使被“说服”的人给出正确的钥匙,也无法确定。人们通常习惯拥有假密钥来解密消息,以揭示一个不是调查员正在寻找的消息,但绝对是一个甚至完全无辜的人会隐藏的东西。例如,隐藏机密信息的OTP可能会有一个假钥匙,显示有人对他们的指挥官说不好。