智能配电网云存储中基于身份的强指定验证者的签名方案
2018-10-23余铮冯浩徐焕
余铮冯浩徐焕
(国网湖北省电力公司信息通信公司 武汉 430077)
1 引言
一直以来,电力系统的安全性、稳定性以及可靠性对于社会经济的快速发展显得至关重要。当前,随着传感测量、控制以及信息通信等相关技术的发展,传统电网已经被智能电网悄然取代。现代电力工业的发展方向就是智能电网[1]。这其中又以智能配电网为智能电网的核心关键组成部分。智能配电网以高度一体融合的方式,将电力流、信息流、业务流整合在一起,实现了不同电力用户的快速接入和快速使用,从而优化了智能电网的资源配置,同时也提升了智能电网的服务水平。
由于智能配电网是将电力信息存储在云上的。电力信息的安全,将在很大程度上影响到电网控制系统的安全。因此,针对智能配电网的安全性,近年来,已经有相关的研究成果出现[2~9]。
由于普通的数字签名方案都具有公开验证性的特性,即是任何人都可以通过利用签名者的公钥,来进行验证是否是该签名者的合法签名。正是由于该特性的存在,使得数字签名在许多场合得到广泛的应用,如:消息的公布、公钥证书的下发等等。
然而,在一些特定的场合下,签名者并不希望任何人都可以进行签名验证。即:签名者只希望除指定的验证者可以进行验证外,其余的第三方均不能进行验证。换句话说,除指定的验证者外,其余的第三方均无法证明该签名是签名者的所签名。比如:网络购物时,购物者指定的商家可以验证购物者的相关信息,而未指定的商家则无法验证购物者的任何信息。
正是由于以上情况的存在,数字签名领域中出现了一个新的研究方向:指定验证者的数字签名。
1989年,为了让签名者能够完全证明该签名,是否为签名者自己所签,Chaum和Antwerpen共同提出了不可否认的数字签名[10]。在不可否认的数字签名方案中,为了避免除指定验证者以外的其它的验证者获得签名的合法性,于是借助交互式协议,从而通过签名者的参与,来验证签名的有效性。但是,不可否认的数字签名方案,通常由于Mafia(黑手党)[11]和 blackmailing(敲诈勒索)[12~13]的攻击而无法实现它本来的目的:不可否认性。其根本的原因就在于在验证签名过程中,由于是借助交互式的协议,有签名者的参与,使得签名者无法证明:签名者在向谁证明签名的有效性。从上述的论述中,可以得出签名者的签名不仅仅需要增加时间戳,而且需要确定签名是被指定的验证者来进行验证。
于是,为了避免Mafia(黑手党)[11]和blackmail⁃ing(敲诈勒索)[12~13]的攻击,签名者可以指定验证者来进行签名验证。比如在公开选举过程中,选举委员会只需要让投票人本人知道他所投的选票已经被计数,同时,又能制止其他人员知道该投票人所投的票。可见,不可否认的数字签名不能运用于该实例中。
这样,在1996年的欧密会中,Jakobsson等提出了DVS(指定验证者签名)的概念[14]。在指定验证者签名方案中,签名的有效性只有被签名指定的验证者才能确定。除指定验证者以外,任何人都不能确定签名者。这种数字签名方案提供了一个消息认证的能力,但是却失去了签名不可抵赖的特点。其原因在于在指定验证者签名方案中,采用了指定签名者也能生成同签名者的签名一样的签名。更重要的是,指定签名者生成的签名与签名者的签名是不可区分的。比如在公开选举过程中,投票人所投的票,可以是选举委员会替投票人所投的票。同时,替投票人投的票与投票人自身所投的票,其结果是一样的,且无法加以区分。
为了避免上述情况的出现,Jakobsson等在文献[14]中也定义了SDVS(强指定验证者签名),其引入的目的就是为了增强签名者的隐私保护。由于在强指定验证者签名的方案中,进行签名验证过程中,需要利用指定验证者的私钥才能完成签名的验证。因此,在强指定验证者签名方案中,保证了除指定验证者以外的任何人都无法进行签名验证。
在 2003 年,Saeednia等[15]在 Jakobsson 等[14]定义的强指定验证者签名的概念上,给出了强指定验证者签名的正式定义。该定义如下:指定验证者在验证签名的过程中,必须使用自己的私钥,且验证过程不能进行公开,需保密。即是说,要验证签名者的签名是否有效,只能是拥有指定验证者的私钥的人才能进行验证。
在 2004年,Laguillaumie F 和 Vergnaud D[16]在Saeednia等[15]的基础上,提出了对签名者身份保密的概念。该概念如下:在给攻击者一个指定验证者的签名和两个可能的签名公钥的基础上,攻击者不能区分该签名是用一个签名公钥对应的签名私钥来生成的。
随后,在2004年,Susilo等[17]也在Saeednia等[15]的基础上,提出了第一个基于身份的强指定验证者签名方案。随后,基于身份的强指定验证者的签名方案[18~23]也被相继提出。
在文献[19]中,Huang等提出了一种在随机预言机(RO)模型[24]下,可证明安全的基于身份的强指定验证者的短签名方案。但是,该签名方案存在一个严重的缺点,即是如果多次对同一消息进行签名,其签名结果是一样的。
在2008年,在文献[20]中,Zhang和Mao也提出了一种在随机预言机(RO)模型下,可证明安全的基于身份的强指定验证者的签名方案。但是,在2009年,在文献[22]中,Kang等指出文献[20]中的签名方案,不满足强指定验证者签名方案的特性,即是除指定验证者以外,任何人都不能验证签名的有效性。同时,Kang等也提出了一种改进的签名方案。在 2010 年,Lee等[25]指出 Kang等[20]的方案也存在普遍伪造的缺陷。
在上述的研究基础上,本文针对智能配电网中电力信息的安全性,提出了一种基于身份的强指定验证者的签名方案。本文的签名方案是在随机预言机模型下,证明本文所提的方案在适应性选择消息攻击下和基于身份的攻击下是安全的。
2 基于身份的强指定验证者签名方案的形式化定义和安全模型
2.1 基于身份的强指定验证者签名方案的的形式化定义
定义1 一个基于身份的强指定验证者签名方案是由以下5个算法:系统初始化(Setup)、私钥解析(Key-Extract)、签名算法(Sign)、签名验证算法(Verify)和副本模拟算法(Trancript Simu)来共同组成,其具体算法描述如下:
1)Setup(系统初始化):这是一个确定算法。给定安全参数1k,以及系统输出参数params。
2)Key-Extract(私钥解析):这是一个确定算法。首先输入用户的身份ID,以及系统参数params。随后,输出对应于身份ID的用户私钥skID。
3)Sign(签名算法):这是一个确定算法。首先输入身份为IDA的签名者A的私钥skA,以及身份为IDB的指定验证者B的公钥 pkB,和系统参数params。最后,对消息m进行签名,输出消息m对指定验证者的签名σ。
4)Sign-Verify(签名验证算法):这是一个确定算法。首先输入系统参数params,以及对消息m的签名σ,和身份为IDA的签名者A,以及身份为IDB的指定验证者B的私钥skB。如果对消息m的签名 σ ,即消息/签名对 (m,σ),输出“1”,表示接受该签名;否则,输出“0”,表示拒绝该签名,即该签名无效。
5)Trancript-Simu(副本模拟算法):这是一个确定算法。首先输入系统参数params,以及消息m,和身份为IDA的签名者A,以及身份为IDB的指定验证者B的私钥skB。最后,输出消息m的签名σ的不可区分的签名副本σ′。
2.2 基于身份的强指定验证者签名方案的安全模型
根据PKG的行为,在基于身份的强指定验证者的签名方案中,可以定义如下的3种类型的敌手A:
类型I:敌手A没有身份为IDB的指定验证者B(用户)的私钥skID和秘密值xID。
类型II:敌手A知道身份为IDB的指定验证者B(用户)的私钥skID或者系统主密钥s,但是没有身份为IDB的指定验证者B(用户)的秘密值xID。
类型III:敌手A有身份为IDB的指定验证者B(用户)的秘密值x′ID和私钥skID,但是该秘密值是PKG伪造的,与身份为IDB的指定验证者B(用户)真正的秘密值xID不同。
根据对敌手A的攻击能力分析,可以得出类型III的敌手A具有最强的攻击能力。
下面定义如下的基于身份的强指定验证者的签名方案的安全模型。
定义2(基于身份的强指定验证者的签名方案的安全模型)如果没有任意概率多项式界的敌手A以一个不可忽略的优势ε来赢得以下游戏,则称此基于身份的强指定验证者的签名方案,在适应性选择消息和身份攻击下是抗存在性伪造的。其游戏具体过程如下:
1)Setup(系统初始化):挑战者C运行Setup算法,生成系统参数params和主密钥s,并将主密钥s进行保密。随后,挑战者C将系统参数params发送给敌手A。
2)Queries(询问阶段):敌手A进行以下(适应性的)询问:
(1)Key-Extract Queries(私钥解析询问):敌手A对身份为 IDBi的指定验证者B(用户)的私钥skBi,进行私钥询问时,挑战者C运行Key-Extract算法(私钥解析算法)来生成相对应地私钥skBi,并将私钥skBi返回给敌手A。
(2)Sign Queries(签名询问):敌手A对身份为IDAi的签名者A,和身份为IDBi的指定验证者B(用户)的消息mi,进行签名询问时,挑战者C运行Sign算法生成相应的签名σi,并返回给敌手A。
(3)Sign-Verify Queries(签名验证询问):敌手A对身份为IDAi的签名者A,和身份为IDBi的指定验证者B(用户)的消息mi,进行签名验证询问时,挑战者c运行Sign-Verify算法。如果签名σi有效,则输出“1”,表示接受该签名;否则,输出“0”,表示拒绝该签名,即该签名无效。最后,挑战者C将询问结果返回给敌手A。
3)Attack(攻击阶段):最后,敌手A输出一个四元组,其中表示身份为的签名者A在消息上的签名,指定验证者B的身份为一个有效的签名,且满足下面的条件,则敌手A获胜:
(2)在Transcript-Simu(副本模拟算法)中,对类型I和类型II的敌手A身份为的签名者A,和身份为的指定验证者B,都没有进行过Key-Extract Queries(私钥解析询问)。
3 基于身份的强指定验证者的签名方案
3.1 方案描述
定义1 一个具有身份的强指定验证者的签名方案是由以下5个算法来共同组成的,其具体算法描述如下:
1)Setup(系统初始化):首先,PKG随机选择一个随机数,来作为系统的主密钥s。接着,PKG挑选两个安全的密码学Hash函数:(0,1)*→。随后,PKG计算身份为IDB的指定验证者B(用户)的ais=H1(IDB)。
随后,PKG计算非齐次线性方程组Ax=b,求解得到特解η。随后,PKG再次计算PPub=s⋅η(此计算公式需PKG保密)。
最后,PKG公布系统参数params为{A,B,η,PPub,H1,H2},并秘密保存主密钥s。
2)Key-Extrac(t私钥解析):首先,身份为IDB的指定验证者B(用户),计算非齐次线性方程组Ax=b ,求解得到通解 ξ={ξ1,ξ2,…,ξn}。随后,身份为 IDB的指定验证者B(用户)在通解ξ={ξ1,ξ2,…,ξn}中,随机选取 ξIDB作为自己的秘密值(私钥),再随机选取(安全参数,需用户自行保密)。接着,身份为IDB的指定验证者B(用户)再计算U=λ⋅ξIDB+η。最后,身份为 IDB的指定验证者B(用户)再把U及IDB发送给PKG。PKG只能证明η确是U里面的一个因子,但由于随机安全参数λ的存在,所以不能确定身份为IDB的指定验证者B(用户)的秘密值ξIDB。其中:U为身份为IDB的指定验证者B(用户)的公钥。
随后,PKG对自称身份为IDB的指定验证者B(用户),进行身份IDB及U鉴定,确定U一定是身份为IDB的指定验证者B(用户)所发送。
3)Sign(签名算法):身份为 IDA的签名者A,计算非齐次线性方程组 Ax=b,求解得到通解ξ={ξ1,ξ2,…,ξn},和特解 η*IDA,选取 η*IDA作为自己的公钥 pkIDA。随后,身份为IDA的签名者A在通解 ξ={ξ1,ξ2,…,ξn}中,随机选取 ξIDA作为自己的私钥skIDA。
接着,身份为 IDA的签名者A,对消息m∈{0,1}*,进行如下的签名:
(1)计算:R=η⋅skIDA;
(2)计算:
v=H2(m,R)⋅skIDA+H2(m)⋅U ;
(3)最后,生成的σ=(U,v)就是身份为 IDA的签名者A,对消息m的签名;
4)Sign-Verify(签名验证算法):身份为 IDB的指定验证者B(用户)一收到消息m和签名σ,就开始计算:
Ver(params,m,skIDB,σ)=1⇔Ax=H2(m)⋅b 且x=v。
如果,当且仅当 Ax=H2(m)⋅b 时,输出“1”,表示接受该签名;否则,输出“0”,表示拒绝该签名,即该签名无效;
5)Transcript-Simu(副本模拟算法):身份为IDB的指定验证者B(用户)一收到消息m和签名σ,身份为IDB的指定验证者B(用户)就开始计算:v′=H2(m)⋅U 。
接着,身份为IDB的指定验证者B(用户)验证:
Ver(params,m,skIDB,σ)=1⇔Ax=H2(m)⋅b 且x=v′。
如果,当且仅当Ax=H2(m)⋅b时,说明:身份为IDB的指定验证者B(用户)生成的签名副本σ′=(U,v′),与身份为 IDA的签名者A对消息m的合法签名σ=(U,v)是不可区分的。
3.2 方案的正确性
定理1 本文的签名方案是正确的。
证明:本文签名是正确的。当且仅当,所用的参数是按照本文所给出的算法正确计算出。签名验证等式如下:
Ver(params,m,skIDB,σ)=1⇔Ax=H2(m)⋅b 且x=v′。
其正确性如下:
如果,当且仅当 Ax=H2(m)⋅b 时,输出“1”,表示接受该签名;否则,输出“0”,表示拒绝该签名,即该签名无效。
3.3 方案比较
为了方便比较,下面记双线性对运算为Pr;阶数为素数q的循环加群G1中的数乘运算为Sm,G1中的元素的比特长度为 ||G1;阶数为素数q的循环乘群G2中的幂运算为E,G2中的元素的比特长度为 ||G1;Z*q中的元素的比特长度为 ||H 。H为一个映射到点的Hash函数。te(m,n)为非齐次线性方程组AX=b的计算时间。
下面就本文的基于身份的强指定验证者的签名方案在签名和验证阶段的计算效率,以及签名长度进行分析,并给出了方案相互之间的整体效率比较。
表1 方案的效率比较
从上表可知,本文的基于身份的强指定验证者的签名方案是效率最高的。由于避免了复杂的双线性对运算,所以方案的计算量小,且方案是安全的。
4 结语
针对电力信息存储在云上的特点,本文采用基于身份的强指定验证者的签名方案,解决了智能配电网云存储时的电力信息安全性的问题。与已有的基于身份的强指定验证者的签名方案对比,本文方案在验证时,计算效率较高。安全与性能分析表明,该方案是安全高效的,适合在智能配电网云存储中使用。本文的签名方案适用于智能配电网云存储,但是,该方案可以很方便地推广到智能电网的其它应用场景。