樊爱宛,常 强,鲁书喜,任童童
(1.平顶山学院计算机科学与技术学院,河南平顶山467002;2.贵州电网公司遵义供电局,贵州遵义563002)
电力调度审批流程是多个调度员在同一份操作票上进行有序签名,已经涉及到有序多重数字签名技术[1].现有的电力调度系统的有序多重数字签名多是以RSA数字签名为主[2].在相同的安全强度下,椭圆曲线密码(Elliptic Curve Cryptosystem,ECC)[3]的密钥长度或数字签名的长度远小于RSA,因此在增快执行速度或节省空间方面,ECC 明显要优于 RSA[4-5].目前,ECC 有序多重数字签名在电力调度中的应用研究很少.笔者对电力调度安全性分析后,设计了一个ECC有序多重数字签名在电力调度系统中的应用方案,该方案具有抗否认性、抗伪造性、签名整体的可验证性等特点,能够较好的解决电力调度系统的安全性问题,并满足调度系统实时性的要求.
电力调度系统安全审批的具体流程见图1.利用调度操作平台,由发电调度员提出操作票申请,通过信任中心认证后,获取操作票,在签名后,转发给输电调度员,输电调度员审核签名后,转发给总值调度员,总值调度员审核签名后,交给信任中心审核是否所有人员签名后,方可进入已审综合令库,然后才能出票调度.
图1 电力调度系统安全审批流程图Fig.1 Flow chart of security approval of electrical dispatching system
在网络化审批过程中,一般需要解决操作票合法性的验证性、操作票内容的抗否认性,操作票发送者身份的可识别性、操作票的完整性和数字签名的抗伪造性等问题.
2.1.1 签名顺序初始化
假设电力调度系统有z个调度员u1,u2,…,uz,按顺序对同一操作票m进行签名.调度系统设置一个签名中心.为防止冒充签名者伪造签名,由签名中心为每位签名者产生唯一的身份ID,并将事先安排的签名顺序{ID1,ID2,…,IDZ}传给每个调度员.
2.1.2 ECC 初始化
选择有限域Fq,椭圆曲线参数D={q,FR,a,b,G,n,h}.其中q是所选有限域的阶;FR是域中元素的表示;a,b∈Fq,是定义了椭圆曲线E上的两个系数,即y2=x3+ax+b;G∈E(Fq)是椭圆曲线的一个基点;n是G的阶数;h是辅因子,标识椭圆曲线E能够构成子群的个数.
每个调度签名者选择个人私钥di,其中i∈[0,z];计算 Qi=di·G,作为公钥,其中 i∈[0,z].
签名中心选取dCA作为其私钥,并计算QCA=dCA·G作为其公钥.
所有签名者的公钥由签名中心存储.每个调度签名者可以从签名中心获取其他调度签名者的公钥.
定义H是一个单向安全的HASH函数,能够保证数据的完整性和真实性.
u1为了能够得到电力调度的权限,向签名中心提出调度权限申请.具体步骤如下:
(1)u1产生操作票m.m含有调度时间、调度内容、调度地点和调度申请人身份ID等重要信息;
(2)为防止非法者冒充u1提交操作票,u1对操作票m进行签名;
(3)将u1的签名和操作票m通过秘密通道发送给签名中心;
(4)签名中心得到签名和m,进行签名验证.若验证未通过,或者验证通过但是签名中心不允许电力调度操作,则产生警告消息回传给u1,然后转入(9),否则转入(5);
(5)签名中心产生操作票令牌Token.在每个电力签名者签名前,都需要审核操作令牌Token,以保证操作票的合法性;
(6)签名中心为操作票产生调度签名时效Time.要求用户在给定的时间Time内签名,以防止签名重播;
(7)签名中心发送Token和Time给u1;
(8)u1验证Token和Time;
(9)完成.
在上面步骤中,签名中心产生操作票令牌Token,采用签名中心对操作票 m和签名时效Time的签名方式实现.具体算法如下:
(1)签名中心随机产生整数k(0<k<n);(2)(x,y)=k·G;r=x mod n;
(3)hash=H(m‖Time)mod n,其中‖为连接符号;
(4)SCA=(k+(r+hash)dCA)mod n;
(5)Token=(SCA,r).
调度签名者在收到Token,m,Time后,对Token的验证算法如下:
(1)hash'=H(m‖Time)mod n;
(2)(x',y')=SCA·G-(r+hash')QCA;
(3)判断r=x'mod n是否成立.如果成立,则Token验证通过,否则失败.
Token验证产生与验证算法有效性的验证如下:
调度签名者ui(i≥1)收到信息后,在经过一系列信息验证后,进行数字签名,具体步骤如下:
(1)使用ui的私钥di对m和IDi形成签名S;(2)使用秘密随机数产生秘密坐标值keyi;(3)将(S,Token,m,Time)发送给下一个签名者ui+1;
(4)将(S,keyi,IDi)发送给签名中心备案,以便签名中心验证每个签名者真伪.
ui的签名算法如下:
(1)ui随机产生整数ki(0<k<n);
在方案中,要求每位签名者ui(i≥2)要对ui-1的签名进行验证.u1的签名验证其实就是对Token的验证.下面给出电力调度中的ui(i≥2)签名的验证具体步骤.
(1)首先判断签名时间Time的有效性,如果失效,则签名失败,否则,转入(2);
(2)判断Token的有效性,保证操作票及操作票令牌的完整性与真实性.如果失效,则签名失败,否则转入(3);
(3)查看m,如果不同意调度,则转入(5),否则转入(4);
(4)对S进行数字签名验证;
(5)完成.
ui数字签名验证算法如下:
(1)hash'=H(m‖Time‖IDi-1)mod n;
(2)(x',y')=Si-1·G-(ri-1+hash')Qi-1;
(3)判断ri-1=x'mod n是否成立.如果成立,则验证通过,否则失败.
签名中心的验证分为对ui的签名验证和对所有签名者的签名验证.具体步骤如下:
(1)判断Time的有效性.如果失效,则签名失败,否则,转入(2);
(2)判断m是否被修改.如果修改,签名失败,否则转入(3);
(3)对ui的签名验证,可使用3.5中的数字签名验证算法.由于 ui提交的(S,keyi,IDi)中还有身份信息和m,可以通过ui的公钥判断ui身份是否合法,从而得知m的完整性;
(4)对所有签名者的签名验证.
在签名中心已知每个调度签名者发送过来的S=(si,ri)和 IDi情况下,计算如下:
如果R=x mod n成立,则多重数字签名通过,否则,验证失败.
签名算法的有效性验证如下:
考虑到电力调度信息的机密性,可以使用ECC进行加密和解密处理.加密处理如下:
(1)ui的加密算法:ui随机选择整数k,使C1=k·G,C2=m+k·Qi+1,将(C1,C2)发送给ui+1;
(2)ui+1的解密算法:m=C2-di+1·C1.
上述基于电力调度的有序多重签名方案满足以下安全特性:
(1)不可伪造性.在抵抗被动攻击时,既使攻击者知道了签名者ui的公用密钥Qi,要解出ui的秘密密钥di,或者是知道了公开的ri,要解出ki,都相当于解椭圆曲线离散对数问题,这比解大整数因式分解和一般有限域离散对数问题更加困难.
(2)不可否认性.签名者向签名中心发送的(S,keyi,IDi)中含有了签名者的身份 ID,具有不可否认性.
(3)不诚实签名者的可识别性.由于签名中心根据(S,keyi,IDi),可以对每个签名者 ui的签名进行验证,因此如果签名组成员中有不诚实者,试图伪造签名,则在签名过程中就会被发现.
(4)可验证性.每个签名者都可以对前面的签名进行验证.
(5)签名的完整性.签名中心通过对Si的验证对所有利用签名者的身份ID生成Si,保证签名的完整性.
(6)消息的机密性.在签名前,使用ECC加密算法保证消息的机密性.
(7)消息的完整性.当ui向签名中心提交(S,keyi,IDi)后,签名中心会根据对 S的签名验证,判断消息的完整性,同时可以得出修改m的签名者身份.
(8)操作票的合法性.如果签名者存疑,可向签名中心提出仲裁,签名中心比较Token'和Token是否一致,即得操作票的合法性.
笔者方案与其它方案的安全性比较见表1.
表1 本文方案与其它方案在安全性上的比较Tab.1 Comparison of security between this paper scheme and other schemes
ECC的各种运算的时间符号定义和时间复杂度换算关系可按文献[8-9]估算.其中,相对于 tMUL,tADD和 tM可以忽略,tEXP≈240tMUL,tEC_MUL≈29tMUL,tEC_ADD≈ 0.12tMUL,tH≈ 0.23tMUL,tI≈11.6tMUL.
(1)操作票审核.签名中心签名时间为:tEC_MUL+tM+tH+tM+tADD+tMUL+tADD+tM≈29tMUL+0.23tMUL+tMUL=30.23tMUL.
操作票申请者验证时间:tH+tEC_MUL+tEC_MUL+tADD+tEC_ADD≈58tMUL+0.12tMUL=58.12tMUL.
(2)调度签名
tEC_MUL+tM+tH+tM+tADD+tMUL+tADD+tM≈29tMUL+0.23tMUL+tMUL=30.23tMUL.
(3)调度签名的验证
tH+tEC_MUL+tEC_MUL+tADD+tEC_ADD≈58tMUL+0.12tMUL=58.12tMUL.
(4)签名中心的验证.假设有z个电力调度签名者,则签名中心验证时间为:ztEC_ADD+z(tH+tEC_ADD+tEC_MUL)+tEC_ADD.如果调度签名者为3个,则验证时间为:3tEC_ADD+3(tH+tEC_ADD+tEC_MUL)+tEC_ADD≈88.53tMUL.
本文方案与其它方案在时间复杂度上的比较见表2.可以看出,本文方案的计算量明显小于其它方案,具有较高的运行效率.
本文方案通信量用调度签名运行中产生的消息数来表示.在操作票审核过程中,通信双方使用1次交互,2条消息;在调度者审核签名过程使用2条消息,假设有3个调度者参与签名,则整个调度者审核签名使用6条消息.本文方案使用8条消息,具有较小的通信量.
表2 本文方案与其它方案在时间复杂度上的比较Tab.2 Comparison of time complexity between this paper scheme and other schemes
本文方案在VC6.0环境下进行实现,椭圆曲线q的位数为224位.针对电力调度命令进行签名和验证,以检验本软件的实用性,整个实验采用Intel酷睿i5-750,4G内存的运行环境,密钥生成过程的平均时间为1 ms,电力调度签名过程消耗的平均时间为9 ms,签名验证过程消耗的平均时间为17 ms,签名中心验证消耗的平均时间为30 ms.实验表明该系统具有良好的运行效率,能够满足电力调度的实时性要求.电力调度系统的监测签名的界面如图2示,ECC签名的后台运行过程如图3所示.
笔者设计了ECC有序多重数字签名在电力调度中的应用方案,方案满足抗否认性、抗伪造性、签名整体的可验证性等安全特性.与同类方案相比,克服了消息采用明文传送带来的安全隐患,能够保证消息的完整性,可以对操作票合法性进行验证.方案的计算量优于同类方案,具有较高的运行效率,较小通信量的特点.方案的应用测试表明能够满足电力调度的实时性要求.但是方案是以信任的签名中心为研究前提,没有考虑到签名中心的作弊行为,如何设计基于电力调度系统无认证的有序多重签名是下一步的研究方向.
[1] 徐俊杰,赵京虎.基于SCADA系统的地区电网调度操作票系统的设计[J].电力系统保护与控制,2010,38(13):104-107.
[2] 陈瑞,叶核亚.B/S结构的电力调度信息管理系统中的数字签名[J].网络安全技术与应用,2006,5(9):50-52.
[3] 耿永军,闫洪亮.一种基于DSA变体的盲签名方案[J].郑州大学学报:工学版,2006,27(3):101-103.
[4] 李欣妍,芦殿军.基于椭圆曲线密码体制的代理多重盲签名[J].计算机工程与科学 ,2010,32(11):58-59.
[5] 史开泉,陈泽雄,电力系统加密通信与通信认证问题[J].中国电机工程学报,2002,22(10):34-38.
[6] 施荣华,胡芳.一种基于椭圆曲线的有序多重数字签名方案[J].计算机工程与应用,2006,27(25):152-155.
[7] 刘振,申凯,余昭平.有效的有序多重数字签名方案[J].计算机工程与设计,2008,29(1):28-33.
[8] COURTOI N,KLIMOV A,PATARIN J.Efficient Algorithms for Solving Overdefined Systems of Multivariate Polynomial Equations[C].Berlin,Germany:Springer-Verlag,2000:392-407.
[9] KIPNIS A,SHAMIA A.Cryptanalysis of the HFE Public Key Cryptosystem by Relinearization[C].Berlin,Germany:Springer-Verlag,1999:19-30.