Page 336 - 《软件学报》2026年第6期
P. 336

高睿 等: 基于国密    SM9  的密钥隔离签名                                                      2655


                    KGC  生成固定私钥的开销与        SM9  一致. 密钥隔离机制添加了临时私钥生成算法, 因此带来了物理安全设备
                 一定运算量上的提升, 并且增加了物理安全设备和不安全设备之间的                       2  个群元素的通信量. 物理不安全设备签名
                 时增加了   2  次配对运算和    3  次  G 1  群上的指数运算.

                                                   表 3 算法计算开销比较

                       方案          固定私钥生成            临时私钥生成                签名                验签
                       SM9         1E 1 +1Hash+3M        无           1E 1 +1E T +1Hash+1M  1E 2 +1E T +1P+2Hash
                     本文工作          1E 1 +1Hash+3M  3E 1 +1E 2 +1Hash+4M  4E 1 +2P+1Hash+1M  2E 1 +6P+3Hash
                            [13]
                   KS-SOK-IBS       1E 2 +1Hash    1E 1 +1E 2 +E T +1Hash  1E 1 +1E 2 +1E T +1Hash  4P+3Hash
                 注:  e(G 1 ,G 2 ) → G T  是一个双线性映射.  E 1  代指群  G 1  中的指数运算;  E 2  代指群  G 2  中的指数运算;   E T  代指群  G T  中的指数运算;
                 M  代表  Z p  域中的计算;  P 代表双线性配对运算; Hash代指哈希运算

                    本文的签名算法在时间段          i 中输出的一个签名为       σ = (S ID,i ,C i ,S i ,h,V i ). 通信开销为  1  个  G 1  群元素、3  个  G 2
                 群元素和   1  个有限域元素. 注意到签名方案中在某一确定的时段中, 签名的某些部分是固定不变的. 具体地说, 签
                 名中  S ID,i  和  C i  在同一时间段  i 中是固定的. 换言之, 如果在同一个时间段内, 用户与验证者之间不断地对不同的信
                 息执行“签名-验签”算法,      S ID,i  和  C i  只需要传递一次, 这大大减少了通信开销和验证时间.
                  6.3   实 验
                    本节我们评估了基于国密          SM9  的密钥隔离签名的性能. 在一个有          3.20 GHz 处理器和  8 GB  内存的虚拟机上
                 使用  Go  语言  (Go  版本  go1.20.2 linux/amd64) 和  gmsm  库实现了本文的方案. 实验遵循  SM9 标识密码算法   [28] 中双
                 线性对的参数选取.      G 1  中的一个点被存储为     32  个字节. 当需要存储    G 2  中的一个点时, 会将其映射到       G 1  群上再存
                 储, 因此也是   32  个字节  (因为  SM9  使用的曲线是   II 型双线性映射). 哈希输出结果为        32  个字节.
                    计算开销如表      4  所示, 私钥生成中心需要花费         0.079 ms 为用户生成私钥, 并需要使用秘密安全信道传输
                 0.032 KB  的私钥给物理安全设备. 每个时间段开始时, 物理安全设备需要消耗                    0.57 ms 产生临时私钥并且发送
                 0.064 KB  的数据给物理不安全设备. 签名时物理不安全设备需要计算                 2.66 ms. 产生签名的长度为     0.16 KB. 验证
                 者验证签名时需要消耗        7.26 ms, 开销增长的主要原因是验签算法涉及了            6  个双线性配对操作. 当用户和验证者在
                                                      C i  不需要重复传输, 实际单个签名大小只有          0.9 KB  的数据  (关系
                 同一时间段内多次通信时, 由于签名中的             S ID,i  和
                 图如图   2  所示), 对  100  条不同消息执行签名操作只需要传递         9.66 KB  的数据.


                                                 表 4 实测算法计算开销比较

                     方案       固定私钥生成 (ms)    临时私钥生成 (ms)    签名 (ms)  验签 (ms)  签名大小 (KB)  100次签名大小 (KB)
                     SM9           0.079           无          0.84    1.26      0.064          6.4
                    本文工作           0.079          0.57        2.66    7.23       0.16          9.66
                  KS-SOK-IBS [13]  0.34           0.43        1.19    4.70       0.96          64.3

                                            12
                                                                       9.664
                                            10
                                            签名大小 (KB)  8 6 4  3.904  5.824
                                                                 7.744

                                             2
                                               0.16 1.984
                                             0
                                              0    20   40   60   80   100  120
                                                           签名个数
                                         图 2 同一时间段签名大小和签名个数之间的关系

                  7   总 结

                    本文提出了一种基于国密          SM9  的密钥隔离签名方案, 解决了国产标识密码中存在的私钥暴露问题, 实现了前
   331   332   333   334   335   336   337   338   339   340   341