一次性密码本(绝对无法破解)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
⼀次性密码本(绝对⽆法破解)
⼀次性密码本
⼀次性密码本即Vernam Cipher,是由Gilbert Vernam在1917年,开发的⼀种加密算法。
是⼀种通过在⽂本的⼆进制级别上进⾏⼯作来对纯⽂本进⾏加密的密码技术。
之所以叫做⼀次性密码本,是因为加密所⽤的密钥是⼀次性的,即密钥只会使⽤⼀次,不会出现因为密钥泄露导致之前的加密内容被解密。
即使密钥不⼩⼼被泄露,也只会影响⼀次通信过程。
加密
众所周知,任何信息在计算机内部都是由0,1两个数字保存,在进⾏传输时需要将传输的信息转化为对应⼆进制码传输,例如,传输⽂本消息,就需要利⽤特定的编码⽅式编码,⽐如常⽤的ASCII,Unicode等。
⼀次性密码本的加密⽅式⾮常简单,就是将明⽂(待传信息的编码)和⼀串随机⽣成的⼆进制码进⾏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即对同⼀数进⾏两次异或结果将回到最初的状态。
由此,通过明⽂和密钥异或得到的密⽂,再通过将密⽂和密钥再次异或操作得到明⽂。
以此实现⼀次性密码本的解密过程。
绝对⽆法破解
虽然⼀次性密码本⾮常简单,但是⼀次性密码本是绝对⽆法破解的,这个破解并不是指现有的计算能⼒不够,⽽是指即使拥有⽆穷⼤的计算能⼒也⽆法破解。
假设我们拿到了密⽂并进⾏暴⼒破解,也就是将所有顺序的密钥尝试⼀遍,假设密⽂长度是128bit,那么我们将得到2^128数量的明⽂,那么我们怎么判断哪⼀个明⽂是正确的呢?显然我们⽆法判断哪⼀个是正确的明⽂,因为在所有的组合排列中可能⽣成多个有意义的⽂字。
所以这种解密是⽆意义的,就像是我知道了原⽂的长度,然后⾃⼰构造这个长度的原⽂。
因此⼀次性密码本是⽆法破译的。
缺点
既然⼀次性密码本⽆法破解,那为什么现实中⼀次性密码本没有被使⽤呢?
1、密钥配送问题
密钥和原⽂以及密⽂都是等长的,⽬标端如果想解密就必须拿到密钥,如果能有⼀种⽅法将密钥安全地发送出去,那么岂不是也可以⽤同样的⽅法来安全发送明⽂吗?
2、密钥保存问题
如果有办法安全保存与明⽂⼀样长的密钥,那不是也有办法安全保存明⽂本⾝吗?也就是说,从⼀开始我们根据就不需要密码。
3、密钥的重⽤
在⼀次性密码本中绝对不能重⽤过去⽤过的随机⽐特序列,⼀次性密码本中的“⼀次性”也正是由此⽽来。
这是因为作为密钥的⽐特序列⼀旦泄密,过去所有的机密通信内容将全部被解密。
每个密钥只⽤⼀次,这即是缺点也是优点。
意味着我们每次都要不停的更换密钥,增加了复杂性。
4、密钥的同步
当明⽂很长时,⼀次性密码本也会跟着变长。
如果明⽂是⼀个⼤⼩为100MB的⽂件,则密钥的⼤⼩也⼀定是100MB。
⽽且在通信过程中,发送者和接收者的密钥的⽐特序列不允许任何错位,否则错位的⽐特后的所有信息将⽆法解密。
5、密钥的⽣成
在⼀次性密码本中,需要⽣成⼤量的随机数。
这⾥的随机数并不是通过计算机程序⽣成的伪随机数,⽽必须是⽆重复性的真正随机数。
最后,虽然⼀次性密码本⽆法在现实中使⽤,但是它给其他的加密算法以启发,产⽣了很多个变种。