为什么用相同的一次性密码加密效果不好?


20

要使用一次性密钥加密消息,请执行 。 ķ Ë Ñ Ç 1ķ = 1ķ1个ķËñC1个ķ=1个ķ

如果使用相同的加密不同的消息则会得到 ,如果对两个密文执行Xor,则将得到 2 ë Ñ Ç 2ķ = 2ķ 1ķ 2ķ = 12ķ2ËñC2ķ=2ķ

(m1k)(m2k)=m1m2

好的,因为您学习了,所以存在一些信息泄漏,但是为什么它不安全?除非我知道否则我无法学习(说)。那么为什么两次使用是错误的呢?1 2 ķm1m2m1m2k


是的,这是播种。主要是,引发有关crypto.se和cs.se之间边界的争论。
Ran G.

请参阅此处以了解所用标签的讨论。
拉斐尔

我记得我看到了一个可视化的图像,它非常清晰,但是现在找不到。有人知道我在说什么吗?(我希望我不要将它与其他加密图片(例如ECB linux-pinguin等)混淆。)
Ran G.

1
@RanG。:对-相应的crypto.se问题是在利用一次性填充密钥重用上?
大卫·卡里

Answers:


14

除非我知道否则我无法学习(说)。m 2m12

这就是问题所在-如果您重复使用同一密钥,并且某人可以访问以明文和加密形式加密的一条消息,那么他们可以使用该消息来找到您的密钥:

2ķ2=ķ

作为替代方案,如果您反复使用相同的密钥,攻击者可能只能猜测出各种加密消息的片段,每次成功的猜测都会揭示出一部分密钥,因此随着时间的推移,越来越多的关键被揭示。ķ

这种破坏密码系统的一般策略被称为已知的纯文本攻击。人们认为,像AES和RSA这样的许多系统都可以抵御这些攻击。但是,除非每次加密都使用一个新的便笺簿,否则一次性便笺簿将变得完全不安全,这就是为什么它们被称为“一次性便笺簿”。


11

正是由于您提到的原因,它是不安全的-有一些信息泄漏。

基本上,如果您对纯文本(英语文本,结构已知的文件等)有任何假设,则可以轻松进行统计分析。大概使用两次不会显着改变攻击的实用性,但是多次使用非随机明文来使用它,最终会显示出足够的信息来恢复密钥。

最后,如果您只能使用它两次,那么您也只能使用一次 -限制是不要一次性使用这些一次性垫,并且随着时间的流逝,将会损坏次数。

在一个极端情况下,如果您知道(已知的纯文本)只是填充板长度的空字符串,那么您在计算之前已将攻击者的密钥交给了攻击者。1个2

已知的纯文本攻击相当普遍,强制采用加密机制对您已知的事物进行加密是相当容易的。如果没有,通常可以做出合理的统计假设。


此外,一个时间片具有以下特性:如果您知道密文甚至是纯文本的一部分,则可以立即恢复密钥的相应部分,这意味着用该时间片加密的所有将来消息的一部分都将有效地发送到密钥中。清晰(更容易猜测更多的纯文本,揭示更多的键等)。如果您正在加密电子邮件或HTTP请求等许多内容,则攻击者几乎总是可以仅由于这些协议的结构而知道部分纯文本。
2012年

6

1个ķ2ķ=1个2

日志226=4.7

如果您想使用一次性垫两次,则需要先压缩您的消息。即使这样,如果您没有使用近乎完美的压缩算法,并且多次使用一次性填充,则理论上将剩下足够的熵来恢复消息。我不知道在实践中会有多困难。


4

1个21个2

实际上,在许多情况下,这非常简单。 这是一个简单的可视化。


2

这是一种无需借助数学即可表示方法的直观方法。假设您有两条加密的邮件,这些邮件已由同一时标加密。

  1. 对其中一条消息中可能包含的单词或短语进行猜测。比方说“天气报告”
  2. 从消息1开始,假定“天气报告”出现在第一个字母位置。
  3. 反向计算一个时标的前14个字符。
  4. 使用反向计算的OTP解密消息2的前14个字符。
  5. 如果明文看起来像gobble-di-gook,请返回步骤2并在第二个字母位置重复。但是,如果您收到有意义的文本(例如“早安I”,那么恭喜您,您已经算出了OTP的前14个字符(每个字母的前14个字符)
  6. 如果您到达消息1的末尾而没有抛出除随机字母以外的任何内容,那么您可以得出结论,消息1中没有出现“天气报告”短语。请使用其他短语(如“亲爱的上校”)返回到步骤1。 ”
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.