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

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,没有惟密文攻击!(因为给了密文也没用,参照香农的定义~)

香农的贡献二
密钥的长度
完美安全的密码,密钥的长度不小于明文的长度

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