基于抗泄漏无证书的智能电网隐私保护协议

2020-06-16 01:05朱聪聪王志伟
计算机技术与发展 2020年6期
关键词:私钥公钥电表

朱聪聪,乔 治,王志伟

(南京邮电大学 计算机学院、软件学院、网络空间安全学院,江苏 南京 210046)

0 引 言

智能电网[1]是一个计算机和电力相结合的基础设施网络,用于监控和管理能源使用情况。然而,随着智能电网技术的不断发展,也带来了一定的安全问题。一方面,实时的用电数据在一定程度上会泄露用户的行为隐私;而另一方面,电网网关的地理环境使得网关的安全性较低。因此,有效保护用户隐私并实现密钥抗泄露以及身份认证成为智能电网的研究热点。

在传统的公钥密码体制中,用户自己选择公钥,但是需要由证书颁发机构的可信第三方进行验证,证书的管理过程复杂且代价较高。为了避免这种情况,Shamir[2]提出了基于身份的公钥密码体制(identity-based public key cryptography,ID-PKC),使用身份信息(如电子邮箱、姓名等)直接作为公钥,私钥由可信第三方密钥生成中心(key generation center,KGC)生成,存在恶意KGC的风险,导致密钥托管问题。随后,AI-Riyami等人[3]提出了无证书公钥密码体制(certificateless public key cryptography,CL-PKC),不仅避免了传统公钥密码体制的证书管理,也解决了基于身份的公钥密码体制中的密钥托管问题。在CL-PKC中,KGC根据用户的身份为其生成部分私钥,用户基于KGC为其计算的部分私钥和随机选取的秘密值生成最终的私钥,公钥由用户的秘密值和部分私钥构成。也就是说,CL-PKC中用户本身参与私钥和公钥的生成,KGC不会知道用户的密钥,也就不存在密钥托管的风险。

最近提出的一些方案建议聚合单个计量数据来保护用户隐私[4-7]。同态加密(homomorphic encryption,HE)是实现聚合的有效方法,每个用户使用加法同态加密他的数据,然后将密文发送给网关,由于加法同态的性质,网关进行解密可以获得计量数据的总和。Garcia等人[4]提出一种多方计算协议,它允许邻域中的多个智能电表计算其部分数据的聚合,通过使用Paillier的加法同态性质,使得单个的计量数据无法揭露。但是由于方案要求本地变电站完全聚合计量数据,造成巨大的计算和通信开销,而加法同态加密方案已满足大数据应用的要求。Li等人[6-7]提出一种用于智能电网的分布式网内聚合方案,该方案使用Paillier的同态加密将源智能电表到网关中所有智能电表的计量数据进行聚合,从第一个电表开始,路径上的每个智能电表将前一个智能电表发来的数据与自己的计量数据进行聚合,然后再发送给下一个智能电表,直到网关用其私钥解密聚合密文,并且在不知道单独计量数据的情况下获得该路径上所有智能电表计量数据的总和。该方案虽然在计算和通信方面有效,但是容易受到中间恶意电表和外部攻击者在发送途中伪造中间聚合数据。

应用加法同态的一个重要问题就是防止数据在发送途中受到攻击。在实际中存在这样一类攻击者,他们针对加密电子设备在运行过程中的时间消耗、功率消耗或电磁辐射之类的侧信道信息泄露而对加密设备进行攻击,此获得设备私钥的一部分,这将导致重要信息的泄漏。为了抵御侧信道攻击,许多研究人员引入并提出了泄露弹性(leakage-resilient,LR)密码[7-8]模型。现有的泄漏模型可分为三类:(1)有界泄漏模型[9]。在系统生命周期内,对手可以自适应地选择一个可计算的泄漏函数f,它输入私钥并在有界泄漏模型中获得泄漏函数f(SK)的输出。由于整个过程中私钥的总泄漏量是有界的,有效限制了泄漏函数f获得完整的私钥信息。(2)连续泄漏模型[10]。在连续泄漏模型中,私钥定期更新。两个连续私钥更新之间私钥泄漏的泄漏量是有界的,但在整个过程中总泄漏量是无限的。构造连续泄露模型下安全的密码系统的主要问题在于如何更新私钥,使得不同时段的泄露无法有意义地合并出整个私钥,而导致密码系统崩溃。(3)辅助输入模型[11]。在系统生命周期内,无论信息泄露多少,即使在理论上私钥全部泄露,依然不存在概率多项式(PPT)攻击者可以用不可忽略的概率从f(SK)恢复SK。也就是说,即使这样的功能信息理论上揭示了整个私钥SK,但是在计算上仍然是不可行的。

为了解决实际应用中的密钥泄露问题,抗泄露加密方案[12]被陆续提出。Wang等人[13]提出了基于身份的泄露弹性加法同态加密方案,并在标准模型中证明了它的安全性,但是这种方案存在密钥托管的风险。Xiong等人[14]提出了第一个泄露弹性无证书公钥加密(LR-CL-PKE)方案,该方案基于双线性对和非交互式零知识证明系统构造,但并未给出非交互式零知识系统的具体构造方法,导致方案的计算效率难以评估。Zhou等人[15]提出一个不含双线性对的抗泄露无证书公钥加密方案,并且证明了该方案在选择明文攻击(chosen ciphertext attacks,CCA2)下的安全性。

文中旨在为智能电网提出一种安全有效的数据聚合和隐私保护协议,该协议不仅可以避免密钥托管,还可用于实现网关抗泄露。通过修改Wang等人的方案[16],设计了一种基于抗泄漏无证书同态加密的智能电网数据聚合和隐私保护协议。为了有效解决加密系统中的密钥托管问题,使用了无证书的加密方案,解决了基于身份的加密系统中的可信第三方问题;考虑到网关常年暴露在户外,攻击者通过侧信道攻击很容易获得私钥的部分比特,在协议中使用改进的Goldreich-Leivin定理防止网关的密钥泄露;同时,智能电网需要实时收集用户数据并进行细粒度分析,在协议中利用加法同态的性质,使得网关在不知道单独计量数据的情况下获得该地区的总用电数据,有效防止攻击者窃取单独用户的用电信息。

1 基础知识

1.1 数学概念

1.1.1 双线性映射

设p是一个大素数,G和GT是两个阶为p的循环加法群和循环乘法群。G到GT的双线性映射e:G×G→GT满足下面的性质:

(1)双线性:对于∀P,Q∈G,a,b∈Z,有e(aP,bQ)=e(P,Q)ab。

(2)非退化性:∃P,Q∈G,使得e(P,Q)≠1。

(3)可计算性:对于∀P,Q∈G,存在一个有效算法计算e(P,Q)。

1.1.2 计算Diffie-Hellman(CDH)假设

设G是阶为p的循环群,k为群生成算法Gen(1k)的安全参数,g为G的生成元,则计算Diffie-Hellman(CDH)假设定义为:

1.1.3 判定型双线性Diffie-Hellman(DBDH)假设

设G和GT是阶为素数p的两个循环群,λ为群生成算法Gen(1λ)的安全参数,g为G的生成元,e:G×G→GT为G到GT的一个双线性映射。则上的判定型双线性Diffie-Hellman(DBDH)假设定义为:

1.2 强提取器

定义1(单向散列函数族):设How(ε)是任意多项式时间可计算函数f:{0,1}n→{0,1}*的类。给定随机数x,计算y=f(x),如果满足对于任何PPT算法从y=f(x)中恢复x的概率都小于ε,那么How(ε)称为单向散列函数族。

|Pr[Α(s,f(x),SE(s,x)=1]-

Pr[Α(s,f(x),γ=1)]|<δ

定义3(改进的Goldreich-Levin定理):设p是一个大素数,H为GF(p)的任意子集,Hn→{0,1}*的映射f为任意多项式时间可计算函数,然后从Hn中随机选择向量x,计算y=f(x)。从GF(p)n中随机选择矢量s,并从GF(p)中随机选择u。如果存在一个运行时间为t的任意概率多项式时间(PPT)算法Α,使得

|Pr[Α(y,s,=1]-

Pr[Α(y,s,u=1)]|=ε

则存在一个运行时间为t'=t·poly(n,p,1/ε)的算法Β,它从y计算出x的概率为:

然后,根据改进的Goldreich-Levin定理从内积构造带有辅助输入的(ε,δ)-强提取器。

2 协议设计

2.1 基于抗泄漏无证书同态加密和签名方案

2.1.1 基本概念

基于抗泄漏无证书同态签密方案Γ由设置、部分私钥提取、设置秘密值、设置私钥、设置公钥、签密、解签密7个算法组成。通常,设置和部分私钥提取由KGC执行,而其他算法由加密或解密用户执行。以下是各个算法的描述:

·Setup(1λ):KGC以安全参数λ作为输入,生成双线性群参数(G,GT,e:G×G→GT),其中g是G的生成元,gt是GT的生成元。随机选择s∈Zq作为主密钥,即Smsk=s,并设置主公钥为mpk=gs。选择加密散列函数H1:{0,1}*→G,H2:{0,1}*→G和H3={0,1}*×G×G→Zq。公开系统参数params={q,G,GT,g,gt,e,H1,H2,H3}。

·PartialPrivateKeyExtract(params,ID,Smsk):KGC随机选择r1,…,rm∈Zq,计算R1=gr1,…,Rm=grm,将y1=r1+SmskH3(ID,X1,R1),…,ym=rm+SmskH3(ID,Xm,Rm)作为部分私钥,再计算Y1=gy1,…,Ym=gym,输出部分私钥dID=(y1,…,ym)。

·SetSecretValue(params,ID,dID):用户随机选择xID=(x1,…,xm)作为秘密值。

·SetPrivateKey(params,ID,dID,xID):输出用户的私钥为skID=(x1+y1,…,xm+ym)。

·SetPublicKey(params,ID,dID,xID):输出该用户的公钥pkID=(X1Y1,…,XmYm)。

2.1.2 安全证明

Wang等人已经证明他们提出的基于身份的加密方案在DBDH和CDH假设下是CPA安全的,由于基于身份的加密中本身存在恶意的KGC攻击,所以文中提出的无证书方案对于Ⅱ型攻击者也是CPA安全的。下面证明文中方案对于Ⅰ型攻击者的安全性,设F表示多项式时间可计算泄漏函数族,Γ表示基于抗泄漏无证书同态加密方案。

定理1:如果没有任何多项式时间的攻击者能够以不可忽略的优势赢得下列游戏,那么文中方案对Ⅰ型攻击者是CPA安全的。

证明:(Game0)给定挑战者C一组输入(g,p,e,gα1,gα2,gα3,hi),其中h0=e(g,g)x,x∈RZp,h1=e(g,g)α1α2α3,以进行下列询问应答。

·设置:挑战者C运行Setup(1λ),将主公钥mpk发送给攻击者A。C还保持一个列表LID。

·H1查询:当A对身份ID进行查询时,C随机选择j∈{0,1}和t∈Zp,当j=0时,令H1(ID)=gt,当j=1时,令H1(ID)=yt,然后将元组(ID,H1,j)添加到表LID中。

·部分私钥查询:C首先检查LID中是否有元组(ID,dID,pkID,xID,j),如果有,C将dID返回给A。否则,将j设为1,计算did=mpkt和pkID=xID,并将元组(ID,dID,pkID,xID,j)添加到表LID中。

·公钥查询:C首先检查LID中是否有元组(ID,pkID,xID,j),如果有,C将pkID返回给A。否则,将j设为1,C随机选择w∈Zp,令pkID=gα1和xID=α1并将pkID返回给A,将元组(ID,pkID,xID,j)添加到表LID中。

·私钥查询:C首先检查LID中是否有元组(ID,dID,pkID,skID,j),如果有,C将skID返回给A。否则,C首先进行部分私钥查询得到dID,然后进行公钥查询得到pkID=gα1和xID=α1,并将这些值添加到表LID中,将skID=(dID,α1)返回给A。

·H2查询:当A对元组(C,T)进行查询时,C首先检查LID中是否有元组(C,T,l,j),如果有,就将H2的定义返回给A,否则,C随机选择l∈Zp,令H2(ID)=gt,然后将元组(C,T,l,j)添加到表LID中。

·泄露查询:A选择f∈F进行密钥泄漏查询,C用f(skID)进行响应。

·签名查询:当A对身份ID和CT进行查询时,C首先恢复先前定义的H1,然后,设置C1=gα3并将其返回给A。

·输出:A输出b的猜测位b'。

定理2:如果SE是带有辅助输入的(ε,δ)-强提取器,那么文中方案Γ相对于族How(ε)是AI-CPA安全的。

·设置:挑战者C运行Setup(1λ),并将主公钥mpk发送给攻击者A。挑战者C保密msk。

·查询:查询部分与Game0相同。

·挑战:A向C发送两条关于身份ID*的长度相同的消息m0和m1,C选择一个随机位b,然后对mb进行加密,并将密文CT=(C1,C2)=(g3,gtmb·e(g,g)h2)(i=0,1)返回给A。

·输出:攻击者A输出b的猜测位b'。

如果b'=b,则A赢得上述游戏。

该方案的加法同态特性如下:

Encrypt(params,ID,M+M',pk)

2.2 基于抗泄漏无证书同态加密的智能电网数据聚合和隐私保护协议

2.2.1 系统模型

系统模型由四个部分组成,如图1所示。第一个部分是密钥生成中心(KGC),SM、AGW和ESP分别需要与KGC进行交互,用无证书方式生成私钥。首先,实体选择秘密值并生成公共元素发送给KGC,然后,KGC生成部分私钥再发送给实体,最后,实体根据接收到的部分私钥结合秘密值生成最终私钥和公钥。第二个部分是智能电表(SM),SM计量各自的用电数据并用自己的私钥加密然后进行签名,然后再将密文和签名发送给AGW。第三个部分是区域网关(AGW),AGW首先验证SM发来的签名是否正确,如果正确,则接收密文,然后对电表传来的密文进行聚合,并进行签名。第四个部分是电力服务提供商(ESP),ESP首先验证网关身份,如果通过,则解密聚合电量。由于聚合密文使用的是加法同态加密,所以ESP在解密完密文之后可以获得该地区各个用户的用电数据,方便灵活分析并对该区域的电力实施高效调控。

图1 智能电网的系统模型

2.2.2 协议构建

(1)系统初始化。

步骤1:KGC以安全参数λ作为输入,生成双线性群参数(G,GT,e:G×G→GT),其中,G和GT具有素数阶q>2λ,设g是G的生成元,gt是GT的生成元。

步骤2:随机选择s∈Zq作为主密钥,即Smsk=s,并设置主公钥为Ppub=gs。

步骤3:选择加密散列函数H1:{0,1}*→G,H2:{0,1}*→G和H3:{0,1}*×G×G→Zq。

步骤4:KGC公开系统参数params={q,G,GT,g,gt,e,Ppub,H1,H2,H3}。

(2)实体注册。

步骤1 智能电表注册:一个区域网内有n个智能电表,每个智能电表通过无证书方式与KGC交互生成私钥,其中第i个智能电表的私钥为skIDi。

步骤1.1 设置秘密值:智能电表随机选择秘密值xIDi∈Zq,计算公共元素XIDi=gxIDi,将身份IDi和公共元素XIDi发送给KGC。

步骤1.2 部分私钥提取:KGC随机选择秘密值rIDi∈Zq,计算RIDi=grIDi,yIDi=rIDi+SmskH3(IDi,XIDi,RIDi),然后计算YIDi=gyIDi,并发送RIDi,部分私钥yIDi和YIDi给智能电表。

步骤1.3 设置私钥:智能电表设置skIDi=xIDi+yIDi作为私钥。

步骤1.4 设置公钥:智能电表计算pkIDi=XIDiYIDi作为公钥。

步骤2 网关注册:网关使用无证书方式与KGC交互生成私钥。

步骤2.1 设置秘密值:网关随机选择秘密值xIDc∈Zq,用于将部分私钥转换为私钥,网关保密xIDc,计算公共元素XIDc=gxIDc,将身份IDc和公共元素XIDc发送给KGC。

步骤2.2 部分私钥提取:KGC随机选择秘密值r∈Zq,设置R=gr,然后计算yIDc=r+SmskH3(IDc,XIDc,R)作为部分私钥,再计算YIDc=gyIDc,并将R,YIDc和部分私钥yIDc发送给网关。

步骤2.3 设置密钥:网关设置skIDc=xIDc+yIDc作为最终私钥,计算pkIDc=XIDcYIDc作为公钥。

步骤3 ESP注册:KGC和ESP执行交互协议,用无证书方式生成私钥:

步骤3.1 设置秘密值:ESP随机选择秘密值x1,…,xm∈Zq,计算公共元素X1=gx1,…,Xm=gxm,将身份IDesp和公共元素X1,…,Xm发送给KGC。

步骤3.2 部分私钥提取:KGC随机选择秘密值r1,…,rm∈Zq,计算R1=gr1,…,Rm=grm,将y1=r1+SmskH3(IDesp,X1,R1),…,ym=rm+SmskH3(IDesp,Xm,Rm)作为部分私钥,再计算Y1=gy1,…,Ym=gym,并发送R1,…,Rm,部分私钥y1,…,ym和Y1,…,Ym给ESP。

步骤3.3 设置私钥:输入系统参数params,ESP身份IDesp,部分私钥y1,…,ym和秘密值x1,…,xm,ESP私钥为sk=(x1+y1,…,xm+ym)。

步骤3.4 设置公钥:ESP计算pk=(X1Y1,…,XmYm)作为公钥。

步骤4 计算W=(W1,…,Wm)=(e(X1Y1,H1(IDesp)),…,e(XmYm,H1(IDesp)))的值,KGC将其发送到所有智能电网设备。

(3)收集阶段。

步骤2 智能电表进行数字签名:设Ti为当前时间戳,智能电表计算签名Vi=H2(C2i||Ti)skIDi,并将(CTi,Vi,Ti)发送到网关。

步骤3 网关验证电表身份:网关首先验证e(g,Vi)=e(pkIDi,H2(C2i||Ti))是否成立来检查电表发送的密文,如果成立,则网关接收电表上传的数据,否则拒绝。

(4)聚合阶段。

步骤2 网关进行数字签名:设Tc为网关当前时间戳,计算签名V=H2(C2||Tc)skIDc。

(5)解密阶段。

步骤1 ESP验证网关身份:ESP首先计算e(g,V)=e(pkIDc,H2(C2||Tc))是否成立,如果成立,则ESP接收网关上传的数据,否则拒绝。

3 安全性分析

文中设计的安全有效的基于抗泄漏无证书同态加密的智能电网数据聚合和隐私保护协议旨在防止网关暴露在开放环境中的密钥泄露问题,并防止未授权对象读取电表数据并进行细粒度分析。在本节中,针对协议的一系列攻击进行正式安全和隐私分析。

3.1 抵御侧信道攻击

3.2 抵御中间人攻击

中间人攻击是模仿合法的角色,通过读取发送方的信息向接收方发送虚假的消息。在智能电网系统中存在两个中间人攻击。一种是智能电表与网关之间的攻击,假的智能电表向网关发送错误的计量数据。在该协议中,电表在发送数据之前需要先和网关验证身份,定理2证明了基于抗泄漏无证书同态签密方案是安全的,所以攻击者无法获得智能电表的私钥,以此通过身份验证。另一种是网关和ESP之间的攻击,攻击者通过模仿网关向ESP发送聚合电量。在该协议中,网关通过将聚合数据添加在签名中,攻击者即使获得了网关的私钥,也不可能伪造出正确的签名,通过身份验证,因此该协议可以抵御中间人攻击。

3.3 抵御内部攻击

3.4 抵御网关和N-1个智能电表合谋攻击

3.5 抵御ESP和N-2个智能电表合谋攻击

当网关和N-2个智能电表展开合谋攻击,除了两个智能电表SMi和SMj以外的所有电表都是不诚实的。在这种情况下,ESP和N-2个智能电表试图区分两个诚实的智能电表的明文。假设网关也是诚实的,定理1的证明表示在基于抗泄漏无证书同态签密方案中,攻击者区分两条长度相同的挑战密文的概率可忽略不计,也就是说即使攻击者得到了电表SMi和SMj的密文,也无法区分出每个电表相对应的明文,因此该协议可以抵抗ESP和N-2个智能电表合谋攻击。

3.6 抵御重放攻击

如果攻击者获得双方发送过的信息,他拦截通信并恶意重放信息来达到欺骗系统的目的,这称为重放攻击。在该协议中,使用当前时间戳来抵御重放攻击。如果攻击者想要模仿签名中的时间戳来重放签名,必须先获得设备的密钥,但是攻击者获得私钥的概率忽略不计,因此攻击者不可能进行重放攻击。

4 结束语

随着大规模物联网的发展,用户的隐私受到了越来越多的威胁,在智能电网中,攻击者可以通过窃取用户的用电数据,以此分析该用户的行为模式。文中设计了一个基于抗泄漏无证书同态加密的用户电力数据聚合和隐私保护协议,该协议主要将弹性泄露密码体制与无证书同态加密技术相结合,在用户隐私保护与实时电量数据之间实现一个良好的平衡,并且通过在智能电网的典型攻击下的安全属性分析,体现了协议实现的安全性能。

但现在只是实现协议安全性的理论证明,下一步工作可以使用密码学协议的自动形式化验证分析来验证协议的安全性,更进一步可以搭建智能电网系统的模拟实验环境,使用设计的认证协议来进行安全性分析,从而进一步完善协议。

猜你喜欢
私钥公钥电表
比特币的安全性到底有多高
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
程序员把7500枚比特币扔掉损失巨大
“蹦叭”跳动电表数
神奇的公钥密码
法国人抗议智能电表或监控隐私
国密SM2密码算法的C语言实现
基于身份的聚合签名体制研究
停电那点事儿
如何测电表的量程