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 时间戳表述.