Chapter 1 一次性密码本(one-time pad)&Kerckhoffs原则
文章目录
一、密码学基础概念
可以想象一个基础场景:Alice有一个信息m要传给Bob,但是不希望Eva知道。
1、基本概念
- 明文(plaintext) m m m
- 密文(ciphertext) c c c
- 密钥(key/secret) k k k:秘密参数
- 加密算法(encryption algorithm) E n c Enc Enc
- 解密算法(decryption algorithm) D e c Dec Dec
- 密钥生成算法(key generation algorithm) K e y G e n KeyGen KeyGen
- 密码算法可以即为 ( E n c , D e c , K e y G e n ) (Enc, Dec, KeyGen) (Enc,Dec,KeyGen),要求是不知道密钥则无法从密文 c c c中获取信息
2、Kerckhoffs原则
一个安全保护系统的安全性不是建立在它的算法是保密的,而是它所选择的密钥是保密的。
二、一次性密码本
1、具体算法
一次性密码本是一种密码算法,其中所有的密钥、明文、密文都是长度为
λ
\lambda
λ的二进制字符串。具体的密码算法如下:
其中在密钥生成算法中,是指在所有长度为
λ
\lambda
λ的二进制串中随机(服从均匀分布)选择一个。
2、正确性
首先对于一个密码算法而言,需要保证接收方能够解密密文,即对于任意 k , m k,m k,m,满足 D e c ( k , E n c ( k , m ) ) = m Dec(k,Enc(k, m))=m Dec(k,Enc(k,m))=m。
根据算法和异或的性质可知, D e c ( k , E n c ( k , m ) ) = k ⊕ ( k ⊕ m ) = ( k ⊕ k ) ⊕ m = m Dec(k,Enc(k, m))=k\oplus(k\oplus m)=(k\oplus k)\oplus m=m Dec(k,Enc(k,m))=k⊕(k⊕m)=(k⊕k)⊕m=m,因此可以解密。
3、安全性
对于一个偷听者(eavesdrop)来说,上述密码算法其实是如下的一个获取密文的过程。我们需要保证的是无法从这个结果
c
c
c中获取到有关
m
m
m的任何信息。
此处给出一次性密码本的一个结论:对于任意
m
∈
{
0
,
1
}
λ
m\in \{0, 1\}^\lambda
m∈{0,1}λ,
e
a
v
e
s
d
r
o
p
(
m
)
eavesdrop(m)
eavesdrop(m)服从均匀分布。也就是任意两个不一样的输入,加密后的密文的概率分布是一样的,因此即使获得一个密文
c
c
c也无法知道输入的是哪一个。下面给出该结论的证明:
对于给定的
m
,
c
∈
{
0
,
1
}
λ
m,c\in \{0, 1\}^\lambda
m,c∈{0,1}λ,根据eavesdrop算法有
c
=
k
⊕
m
c = k\oplus m
c=k⊕m。根据异或的性质(见Chapter 0),有
c
=
k
⊕
m
⟺
k
=
c
⊕
m
c = k\oplus m \Longleftrightarrow k = c\oplus m
c=k⊕m⟺k=c⊕m
因此
P
r
[
e
a
v
e
s
d
r
o
p
(
m
)
=
c
]
=
P
r
[
k
=
c
⊕
m
]
Pr[eavesdrop(m)=c]=Pr[k = c\oplus m]
Pr[eavesdrop(m)=c]=Pr[k=c⊕m]
对于给定的
m
,
c
∈
{
0
,
1
}
λ
m,c\in \{0, 1\}^\lambda
m,c∈{0,1}λ,其异或的结果是唯一的。而
k
k
k服从均匀分布,因此
P
r
[
k
=
c
⊕
m
]
=
1
2
λ
Pr[k = c\oplus m]=\frac{1}{2^\lambda}
Pr[k=c⊕m]=2λ1。上述结果具有一般性,因此这意味着,对于任意的
m
、
c
m、c
m、c,
e
a
v
e
s
d
r
o
p
(
m
)
eavesdrop(m)
eavesdrop(m)的结果为
c
c
c是服从均匀分布。
这也说明,一次性密码本是perfect secure(香农的完美安全定理,即 P r [ E ( k , m 0 ) ] = P r [ E ( k , m 1 ) ] Pr[E(k,m_0)]=Pr[E(k, m_1)] Pr[E(k,m0)]=Pr[E(k,m1)])
4、局限性
- 长度的一致性要求:若传递的信息很长,就需要很长的密钥,不太实用
- 一次性使用:无法保证重复使用是否会泄露信息