一次性密码簿(OTP)上的Wikipedia条目指出该密码是否正确使用;即,密钥是真正随机的,并且密钥的每个部分彼此独立,这是不可破解的,并且产生了完美的保密性,即$ H(M | C)= H(M)$。

举一个例子说明,对纯文本“ HELLO”进行密码分析将产生概率相等的所有纯文本,例如“ HELLO”,“ LATER”。

现在,考虑一些我用OTP加密的数据知道是英文句子。凭借无限的计算能力,我可以生成所有纯文本。现在,因为句子中的每个单词都与附近的单词相关,所以我至少可以缩小范围的可能性(我不知道将英语句子塞成M个字母的组合形式),这并不等于完全保密(熵$ H(M)$似乎已经减少了!)。

总而言之,OTP保证$ H(M | C)= H(M)$,但是我的问题是$ H(M )$将由于了解明文而减少,因此如何确保完全保密?

评论

@ user12480 OTP保证H(M | C)= H(M),但是我的问题是,通过了解明文可以减少H(M),而OTP对此无能为力。那么如何确保完全保密,给出任何明文。

简单回答:这些知识能为您带来什么?没有。您之所以像以前一样聪明,是因为您仍然不知道原始消息是什么,即使您知道该消息:如果不知道所使用的密钥,也无法证明这是原始消息。

#1 楼

您实际上已经被OTP会隐藏有关底层明文的所有信息的思维定势所困。

正如您所观察到的,这是不正确的。

完美保密的定义由Katz-Lindell在“现代密码学简介”中给出,其内容如下:定义2.3带有消息空间$的加密方案$(\ text {Gen,Enc,Dec})$如果对于$ \ mathcal M $上的每个
概率分布,每条消息
$ m \ in \ mathcal M $和每个密文$ c \ in \ mathcal C $,\ mathcal M $都是完全秘密的其中
$ \ Pr [C = c]> 0 $:

$$ \ Pr [M = m \ mid C = c] = \ Pr [M = m] $$


换句话说,如果手头有密文,那么您将不会学到关于明文还不了解的新知识。

OTP满足了这一要求(在“现代密码学简介”中得到了证明),因此作为加密方案是完全秘密的。简而言之,它首先显示$ \ Pr [C = c \ mid M = m'] = 2 ^ {-l} $,然后使用它显示$ \ Pr [C = c] = 2 ^ {-l} $并通过$ \ Pr [M = m \ mid C = c] = Pr [M = m] $结束(使用贝叶斯定理)。

评论


$ \ begingroup $
嗨,又出现了一个疑问。 OTP告诉我明文的长度。那就是熵的减少,完美密码(产生可变长度密文的密码)可以避免。因此,它不再是完全保密的了(假设消息空间中的消息长度不均匀)?
$ \ endgroup $
– xyz
16-09-28在6:19



$ \ begingroup $
@ prakharsingh95我敢肯定,这里隐式假定消息空间仅包含固定大小的消息(您也可以在证明草图中看到,消息长度$ l $是固定值)。隐藏消息长度不是(通用)密码学的目标。
$ \ endgroup $
– SEJPM♦
16-09-28在14:25

$ \ begingroup $
哦,我明白了。只要消息空间是有限的,我就可以填充它以生成相等长度的消息,因此我想不需要隐藏长度o_O。
$ \ endgroup $
– xyz
16-09-28在14:36

#2 楼

您提出的建议等同于尝试在没有任何密文或其他材料的情况下进行密码分析。

等价地,您可以仅获取您知道的小明文种子,而没有别的,然后通过概率运行它语言模型来预测最可能的消息。 (例如,马尔可夫链文本生成器)。显然,这并不会使您走得太远...例如,考虑一个人知道明文“攻击d___”。我不愿意完全依靠一种语言模型来决定我是否应该为“黎明”或“黄昏”做好防御措施。

这里的关键是,所有事物都是平等的,访问OTP加密的密文不会给您任何新信息(可能超出消息长度的上限)。

#3 楼

您说:


“我至少可以缩小可能性的范围。”


这是OTP完美的一个例子机密,为什么您的陈述尽管正确,也无所谓。

我写了一个句子,用OTP加密后看起来像这样:


aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
祝你解密!也许您可以将其缩小到几百万(或十亿?)个英语句子,但这对您没有帮助。您怎么知道这是一句话呢?此外,随着数据大小的增加,可能性的数量接近无限。甚至单个字符的消息也无法解密:


a


您可以将单个字符缩小到128(或256或65K,具体取决于关于编码)的可能性,但同样,对您的帮助并不大。

评论


$ \ begingroup $
我认为这很好!
$ \ endgroup $
–卡里·邦多克(Cary Bondoc)
16年2月5日在6:15

$ \ begingroup $
@ prakharsingh95,知道英语字母的出现频率如何对OTP编码的消息有帮助?可以肯定的是,凯撒移位的变化,但是使用随机OTP密钥,没有任何模式可以让您识别密文中的相同字符。
$ \ endgroup $
–巴尔德里克
17年6月12日在13:15

$ \ begingroup $
@Baldrickk认为解密是找到消息“ M”,该消息在观察到的密文“ C”上使概率“ Pr {C | M}”最大化。没有包含在密文中的有关消息“ M”的任何信息都会增加此可能性,从而增加了解密文本正确的可能性。例如,如果您必须解密一个密文字母,则它成为任何字母的机会是26中的1。但是,如果您还知道密文中的字母是英语单词的一部分,则可以使用英文字母的频率下注“ e”,那么您将有正确的时间是12.7%。
$ \ endgroup $
– xyz
17年6月16日在8:49

$ \ begingroup $
@Baldrickk准确地说,每26个字符中有1个估计会产生每个字符4.7位的熵,而如果使用字母频率,则为4.11位。但这只是一个字母。如果使用更长的密文,则可以将其范围进一步缩小(每个字母2位),这是6.5倍的改进!
$ \ endgroup $
– xyz
17年6月16日在9:01



$ \ begingroup $
@ prakharsingh95这些数字有参考吗?这就是说,如果您知道明文是英语,则“猜测”的输出也应该类似于英语。您比开始猜测之前了解的更多。 “猴子吃香蕉”仍然比“这是28个字符的行”可能性更大。
$ \ endgroup $
–巴尔德里克
17年6月16日在11:00