PromleeBlog
网站地图
关于博客
菜单
学习
Security Theory
Public Enc
公钥密码概述
公钥密码概述
📅
什么是公钥密码?
公钥密码的定义
公钥密码的安全模型
什么是公钥密码? (What is Public Key Cryptography?)
🔗
用于加密的密钥与用于解密的密钥不同。
常见方案有RSA、ElGamal和NTRU等。
优点:便于共享密钥,需要的密钥数量较少。
缺点:比对称密钥加密慢。
公钥密码的定义 (Definition of Public Key Cryptography)
🔗
定义:公钥加密方案PKE由以下算法构成。
KeyGen(λ):输入安全参数λ,输出(pk, sk)。
Enc(pk, M):输入公钥pk和明文M,输出密文C。
Dec(sk, C):输入私钥sk和密文C,输出明文M。
正确性
对于安全参数λ和所有明文M,如果以下等式成立,就称公钥加密方案PKE是正确的。
👨💻
D
e
c
(
s
k
,
E
n
c
(
p
k
,
M
)
)
=
M
Dec(sk, Enc(pk, M)) = M
Dec
(
s
k
,
E
n
c
(
p
k
,
M
))
=
M
其中,(pk, sk)是KeyGen(λ)的输出。
公钥密码的安全模型 (Security Model for Public Key Cryptography)
🔗
考虑挑战者C与攻击者A之间的一场游戏。
A的目标是破解公钥加密,也就是从密文中找到明文M。
Setup:挑战者C输入安全参数λ,输出(pk, sk)。
然后将其中的公钥pk交给A。
Phase1:A向C发送解密查询请求。
也就是说,A将任意密文
C
i
C_i
C
i
发送给C,C返回
D
e
c
(
s
k
,
C
i
)
=
M
i
Dec(sk, C_i) = M_i
Dec
(
s
k
,
C
i
)
=
M
i
。
Challenge:A选择两个明文
M
0
,
M
1
M_0, M_1
M
0
,
M
1
,C从中选一个(
b
∈
{
1
,
2
}
b \in \{1, 2\}
b
∈
{
1
,
2
}
),并返回
E
n
c
(
p
k
,
M
b
)
=
C
b
Enc(pk, M_b) = C_b
E
n
c
(
p
k
,
M
b
)
=
C
b
。
此时,A猜测
b
b
b
,判断密文对应的是哪一个明文。
Phase2:A向C发送解密查询请求。
也就是说,A将任意密文
C
i
C_i
C
i
发送给C,C返回
D
e
c
(
s
k
,
C
i
)
=
M
i
Dec(sk, C_i) = M_i
Dec
(
s
k
,
C
i
)
=
M
i
。
A猜测
b
b
b
,然后检查猜测是否正确。
A
d
v
P
K
E
(
λ
)
=
P
r
[
b
=
b
′
]
−
1
2
Adv_{PKE}(\lambda) = Pr[b = b'] - \frac{1}{2}
A
d
v
P
K
E
(
λ
)
=
P
r
[
b
=
b
′
]
−
2
1
👍
如果攻击者无法在安全参数下获得不可忽略的优势,则称该公钥加密方案具有IND-XXX安全性。
XXX由攻击者可以访问的解密预言机决定。
CPA (Ciphertext Only Attack):仅利用密文寻找明文的攻击。
CCA (Chosen Ciphertext Attack):对任意密文进行解密的攻击。
CCA2:结合密文解密攻击与使用解密预言机的攻击。
公钥密码概述 | PromleeBlog