我对一次性垫感到困惑。我读过一次性键盘会生成一个与明文长度相同的密钥。这被认为是共享如此大的密钥的开销。那么伪随机密钥如何消除这种开销呢?
我读过通信方共享一个短种子,然后用它来创建一个伪随机密钥,我在关联这两种方法时遇到了麻烦。
我对一次性垫感到困惑。我读过一次性键盘会生成一个与明文长度相同的密钥。这被认为是共享如此大的密钥的开销。那么伪随机密钥如何消除这种开销呢?
我读过通信方共享一个短种子,然后用它来创建一个伪随机密钥,我在关联这两种方法时遇到了麻烦。
没有人使用一次性垫,因为它是不切实际的。现代密码学使用分组密码和流密码,因为您需要做的就是传输一个非常小的密钥,使用密钥交换方法,然后基于此密钥,您可以生成有效无限量的伪随机输出。
流密码的工作原理很像一次性密码。如果您的消息长度为 X 字节,则生成 X 字节的 PRNG 流,然后将其与纯文本消息进行异或以生成密文。如果您曾经重复使用此 PRNG 流,您可能会严重破坏消息的保密性。 对于一次性垫同样适用。 如果攻击者知道纯文本,那么简单的 XOR 会产生用于加密消息的伪随机字节。
维基百科解释了为什么在实践中不使用一次性便笺簿;需要交换很长的密钥并不是很实际。
一种替代方法是流密码。维基百科解释了流密码的工作原理。流密码使用短密钥来加密任意长的消息。
Wikipedia 解释了一次性密码本和流密码背后的关系,以及为什么您可以将流密码概念视为与一次性密码本松散相关,但密钥更短。流密码的工作原理是从一个短种子开始,使用密码学上强大的安全伪随机数生成器将其拉伸成一个长序列(与消息一样长),然后以与一次性填充相同的方式将其与消息组合做。重要的是要理解这种方法不符合一次性密码本的条件,并且不提供与一次性密码本相同的可证明安全属性。