CN111310203B - 一种基于sm2和sm4的电子病历混合加密方法 - Google Patents

一种基于sm2和sm4的电子病历混合加密方法 Download PDF

Info

Publication number
CN111310203B
CN111310203B CN202010084908.0A CN202010084908A CN111310203B CN 111310203 B CN111310203 B CN 111310203B CN 202010084908 A CN202010084908 A CN 202010084908A CN 111310203 B CN111310203 B CN 111310203B
Authority
CN
China
Prior art keywords
point
modular
algorithm
multiplication
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010084908.0A
Other languages
English (en)
Other versions
CN111310203A (zh
Inventor
杨祖元
陈怡雯
张宇轩
陈禧琛
黄昊楠
李珍妮
孙为军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong University of Technology
Original Assignee
Guangdong University of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong University of Technology filed Critical Guangdong University of Technology
Priority to CN202010084908.0A priority Critical patent/CN111310203B/zh
Publication of CN111310203A publication Critical patent/CN111310203A/zh
Application granted granted Critical
Publication of CN111310203B publication Critical patent/CN111310203B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16HHEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
    • G16H10/00ICT specially adapted for the handling or processing of patient-related medical or healthcare data
    • G16H10/60ICT specially adapted for the handling or processing of patient-related medical or healthcare data for patient-specific data, e.g. for electronic patient records

Landscapes

  • Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Theoretical Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Epidemiology (AREA)
  • Medical Informatics (AREA)
  • Primary Health Care (AREA)
  • Public Health (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种基于SM2和SM4的电子病历混合加密方法,利用SM4算法产生的密钥对明文进行加密,再用SM2算法对SM4算法的密钥进行加密,并将该混合加密方案应用在电子病历加密中,解决单一加密算法在实际应用场景中的缺陷,快速对电子病历进行加解密,提高电子病历的安全性;将SM2算法加密过程在ARM处理器上实现,利用ARM处理器实现SM2算法的硬件优化以提高加密速度,硬件电路采用分层设计的方法,其中核心运算层为点乘电路,第二层为点加、倍点运算电路,第三层为模运算电路,由此实现各层次电路功能和硬件资源的复用。

Description

一种基于SM2和SM4的电子病历混合加密方法
技术领域
本发明涉及电子病历加密技术领域,具体涉及一种基于SM2和SM4的电子病历混合加密方法。
背景技术
随着电子信息的高速发展,电子病历逐渐成为医院数字化管理的核心,它能使医院及时了解到病人的当前情况并且做出相应的治疗方案,是进行临床研究的重要的资源。但是,作为电子病历的载体,医院信息系统中有大量数据需要存储和传输,在电子病历的整个生命周期包括产生、传输、存储、再利用过程中,偶然或恶意等原因都可能造成数据的破坏、显露、丢失或更改,所以建立一个安全的电子病历数据库十分重要。
密码体制主要包括对称密钥密码体制和非对称密钥密码体制。对称密钥密码体制又称单密钥体制,其特点为加密和解密使用相同的密钥,且加密内容的安全依赖于密钥的保密。非对称密钥密码体制又称双密钥密码体制,其特点为加密和解密的密钥不同,加密使用公钥,该密钥可以对外公开;解密使用私钥,由个人进行保管。对称密码的加密速度较快,一般是非对称密码的一千倍,在加密大量数据时优势明显。非对称密码由于公钥和私钥不同,即使攻击者得到加密密钥也无法获得明文内容,安全性高。
国家商用密码算法是用于保护不属于国家秘密信息的一类密码,在国家经济、管理、社会事务以及公民个人信息安全等方面发挥重要作用,是国家安全保障体系的关键部分。国家商用密码算法中,对称密码包括SM1、SM4、SM7、ZUC(祖冲之密码),其中SM1和SM7密码没有公开发布;非对称密码包括SM2和SM9。
由于医院里病人的信息时时刻刻都会更新,因此电子病历加密系统不仅要考虑到加密的安全性,还需考虑到加密算法所耗费的时间。从电子病历原始数据的输入到其加密完成、传送到数据库的过程中应满足低延迟的需求。现有的对于电子病历加密通常采用单一算法进行加密,若只采用对称密码对电子病历进行加密,速度相对较快,但是密钥安全性较弱;若只采用非对称密钥对电子病历进行加密,密钥安全性能够得到保证,但是在加密大量数据过程中速度较慢。
现有技术中,电子病历加密系统设计主要通过单一的加密算法对电子病历内容进行加密,其中:南京市医院主要采用国产商用密码电子病历系统,其应用SM2算法实现加密功能;胡春燕等人的数据库AES加密在电子病历系统中的应用研究。这些医疗领域的信息安全加密方案通常采用单一密码算法加密,难以综合考虑加密的速度和安全性,而且算法的实现通常是在软件上完成,速度相对较慢,无法较好地实现保护电子病历安全的目的。
发明内容
本发明的目的在于克服现有技术的缺点与不足,提供一种基于SM2和SM4的电子病历混合加密方法,该方法通过对电子病历的混合加密,保证电子病历的安全。
本发明的目的通过下述技术方案实现:
一种基于SM2和SM4的电子病历混合加密方法,包括下述步骤:
步骤一,采用HL7 CDA R2标准框架建立电子病历临床文档;电子病历通常需要在不同系统之间交换信息,因此电子病历信息的表示必须满足结构化和标准化HL7 CDA R2(Health Level 7Clinical Document Architecture)标准框架可从句法层、语义层、语用层三个层面建立具有结构化和标准化的电子病历;其中,句法层基于XML技术提供了句法的规范,语义层基于HL7 RIM(Reference Information Model)可以实现对临床信息的语义理解,包括药物处方、医学图像报告这些专业医学信息,以及问诊记录的医疗过程描述;语用层基于HL7V3实现电子病历的传递,同时CDA可对信息的隐私等级进行标记;
步骤二,对所述步骤一中所建立的电子病历临床文档,读取文件流,并以128位为单位,利用SM4密钥生成模块生成的密钥进行加密,并将生成的电子病历密文存储在数据服务器中;
(1)SM4密钥生成模块;
密钥扩展:输入128位的密钥,进行32轮迭代,每一轮产生一个32位的轮密钥,共产生32个轮密钥;
(2)SM4加密模块;
1)s盒代换:以字节为单位进行非线性替换,输入字节的前四位和后四位确定s盒中替换的字节;
2)线性变化:移位运算和异或运算,输入输出都为32位;
3)加密算法:输入为128位,即4个32位的字,输出也为128位;共有32轮迭代,每一轮使用一个32位的轮密钥;
4)解密算法:与加密算法相同,只是轮密钥的使用顺序相反;
步骤三,对所述步骤二中SM4模块生成的密钥,利用SM2密钥生成模块生成的密钥进行加密,并将生成的SM4密钥密文存储到存储设备中;其中,密钥生成模块在软件上完成,加密过程在硬件平台完成;
(1)SM2密钥生成模块;
设终端A(患者终端)和终端B(医院密钥管理平台)协商获得密钥数据的长度为klen比特,A为发起方,B为响应方;A和B双方为了获得相同的密钥,实现如下运算步骤:
Figure BDA0002381701060000041
终端A:
A1:用随机数发生器产生随机数rA∈[1,n-1];
A2:利用点乘模块计算椭圆曲线点RA=[rA]G=(x1,y1);
A3:将RA发送给B;
终端B:
B1:用随机数发生器产生随机数rB∈[1,n-1];
B2:利用点乘模块计算椭圆曲线点RB=[rB]G=(x2,y2);
B3:从RB中取出域元素x2,将x2的数据类型由域元素转换为整数,计算
Figure BDA0002381701060000042
B4:计算
Figure BDA0002381701060000043
B5:验证RA是否满足椭圆曲线方程,若不满足则协商失败;否则从RA中取出域元素x1,将x1的数据类型由域元素转换为整数,计算
Figure BDA0002381701060000044
Figure BDA0002381701060000045
B6:计算椭圆曲线点
Figure BDA0002381701060000051
若V是无穷远点,则B协商失败;否则将xV、yV的数据类型由域元素转换为字节串再转换为比特串;
B7:计算KB=KDF(xV∥yV∥ZA∥ZB,klen);
B8:将RA的坐标x1、y1和RB的坐标x2、y2的数据类型由域元素转换为字节串再转换为比特串,计算
SB=Hash(0x02∥yV∥Hash(xV∥ZA∥ZB∥x1∥y1∥x2∥y2));
B9:将RB、SB发送给A;
终端A:
A4:从RA中取出域元素x1,将x1的数据类型由域元素转换为整数,计算
Figure BDA0002381701060000052
A5:计算
Figure BDA0002381701060000053
A6:验证RB是否满足椭圆曲线方程,若不满足则协商失败;否则从RB中取出域元素x2,将x2的数据类型由域元素转换为整数,计算
Figure BDA0002381701060000054
Figure BDA0002381701060000055
A7:计算椭圆曲线点
Figure BDA0002381701060000056
若U是无穷远点,则A协商失败;否则将xU、yU的数据类型由域元素转换为字节串再转换为比特串;
A8:计算KA=KDF(xU∥yU∥ZA∥ZB,klen);
A9:将RA的坐标x1、y1和RB的坐标x2、y2的数据类型由域元素转换为字节串再转换为比特串,计算
S1=Hash(0x02∥yU∥Hash(xU∥ZA∥ZB∥x1∥y1∥x2∥y2)),
并检验S1=SB是否成立,若等式不成立则从B到A的密钥确认失败;
A10:计算
SA=Hash(0x03∥yU∥Hash(xU∥ZA∥ZB∥x1∥y1∥x2∥y2)),并将SA发送给B;
终端B:
B10:计算
S2=Hash(0x03∥yV∥Hash(xV∥ZA∥ZB∥x1∥y1∥x2∥y2)),
并检验S2=SA是否成立,若等式不成立则从A到B的密钥确认失败;
(2)SM2加密过程;
所述步骤二中生成的SM4加密密钥为需要加密的内容,设为比特串M,klen为M的比特长度,SM4加密密钥的长度为128bit,则klen=128;
为了对M进行加密,作为加密者的终端A实现以下运算步骤:
2.1)用随机数发生器产生随机数k∈[1,n-1];
2.2)利用点乘模块计算椭圆曲线点C1=[k]G=(x1,y1),并将C1的数据类型由点转换为字节串再转换为比特串;
2.3)计算椭圆曲线点S=[h]PB,若S是无穷远点,则报错并退出;
2.4)利用点乘模块计算椭圆曲线点[k]PB=(x2,y2),将坐标x2、y2的数据类型由与域元素转换为字节串再转换为比特串;
2.5)计算t=KDF(x2∥y2,klen),若t为全0比特串,则返回A1;
2.6)计算C2=M⊕t;
2.7)计算C3=Hash(x2∥M∥y2);
2.8)输出密文C=C1∥C2∥C3;
(3)SM2的解密过程;
设klen为密文中C2的比特长度;
为了对密文C=C1∥C2∥C3进行解密,作为解密者的用户B实现以下运算步骤:
3.1)从C中取出比特串C1,将C1的数据类型由比特串转换为字节串再转换为椭圆曲线上的点,验证C1是否满足椭圆曲线方程,若不满足则报错并退出;
3.2)利用点乘模块计算椭圆曲线点S=[h]C1,若S是无穷远点,则报错并退出;
3.3)利用点乘模块计算[dB]C1=(x2,y2),将坐标x2、y2的数据类型由域元素转换为字节串再转换为比特串;
3.4)计算t=KDF(x2∥y2,klen),若t为全0比特串,则报错并退出;
3.5)从C中取出比特串C2,计算M=C2⊕t;
3.6)计算u=Hash(x2//M’//y2),从C中取出比特串C3,若uC3,则报错并退出;
3.7)输出明文M’。
优选地,所述步骤三中的点乘模块具体为:
(1)SM2点乘模块的层次,顶层模块为点乘运算,第二层为点加、倍点运算,第三层为模加、模减、模乘、模逆运算;
(2)SM2点乘模块的算法,模乘算法采用交错算法,模乘操作采用二进制欧拉算法,具体如下:
模乘算法:
Input:X,Y,M:0≤X,Y<M,M is prime field.
Output:R:R=X*Y mod M
step1:R=0
step2:for(i=n-1;i≥0:i--){
step3:R=2R+Xi*Y
step4:R=R-(Rn+1,Rn)*M
step5:}
step6:if R>M then R=R-M
step7:return R
模逆算法:
Figure BDA0002381701060000081
(3)SM2模运算硬件资源分配,模运算包括模加、模减、模乘、模逆,四个运算在一个状态机中实现,其中两个加法器作为公共硬件资源,在运算过程中被复用;
(4)SM2点运算状态机设置,点运算包括点加、倍点、点乘,其中点加和倍点运算的差别在于斜率的求法不同,而k的结果和xR、yR的求法相同;通过将相同步骤的状态合并减少状态机的状态数;模逆运算根据控制条件在运算过程中跳转到点加状态或倍点状态。
优选地,所述(3)中的SM2模运算硬件资源分配,具体为:
3.1)模加运算的硬件资源调度,模加运算在一个周期内完成,加法器1对输入值a和b进行加法运算,加法器2中的运算控制加法器1的结果不超过模数p;
3.2)模减运算的硬件资源调度,模减运算在一个周期内完成,加法器1对输入值a和法运算,加法器2中的运算控制加法器1的结果不超过模数p;
3.3)模乘运算硬件资源调度,模乘运算采用交错算法,该过程在257个时钟周期内完成;在0~256个时钟周期内,两个加法器分别完成循环过程中的加法和减法运算;除了公共硬件资源外,模乘运算的前256个时钟周期需要一个计数器对循环进行计时;模乘运算的第257个时钟周期用于控制模乘结果不超过模数p,该过程对其中一个加法器进行复用;
3.4)模逆运算硬件资源调度,模逆运算采用二进制欧拉算法,该运算过程的状态机的状态设置依次为:初始状态,u为偶数时的运算,v为偶数时的运算,u>v且u、v都为奇数时的运算,u<v且u、v都为偶数时的运算,u=1或v=1时的运算,结果输出;在u为偶数时的运算和v为偶数时的运算中,各自需要一个加法器;在u、v都为奇数时的两个状态中,总共需要四个加法器;为了减少加法器资源的使用,将u、v都为奇数时u和v相减的运算提前到u为偶数时的运算中或v为偶数时的运算中,使改进后的两个状态都只需要两个加法器。
本发明与现有技术相比具有以下的有益效果:
(1)本发明采用SM2和SM4混合加密算法对电子病历加密,提高了加密速度和安全性;
(2)本发明SM2的加密过程在硬件平台上完成,尤其是SM2算法中的点乘运算,通过对多个模块进行拆分实现并行运算,使该过程可以在更低的系统时钟频率下进行更加有效快捷的运算,同时也降低了整个系统的功耗;
(3)本发明通过对SM2算法中的点乘模块的硬件资源进行复用,降低硬件资源的使用;
(4)本发明通过对SM2算法中的点乘模块中状态机的状态进行合并,提高系统运行速度。
附图说明
图1为本发明的整体架构示意图;
图2为本发明SM2加密算法的硬件平台架构示意图;
图3为本发明SM2解密算法的硬件平台架构示意图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
本发明基于SM2和SM4的电子病历数据库混合加密方法,结合SM4对称加密算法在加密速度方面的优势以及SM2非对称算法在密钥安全方面的优势,先利用SM4对称加密算法将电子病历编码后的数据进行加密传输到数据库存储,相比于采用SM2算法直接对电子病历内容进行加密,速度明显加快;然后再利用SM2非对称加密将算法将SM4的密钥进行加密,相比于只采用SM4算法对电子病历内容进行加密,而未对SM4密钥进行保护,安全性得到改善。通过对电子病历的混合加密,保证电子病历安全。
具体来说,如图1~3所示,一种基于SM2和SM4的电子病历混合加密方法,包括下述步骤:
步骤一,采用HL7 CDA R2标准框架建立电子病历临床文档;电子病历通常需要在不同系统之间交换信息,因此电子病历信息的表示必须满足结构化和标准化HL7 CDA R2(Health Level 7Clinical Document Architecture)标准框架可从句法层、语义层、语用层三个层面建立具有结构化和标准化的电子病历;其中,句法层基于XML技术提供了句法的规范,语义层基于HL7 RIM(Reference Information Model)可以实现对临床信息的语义理解,包括药物处方、医学图像报告这些专业医学信息,以及问诊记录的医疗过程描述;语用层基于HL7V3实现电子病历的传递,同时CDA可对信息的隐私等级进行标记;
步骤二,对所述步骤一中所建立的电子病历临床文档,读取文件流,并以128位为单位,利用SM4密钥生成模块生成的密钥进行加密,并将生成的电子病历密文存储在数据服务器中;
(1)SM4密钥生成模块;
密钥扩展:输入128位的密钥,进行32轮迭代,每一轮产生一个32位的轮密钥,共产生32个轮密钥;
(2)SM4加密模块;
1)s盒代换:以字节为单位进行非线性替换,输入字节的前四位和后四位确定s盒中替换的字节;
2)线性变化:移位运算和异或运算,输入输出都为32位;
3)加密算法:输入为128位,即4个32位的字,输出也为128位;共有32轮迭代,每一轮使用一个32位的轮密钥;
4)解密算法:与加密算法相同,只是轮密钥的使用顺序相反;
步骤三,对所述步骤二中SM4模块生成的密钥,利用SM2密钥生成模块生成的密钥进行加密,并将生成的SM4密钥密文存储到存储设备中;其中,密钥生成模块在软件上完成,加密过程在硬件平台完成;
(1)SM2密钥生成模块;
设终端A(患者终端)和终端B(医院密钥管理平台)协商获得密钥数据的长度为klen比特,A为发起方,B为响应方;A和B双方为了获得相同的密钥,实现如下运算步骤:
Figure BDA0002381701060000121
终端A:
A1:用随机数发生器产生随机数rA∈[1,n-1];
A2:利用点乘模块计算椭圆曲线点RA=[rA]G=(x1,y1);
A3:将RA发送给B;
终端B:
B1:用随机数发生器产生随机数rB∈[1,n-1];
B2:利用点乘模块计算椭圆曲线点RB=[rB]G=(x2,y2);
B3:从RB中取出域元素x2,将x2的数据类型由域元素转换为整数,计算
Figure BDA0002381701060000131
B4:计算
Figure BDA0002381701060000132
B5:验证RA是否满足椭圆曲线方程,若不满足则协商失败;否则从RA中取出域元素x1,将x1的数据类型由域元素转换为整数,计算
Figure BDA0002381701060000133
Figure BDA0002381701060000134
B6:计算椭圆曲线点
Figure BDA0002381701060000135
若V是无穷远点,则B协商失败;否则将xV、yV的数据类型由域元素转换为字节串再转换为比特串;
B7:计算KB=KDF(xV∥yV∥ZA∥ZB,klen);
B8:将RA的坐标x1、y1和RB的坐标x2、y2的数据类型由域元素转换为字节串再转换为比特串,计算
SB=Hash(0x02∥yV∥Hash(xV∥ZA∥ZB∥x1∥y1∥x2∥y2));
B9:将RB、SB发送给A;
终端A:
A4:从RA中取出域元素x1,将x1的数据类型由域元素转换为整数,计算
Figure BDA0002381701060000139
A5:计算
Figure BDA0002381701060000136
A6:验证RB是否满足椭圆曲线方程,若不满足则协商失败;否则从RB中取出域元素x2,将x2的数据类型由域元素转换为整数,计算
Figure BDA0002381701060000137
Figure BDA0002381701060000138
A7:计算椭圆曲线点
Figure BDA0002381701060000141
若U是无穷远点,则A协商失败;否则将xU、yU的数据类型由域元素转换为字节串再转换为比特串;
A8:计算KA=KDF(xU∥yU∥ZA∥ZB,klen);
A9:将RA的坐标x1、y1和RB的坐标x2、y2的数据类型由域元素转换为字节串再转换为比特串,计算
S1=Hash(0x02∥yU∥Hash(xU∥ZA∥ZB∥x1∥y1∥x2∥y2)),
并检验S1=SB是否成立,若等式不成立则从B到A的密钥确认失败;
A10:计算
SA=Hash(0x03∥yU∥Hash(xU∥ZA∥ZB∥x1∥y1∥x2∥y2)),并将SA发送给B;
终端B:
B10:计算
S2=Hash(0x03∥yV∥Hash(xV∥ZA∥ZB∥x1∥y1∥x2∥y2)),
并检验S2=SA是否成立,若等式不成立则从A到B的密钥确认失败;
(2)SM2加密过程;
所述步骤二中生成的SM4加密密钥为需要加密的内容,设为比特串M,klen为M的比特长度,SM4加密密钥的长度为128bit,则klen=128;
为了对M进行加密,作为加密者的终端A实现以下运算步骤:
2.1)用随机数发生器产生随机数k∈[1,n-1];
2.2)利用点乘模块计算椭圆曲线点C1=[k]G=(x1,y1),并将C1的数据类型由点转换为字节串再转换为比特串;
2.3)计算椭圆曲线点S=[h]PB,若S是无穷远点,则报错并退出;
2.4)利用点乘模块计算椭圆曲线点[k]PB=(x2,y2),将坐标x2、y2的数据类型由与域元素转换为字节串再转换为比特串;
2.5)计算t=KDF(x2∥y2,klen),若t为全0比特串,则返回A1;
2.6)计算C2=M⊕t;
2.7)计算C3=Hash(x2∥M∥y2);
2.8)输出密文C=C1∥C2∥C3;
(3)SM2的解密过程;
设klen为密文中C2的比特长度;
为了对密文C=C1∥C2∥C3进行解密,作为解密者的用户B实现以下运算步骤:
3.1)从C中取出比特串C1,将C1的数据类型由比特串转换为字节串再转换为椭圆曲线上的点,验证C1是否满足椭圆曲线方程,若不满足则报错并退出;
3.2)利用点乘模块计算椭圆曲线点S=[h]C1,若S是无穷远点,则报错并退出;
3.3)利用点乘模块计算[dB]C1=(x2,y2),将坐标x2、y2的数据类型由域元素转换为字节串再转换为比特串;
3.4)计算t=KDF(x2∥y2,klen),若t为全0比特串,则报错并退出;
3.5)从C中取出比特串C2,计算M=C2⊕t;
3.6)计算u=Hash(x2//M’//y2),从C中取出比特串C3,若uC3,则报错并退出;
3.7)输出明文M’。
其中,所述点乘模块具体为:
(1)SM2点乘模块的层次,顶层模块为点乘运算,第二层为点加、倍点运算,第三层为模加、模减、模乘、模逆运算;
(2)SM2点乘模块的算法,模乘算法采用交错算法,模乘操作采用二进制欧拉算法,具体如下:
模乘算法:
Input:X,Y,M:0≤X,Y<M,M is prime field.
Output:R:R=X*Y mod M
step1:R=0
step2:for(i=n-1;i≥0:i--){
step3:R=2R+Xi*Y
step4:R=R-(Rn+1,Rn)*M
step5:}
step6:if R>M then R=R-M
step7:return R
模逆算法:
Figure BDA0002381701060000161
Figure BDA0002381701060000171
(3)SM2模运算硬件资源分配,模运算包括模加、模减、模乘、模逆,四个运算在一个状态机中实现,其中两个加法器作为公共硬件资源,在运算过程中被复用;
3.1)模加运算的硬件资源调度,模加运算在一个周期内完成,加法器1对输入值a和b进行加法运算,加法器2中的运算控制加法器1的结果不超过模数p;
3.2)模减运算的硬件资源调度,模减运算在一个周期内完成,加法器1对输入值a和法运算,加法器2中的运算控制加法器1的结果不超过模数p;
3.3)模乘运算硬件资源调度,模乘运算采用交错算法,该过程在257个时钟周期内完成;在0~256个时钟周期内,两个加法器分别完成循环过程中的加法和减法运算;除了公共硬件资源外,模乘运算的前256个时钟周期需要一个计数器对循环进行计时;模乘运算的第257个时钟周期用于控制模乘结果不超过模数p,该过程对其中一个加法器进行复用;
3.4)模逆运算硬件资源调度,模逆运算采用二进制欧拉算法,该运算过程的状态机的状态设置依次为:初始状态,u为偶数时的运算,v为偶数时的运算,u>v且u、v都为奇数时的运算,u<v且u、v都为偶数时的运算,u=1或v=1时的运算,结果输出;在u为偶数时的运算和v为偶数时的运算中,各自需要一个加法器;在u、v都为奇数时的两个状态中,总共需要四个加法器;为了减少加法器资源的使用,将u、v都为奇数时u和v相减的运算提前到u为偶数时的运算中或v为偶数时的运算中,使改进后的两个状态都只需要两个加法器。
(4)SM2点运算状态机设置,点运算包括点加、倍点、点乘,其中点加和倍点运算的差别在于斜率的求法不同,而k的结果和xR、yR的求法相同;通过将相同步骤的状态合并减少状态机的状态数;模逆运算根据控制条件在运算过程中跳转到点加状态或倍点状态。
本发明综合考虑电子病历加密过程中对速度和安全的要求,在医疗电子病历领域,提出一种基于SM2和SM4的混合加密算法,利用SM4算法的产生的密钥对明文进行加密,再用SM2算法对SM4算法的密钥进行加密,并将该混合加密方案应用在电子病历加密中,解决单一加密算法在实际应用场景中的缺陷,快速对电子病历进行加解密,提高电子病历的安全性;将SM2算法加密过程在ARM处理器上实现,利用ARM处理器实现SM2算法的硬件优化以提高加密速度,硬件电路采用分层设计的方法,其中核心运算层为点乘电路,第二层为点加、倍点运算电路,第三层为模运算电路,由此实现各层次电路功能和硬件资源的复用。
本发明采用SM2和SM4混合加密算法对电子病历加密,提高了加密速度和安全性;SM2的加密过程在硬件平台上完成,尤其是SM2算法中的点乘运算,通过对多个模块进行拆分实现并行运算,使该过程可以在更低的系统时钟频率下进行更加有效快捷的运算,同时也降低了整个系统的功耗;通过对SM2算法中的点乘模块的硬件资源进行复用,降低硬件资源的使用;通过对SM2算法中的点乘模块中状态机的状态进行合并,提高系统运行速度。
上述为本发明较佳的实施方式,但本发明的实施方式并不受上述内容的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

Claims (1)

1.一种基于SM2和SM4的电子病历混合加密方法,其特征在于,包括下述步骤:
步骤一,采用HL7 CDA R2标准框架建立电子病历临床文档;电子病历通常需要在不同系统之间交换信息,因此电子病历信息的表示必须满足结构化和标准化;HL7 CDA R2(Health Level 7 ClinicalDocument Architecture)标准框架可从句法层、语义层、语用层三个层面建立具有结构化和标准化的电子病历;其中,句法层基于XML技术提供了句法的规范;语义层基于HL7 RIM(Reference InformationModel)可以实现对临床信息的语义理解,包括药物处方、医学图像报告这些专业医学信息,以及问诊记录的医疗过程描述;语用层基于HL7V3实现电子病历的传递,同时CDA可对信息的隐私等级进行标记;
步骤二,对所述步骤一中所建立的电子病历临床文档,读取文件流,并以128位为单位,利用SM4密钥生成模块生成的密钥进行加密,并将生成的电子病历密文存储在数据服务器中;
(1)SM4密钥生成模块;密钥扩展:输入128位的密钥,进行32轮迭代,每一轮产生一个32位的轮密钥,共产生32个轮密钥;
(2)SM4加密模块;
1)s盒代换:以字节为单位进行非线性替换,输入字节的前四位和后四位确定s盒中替换的字节;
2)线性变化:移位运算和异或运算,输入输出都为32位;
3)加密算法:输入为128位,即4个32位的字,输出也为128位;共有32轮迭代,每一轮使用一个32位的轮密钥;
4)解密算法:与加密算法相同,只是轮密钥的使用顺序相反;
步骤三,对所述步骤二中SM4模块生成的密钥,利用SM2密钥生成模块生成的密钥进行加密,并将生成的SM4密钥密文存储到存储设备中;其中,密钥生成模块在软件上完成,加密过程在硬件平台完成;
(1)SM2密钥生成模块;
设终端A和终端B协商获得密钥数据的长度为klen比特,A为发起方,B为响应方;A和B双方为了获得相同的密钥,实现如下运算步骤:
Figure FDA0003998193610000021
终端A:
A1:用随机数发生器产生随机数rA∈[1,n-1];
A2:利用点乘模块计算椭圆曲线点RA=[rA]G=(x1,y1);
A3:将RA发送给B;
终端B:
B1:用随机数发生器产生随机数rB∈[1,n-1];
B2:利用点乘模块计算椭圆曲线点RB=[rB]G=(x2,y2);
B3:从RB中取出域元素x2,将x2的数据类型由域元素转换为整数,计算
Figure FDA0003998193610000024
B4:计算
Figure FDA0003998193610000022
B5:验证RA是否满足椭圆曲线方程,若不满足则协商失败;否则从RA中取出域元素x1,将x1的数据类型由域元素转换为整数,计算
Figure FDA0003998193610000025
B6:计算椭圆曲线点
Figure FDA0003998193610000023
若V是无穷远点,则B协商失败;否则将xV、yV的数据类型由域元素转换为字节串再转换为比特串;
B7:计算KB=KDF(xV∥yV∥ZA∥ZB,klen);
B8:将RA的坐标x1、y1和RB的坐标x2、y2的数据类型由域元素转换为字节串再转换为比特串,计算
SB=Hash(0x02∥yV∥Hash(xV∥ZA∥ZB∥x1∥y1∥x2∥y2));
B9:将RB、SB发送给A;
终端A:
A4:从RA中取出域元素x1,将x1的数据类型由域元素转换为整数,计算
Figure FDA0003998193610000033
Figure FDA0003998193610000034
A5:计算
Figure FDA0003998193610000031
A6:验证RB是否满足椭圆曲线方程,若不满足则协商失败;否则从RB中取出域元素x2,将x2的数据类型由域元素转换为整数,计算
Figure FDA0003998193610000035
A7:计算椭圆曲线点
Figure FDA0003998193610000032
若U是无穷远点,则A协商失败;否则将xU、yU的数据类型由域元素转换为字节串再转换为比特串;
A8:计算KA=KDF(xU∥yU∥ZA∥ZB,klen);
A9:将RA的坐标x1、y1和RB的坐标x2、y2的数据类型由域元素转换为字节串再转换为比特串,计算
S1=Hash(0x02∥yU∥Hash(xU∥ZA∥ZB∥x1∥y1∥x2∥y2)),并检验S1=SB是否成立,若等式不成立则从B到A的密钥确认失败;
A10:计算
SA=Hash(0x03∥yU∥Hash(xU∥ZA∥ZB∥x1∥y1∥x2∥y2)),并将SA发送给B;
终端B:
B10:计算
S2=Hash(0x03∥yV∥Hash(xV∥ZA∥ZB∥x1∥y1∥x2∥y2)),并检验S2=SA是否成立,若等式不成立则从A到B的密钥确认失败;
(2)SM2加密过程;
所述步骤二中生成的SM4加密密钥为需要加密的内容,设为比特串M,klen为M的比特长度,SM4加密密钥的长度为128bit,则klen=128;
为了对M进行加密,作为加密者的终端A实现以下运算步骤:
2.1)用随机数发生器产生随机数k∈[1,n-1];
2.2)利用点乘模块计算椭圆曲线点C1=[k]G=(x1,y1),并将C1的数据类型由点转换为字节串再转换为比特串;
2.3)计算椭圆曲线点S=[h]PB,若S是无穷远点,则报错并退出;
2.4)利用点乘模块计算椭圆曲线点[k]PB=(x2,y2),将坐标x2、y2的数据类型由与域元素转换为字节串再转换为比特串;
2.5)计算t=KDF(x2∥y2,klen),若t为全0比特串,则返回A1;
2.6)计算
Figure FDA0003998193610000041
2.7)计算C3=Hash(x2∥M∥y2);
2.8)输出密文C=C1∥C2∥C3;
(3)SM2的解密过程;
设klen为密文中C2的比特长度;
为了对密文C=C1∥C2∥C3进行解密,作为解密者的用户B实现以下运算步骤:
3.1)从C中取出比特串C1,将C1的数据类型由比特串转换为字节串再转换为椭圆曲线上的点,验证C1是否满足椭圆曲线方程,若不满足则报错并退出;
3.2)利用点乘模块计算椭圆曲线点S=[h]C1,若S是无穷远点,则报错并退出;
3.3)利用点乘模块计算[dB]C1=(x2,y2),将坐标x2、y2的数据类型由域元素转换为字节串再转换为比特串;
3.4)计算t=KDF(x2∥y2,klen),若t为全0比特串,则报错并退出;
3.5)从C中取出比特串C2,计算
Figure FDA0003998193610000051
3.6)计算u=Hash(x2//M’//y2),从C中取出比特串C3,若uC3,则报错并退出;
3.7)输出明文M’;
所述步骤三中的点乘模块具体为:
(1)SM2点乘模块的层次,顶层模块为点乘运算,第二层为点加、倍点运算,第三层为模加、模减、模乘、模逆运算;
(2)SM2点乘模块的算法,模乘算法采用交错算法,模乘操作采用二进制欧拉算法;
(3)SM2模运算硬件资源分配,模运算包括模加、模减、模乘、模逆,四个运算在一个状态机中实现,其中两个加法器作为公共硬件资源,在运算过程中被复用;
(4)SM2点运算状态机设置,点运算包括点加、倍点、点乘,其中点加和倍点运算的差别在于斜率的求法不同,而k的结果和xR、yR的求法相同;通过将相同步骤的状态合并减少状态机的状态数;模逆运算根据控制条件在运算过程中跳转到点加状态或倍点状态;
所述(3)中的SM2模运算硬件资源分配,具体为:
3.1)模加运算的硬件资源调度,模加运算在一个周期内完成,加法器1对输入值a和b进行加法运算,加法器2中的运算控制加法器1的结果不超过模数p;
3.2)模减运算的硬件资源调度,模减运算在一个周期内完成,加法器1对输入值a和b进行减法运算,加法器2中的运算控制加法器1的结果不超过模数p;
3.3)模乘运算硬件资源调度,模乘运算采用交错算法,该过程在257个时钟周期内完成;在0~256个时钟周期内,两个加法器分别完成循环过程中的加法和减法运算;除了公共硬件资源外,模乘运算的前256个时钟周期需要一个计数器对循环进行计时;模乘运算的第257个时钟周期用于控制模乘结果不超过模数p,该过程对其中一个加法器进行复用;
3.4)模逆运算硬件资源调度,模逆运算采用二进制欧拉算法,该运算过程的状态机的状态设置依次为:初始状态,u为偶数时的运算,v为偶数时的运算,u>v且u、v都为奇数时的运算,u<v且u、v都为偶数时的运算,u=1或v=1时的运算,结果输出;在u为偶数时的运算和v为偶数时的运算中,各自需要一个加法器;在u、v都为奇数时的两个状态中,总共需要四个加法器;为了减少加法器资源的使用,将u、v都为奇数时u和v相减的运算提前到u为偶数时的运算中或v为偶数时的运算中,使改进后的两个状态都只需要两个加法器。
CN202010084908.0A 2020-02-10 2020-02-10 一种基于sm2和sm4的电子病历混合加密方法 Active CN111310203B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010084908.0A CN111310203B (zh) 2020-02-10 2020-02-10 一种基于sm2和sm4的电子病历混合加密方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010084908.0A CN111310203B (zh) 2020-02-10 2020-02-10 一种基于sm2和sm4的电子病历混合加密方法

Publications (2)

Publication Number Publication Date
CN111310203A CN111310203A (zh) 2020-06-19
CN111310203B true CN111310203B (zh) 2023-02-03

Family

ID=71161696

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010084908.0A Active CN111310203B (zh) 2020-02-10 2020-02-10 一种基于sm2和sm4的电子病历混合加密方法

Country Status (1)

Country Link
CN (1) CN111310203B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112989391B (zh) * 2021-04-15 2024-01-16 广州蚁比特区块链科技有限公司 混合加密方法、混合解密方法、系统、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106790210A (zh) * 2017-01-05 2017-05-31 深圳市证通电子股份有限公司 数据安全交互方法、终端侧安全装置和服务端侧安全装置
CN107612680A (zh) * 2017-09-14 2018-01-19 哈尔滨理工大学 一种移动网络支付中的国密算法
CN109274663A (zh) * 2018-09-07 2019-01-25 西安莫贝克半导体科技有限公司 基于sm2动态密钥交换与sm4数据加密的通信方法
CN110197076A (zh) * 2019-05-22 2019-09-03 北京航空航天大学 一种sm4加密算法的软件优化实现方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107026859A (zh) * 2017-03-31 2017-08-08 西安电子科技大学 一种隐私云医疗数据的安全传输方法
CN109145568A (zh) * 2018-08-21 2019-01-04 西安得安信息技术有限公司 一种基于pci-e接口的全算法密码卡及其加密方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106790210A (zh) * 2017-01-05 2017-05-31 深圳市证通电子股份有限公司 数据安全交互方法、终端侧安全装置和服务端侧安全装置
CN107612680A (zh) * 2017-09-14 2018-01-19 哈尔滨理工大学 一种移动网络支付中的国密算法
CN109274663A (zh) * 2018-09-07 2019-01-25 西安莫贝克半导体科技有限公司 基于sm2动态密钥交换与sm4数据加密的通信方法
CN110197076A (zh) * 2019-05-22 2019-09-03 北京航空航天大学 一种sm4加密算法的软件优化实现方法

Also Published As

Publication number Publication date
CN111310203A (zh) 2020-06-19

Similar Documents

Publication Publication Date Title
CN111106936B (zh) 一种基于sm9的属性加密方法与系统
Almaiah et al. A new hybrid text encryption approach over mobile ad hoc network
CN110120939B (zh) 一种基于异构系统的可否认认证的加密方法和系统
CN108418686A (zh) 一种多分布式的sm9解密方法与介质及密钥生成方法
CN104301108B (zh) 一种从基于身份环境到无证书环境的签密方法
CN107425968A (zh) 一种二进制域F2m下的SM2椭圆曲线公钥加密算法的实现系统
Pussewalage et al. A delegatable attribute based encryption scheme for a collaborative e-health cloud
JP2022528925A (ja) データを暗号化するためのコンピュータにより実施される方法及びシステム
CN104158880A (zh) 一种用户端云数据共享解决方法
CN107086912B (zh) 一种异构存储系统中的密文转换方法、解密方法及系统
CN113141247B (zh) 一种同态加密方法、装置、系统及可读存储介质
CN115865531B (zh) 一种代理重加密数字资产授权方法
CN111865555B (zh) 一种基于k-Lin假设的同态加密方法
Hahn et al. Trustworthy delegation toward securing mobile healthcare cyber-physical systems
JP2001202010A (ja) メッセージの公開型且つ非可換性の符号化方法及び暗号化方法
KR20230141845A (ko) 임계값 키 교환
CN105339995A (zh) 解密装置、解密能力提供装置、其方法、以及程序
CN114629646A (zh) 基于混合后量子密钥封装和协商的安全传输方法及系统
Chen et al. A restricted proxy re‐encryption with keyword search for fine‐grained data access control in cloud storage
CN111310203B (zh) 一种基于sm2和sm4的电子病历混合加密方法
CN116318696B (zh) 一种双方无初始信任情况下代理重加密数字资产授权方法
CN113268764A (zh) 一种混合链和门限代理重加密的个人信用数据授权方法
JP5633563B2 (ja) 楕円曲線上のパラメータ化による暗号法
CN109981254A (zh) 一种基于有限李型群分解问题的微型公钥加密方法
Ledda et al. Enhancing IDEA algorithm using circular shift and middle square method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant