本发明涉及电子医疗数据隐私保护,具体涉及基于密钥封装机制的电子医疗数据隐私保护方法及系统。
背景技术:
1、电子医疗服务在带给人们便利的同时,频发的电子医疗数据泄露事件,例如电子医疗数据被随意拍照泄露、电子病历的非法传播、患者医疗病历被随意调取以及网站入侵导致的电子医疗数据泄露等,也暴露出电子医疗数据存储的安全问题。为解决电子医疗数据隐私传输的安全问题,2023年吴龙等人提出了采用sm4-gcm(galois/counter mode)算法对以明文形式存储在数据库中的电子病历信息、患者个人信息等敏感数据进行存储完整性和机密性保护的方案,从而降低敏感数据被窃取和非授权篡改风险。然而,使用单一的国密sm4算法难以满足医疗数据传输过程的安全性,保证用户信息的安全性和隐私性。
技术实现思路
1、发明目的:本发明的第一目的是针对当前电子医疗数据传输中存在的安全性和真实性问题,提供一种基于密钥封装机制的电子医疗数据隐私保护方法,以显著提升医疗数据传输过程的安全性,提升用户信息的安全性和隐私性;本发明的第二目的是提供一种基于密钥封装机制的电子医疗数据隐私保护系统。
2、技术方案:本发明所述的基于密钥封装机制的电子医疗数据隐私保护方法,包括:
3、(1)加密时,对电子医疗数据进行国密sm4对称加密,并使用国密sm2非对称加密公钥对国密sm4进行密钥封装;解密时,使用国密sm2非对称加密私钥解密获得国密sm4密钥,再使用国密sm4密钥解密获得患者医疗数据;
4、(2)使用国密sm3杂凑算法对系统用户的密码进行加密存储。
5、进一步地,步骤(1)包括:
6、(1-1)配置椭圆曲线系统参数g、授权接收医师的部门代码a与其标识码b,输出sm2非对称加密公钥sm2非对称加密私钥以及sm4对称加密密钥其中ida∈{0,1}*为授权接收医师的身份,pda为患者医疗数据标识;
7、(1-2)根据sm2非对称加密公钥和sm4对称加密密钥输出sm4对称加密密钥经sm2非对称加密公钥加密后的密文
8、(1-3)配置国密sm4的系统参数fk与固定参数ck,使用sm4对称加密密钥加密患者医疗数据明文得到患者数据初始密文
9、(1-4)接收密钥封装后的密文患者数据初始密文根据授权接收医师的身份ida以及联合标识码a,b进行数据传输;
10、(1-5)使用sm2非对称加密私钥对密文进行解密,获得sm4对称加密密钥使用sm4对称加密密钥对患者数据初始密文进行解密,获得患者医疗数据明文
11、进一步地,步骤(1-1)包括:
12、计算椭圆曲线点c1=[k]g=(a,b),g≠o,计算得到字节串s=pc||a||b,使用随机数发生器,产生整数作为接收医师的国密算法sm2私钥并产生长度为128比特的国密算法sm4密钥计算接收医师非对称加密的公钥
13、进一步地,步骤(1-2)包括:
14、计算椭圆曲线点h是余因子,[h]表示计算h倍的的值;判断s是否为无穷远点,若是,则报错退出;否则继续计算;
15、计算椭圆曲线点k是正整数;将联合标识码a,b的数据类型转换为比特串使用密钥派生函数kdf计算参数klen为密钥长度,若t全为0比特串,则返回步骤(1-1);
16、计算且使用哈希函数hash计算密文表示32位异或运算;
17、可通过验证私钥值判断密文正确性,公式为:
18、进一步地,步骤(1-3)包括:
19、(1-3-1)sm4对称加密密钥sk=(sk0,sk1,sk2,sk3),其中ski(i=0,1,2,3)为字,生成32比特字的轮密钥(rk0,rk1,…,rk31),使用系统参数fk=(fk0,fk1,fk2,fk3)和固定参数ck=(ck0,ck1,…,ck31)进行密钥扩展;
20、(1-3-2)计算生成轮密钥,患者医疗数据明文分解为pm0,pm1,pm2,pm3都表示32位的字,轮密钥为轮函数f如下式所示:
21、
22、t(.)=l(τ(.)),为合成置换t的过程,是将有非线性变换的τ和线性变换的l复合;
23、(1-3-3)非线性变换τ由4个并行的s盒构成,输入经过s盒变换公式,输出output=(pm'0,pm'1,pm'2,pm'3),且输出的值同时等于如下公式所得结果:τ(input)=(sbox(pm0),sbox(pm1),sbox(pm2),sbox(pm3));
24、(1-3-4)线性变换l,由步骤(1-3-3)算得非线性变换τ(input)的输出是线性变换l的输入,设置线性变换的输入ipl与输出opl,且即输入与输出之间变换的公式为:opl=l(ipl),具体变换的公式如下:
25、
26、(1-3-5)32次s盒迭代运算与1次反序变换r运算,其中32次迭代运算式为:以及反序变换r运算后输出患者数据初始密文,公式为
27、进一步地,步骤(1-5)包括:
28、(1-5-1)设klen为密文c2的比特长度,获得密文取出比特串c1,将数据类转换为椭圆曲线上的点,验证c1的正确性,不满足,则数据报错运算中断;
29、计算椭圆曲线点s=[h]c1,验证s是否为无穷远点,若是,则报错退出;否则继续计算;
30、(1-5-2)使用sm2非对称加密私钥计算将坐标转换为比特串;计算t=kdf(a0||b0,klen),验证t是否为全0比特串,若是,则报错退出;否则继续计算;
31、(1-5-3)从中取出比特串c2,计算计算验证因子数从取出c3,若μ≠c3,则报错退出;若μ=c3,则输出sm4对称加密密钥
32、(1-5-4)通过sm4对称加密密钥进行对称加密的解密操作以得到患者医疗数据明文其变换结构与加密的变换结构相同,使用轮密钥序(rk31,rk30,…,rk0)即可。
33、进一步地,步骤(2)包括:
34、(2-1)用户密码的填充,设置用户a的登录密码明文iva,输出密码消息填充后的密码消息iv′a;
35、(2-2)用户密码的扩展,输入填充后的密码iv′a,按512比特进行分组,输出迭代压缩的结果v(n)a;
36、(2-3)用户密码的压缩,设定密码数据存放的8个寄存器,分别是r1,r2,r3,r4,r5,r6,r7,r8,同时设置中间变量ss1,ss2,tt1,tt2,用于压缩函数的计算,输出杂凑值v(n)a。
37、进一步地,步骤(2-1)包括:
38、设置的用户a密码初始明文为iva,长度为l比特,首先将比特“1”添加到密码初始明文的末尾,再添加k个“0”,且k满足l+1+k≡448(mod512)的最小非负整数,再添加长度l的二进制比特串,填充后的密码iv′a比特长度即512的倍数。
39、进一步地,步骤(2-2)包括:
40、填充后的密码iv′a按512比特进行密码消息分组,iv′a=b(0)b(1)…b(n-1),其中n=(l+k+65)/512;
41、对iv′a使用压缩函数cf进行密码消息iv′a的迭代:v(i+1)=cf(v(i),b(i)),i=0,1…n-1,iva为256比特初始值v(0),b(i)是填充后的密码消息分组,扩展生成132个消息字,即w0,w1,…,w67,w′0,w′1,…,w′63,用于压缩函数cf生成迭代压缩结果v(n)a;其中,压缩函数cf分为三步,先将密码消息分组b(i)划分为w0,w1,…,w15共16个字,再进行32比特异或运算并进行左向赋值运算,公式为:
42、
43、最后,计算其中j随着数值的变化使用不同的运算方式取不同的值;
44、步骤(2-3)包括:
45、密码存放的8个寄存器分别命名为r1,r2,r3,r4,r5,r6,r7,r8,设置ss1,ss2,tt1,tt2为中间变量,使用压缩函数vi+1=cf(v(i),b(i)),0≤i≤n-1进行计算,在j=0,1,…63范围内,计算过程如下,左向赋值中间变量ss1:ss1←((r1<<<12)+r5+(ti<<<(jmod32)))<<<7,中间变量ss1与寄存器r1进行32比特循环左移12比特后左向赋值ss2:对r1,r2,r3寄存器数据进行布尔函数ffi计算并与寄存器r4,中间变量ss2与字wi′相连并左向赋值到中间变量tt1,即tt1←ffi(r1,r2,r3)+r4+ss2+wi′,字wi′是将消息分组进行扩展生成的132个消息字,用于压缩函数的运算;对r5,r6,r7寄存器数据进行布尔函数ggi计算并与寄存器r8,中间变量ss1与字w'i相连并左向赋值到中间变量tt2,即tt2←ggi(r5,r6,r7)+r8+ss1+wi′,再进行寄存器之间的左向赋值,即r4←r3,r3←r2<<<9,r2←r1,r1←tt1,r8←r7,r7←r6<<<19,r6←r5,最后对tt2使用压缩函数中置换函数p0进行左向赋值r5←p0(tt2);获得根据计算机特性,数据存储使用的是大端序,即左边为高有效位,右边为低有效位;最后输出的杂凑值是r1r2r3r4r5r6r7r8←v(n),v(n)a=r1r2r3r4r5r6r7r8;其中,当j∈[0,15]时,函数ffj与函数ggj进行32位比特异或运算,使用公式分别如下:函数函数当j∈[16,63]时,函数ffj与函数ggj进行32位比特与运算和32或运算,使用公式分别如下:函数ffj(r1,r2,r3)=(r1∧r2)∨(r1∧r3)∨(r2∧r3),函数ggj(r5,r6,r7)=(r5∧r6)∨(r5∧r7)∨(r6∧r7)。
46、本发明所述的基于密钥封装机制的电子医疗数据隐私保护系统,包括:
47、系统参数设置模块,用于配置椭圆曲线系统参数g、授权接收医师的部门代码a与其标识码b,输出sm2非对称加密公钥sm2非对称加密私钥以及sm4对称加密密钥其中ida∈{0,1}*为授权接收医师的身份,pda为患者医疗数据标识;将sm4对称加密密钥发送给国密算法sm4对称加密模块、国密算法sm2非对称加密密钥封装模块、密钥解密模块和患者数据解密模块;将sm2非对称加密私钥发送给授权的接收医师端;
48、国密算法sm4对称加密模块,用于配置国密sm4的系统参数fk与固定参数ck,使用sm4对称加密密钥加密患者医疗数据明文得到患者数据初始密文
49、国密算法sm2非对称加密密钥封装模块,用于根据sm2非对称加密公钥和sm4对称加密密钥输出sm4对称加密密钥经sm2非对称加密公钥加密后的密文
50、密钥解密模块,用于根据sm2非对称加密私钥对密文进行解密,获得sm4对称加密密钥
51、以及,患者数据解密模块,用于根据sm4对称加密密钥对患者数据初始密文进行解密,获得患者医疗数据明文
52、有益效果:本发明与现有技术相比,具有如下显著优点:
53、本发明提供了国密算法sm2、sm3和sm4相结合,对患者电子医疗数据进行隐私保护的方案。采用国密算法sm4与sm2结合直接对患者电子医疗数据的密钥封装机制加密操作,具体来说,是将电子医疗数据进行国密算法sm4对称加密,同时将传输的密钥进行国密算法sm2椭圆曲线公钥密码算法的非对称加密,接收医师端获得加密的电子医疗数据后先使用自己的国密算法sm2私钥对国密算法sm4对称加密密钥进行解密,再使用获得的密钥对电子医疗数据进行国密算法sm4解密获得患者电子医疗数据的明文。这样不仅能有效规避电子医疗数据传输过程中被网站入侵者非法拦截后暴露数据明文,而且能防范非授权人对患者电子医疗数据的随意调取与拍照。同时,对电子医疗系统用户信息(即系统用户的密码)使用国密算法sm3杂凑算法进行加密存储在数据库中,能够保护用户信息不被恶意篡改和暴力破解,防止网站入侵后用户信息的明文泄露。
54、本发明能够显著提升医疗数据传输过程的安全性,提升用户信息的安全性和隐私性,提供了一种电子医疗数据隐私保护领域更全面、可靠的解决方案。
1.基于密钥封装机制的电子医疗数据隐私保护方法,其特征在于,包括:
2.根据权利要求1所述的基于密钥封装机制的电子医疗数据隐私保护方法,其特征在于,步骤(1)包括:
3.根据权利要求2所述的基于密钥封装机制的电子医疗数据隐私保护方法,其特征在于,步骤(1-1)包括:
4.根据权利要求3所述的基于密钥封装机制的电子医疗数据隐私保护方法,其特征在于,步骤(1-2)包括:
5.根据权利要求4所述的基于密钥封装机制的电子医疗数据隐私保护方法,其特征在于,步骤(1-3)包括:
6.根据权利要求5所述的基于密钥封装机制的电子医疗数据隐私保护方法,其特征在于,步骤(1-5)包括:
7.根据权利要求1至6中任一项所述的基于密钥封装机制的电子医疗数据隐私保护方法,其特征在于,步骤(2)包括:
8.根据权利要求7所述的基于密钥封装机制的电子医疗数据隐私保护方法,其特征在于,步骤(2-1)包括:
9.根据权利要求8所述的基于密钥封装机制的电子医疗数据隐私保护方法,其特征在于,步骤(2-2)包括:
10.基于密钥封装机制的电子医疗数据隐私保护系统,其特征在于,包括: