房保纲, 钟伯成, 张家磊, 丁佳蓉
( 上海工程技术大学 电子电气工程学院, 上海 201620)
随着无线传感器技术的发展,无线医疗传感器网络技术也取得了长足的进步[1]。无线医疗传感器网络集合了移动密集型传感器和远程医疗两者的优点[2]。一方面,用户可以实时地通过传感器设备上传生理数据到云服务器,享受健康医疗机构提供的服务。另一方面,通过分析个人的生理数据,远程医疗健康系统也能够精确地提供健康信息和医疗服务。
无线医疗传感器的网络模型如图1所示。无线医疗传感器网络主要包含5个部分,分别是:医疗传感器节点(medical sensor node,MSN),医疗服务器(medical server,MS),签名聚合者(signature aggregator,SA),聚合签名验证者(aggregate signature verifier,ASV),专业医疗人员(medical)。
图1 无线医疗传感器网络模型
数字签名是无线医疗传感器网络中用于保护用户隐私、进行身份认证所采用的重要技术,然而现有的各类签名技术,比如传统的数字签名、基于ID的数字签名及聚合签名等,计算复杂度相对较高,几乎不能满足低存储、低运算能力等资源受限的环境需求。无证书聚合签名(CLAS)将无证书密码体制和聚合签名这两种技术的优点有效地结合起来,不仅避免了PKC和IBC中的证书管理与密钥托管两个棘手的问题,并且有效降低了签名验证的计算与存储开销等,特别适用于资源受限的网络环境中,所以现在有许多方案都采用了无证书聚合签名方案。
本文基于Wu等人[3]的方案进行适当地改进,当该方案中执行聚合签名验证时,双线性对运算的次数会随着签名用户数量的增加而呈线性增长,极大增加了计算开销,并且该方案在签名生成过程中会泄露签名者的秘密值信息,具有不可忽略的安全隐患。在改进的方案中,研究修改了单个签名生成算法和聚合签名算法,最终能够保证签名用户的秘密值信息不会被泄露,并且双线性运算的次数也不会随着签名数量的增加而呈线性增长。
设G1为一个阶为素数q的加法循环群,P为其生成元;G2为同阶的乘法循环群,这里设映射为:e:G1×G2→G2且该映射满足以下3条性质:
(2)非退化性。存在X,Y∈G1,e(X,Y)≠1。
(3)可计算性。存在X,Y∈G1,e(X,Y)能够通过一个算法在多项式时间内计算出来。
设G是阶为素数q的加法循环群,随机选取a,b∈Zq*,对于给定的P,aP,bP∈G,求解a,b,P是多项式时间内不能解决的困难问题。在CLAS的安全模型中通常情况下会包含2类攻击者,分别是A1和A2。在循环群G1中给定一个随机的计算Diffie-Hellman(CDH)问题实例(P,aP,bP),挑战者C与A1或A2进行询问,最终挑战者C可以利用A1或者A2解决CDH问题,计算出a,b,P。
本节根据Wu等人的方案,改进设计了一个新的CLAS方案,该方案主要包含7个阶段,分别是:系统参数生成(Setup)、部分私钥生成(Partial-Private-Key-Generate)、密钥生成(Private-Key-Generate)、单个签名生成(Individual-Sign)、单个签名验证(Individual-Verify)、聚合签名生成(Aggregate-Sign)、聚合签名验证(Aggregate-Verify)等阶段。算法运行过程可阐释表述如下。
通过执行如下运算,MS通过k产生系统参数,其中k为一个安全参数:
(1)用同样的质数q产生2个循环群G1、G2,P是群G1的生成元。双线性映射e:G1×G2→G2;
(2)随机选择一个数s∈Zq*作为MS的主密钥,计算MSpub=sP作为MS的公钥;
(3)选取4个哈希函数H1: {0, 1}→G1:H2: {0, 1}→G2,h1: {0,1}→Zq*,h2: {0,1}→Zq*;
(4)公开系统参数params=(G1,G2,P,e,q,MSpub,H1,H2,h1,h2)。
通过执行如下运算,MS产生MSN的部分私钥:
(1)IDi作为MSN的身份,MS首先计算Qi=H1(IDi),然后计算MSN的私钥ppki=s·Qi;
(2)秘密发送ppki到MSN。
通过执行如下运算,身份为IDi的MSN产生了自己的公钥和私钥:
(1)选择一个随机数xi作为秘密值;
(2)设置ski={ppki,xi}作为私钥;
(3)计算pki=xip作为公钥。
通过执行如下运算,身份为IDi的签名者在mi消息上产生了σi的签名:
(1)输入系统参数params,状态信息Δ和公私钥对(ski,pki);
(2)随机选择ri∈Zq*,然后计算Ri=riP;
(3)计算αi=h1(IDi,pki,Ri),βi=h2(mi,IDi,pki,Ri)及U=H2(Δ);
(4)计算Vi=αippki+MSpub+βixiU;
(5)输出σi=(Ri,Vi)作为消息的签名。
通过执行如下运算,验证者验证消息的签名:
(1)输入状态信息Δ;
(2)计算αi=h1(IDi,pki,Ri),βi=h2(mi,IDi,pki,Ri),Qi=H1(IDi)及U=H2(Δ);
(3)验证:
e(Vi,P)=e(αiQi+Ri,MSpub)e(βipki,U).
(1)
(4)如果式(1)成立则接受签名δi; 如果不成立,则拒绝。
通过执行如下运算,一个聚合者能产生聚合签名δ:
(1)输入n个元组(IDi,mi,pki,δi),其中,1≤i≤n;
(3)输出σ=(R,V)作为聚合签名,其中R={R1,R2,…,Rn}。
通过执行以下运算,聚合签名验证者认证聚合签名的σ=(R,V)合法性:
(1)输入状态信息Δ,元组(IDi,mi,pki,Ri)1≤i≤n,和聚合签名σ=(R,V);
(2)计算U=H2(Δ), 1≤i≤n,计算Qi=H1(IDi),αi=h1(IDi,pki,Ri)及βi=h2(mi,IDi,pki,Ri);
(3)验证:
(2)
(4)如果式(2)成立,验证者接受聚合签名δ,否则拒绝。
通过以下详细的步骤推导,会很容易验证本方案的正确性。推导过程见如下。
定理1如果在循环群G1中的CDH困难问题无法解决,那么改进的CLAS能够抵御敌手A1的伪造攻击。
Setup:C随机选取IDts作为非法传感器节点目标身份,令MSpub=Q1=aP, 产生系统参数params={G1,G2,P,e,q,MSpub,H1,H2,h1,h2}。
H1-query:C维护一个列表LH1,LH1的结构为(IDi,δi,εi,Qi),LH1中元素初始值为空。当A1发起询问时,C检查LHi中是否存在元组(IDi,δi,εi,Qi),如果存在,返回Qi给A1,否则C随机选择εi∈{0,1}和δi∈Zq*,如果ε=0, 令Qi=δiP,如果εi=1, 则Qi=δiQ2=δibP。将Q返还给A1,(IDi,δi,εi,Qi)存储到LHi中。
H2-query:C维护列表LH2,LH2由(MSpub, ϑ,U)构成。LH2中元素初始值为空。当A1执行询问时,C检查LH2中是否存在元组(MSpub, ϑ,U);如果存在,返回U至A1;否则,C随机选择ϑ∈Zq*,计算U=ϑP。返回U至A1,存储(MSpub, ϑ,U)至LH2。
h1-query:C维护列表Lh1,Lh1由(IDi,pki,Ri,αi)构成。Lh1中元素初始值为空。当A1执行询问时,C检查Lh1中是否存在元组(IDi,pki,Ri,αi);如果存在,返回αi至A1;否则,C随机选择αi。返回U至A1,存储(IDi,pki,Ri,αi)至Lh1。
h2-query:C维护列表Lh2,Lh2由(mi,IDi,pki,Ri,βi)构成。Lh2中元素初始值为空。当A1执行询问时,C检查Lh2中是否存在元组(mi,IDi,pki,Ri,βi);如果存在,返回βi至A1; 否则,C随机选择βi。返回至A1,存储(mi,IDi,pki,Ri,βi)至Lh2。
Reveal-Partial-Private-Keyqueries:C维护列表Lppk,Lppk由(IDi,ppki)构成,Lppk中元素初始值为空。当A1执行询问,C首先检查是否IDi=IDts;如果成立,输出 ┴(表示该值未知);否则,C检查Lppk中是否存在元组(IDi,ppki);如果存在,返回ppki至A1;否则,C重新从Lppk中选择元组(IDi,δi,εi,Qi) 并计算ppki=δiMSpub=αδiP。返回ppki至A1,存储(IDi,ppki)至Lppk。
Reveal-Secret-Key-queries:C维护列表Lx,Lx由(IDi,xi)构成,Lx中元素初始值为空。当A1以身份为IDi进行询问时,C首先检查是否IDi=IDts;如果成立,输出;否则,C检查一个元组是否存在于(IDi,xi)中;如果存在,返回xi至A1;否则,C随机选择xi。返回xi至A1, 存储xi至(IDi,xi)。
Reveal-Public-Keyqueries:C维护列表Lpk,Lpk由(IDipki)构成,Lpk中元素初始值为空。当A1以身份为IDi进行询问时,C首先需要检查一个元组(IDi,pki)是否存在于Lpk中;如果存在pki,返回pki至A1;否则,通过Lx获取xi并计算pki=xiP。返回pki至A1,存储(IDi,pki)至Lpk。
Replace-Public-Keyqueries:当A1以身份为(IDi,pki*)进行询问时,C从列表Lpk中选取pki*替代真实公钥pki。
Sign-queries:当A1以身份为IDi,公钥为pki,消息为mi进行询问时,C分别通过LH1,LH2,Lh1及Lh2得到εi,Qi,U,αi和βi。C随机选择ri,并且计算Ri=riP;若εi=0,C计算Vi=δiαiMSpub+riMSpub+βiϑpki。返回δi=(Ri,Vi)至A1,作为消息mi的签名。
Forgery:最后,A1利用消息身份公钥对(mi*,IDi*,pki*)输出一个伪造的聚合签名δ*=(R*,V*)。如果所有εi=0成立,A1中止;否则,不失一般性,令IDts=ID1,也就是ε1=1,εi=0(2≤i≤n)。伪造签名应当满足以下等式:
(3)
具体推导过程如下:
但是,这与CDH困难问题相矛盾,因此由改进方案产生的单个签名和聚合签名都能够防止A1伪造攻击。
定理2如果在循环群G1中的CDH困难问题无法解决,那么改进的CLAS能够抵御敌手A2的伪造攻击。
证明过程与定理1相同,不再赘述。
针对地列举了几个现有的在随机预言机模型下的无证书聚合签名方案(CLAS)的安全级别和运算开销,并与改进的方案进行了对比分析。下面用于软件仿真的硬件环境为Ubuntu 18.10内存1 024 MB。硬件配置为Inter(R) Core(TM) i5-7500U,主频为3.4 GHz,内存为8 192 MB,软件环境为MIRACL。经过研究[6],发现这些方案主要的运算时间开销是由某些比较耗时的密码学算法所产生的,所以,本方案在实验进行的开始阶段优先考虑的各种运算见表1。
表1 符号表示
各密码运算执行时间见表2,多个用户(n=5)在无证书聚合签名验证过程中运算时间开销的对比见表3。很显然,本文改进的CLAS方案运算开销小于其它方案[7-10]。
表2 各密码运算执行时间
表3 CLAS方案运算时间对比
Tab. 3 Comparison of calculation time of CLAS schemems
方案单个签名生成单个签名验证聚合签名验证CWZ[7]22.94534.62280.515LYX[8]22.61428.72779.331DHW[9]22.94434.62880.516MZW[10]22.85629.05775.661本文方案22.55628.67471.473
攻击者分别为A1和A2两种类型,其中Bi1表示普通攻击,Bi2表示强攻击,SP表示方案的安全性。CLAS方案安全性对比见表4。通过表4可以看出,对比其它几个方案,本文所改进的方案具有相对较高安全性。
表4 CLAS方案安全性对比
无证书公钥密码体制解决了公钥密码体制中证书管理和密钥托管两个困难问题。聚合签名技术则将不同用户的消息签名聚合成一个签名,只对聚合后的签名进行验证,极大提高了签名验证的效率。本文提出了安全高效的适用于无线医疗传感器网络的无证书聚合签名方案,该方案具有无证书密码体制和聚合签名技术的双重优点,并且该方案在随机预言机模型下证明是安全的。通过实验数据可知,本文方案具有较高的安全性,较低的运算开销等优点,更适用于无线医疗传感器网络。