Page 39 - 《软件学报》2025年第10期
P. 39
4436 软件学报 2025 年第 36 卷第 10 期
定义 2. 公钥加密方案在选择明文攻击下的不可区分安全性 (IND-CPA 安全性). 公钥加密方案 PKE 满足选择
明文不可区分安全敌手 A 和挑战者之间进行如算法 1 所示游戏, 敌手的获胜优势为:
1
Adv IND-CPA = Pr[G IND-CPA ⇒ 1]− ⩽ negl(n).
PKE,A PKE,A 2
算法 1. G IND-CPA .
PKE,A
输入: 安全参数 λ;
?
输出: 敌手是否取得成功 (即 b =b), 成功则输出 0, 失败则输出 1.
′
λ
1. (pk, sk) ← Gen(1 )
$
2. b ←− {0,1}
3. (m 0 ,m 1 ) ← A Enc (pk)
4. c ← Enc(pk,m b )
∗
5. b ← A Enc (pk,c )
′
∗
?
′
6. return b =b
本文中, 密钥导出函数 KDF 用于导出链式会话密钥. KDF 具有两个输入, 我们用 KDF(X,Y) = Z 表示密钥导出
X, Y , 输出为 Z, Z 中包含 3 Z = Z 1 ||Z 2 ||Z 3 KDF(X,Y) 输出的第 KDF i (X,Y). 每
,
函数, 其中输入为 个块 i 个分块记作
个分块长度为 32 字节.
定义 3. 带关联数据的认证加密 (authenticated encryption with associated data, AEAD) . AEAD = {KeyGen,
[7]
λ
1
K N ∈ {0,1} M ∈ {0,1} H ∈ {0,1} : (1) 密钥生成算法
Enc,Dec}, 其安全参数为 λ, 定义空间 , l , ∗ , ∗ KeyGen 的输入为 ,
λ H ∈ H, 消息
输出 k ∈ K, 该过程记作 k ← KeyGen(1 ). (2) 加密算法 Enc 的输入为 k ∈ K, 一次性随机数 N ∈ N , 头
∗ k ∈ K, 一次性随
M ∈ M, 输出为密文 C ∈ {0,1} , 该过程记作 C := Enc(k,N,H, M). (3) 解密算法 Dec 的输入为密钥
C
′
机数 N ∈ N , 头 H ∈ H, 密文 , 若解密成功, 则返回 M , 若解密失败则返回 ⊥.
对于概率多项式时间的敌手 A, 其输入为安全参数 , Enc(·,·,·), 加密预言机的输入为
λ A 可以访问加密预言机
(N,H, M), 预言机会随机选择 k ∈ K, 输出 Enc(k,N,H, M). 如果敌手能够输出 (N,H,C), 满足 M :=Dec(k,N,H,C),⊥
且 (N,H, M) 从未询问过加密预言机 Enc(·,·,·), 则称敌手 A 伪造密文成功. 如果敌手伪造密文成功的概率 Adv aead-auth (λ)
AEAD,A
可以忽略, 我们称 AEAD 为 aead-auth 安全的.
3 Kyber-PFS-AKE 协议设计
Kyber-AKE 握手过程的 3 次封装和解封装计算分别起到不同的作用. 发起者和响应者各自拥有用于认证身份
spk 加密的密文, 代表响应者可
的长期公私钥对, 分别记作 (spk ,ssk i ) 和 (spk ,ssk r ), 响应者有能力解密发起者使用
i r r
以向发起者认证自己的身份. 发起者有能力解密响应者使用 spk 加密的密文, 代表发起者可以向响应者认证自己
i
的身份. 发起者能够解密响应者通过临时公钥加密的密文可以保证了握手的前向安全性. 因此, Kyber-AKE 将这三
者各自的共享密钥进行密钥导出, 作为双方的会话密钥.
然而, 这种设计中存在无法抵御的攻击. 如: (1) MEX (maximal exposure) 攻击 [5] . 在 MEX 攻击中, 敌手可以获
得握手过程中生成的所有临时密钥和随机数. 这类攻击通常发生在运行环境或使用的随机数生成器被破坏的情
况下. 此外, eCK-PFS-PSK 模型允许敌手获取发起者或者响应者的长期私钥. 在基于 DH 设计的 AKE 中, 可以通
过双方的长期私钥进行 DH 密钥交换处理. 但是在使用公钥加密的情况下, 无法将双方的长期私钥通过公钥加密
或者密钥封装结合在一起. 因此一种可能的处理方式 [11] 是双方各自保持长期的随机数 σ 和短期的 (定期更新的)
随机数 r, 即: 发起者持有长期随机数 σ i 和短期随机数 , 响应者持有长期随机数 σ r 和短期随机数 . 发起者通过
r r
r i
KDF(σ i ,r i ) 作为其 PKE KDF(σ r ,r r ) 作为
密钥派生函数计算 中被加密的对象 m 1 , 响应者通过密钥派生函数计算
其 PKE 中被加密的对象 m 3 . 通过这种方式将双方各自的长期/临时随机数放入会话密钥中, 以抵抗 MEX 攻击.

