如果要说古典密码中,哪个最安全,那么一次性密码本一定会有一席之地。从理论层面上来说,它是牢不可破的(无法暴力破解),但在实际操作中却存在一些问题。今天我们就一起来了解这个“绝对安全的密码”——一次性密码本。

一次性密码本简介

一次性密码本英文名为One-time Pad或者OTP,是在1882年被弗兰克·米勒(Frank Miller)发现并沿用至今,它是以随机的密钥(key)组成明文,且只使用一次,需要通信双方事先去沟通一个一次性的,与被加密信息长度相等或者更长的密钥。

一次性密码本

一次性密码本的加密方法

一次性密码本的加密方式非常简单,就是将明文(待传信息的编码)和一串随机生成的二进制码进行XOR(异或)运算。

  1. 将明文编码,即转换为二进制。
  2. 随机生成和明文二进制位数相同的密钥。
  3. 将明文和密钥的二进制进行XOR操作,生成密文。

一次性密码本

一次性密码本的解密方法

解密过程依靠的是XOR操作的自反性,先简单介绍一下异或操作,如果异或的两个bit相同结果为0,异或的两个bit不同结果为1。例如:

0 XOR 0 = 0

0 XOR 1 = 1

1 XOR 0 = 1

1 XOR 1 = 0

异或还有一个非常重要的性质:自反性,a XOR b = c,c XOR b = a即对同一数进行两次异或结果将回到最初的状态。

由此,通过明文和密钥异或得到的密文,再通过将密文和密钥再次异或操作得到明文。

一次性密码本

一次性密码本的优点

虽然一次性密码本非常简单,但是一次性密码本是绝对无法破解的,这个破解并不是指现有的计算能力不够,而是指即使拥有无穷大的计算能力也无法破解。

假设我们拿到了密文并进行暴力破解,也就是将所有顺序的密钥尝试一遍,假设密文长度是32bit,那么我们将得到232数量的明文。显然我们无法判断哪一个是正确的明文,因为在所有的组合排列中可能生成多个有意义的文字。所以这种解密是无意义的,就像是我知道了原文的长度,然后自己构造这个长度的原文。因此一次性密码本是无法破译的。

一次性密码本的缺点

  • 密钥太长

一次性密码本是用与原文等长的密钥做异或得到的,如果原文很大,那么相应的密钥也就非常大。

  • 无法重用密钥

这即是一次性密码本的缺点也是优点,意味着使用时每次都要不停的更换密钥,增加了复杂性,但也保障了安全性。

一次性密码本

  • 密钥的配送

因为密钥和原文以及密文都是等长的,目标端如果想解密就必须拿到密钥,如果能够机密的传输密钥给目标端,那为什么不直接将原文机密的传送给目标端呢?

  • 密钥的保存

每次加密都需要换一个密钥,这意味着每一个明文都需要保存一个同样长度的密钥,如果明文已经可以很好的保存了,那何必多做一步加密呢?


虽然一次性密码本非常安全,但在现在中却很难使用,但是它却为很多其他的加密算法提供了灵感,由此也产生了多个变种。