Page 313 - 《软件学报》2021年第9期
P. 313
俞惠芳 等:抗量子计算的多变量盲签名方案 2937
多变量公钥密码的签名和验证过程如下:
签名
1
−
1
−
n
σ
r
Q
v∈ F ⎯ r ⎯ T − 1 ⎯ →∈ F ⎯⎯⎯→∈ F ⎯⎯⎯→∈ F n
S
x
y
v′∈ F ←⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ σ ∈ F n
=
PT Q S
r
验证
r
n
r
n
n
r
这里的 S 和 T 分别是 F →F 和 F →F 的两个可逆仿射变换,Q 是 F →F 的中心映射,公钥为 P=T Q S,私钥
为{T,Q,S}.
r
r
n
−1
−1
签名:如果要对消息 m 进行签名,先计算消息 m 的哈希值 v∈F ,然后依次计算 y=T (v)∈F ,x=Q (y)∈F 和
n
−1
σ=S (x)∈F ,σ就是消息 m 的签名.
验证:如果要对签名σ进行验证,先利用公钥 P=T Q S 计算 v′=P(σ):如果 v′=v,则说明签名是有效的;否则,签
名是无效的.
1.2 盲签名的形式化定义
1.2.1 算法定义
盲签名是一种具有消息盲化特性的签名,确保了签名者在不知道具体待签消息内容的情况下进行签名,即
使签名者以后又见到了该消息签名,也不确定自己什么时候签署了这个签名.一个盲签名方案由以下几个算法
组成.
• 系统初始化:输入安全参数λ,输出系统参数;
• 密钥生成:输入系统参数,输出签名者 B 的公私钥对;
• 盲签名:该算法由如下 3 个子算法组成.
(1) 盲化:输入系统参数,消息拥有者 O 随机选取一个盲因子 e,对消息 m 进行盲化处理,将盲化后的
消息发送给 B;
(2) 签名:B 用私钥对盲化后的消息进行签名,得到盲签名σ′;
(3) 去盲化:O 用 B 的公钥和盲化后的消息对盲签名σ′进行验证:若成立,O 对盲签名σ′去盲化处理,
输出最终的签名σ;否则,签名无效;
• 验证:输入系统参数、消息 m 和 B 的公钥对签名σ进行验证:如果签名有效,输出 1;否则,输出 0.
一般地,对于消息 m,如果签名者按照正确的步骤对消息 m 进行签名,而且在传播的过程中签名没有被篡改,
那么签名σ可以通过验证.
1.2.2 安全模型
1. 盲性
定义 3. 签名者 B 对消息 m 进行签名,但是不知道消息 m 的具体内容.
对于盲性的安全模型,通过游戏 Game1 进行形式化定义.
Game1:敌手 A(模拟签名者 B)和挑战者 C 的盲签名交互过程如下所述.
(1) C 通过运行系统初始化算法生成系统参数,同时,通过运行密钥生成算法生成签名的公私钥对,然后将
系统参数和私钥发送给 A;
(2) A 随机选取两个等长的不同的消息 m 0 和 m 1 发送给 C;
(3) C 随机选取两个等长的不同的盲因子 e c ∈F 和 e 1−c ∈F,然后随机选择 c∈{0,1}.最后运行盲签名中的盲
化算法生成盲化消息 b c 和 b 1−c ,并将 b c 和 b 1−c 随机发送给 A;
(4) A 对 b c 和 b 1−c 依次执行盲签名中的签名算法,得到盲签名 σ ′ 和 σ ′ ,并将 σ ′ 和 σ ′ 依次发送给 C;
1 c−
1 c−
c
c
(5) C 利用盲因子 e c 和 e 1−c 对盲签名 σ ′ 和 σ ′ 去盲化处理,得到签名σ c 和σ 1−c ;然后,将σ c 和σ 1−c 依次发送
1 c−
c
给 A;
(6) A 输出一个 c 的猜测值 c′∈{0,1}.