One-Time pad

密码学中有一种加密方法叫做 One Time Pad ,翻译过来叫做“一次性密码本”。因为这种密码最早就是真的写在一个本子上传递的,所以有了这个名字。这是一种安全度最高的加密方法,需要通信双方事先去沟通一个一次性的和被加密信息长度相等或者更长的秘钥。

次性密码本(英语:one-time pad,缩写为OTP)是古典密码学中的一种加密算法。是以随机的密钥(key)组成明文,且只使用一次。

密码学安全性最强的密码OTP(One-Time pad),OTP的安全性依赖于 ”一次一密“ 理论的安全性。

历史

1917年,Vernam发明一次一密,并为此申请了专利。

安全性

OTP是绝对安全的,是牢不可破的。香农已经证实了一次一密理论的安全性。

虽然它在理论上的安全性无庸置疑,但在实际操作上却有着以下的问题:

  • 用以加密的文本,也就是一次性密码本,必须确实是随机产生的。
  • 它至少必须和被加密的文件等长。
  • 用以加密的文本只能用一次,且必须对非关系人小心保密,不再使用时,用以加密的文本应当要销毁,以防重复使用。

加密方式

首先手上要有一本一次性密码本用以加密文件,接着将一次性密码本里的字母,与被加密文件的字母给依序按某个事先约定的规定一一相混,其中一个相混的作法是将字母指定数字(如在英语中,将A至Z依序指定为0至25)然后将一次性密码文本上的字母所代表的数字和被加密文件上相对应的数字给相加,再除以该语言的字母数后获取其余数,假设字母数是 n(如英语为26),若就此得出来的某个数字小于零,则将该小于零的数给加上n,如此便完成加密。


一次一密密码具有非常棒的安全性,但是理想很美好,现实很残酷,理想状态下的一次一密密码非常安全、非常简单同时也非常完美。但是,现实状态下的一次一密密码是几乎不可能实现的。

使用 One Time Pad 有两个最佳实践。第一,一个 One Time Pad 只用一次。第二,每个 One Time Pad 中的数据要保证真正的随机。

这意味着真正使用的时候,每次加密都需要重新生成并且再次发布给通信双方。互联网是一个不安全的环境,安全的发布 One Time Pad 其实是非常困难的,这就使得在很多的应用情形下是不能使用 One Time Pad 的。

参考

  1. 一次性密码本 - 万维百科 (wanweibaike.net)
  2. One Time Pad 一次性密码本 - 知乎 (zhihu.com)