同态聚合签名方案在区块链+智慧医疗中的研究
2022-04-09茅磊张廷秀
茅磊 张廷秀
摘要:随着计算机网络技术和物联网技术的不断发展,智慧医疗已经走进我们的生活。智慧医疗通过打造健康档案区域医疗信息平台,利用最先进的物联网技术,实现患者与医务人员、医疗机构、医疗设备之间的互动,逐步达到信息化。医疗传感器所采集患者体征信息数据具有动态增长并且数据量大的特点,因此一般会将这些数据存放在云服务器中。随之而来的问题就是保护这些数据的完整性以及相关机构对患者医疗数据访问进行有效的监控。文章基于SM9国家商用密码算法设计了一种适用于云存储中动态增长海量数据完整性的验证方案,并且在该方案中引入区块链技术保障了对患者医疗数据使用的溯源和跟踪。
关键词:智慧医疗;同态聚合签名;SM9签名算法;区块链;云存储
中图分类号:TP393 文献标识码:A
文章编号:1009-3044(2022)06-0027-04
开放科学(资源服务)标识码(OSID):
1 概述
当代随着信息科技的不断进步,大数据、云存储、物联网技术正和醫疗技术不断融合,形成了一个综合交叉的领域——“智慧医疗”。在“智慧医疗”背景下,可以通过可穿戴或嵌入式医疗传感器收集患者相关的身体数据[1],再将这些数据传回医疗机构,使医疗服务机构能更好地监控患者病情的变化,提供精准的医疗诊断服务。然而无线医疗传感网络收集的患者体征数据具有以下特点:数据量巨大且随着时间的推移动态增长。因此,医疗机构往往选择将这些数据存放在云端,但是云服务商并不是完全诚实可信的[2]。所以如何保障存储在云端的患者医疗数据的机密性和完整性成为研究的一个热点[3]。云端医疗数据机密性保护不当会造成患者隐私的泄露,云端医疗数据完整性保护不当不但会直接影响医生对患者病情进展的诊断,而且会影响其他相关医疗机构对患者数据的使用和审计。对于云端数据机密性的保护一般可以通过数据加密的方式来保护,在这方面已有不少研究成果。例如,在文献[4]中周等人,设计了一套完整的基于区块链技术的数据存证管理系统,以保障数据的安全加密和用户验证。文献[5]中印一聪等人,讨论了在云环境下基于区块链技术的云存储数据完整性增强机制,其实验结果表明该机制可以抵御云存储中数据完整性证据被破坏而失去完整性的威胁。但是在无线医疗传感网络中,患者数据量随时间不断增长[6],目前对于云端动态增长数据完整性的有效解决方案尚不多见。针对上述问题,本文主要针对云端动态增长数据完整性验证设计出一个基于SM9同态聚合签名方案,并在此基础上结合区块链技术,对医疗数据访问记录的可溯源性展开了相关讨论。
2 相关工作
密码学中的数字签名技术可以提供对已签名数据的真实性、完整性和不可否认性的保障。SM9是中国政府颁布的一种基于身份(标识)的密码标准,相关标准为“GM/T 0044-2016 SM9标识密码算法”,其中包括了签名算法、加密算法、密钥交换算法。殷等人在文献[7]中指出,SM9的加密强度等同于3072位密钥的RSA密码算法。
同态签名和聚合签名是两种特殊签名。对于同态签名而言,如果数字签名的消息空间M中运算符为+、签名空间[Σ]中的[·],那么对于来自M和[Σ]上的消息签名对[m1,σ1]和[m2,σ2](其中[σ1=fm1],[σ2=fm2]),若签名算法f是代数系统[M,+]到[Σ,·]上同态映射,则有[fm1+m2]=[fm1·fm2]=[σ1⊗σ2]成立。而聚合签名可以将来自不同签名者不同数据的签名压缩成一个数字签名。如果聚合后的这个数字签名是合法的,那么等同于逐一验证所有聚合前的单个数字签名是合法的。如图1所示,对于云存储中动态增长的医疗数据,可以将每一个用户看作一个数据集,对于同一个患者上传的医疗数据签名,使用同态签名的同态组合算法压缩;而不同患者之间数据的签名使用聚合签名算法进一步压缩。当相关医疗机构从云端下载一些患者的相关医疗数据时,并同时下载对应的同态聚合签名,只要该同态聚合签名验证是合法的,则说明下载的对应数据就是完整的。不难看出,使用同态签名可以将同一数据集中的数据的签名进行压缩,而使用聚合签名可以将来自不同数据集中数据的签名进一步压缩,从而大大减少签名验证时的代价。
区块链是比特币的底层支撑技术,它是一种去中心化的分布式账本,而且凡是记录在区块链上的数据都具有防篡改、可追溯的特性[8],所以可将区块链和云存储中无线医疗数据的访问相结合,使用联盟链将所有的共享访问请求与授权作为一种“交易”记录在链中。当患者隐私发生泄漏时,司法部门可通过区块链中访问记录追溯泄露数据的节点,使其有据可循。由于区块链所有节点都保存完整的区块链账本数据,所以敌手篡改单个节点中的相关访问记录没有任何意义,经过每一轮的共识过程后,该节点又可同步到最新的数据。如图1所示,任何机构节点对患者医疗信息的访问情况都会被当成区块链中的一个交易记录在链上,并且只要写入链上就无法更改,所有的操作都变成日志记录在链中,包括访问节点的ID、访问时间、访问内容等。因此,当出现患者医疗数据发生泄漏事件时,患者可以通过法律的途径维护自身的权益。司法部门可通过区块链上不可篡改的访问记录进行溯源,追溯到所有访问该患者医疗数据的相关节点,并进行公正的判决。
3 基于身份的线性同态聚合签名方案
3.1 基于身份的线性同态聚合签名算法描述
(1) 系统建立算法Setup:
输入:安全参数[1k]和正整数N
输出:公开系统的公开参数params[=(G1,GT,N,e,g,Ppub,H,H0,H1,H2,φ)]
(其中,[G1,G2,GT]是p阶的循环群,[P1]是[G1]的生成元,[P2]是[G2]的生成元;双线性映射[e:G1×G2→GT]。[φ]是[G2]到[G1]上的同态映射[φP2=P1];计算[GT]中的元素[g=eP1,Ppub];系统主私钥[s],[s∈[1,N-1]],[Ppub=s∙P2];四个密码学Hash函数分别为:[H]:[0,1*→N],[H0]:[0,1*→Z*p],[H1:{0,1}*→G1] ,[H2:{0,1}*→G1])
聚合签名的验证者随机选取[α∈Z*p],设置验证者验证私钥为[α],验证公钥为([X',X''])。其中,[X'=α∙P2],[X''=α∙Ppub]。
(2) Key-Extract:
输入:系统的公开参数params,主私钥[s],和用户身份[ID∈{0,1}*];
输出:用户的签名私钥[skID]。
(其中,用户的签名私钥[skID=s(h*+s)-1∙P1],[h*=H(ID)],KGC秘密的将[skID]发送给用户)
(3) Sign:
输入:系统的公开参数params,用户身份ID,用户私钥[skID],数据集标识信息[M]和消息向量[m=m1,m2,…,mn∈Znp],签名用户选择两个随机数[β,r∈[1,N-1]]。
输出:消息的签名([τ,σ])
其中,([τ,σ])如下进行计算:
① 分别计算[w=eP1,Ppubr=gr]和[Q=β∙P2]
② 计算[h=H(M∥w)]
③ 计算[l=r-h mod N]
④ 计算[ε=l∙skID]
⑤ 设置[τ=(Q,h,w,ε)]
⑥ 计算[Ti=H2ID∥τ∥i]
⑦ 计算[σ=β∙i=1Nmi∙Ti]
⑧ 输出的签名为:[ϑ]=([τ,σ])
(4) Homomorpic-Combine:
输入:为用户身份ID,公钥[PK],和[k]个元组[βi,mi,σiki=1].
输出:导出的向量签名对:[y=i=1kβi∙mi],[σ=i=1kβi∙σi]
(5) Verify:
输入:系统公开参数params,用户身份ID,数据集标识信息[M],消息向量[y=(y1,y2,…,yn)∈Znp]和数据集标识信息[M]、消息向量[y=(y1,y2,…,yn)∈Znp]的签名[ϑ]=([τ,σ]),其中[τ=(Q,h,w,ε)]。
输出:签名验证的结果,如果合法则输出1,否则输出0。
验证的过程为:
Ø [h*=H(ID)]
Ø [P=h*P2+Ppub]
Ø [w'=eε,PeP1,Ppubh]
Ø [h'=H(M∥w')]
验证是否有[h'=h],若成立则进入下一步,否则输出0。
接下来验证下面的等式是否成立,其中[Ti=H2ID∥τ∥i]:
[eσ,P2=ei=1NTi∙yi,Q]
如果上式成立则该算法输出1,否则输出0。
(6) Aggregate:该算法由签名聚合者执行,设聚合签名用户子集为U[∈]U,q=[U],每个用户在公钥[PKj]下,对各自数据集标签[τj]标记的[l]维消息向量子空间基[mj=mj1,mj2,…,mjl⊂Znp]以及对应的签名为[σj=σj1,σj2,…,σjl],(其中[mjk=mjk,1,mjk,2,…,mjk,n∈Znp]且k = 1,2,…,[ l] ; j = 1,…,q)。驗证公钥为([X',X'']),计算[X=h*X'+X''],如下计算聚合签名([μ,t]):
[μ=H(eε1,X, …,eεq,X )]
[t=H(eσ11,X',…,eσ1l,X',]
[eσ21,X',…,eσ2l,X',]
[… ,]
[eσq1,X',…,eσql,X')]
(7) AggregateVerify:该算法由聚合签名的验证者运行,该算法输入q个用户在其公钥[PKj]下,对各自数据集标签[τj]标记的[l]维消息向量子空间基[mj=mj1,mj2,…,mjl],(其中[mjk=mjk,1,mjk,2,…,mjk,n∈Znp]且k = 1,2,…,[ l];j = 1,…,q)以及对应的聚合签名t。然后计算[hj=H0ID∥Rj∥Ppub],[Wj=eP1,Ppubrj=grj],聚合签名的验证者如下进行验证:
[μ'=H(wα1g-αh1, … ,wαqg-αhq])
[t'=H(ei=1Nm1k,i∙Ti,α∙Q1…] ,[ei=1Nmqk,i∙Ti,α∙Qq])
其中,k = 1,2,…,[ l]. 如果有[μ=μ']且[t=t'],则该算法输出1,否则输出0。
3.2 方案正确性验证
(1) 签名算法Sign所输出签名的第一部分的正确性验证:
[w'=eε,PeP1,Ppubh]
=[e(lsh*+s-1∙P1,h*+s∙P2)eP1,Ppubh]
=[eP1,Ppub(l+h)=eP1,Ppubr=w]
故有:
[h'=HM∥w'=HM∥w=h]
(2) 由Hom-Combine算法产生签名的正确性验证:设[y=k=1lβkmk],其中[mk=(mk,1,mk,2,…,mk,n)∈Znp],[βk∈Zp],[{(mk,σk)}lk=1]是[l]个合法的向量签名对;[σ=k=1lβk∙σk]。运用双线性映射的相关性质有:
[eσ,P2][=e(k=1lβk∙i=1nmk,i∙Ti,α∙P2)]
[=e(i=1nyi∙Ti,Q)]
(3) 聚合签名Aggregate算法的正确性:
[μ=Heε1,X, …,eεq,X]
[=Heε1,h*1X'+X'', …,eεq,h*qX'+X'']
[=H(el1sh*1+s-1∙P1,h*1α∙P2+α∙Ppub,]
[…,]
[elqsh*q+s-1∙P1,h*qα∙P2+α∙Ppub)]
[=H(wα1g-αh1, … ,wαqg-αhq])[= μ']
[t=H(eσ11,X',…,eσ1l,X',… ,eσq1,X',…,eσql,X')]
[=H(ei=1Nm1k,i∙Ti,α∙Q1,…],[ei=1Nmqk,i∙Ti,α∙Qq])[=t']
3.3 基于身份同态聚合签名的安全性证明
如前所述,基于SM9同态聚合签名的安全性证明可分成两部分:
(1) 基本SM9签名方案的正确性,赖建昌等学者已经证明SM9数字签名算法具有EUF-CMIA的安全性,具体证明过程请参照文献[9]。
(2) 聚合算法的安全性:
定理:设哈希函数H是抗碰撞的,当且仅当在聚合签名中每个用户的签名是合法的,则由聚合算法产生的聚合签名是合法的。
证明:设每个单个的签名是合法的,则有[eεj,P=wjghj]成立(其中,[g=eP1,Ppub]),则有[eεj,α∙P]=[wαjg-αhj]成立。
故有,
[μ=Heε1,α∙P, …,eεq,α∙P=Heε1,X, …,eεq,X]
[=Heε1,h*1X'+X'', …,eεq,h*qX'+X'']
[=H(el1sh*1+s-1∙P1,h*1α∙P2+α∙Ppub,]
[…,]
[elqsh*q+s-1∙P1,h*qα∙P2+α∙Ppub)]
[=H(el1s∙P1,α∙P2,…,elqs∙P1,α∙P2)]
[=H(wα1g-αh1, … ,wαqg-αhq])[= μ']
所以,聚合签名是合法的。
另一方面,由[μ=μ'],可得:
[H(wα1g-αh1, … ,wαqg-αhq])
=[ H(el1s∙P1,α∙P2,…,elqs∙P1,α∙P2)]
[=H(el1sh*1+s-1∙P1,h*1α∙P2+α∙Ppub,]
[…,]
[elqsh*q+s-1∙P1,h*qα∙P2+α∙Ppub)]
[=Heε1,α∙P, …,eεq,α∙P]
由于哈希函数H是强抗碰撞的,固有[eεj,α∙P]=[wαjg-αhj]成立。所以,[eεj,P=wjghj]。因此每个用户单个标签是合法的。
设单个签名元组[σz=σz1,σz2,…,σzl]是[l]维消息向量子空间基[mz=mz1,mz2,…,mzl]的合法签名,则有:
[eσzk,P2=ei=1Nmzk,i∙Ti,Qz]
故有,
[eσzk,X'=eα∙(i=1NmZk,i∙Ti),QZ=ei=1NmZk,i∙Ti,α∙QZ],即[t=t']。
另一方面,由[μ=μ']成立,可得:
[eσzk,X'=ei=1NmZk,i∙Ti,α∙QZ]
即[eσzk,P2=ei=1Nmzk,i∙Ti,Qz]成立。
所以,单个签名元组[σz=σz1,σz2,…,σzl]是[l]维消息向量子空间基[mz=mz1,mz2,…,mzl]的合法签名。
4 基于身份线性同态聚合签名方案性能实验
在仿真实验中,针对上述设计的基于SM9同态聚合签名方案(SM9-Homomorphic Aggregation Signature, SM9-HAS),将其与普通SM9签名在性能上进行了比较。如表1、图2所示,可以直观看出基于SM9同态聚合签名在验证数据完整性效率上的优势。在仿真实验中,我们对以下5组实验中的数据的完整性进行了验证。
从上述实验中可以看出,使用基于SM9的同态聚合签名,可以极大地提高动态增长数据完整性效验的效率。由于医疗传感器网络中,传感器每隔一段时间就会采集患者的体征数据,可见采集的数据是呈动态增长的趋势,如果使用普通的SM9数字签名,医疗传感器每采集一个数据,就需要对应地产生一个数字签名,随着时间的推移,产生的数据和签名会越来越多,最终签名的数量和数据的数量成正比。在进行数据完整性公开验证时,如果使用普通SM9数字签名方案,为了验证N个患者数据的完整性,则需要获得所有用户数据块的签名,并对签名逐一验证。可见随着待验证文件数据块个数的不断增大,用户在验证时的计算代价也越来越大。
而采用本文设计的基于SM9的同态聚合签名就可以极大地压缩签名的数量。如图3所示,将来自同一患者的医疗传感器看作一个数据集,在该数据集中的数据的签名可以使用同态签名的算法进行压缩,对于来自不同患者的数据集标签以及对应的同态组合后的签名,使用聚合签名中的聚合算法进行第二层签名的聚合,最终存放在云端就是传感器采集来的数据和对应的同态聚合签名。患者数据的使用者和审计者只需下载所需的数据和对应的同态聚合签名,即可实现对相关数据完整性的审计。
5 总结
本文在国家密码管理局颁布的SM9标识密码算法的基础上,设计了基于一种SM9的同态聚合签名方案,将其应用于无线医疗传感网络中收集的动态增长的医疗数据完整性的检验中,提高了各个机构在验证患者医疗数据完整性时的效率,并通过区块链技术保障对患者医疗诊断数据使用的共享和可溯源性,在一定程度上遏制了一些医疗机构和医疗保险机构有意无意泄露患者医疗数据的情况。
参考文献:
[1] 郭瑞,陈宇霜,郑东.无线医疗传感网络中基于区块链的高效无证书聚合签名方案[J].信息网络安全,2020,20(10):6-18.
[2] 魏济泽,汪硕.一种基于区块链技术的医疗数据存储方案[J].网络安全技术与应用,2021(7):79-81.
[3] 孙赛.区块链电子病历系统中共识机制的研究与实现[D].西安:西安电子科技大学,2019.
[4] 周艺华,吕竹青,杨宇光,等.基于区块链技术的数据存证管理系统[J].信息网络安全,2019(8):8-14.
[5] 印一聪.一种基于区块链的云存储数据完整性增强机制[J].现代计算机,2021(18):176-180.
[6] 張剑,夏启,赵雅萍.基于区块链技术的电子病历数据存储系统研究[J].中国医疗设备,2021,36(7):106-109.
[7] 殷明.基于标识的密码算法SM9研究综述[J].信息技术与信息化,2020(5):88-93.
[8] 常源恒,丁有伟,胡孔法.一种基于区块链的中医电子病历共享方法[J].软件导刊,2021,20(11):163-167.
[9] 赖建昌,黄欣沂,何德彪,等.国密SM9数字签名和密钥封装算法的安全性分析[J].中国科学:信息科学,2021,51(11):1900-1913.
【通联编辑:代影】