首页 > 其他 > 详细

Cryptography | 密码学课程笔记 | 一次密码本

时间:2020-05-23 12:11:21      阅读:85      评论:0      收藏:0      [点我收藏+]

definition

一个三元组定义了密码的环境 ——(K, M, C)

  • K:key space, a set of all possible keys
  • M:a set of all possible messages
  • C:a set of all possible ciphertexts

密码本身是一对算法E和D。(E, D)

  • 加密算法 E(K,M) = C
  • 解密算法 D(K,C) = M

一次性方程

密码必须满足一致性方程(算法一致,密钥一致,否则无法解密)

任意m∈M, k∈K ,
D(k,E(k,m)) = m

Tips

1.加密算法随机生成密钥(总是随机算法),解密算法的密钥和密文总是一致的(确定算法)

2.算法的效率

  • 多项式时间内完成,取决于输入的规模
  • 特定时间内完成

一次性密码本(The One Time Pad )

加密: C = E(K,M) = K⊕M

msg 0 1 1 0 1 1 1
k 1 0 1 1 0 0 1
c 1 1 0 1 1 1 0

解密: M = D(K,C) = D(K,E(K,M)) = K⊕(K⊕M) = K⊕K⊕M = 0⊕M = M;

k 1 0 1 1 0 0 1
c 1 1 0 1 1 1 0
msg 0 1 1 0 1 1 1

由此可见,一次性密码本满足一次性方程,是密码!

Tips: K = M⊕C

如何推导?
C = K⊕M => C⊕M = K⊕M⊕M => C⊕M = K

OTP算法评价
优点:安全
确定:密钥太长

密码安全性

香农的贡献一
技术分享图片

任何明文(M1,M2...)经过加密后生成C的概率都一样,就是完美安全密码。
从密文来看,我们无法得知C背后的明文是哪一个,因为概率都相等啊!

OTP has perfect secrecy!

proof:
E(K,M) = C  
=>  K⊕M = C
=> K = C⊕M = M⊕C  
=> #{k ∈ K:E(k,m) = c} = 1 
//满足E(k,m) = c的密钥只有一个!
对于一次性密码本OTP,没有惟密文攻击!(因为给了密文也没用,参照香农的定义~)

香农的贡献二
技术分享图片
完美安全的密码,密钥的长度不小于明文的长度

Cryptography | 密码学课程笔记 | 一次密码本

原文:https://www.cnblogs.com/tanghm/p/12941350.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!