Page 294 - 《软件学报》2021年第11期
P. 294

3620                                Journal of Software  软件学报 Vol.32, No.11, November 2021

                                         Table 4    Comparison of computational complexity
                                                   表 4   计算复杂度对比
                                                   签密                           解签密
                            方案名称
                                        计算复杂度              统一化           计算复杂度         统一化
                            文献[7]       nT b+nT e+T pm   (327n+29)T m     3T b+T e     501T m
                            文献[9]      T e+(3+m+n)T pm  (29m+29n+327)T m  4T b+(4+m)T pm  (29m+464)T m
                            文献[24]      2nT e+(n+1)T pm  (509n+29)T m   2T b+3T e+T pm  923T m
                            文献[25]    (n+2)T b+(m+n+3)T pm  (116n+29m+261)T m  6T b+(m+2)T pm  (29m+580)T m
                            文献[23]       (3n+1)T pm       (87n+29)T m      5T pm       145T m
                            文献[28]      T e+(1+2n)T pm   (58n+269)T m     T e+2T b     414T m
                            文献[29]      T b+(2+n+m)T e  (240n+240m+567)T m  (n+3)T b  (87n+261)T m
                             本文          (2n+1)T pm       (58n+29)T m      7T pm       203T m
                    从表 4 中可知,文献[23]和本文均是基于椭圆曲线实现的多接收者签密算法,无论是签密还是解签密过程,
                 比其他几种基于双线性对实现的多接收者签密方案                   [7,9,24,25,28,29] 的计算复杂度普遍要低.虽然在解签密过程中,
                 文献[23]要比本文的方法执行效率较高,但在执行签密过程时,本文计算复杂度要低.此外,本文提出的方案在执
                 行解签密操作时,接收者会首先利用自己的私钥信息进行身份校验,如果校验不通过,后续的解签密操作无需执
                 行,可以减少接收者的计算负担,增加系统的执行效率.
                    当发送者伪装身份个数 m 较小而接收者的数量 n 较大时,文献[9]中的签密操作执行效率比本文方案更高,
                 但是此时发送者的匿名性将会减弱,攻击者猜中其身份的概率将会增加,进而影响其安全性.此外,在执行解签
                 密操作时,本文提出的方案,其性能要优于文献[9].
                 7    基于区块链的 KGC 密钥更新策略

                    本文提出的签密方案中,KGC 由一组节点组成,各节点以时间周期τ同步更新子密钥信息.为了实现同步的
                 目的,一种直接的方式是指定某一节点为时间服务器,在周期到来时,向其他节点广播同步消息,其他节点收到
                 该消息后,执行密钥更新操作.然而,这种方式将会加重通信负担.此外,一旦时间服务器被攻破,将会影响整个系
                 统的安全性.另外一种方法是设定 KGC 各个节点时刻一致,然后约定更新周期,各节点根据本地时间更新子密
                 钥信息.然而,这种依赖本地时间的更新策略,会由于出现网络攻击、机器故障等问题导致各节点不能同步更新.
                 本文提出了一种基于区块链的 KGC 密钥周期更新策略,根据公有链中块高度和块时间戳来触发密钥更新操作.
                 新方案由区块不可篡改特性保证了周期更新过程的安全性.另外,该方案不需要执行交易过程,因此是免费的,
                 最后,不需要 KGC 各节点之间执行通信过程,减少了带宽资源的消耗.
                    以以太坊为例进行说明,矿工在挖到一个区块时,会将自己本地时间记录到区块中作为区块时间戳,因此在
                 这种场景中,矿工是可以根据自己的意愿随意调整挖出块的时间戳.但是实际中,矿工需要将挖出的区块进行全
                 网公布,其他矿工需对该区块进行校验,该区块对应的时间戳必须大于其祖先块对应的时间戳,时间戳误差必须
                 处于区块链全网节点容忍范围内,否则,上述区块会被网络拒绝.因此,主链区块时间戳在一定程度上能够反映
                 当时真实时间.因此,基于以太坊实现同步更新操作具有一定的可行性.需要说明的是,在应用到 KGC 密钥更新
                 过程中,这种时间误差会增加密钥更新过程的不确定性,使攻击者不能知道密钥更新的准确时间,加大了攻击者
                 攻击的难度.
                    攻击者若要攻击该周期更新方案,首先必须要知道准确的更新周期,根据周期计算出对应区块编号,然后必
                 须掌握 51%的算力,篡改上述区块的时间戳,而这在实践中是非常困难的.由于以太坊出块周期为 15s,因此在实
                 际应用中,周期应尽量设置为 15s 的倍数.由于 KGC 密钥更新过程不需要过于频繁,15s 倍数的周期更新方案在
                 本场景中是可行的.需要注意的是,以太坊区块时间戳是 Unix 时间戳,定义为从格林威治时间 1970 年 1 月 1 日
                 0 时 0 分 0 秒起至现在的总秒数,Unix 时间戳可以换算成“年/月/日/时/分/秒”的表述形式,后面不做说明的话,时
                 刻均以 Unix 时间戳表述.
   289   290   291   292   293   294   295   296   297   298   299