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}.
   308   309   310   311   312   313   314   315   316   317   318