Page 334 - 《软件学报》2026年第6期
P. 334
高睿 等: 基于国密 SM9 的密钥隔离签名 2653
w = e(V i ,P t ID,i ·ψ(S ID,i ))·e(S ID,i ,P 2 ) h
′
2
2
ρ
l
= e(J ,P t ID,i · P )·e(S ID,i ,P 2 ) h
i 2 2
ρ
(r−h)· t ID,i +ρ ρ
= e(P ,P t ID,i · P )·e(S ID,i ,P 2 ) h
1 2 2
ρ h·ρ
(r−h)· t ID,i +ρ ·(t ID,i +ρ)
= e(P 1 ,P 2 ) ·e(P 1 ,P 2 )
= e(P 1 ,P 2 ) (r−h)·ρ ·e(P 1 ,P 2 ) h·ρ
= e(P 1 ,P 2 ) r·ρ
ρ
= e(P ,P 2 ) r
1
= e(S ID,i ,P 2 ) r
= w 2 ,
因此合法生成的签名均可通过验签算法. 证毕.
5 安全性证明
定理 2. 设密钥隔离的 SM9 签名算法中的哈希函数 H 1 、H 2 、H 3 是随机预言机, 如果 q-SDH 假设和 KEA 假
设成立, 则密钥隔离的 SM9 签名算法是安全的.
证明: 假设在 ID-KI-UF 安全模型中, 存在 PPT H i (i = 1,2,3) q E 次固定私
,
攻击者
A, 在询问
q H i 次随机预言机
ϵ
钥生成预言机, q T 次临时私钥生成预言机和 q S 次签名预言机之后, 能以不可忽略的优势 伪造签名, 则可构造一
a 2
a q
个 PPT 模拟器 B 以不可忽略的优势攻破 q-SDH 问题. q+2 个元素 (P,Q,Q ,Q ,...,Q ) ∈ G 1 ×G q+1 是一个 q-SDH
a
2
1
问题实例. B 需要找到一个二元组 (c,P c+a ), 其中 c ∈ Z q .
● 系统建立阶段: B 首先执行以下操作, 隐式地将系统主私钥 α 设置为 a.
∗ ∗
(1) 随机选择 j ∈ [1,q], 从 c ∈ Z q 中随机选取 q 个两两不同的数 x , x 1 , x 2 ,..., x j ∗ −1 , x j ∗ +1 ,..., x q 并定义多项式 f(z) =
q q−1
∏ ∑
j
(z+ x j ) = c j z mod q, 其中 c i 为多项式 f(z) 的系数.
j=1,j,j ∗ j=0 q−1 c j z j
∑
(2) 计算群 G 2 的生成元 P 2 = Q f(a) = Q a j j=0 , 计算群 G 1 的生成元 P 1 = ψ(P 2 ) = P f(a) , 计算群 G 2 的元素 P Pub =
q−1
∑ c j z j
Q a f(a) = Q a j+1 j=0 作为主公钥.
q−2
f(z) ∑ a
∗ f j (z) = = j P a+x j = P a f j (a) j ∈ [1,q]\ j ,
∗
(3) 对于任意的 j ∈ [1,q]\ j , 定义 d j z mod p, 计算 . 因此, 对于任意的
1
z+ x j
a i=0
二元组 (x j ,V j = P a+x j ) 是可以被计算的.
1
(4) 运行初始化设置的其余算法, 输出公开参数 pp = {bp,H 1 ,H 2 ,H 3 ,P Pub ,B}.
● 哈希询问阶段: A 询问预言机 H 1 、 H 2 和 H 3 .
list
(1) H 1 询问: 在任何时间 A 都能询问预言机 H 1 , 为了回复询问, B 维护一个元组列表 H , 列表中存储二元组
1
(ID, x). 当 A 选择标识 ID j 问询预言机 H 1 时, B 按以下流程回复: 如果被问询的标识 ID j 已经存在于列表 H list 中,
1
∗
∗
∗
j
那么 B 回复相应的 . 否则, 记 ID j 为第 个新标识的问询. 如果 j = j , 令 H 1 (ID j ) = x , 将 x 发送给 A 并在 H list 中
x j
1
∗ ∗ list
添加二元组 (ID j , x ). 如果 j , j , 令 H 1 (ID j ) = x j , 将 x j 发送给 A 并在 H 中添加二元组 (ID j , x j ).
2
list
(2) H 2 询问: 在任何时间 A 都能询问预言机 H 2 , 为了回复询问, B 维护一个元组列表 H , 列表中存储三元组
2
(ID,i,y). 当 A 选择标识和问询时间段 (ID j ,i j ) 问询预言机 H 2 时, B 按以下流程回复: 如果被问询的 (ID j ,i j ) 已经存
$ list
list
在于列表 H 中, 那么 B 回复相应的 . 否则, 随机选取 y j ←Z p , 令 H 2 (ID j ||i j ) = y j , 并且将 y j 发送给 A 并在 H 中
y j
2 2
添加三元组 (ID j ,i j ,y j ).
list
(3) H 3 询问: 在任何时间 A 都能询问预言机 H 3 , 为了回复询问, B 维护一个元组列表 H , 列表中存储六元组
3
(ID, M,i,w 1 ,w 2 ,z). 当 A 选择 (ID j , M j ,i j ,w 1,j ,w 2,j ) 问询预言机 H 3 时, B 按以下流程回复: 如果被问询的 (ID j , M j ,i j ,
$
w 1,j ,w 2,j ) 已经存在于列表 H list 中, 那么 B 回复相应的 . 否则, 随机选取 z j ←Z p , 令 H 3 (ID j ||i j ) = y j , 并且将 z j 发送
z j
3

