一次性密码本
外观
![本页使用了标题或全文手工转换](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/OneTimePadExcerpt.agr.jpg/290px-OneTimePadExcerpt.agr.jpg)
一次性密码本(英语:one-time pad,缩写为OTP)是古典密码学中的一种加密算法。是以随机的密钥(key)组成明文,且只使用一次。
安全性
[编辑]在理论上,此种密码具有完善保密性,是牢不可破的。它的安全性已由克劳德·艾尔伍德·香农所证明。
虽然它在理论上的安全性无庸置疑,但在实际操作上却有着以下的问题:
- 用以加密的文本,也就是一次性密码本,必须确实是随机产生的。
- 它至少必须和被加密的文件等长。
- 用以加密的文本只能用一次,且必须对非关系人小心保密,不再使用时,用以加密的文本应当要销毁,以防重复使用。
加密方法
[编辑]首先手上要有一本一次性密码本用以加密文件,接着将一次性密码本里的字母,与被加密文件的字母给依序按某个事先约定的规定一一相混,其中一个相混的作法是将字母指定数字(如在英语中,将A至Z依序指定为0至25)然后将一次性密码文本上的字母所代表的数字和被加密文件上相对应的数字给相加,再除以该语言的字母数后获取其余数,假设字母数是 n(如英语为26),若就此得出来的某个数字小于零,则将该小于零的数给加上n,如此便完成加密。
举个例子,若要加密消息“This is an example”,而用以加密的一次性密码本如下所示:
MASKL NSFLD FKJPQ
则利用指定数字的方法,可分别将两者给做以下的转换:
- This is an example → 19 7 8 18 8 18 0 13 4 23 0 12 15 11 4
- MASKL NSFLD FKJPQ → 12 0 18 10 11 13 18 5 11 3 5 10 9 15 16
两者依序相加后得到的消息如下:
- 31 7 26 28 19 31 18 18 15 26 5 22 24 26 20
将以上得到的消息模26(除以26后取余数)可得:
- 5 7 0 2 19 5 18 18 15 0 5 22 24 0 20
它也就变成了
- FHACTFSSPAFWYAU
而若要解密以上消息,反向操作即可。
参考文献
[编辑]- Erskine, Ralph, "Enigma's Security: What the Germans Really Knew", in "Action this Day", edited by Ralph Erskine and Michael Smith, pp 370–386, 2001.
外部链接
[编辑]- Marcus Ranum's 一次性密码本常见问题 (页面存档备份,存于互联网档案馆)
- FreeS/WAN 一次性密码本的弱点讨论 (页面存档备份,存于互联网档案馆)
- 可汗学院一次性密码本 (页面存档备份,存于互联网档案馆)
参见
[编辑]
|