CN111625856B - 基于国密算法的溯源和前向安全的可搜索密文病历系统 - Google Patents
基于国密算法的溯源和前向安全的可搜索密文病历系统 Download PDFInfo
- Publication number
- CN111625856B CN111625856B CN202010122180.6A CN202010122180A CN111625856B CN 111625856 B CN111625856 B CN 111625856B CN 202010122180 A CN202010122180 A CN 202010122180A CN 111625856 B CN111625856 B CN 111625856B
- Authority
- CN
- China
- Prior art keywords
- doctor
- data
- trusted
- patient
- trusted agent
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
- G06F21/6263—Protecting personal data, e.g. for financial or medical purposes during internet communication, e.g. revealing personal data from cookies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16H—HEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
- G16H10/00—ICT specially adapted for the handling or processing of patient-related medical or healthcare data
- G16H10/60—ICT 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)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Medical Informatics (AREA)
- Data Mining & Analysis (AREA)
- Epidemiology (AREA)
- Primary Health Care (AREA)
- Public Health (AREA)
- Medical Treatment And Welfare Office Work (AREA)
Abstract
本发明公开了一种基于国密算法的可溯源认证和前向安全的可搜索密文电子病历系统,旨在解决病人隐私数据保护、医生诊断记录溯源追责问题。本发明对涉及病人隐私数据的存储和传输的各个模块,使用国密算法SM2、SM3、SM4和保序加密算法进行加密处理,并且根据数据私密性程度,采用不同的加密工作模式,在保证隐私保护的前提下同时提供快速高效的数据处理速度,具有安全、高效、可认证等优点;对就诊记录表中加入计数器字段,能够实现密文数据搜索的前向安全性;同时具有诊断记录溯源追责功能,能够有效解决医疗事故鉴定和追责问题。
Description
技术领域
本发明涉及电子病历技术领域,尤其涉及基于国密算法的溯源和前向安全的可搜索密文病历系统。
背景技术
电子病历是用电子设备(计算机、健康卡等)保存、管理、传输和重现的数字化的病人医疗记录,取代手写纸张病历。电子病历具有主动性、完整和正确、知识关联、及时获取等特征,是医疗机构对门诊、住院患者(或保健对象)临床诊疗和指导干预的、数字化医疗服务工作记录。电子病历是信息技术和网络技术在医疗领域的必然产物,是医院病历现代化管理的必然趋势,其在临床的初步应用,极大地提高了医院的工作效率和医疗质量。
传统的电子病历系统解决方案是基于关系型数据库或关系型数据库与大数据计算相结合的方式,两种方案都可以解决电子病历系统中复杂的业务表关联与信息的查询和存储问题。然而,患者的相关隐私数据是以明文的形式存储在云服务器上,就面临着隐私泄露等等一系列隐患。为保护存储在云端电子病历数据的私密性,通常将隐私数据加密之后上传到云端服务器。但是数据经过加密之后,用户无法像明文数据一样在密文上执行检索操作,电子病历系统变得不再可用。
近年来,医患关系日趋紧张复杂,医患纠纷愈演愈烈,医患关系已成为现阶段全社会前所未有的共同关注点。医患关系紧张的其中一个重要因素便是医疗事故。医疗事故是指医疗机构及其医务人员在医疗活动中,违反医疗卫生管理法律、行政法规、部门规章和诊疗护理规范、常规,过失造成患者人身损害的事故。确定是否为医疗事故目前需要医疗事故鉴定委员会鉴定才能认定。因此,医疗事故的鉴定和追责成为处理医疗事故的关键一环。
发明内容
本发明的目的就在于为了解决上述病人隐私数据保护、医生诊断记录溯源追责问题,提供基于国密算法的溯源和前向安全的可搜索密文病历系统,对涉及病人隐私数据的存储和传输的各个模块,使用国密算法SM2、SM3、SM4和保序加密算法进行加密处理,并且根据数据私密性程度,采用不同的加密工作模式,在保证隐私保护的前提下同时提供快速高效的数据处理速度,具有安全、高效、可认证等优点,以及对就诊记录表中加入计数器字段,能够实现密文数据搜索的前向安全性,同时具有诊断记录溯源追责功能,能够有效解决医疗事故鉴定和追责问题。
为实现上述目的,本发明采用如下技术方案:
基于国密算法的溯源和前向安全的可搜索密文病历系统,包括电子病历病人端,电子病历医生端,半可信密文存储服务器,可信代理中心;
所述电子病历病人端,包括病人注册登录模块、病人挂号模块、病人查询就诊记录模块;
所述电子病历医生端,包括医生注册登录模块、医生查询挂号模块、医生接诊模块、医生录入就诊记录模块、医生就诊记录溯源认证模块、医生查询就诊记录模块;
所述半可信密文存储服务器,用于存储电子病历医生端上传的加密数据,并与可信代理中心通信,执行相应的搜索操作,并将搜索结果返回给可信代理中心;
所述可信代理中心,是绝对可信的,是系统的核心,它负责与电子病历医生端(或病人端)直接交互并处理数据、管理密钥和与半可信密文存储服务器通信,可信代理中心是客户端与半可信密文存储服务器之间的调度层,负责资源分配和安全计算,还包括用户管理模块,密钥管理模块。
如上所述的基于国密算法的溯源和前向安全的可搜索密文病历系统,其特征在于:所述病人注册登录模块,用于病人注册、登录到病人端,再执行后续挂号、查询等操作,首先与可信代理建立安全通信,然后发送注册信息(包括操作码14和用户类型状态码)给可信代理,可信代理计算用户身份证号的哈希,然后将用户发来的数据和哈希值插入半可信服务器的用户表,半可信服务器接收数据并插入信息,如果用户已存在(身份证号的哈希值相同)则返回插入失败,然后半可信服务器把操作结果(true/false)和响应码24加密发送给用户,判断注册是否成功,登录过程类似于注册过程,用户的登录和注销都由可信服务器维护的身份证号哈希值来保证快速查询;
所述病人挂号模块,用于病人在登录电子病历病人端后,根据自身病情,选择相应科室和医生进行挂号操作,病人首先填写并发送挂号信息,包括身份证号、所挂科室和医生姓名等信息和操作码31,可信代理中心接收到挂号信息后加密数据并向半可信密文存储服务器发送SQL语句,半可信密文存储服务器接收到指令后向挂号表插入就诊信息,随后将执行结果(true/false)返回给可信代理中心,可信代理中心向病人端发送加密的响应数据和响应码41,病人端接收数据并将数据显示给用户查看;
所述病人查询就诊记录模块,用于病人查询自己就诊的记录情况,查询操作支持对科室、医生姓名和医生身份证号的精确查询,以及对于就诊时间的区间查询,病人端发送查询条件和操作码11给可信代理;可信代理处理查询条件(加密查询条件)并向半可信服务器发送密文SQL,半可信服务器执行操作并将查询到的数据返回给可信代理,可信代理解密查询到的数据,然后使用会话密钥加密数据发送给用户端,包括响应码21,病人端解密并显示结果在界面上,同时自动进行签名验证并将验证结果显示在病人端界面;
如上所述的基于国密算法的溯源和前向安全的可搜索密文病历系统,其特征在于:
所述医生注册登录模块,用于医生注册、登录到医生端,再执行后续操作,首先与可信代理建立安全通信,然后发送注册信息(包括操作码14和用户类型状态码)给可信代理,可信代理计算用户身份证号的哈希,然后将用户发来的数据和哈希值插入半可信服务器的用户表,半可信服务器接收数据并插入信息,如果用户已存在(身份证号的哈希值相同)则返回插入失败,然后半可信服务器把操作结果(true/false)和响应码24加密发送给用户,判断注册是否成功,登录过程类似于注册过程,用户的登录和注销都由可信服务器维护的身份证号哈希值来保证快速查询;
所述医生查询挂号模块,用于医生可以查看挂号在自己名下的病人,医生端首先向可信代理中心请求当前科室和挂自己号的挂号信息,医生端系统自动向可信代理发送其所在的科室信息和操作码32,可信代理处理数据生成密文SQL并发送给半可信服务器,半可信服务器执行操作并将当前科室的所有挂号信息返回给可信代理,可信代理先使用私有的SM4密钥解密结果,再用会话密钥加密发送给医生,包括响应码42;医生端系统解密并将挂号信息显示给医生;
所述医生接诊模块,用于医生接诊挂号在自己名下的病人,医生在接收到当前科室的挂号信息后确认接诊一位病人,医生端系统发送该病人的身份证号和操作码33给可信代理中心,可信代理中心根据身份证号的哈希值向半可信密文存储服务器查询病人用户表,半可信服务器将查询到的病人详细信息发送给可信代理,可信代理使用私有SM4密钥解密再使用会话密钥加密数据发送给医生端,包括响应码43;医生端系统接收到病人的个人信息并自动填写到医生的诊断表中。
所述医生录入就诊记录模块,用于医生接诊病人后为其录入诊断情况、处方用药,医生在诊断表上填写诊断信息,然后系统发送数据和操作码12给可信代理中心,可信代理中心将数据再加工后给半可信密文存储服务器发送密文SQL向就诊表插入数据,半可信服务器执行操作并将结果(true/false)返回给可信代理中心,可信代理中心判断插入是否成功,若成功再向半可信服务器发送密文SQL删除当前挂号信息,并返回插入成功和响应码22给医生端,半可信服务器删除挂号表对应的挂号信息,并返回结果给可信代理,医生端接收消息并显示插入是否成功;
所述医生就诊记录溯源认证模块,用于对医生诊断记录的溯源认证,便于以后医疗事故追责,医生在录入诊断记录时,电子病历医生端读取医生的SM2私钥并为医生本次录入的诊断信息进行签名存放在诊断表的signature字段中,诊断表还将医生的公钥存到诊断表的d_pk字段,当病人查询就诊记录时就可以使用医生的公钥验证这个签名;
所述医生查询就诊记录模块,用于医生对于自己就诊过的诊断记录进行查询,查询操作支持对病人年龄、病人身份证号和就诊时间进行精确查询,以及对病人年龄和就诊时间进行区间查询,医生端发送查询条件和操作码11给可信代理;可信代理处理查询条件(加密查询条件)并向半可信服务器发送密文SQL,半可信服务器执行操作并将查询到的数据返回给可信代理,可信代理解密查询到的数据,然后使用会话密钥加密数据发送给用户端,包括响应码21,医生端解密并显示结果在界面上。
如上所述的基于国密算法的溯源和前向安全的可搜索密文病历系统,其特征在于:所述用户管理模块,用于管理维护电子病历医生端(或电子病历病人端)用户的注册、登录以及个人信息修改;
所述密钥管理模块,用于管理电子病历系统中使用的密钥的更新维护,包括用户表SM4密钥2个、挂号表SM4密钥1个、就诊表SM4密钥2个和1个OPE的密钥,共6个对称算法的密钥,此外,还有与用户进行会话密钥协商的SM2密钥对,其中SM2的公钥证书需要设定一个合理的有效期,以防止敌手获取到可信中心的SM2私钥后伪装成可信中心与用户通信,对称密钥也需要定期更换,对于已录入数据的处理,如果是密钥到期更换,那么保留原有已加密数据和密钥不变,以供查询使用,如果是密钥被盗则需要用新的密钥重新加密已录入的数据。
如上所述的基于国密算法的溯源和前向安全的可搜索密文病历系统,其特征在于:还包括会话密钥协商模块;
所述会话密钥协商模块,用于电子病历病人端(或电子病历医生端)和可信代理中心在进行数据传输前协商一个临时会话密钥,用此会话密钥来进行后续通信。
如上所述的基于国密算法的溯源和前向安全的可搜索密文病历系统,其特征在于:还包括一个应用层协议;
所述应用层协议,用于规范医生端(或病人端)与服务器端的数据编码与解码,以及解决服务器端如何引导数据流的走向问题(不同走向对应不同的功能,解析数据的格式也不同),包括数据体、状态码、操作码以及响应码;
所述数据体,包含一次操作的所有数据对象的集合,医生端(或病人端)和可信代理中心预先协商好各个功能模块的数据的编码与解码格式;
所述状态码,是数据体的一部分,标识了病人端和医生端,状态码只需在登录和注册时提供,随后系统会用户保留这个状态码;
所述操作码,是客户端向服务器发送请求时的标识码,用于标识当前操作的类型,病人端(或医生端)在向可信代理中心发送数据包时应包含其中一个操作码,用来引导可信代理中心以正确的格式解析,可信代理在解密数据包并解码后首先获得该操作码,然后根据操作码以特定的格式解析剩下的字符串;
所述响应码,是服务器给客户端返回数据时的标识码,用于标识为什么操作返回数据,响应码是可信代理中心在执行完操作后给用户返回数据时使用的标识,具体流程和操作码相同。
如上所述的基于国密算法的溯源和前向安全的可搜索密文病历系统,其特征在于:还包括数据表的设计;
所述数据表,是电子病历系统中不同数据的具体存储方式,表的设计与加密算法直接决定了电子病历系统对该数据表进行操作的效率和系统的安全等级,包括医生信息表、病人信息表、挂号表、就诊表;
所述医生信息表,是保存医生注册信息的数据表,包括身份证号、用户名、登录密码和所属科室,所有这些字段的值除所属科室外都是可信代理中心经SM4算法CBC工作模式加密存储,所属科室字段使用SM4算法ECB模式进行加密,由于使用非确定性加密模式,为了在查询数据时不用去遍历所有密文数据,为身份证号添加了字段id_hash_code,所有的哈希值使用SM3算法,在用户登录时只需计算用户的身份证号的哈希值即可直接从数据库中查询;
所述病人信息表,是保存病人注册信息的数据表,包括用户名、登录密码、年龄、住址等,除了id_hash_code字段外,其它字段均使用SM4算法CBC模式进行加密;
所述挂号表,是存储病人挂号信息的表,包括挂号所需的必要信息:科室、身份证号、用户名和id_hash_code,其中科室信息使用SM4算法ECB模式,其它字段(除id_hash_code)外均使用SM4算法CBC模式进行加密;
所述就诊表,是用于存储医生为病人录入的诊断信息,其中就诊时间和年龄使用OPE加密,医生姓名和科室使用SM4算法ECB工作模式加密,其他字段使用SM4算法CBC工作模式加密。
如上所述的基于国密算法的溯源和前向安全的可搜索密文病历系统,其特征在于:还具有使用java的多线程技术提供多用户同时在线的功能,并设计合理的线程锁来管理资源的并发访问。
如上所述的基于国密算法的溯源和前向安全的可搜索密文病历系统,其特征在于:查询就诊记录时可达到密文搜索的前向安全性。
综上所述,本发明相对于现有技术其有益效果是:
1.本发明使用java语言基于C/S架构和国密标准,旨在解决电子病历系统的隐私安全问题,对电子病历系统中涉及病人私密数据的存储和传输的各个模块,使用国密算法SM2、SM3、SM4和保序加密算法进行加密处理,并且根据数据私密性程度,采用不同的加密工作模式,在保证隐私保护的前提下同时提供快速高效的数据处理速度。
2.本系统提供了就诊记录溯源追责的功能,能够解决医疗事故鉴定和追责问题。
3.本发明主要的功能模块包括:用户管理、病人挂号、医生接诊、诊断记录的高效查询、诊断记录溯源认证和可信中心密钥维护更新多个功能模块,具有良好的完备性。
4.本发明除安全、高效外,还具有服务器的计算资源与存储资源分离、就诊表数据的前向安全性、多用户并发操作的优点。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例和现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,还可以根据这
些附图获得其它的附图。
图1为本发明系统结构示意图;
图2为本发明电子病历系统病人端(或医生端)登录注册模块的一个实施例示意图;
图3为本发明电子病历系统病人端挂号模块的一个实施例示意图;
图4为本发明电子病历系统病人端(或医生端)查询就诊记录模块的一个实施例示意图;
图5为本发明电子病历系统医生端查询挂号模块、接诊模块以及录入就诊记录模块的一个实施例示意图;
图6为本发明电子病历系统会话密钥协商模块的一个实施例示意图;
图7为本发明电子病历系统操作码的一个实施例示意图;
图8为本发明电子病历系统响应码的一个实施例示意图;
图9为本发明电子病历系统医生信息表的一个实施例示意图;
图10为本发明电子病历系统病人信息表的一个实施例示意图;
图11为本发明电子病历系统挂号表的一个实施例示意图;
图12为本发明电子病历系统就诊表的一个实施例示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,基于国密算法的溯源和前向安全的可搜索密文病历系统,包括电子病历病人端,电子病历医生端,半可信密文存储服务器,可信代理中心;
所述电子病历病人端,包括病人注册登录模块、病人挂号模块、病人查询就诊记录模块;
所述电子病历医生端,包括医生注册登录模块、医生查询挂号模块、医生接诊模块、医生录入就诊记录模块、医生就诊记录溯源认证模块、医生查询就诊记录模块;
所述半可信密文存储服务器,用于存储电子病历医生端上传的加密数据,并与可信代理中心通信,执行相应的搜索操作,并将搜索结果返回给可信代理中心;
所述可信代理中心,是绝对可信的,是系统的核心,它负责与电子病历医生端(或病人端)直接交互并处理数据、管理密钥和与半可信密文存储服务器通信,可信代理中心是客户端与半可信密文存储服务器之间的调度层,负责资源分配和安全计算,还包括用户管理模块,密钥管理模块。
如上所述的基于国密算法的溯源和前向安全的可搜索密文病历系统,其特征在于:所述病人注册登录模块,如图2所示,用于病人注册、登录到病人端,再执行后续挂号、查询等操作,首先与可信代理建立安全通信,然后发送注册信息(包括操作码14和用户类型状态码)给可信代理,可信代理计算用户身份证号的哈希,然后将用户发来的数据和哈希值插入半可信服务器的用户表,半可信服务器接收数据并插入信息,如果用户已存在(身份证号的哈希值相同)则返回插入失败,然后半可信服务器把操作结果(true/false)和响应码24加密发送给用户,判断注册是否成功,登录过程类似于注册过程,用户的登录和注销都由可信服务器维护的身份证号哈希值来保证快速查询;
所述病人挂号模块,如图3所示,用于病人在登录电子病历病人端后,根据自身病情,选择相应科室和医生进行挂号操作,病人首先填写并发送挂号信息,包括身份证号、所挂科室和医生姓名等信息和操作码31,可信代理中心接收到挂号信息后加密数据并向半可信密文存储服务器发送SQL语句,半可信密文存储服务器接收到指令后向挂号表插入就诊信息,随后将执行结果(true/false)返回给可信代理中心,可信代理中心向病人端发送加密的响应数据和响应码41,病人端接收数据并将数据显示给用户查看;
所述病人查询就诊记录模块,如图4所示,用于病人查询自己就诊的记录情况,查询操作支持对科室、医生姓名和医生身份证号的精确查询,以及对于就诊时间的区间查询,病人端发送查询条件和操作码11给可信代理;可信代理处理查询条件(加密查询条件)并向半可信服务器发送密文SQL,半可信服务器执行操作并将查询到的数据返回给可信代理,可信代理解密查询到的数据,然后使用会话密钥加密数据发送给用户端,包括响应码21,病人端解密并显示结果在界面上,同时自动进行签名验证并将验证结果显示在病人端界面;
所述医生注册登录模块,如图2所示,用于医生注册、登录到医生端,再执行后续操作,首先与可信代理建立安全通信,然后发送注册信息(包括操作码14和用户类型状态码)给可信代理,可信代理计算用户身份证号的哈希,然后将用户发来的数据和哈希值插入半可信服务器的用户表,半可信服务器接收数据并插入信息,如果用户已存在(身份证号的哈希值相同)则返回插入失败,然后半可信服务器把操作结果(true/false)和响应码24加密发送给用户,判断注册是否成功,登录过程类似于注册过程,用户的登录和注销都由可信服务器维护的身份证号哈希值来保证快速查询;
所述医生查询挂号模块,如图5所示,用于医生可以查看挂号在自己名下的病人,医生端首先向可信代理中心请求当前科室和挂自己号的挂号信息,医生端系统自动向可信代理发送其所在的科室信息和操作码32,可信代理处理数据生成密文SQL并发送给半可信服务器,半可信服务器执行操作并将当前科室的所有挂号信息返回给可信代理,可信代理先使用私有的SM4密钥解密结果,再用会话密钥加密发送给医生,包括响应码42;医生端系统解密并将挂号信息显示给医生;
所述医生接诊模块,如图5所示,用于医生接诊挂号在自己名下的病人,医生在接收到当前科室的挂号信息后确认接诊一位病人,医生端系统发送该病人的身份证号和操作码33给可信代理中心,可信代理中心根据身份证号的哈希值向半可信密文存储服务器查询病人用户表,半可信服务器将查询到的病人详细信息发送给可信代理,可信代理使用私有SM4密钥解密再使用会话密钥加密数据发送给医生端,包括响应码43;医生端系统接收到病人的个人信息并自动填写到医生的诊断表中。
所述医生录入就诊记录模块,如图5所示,用于医生接诊病人后为其录入诊断情况、处方用药,医生在诊断表上填写诊断信息,然后系统发送数据和操作码12给可信代理中心,可信代理中心将数据再加工后给半可信密文存储服务器发送密文SQL向就诊表插入数据,半可信服务器执行操作并将结果(true/false)返回给可信代理中心,可信代理中心判断插入是否成功,若成功再向半可信服务器发送密文SQL删除当前挂号信息,并返回插入成功和响应码22给医生端,半可信服务器删除挂号表对应的挂号信息,并返回结果给可信代理,医生端接收消息并显示插入是否成功;
所述医生就诊记录溯源认证模块,用于对医生诊断记录的溯源认证,便于以后医疗事故追责,医生在录入诊断记录时,电子病历医生端读取医生的SM2私钥并为医生本次录入的诊断信息进行签名存放在诊断表的signature字段中,诊断表还将医生的公钥存到诊断表的d_pk字段,当病人查询就诊记录时就可以使用医生的公钥验证这个签名;
所述医生查询就诊记录模块,如图4所示,用于医生对于自己就诊过的诊断记录进行查询,查询操作支持对病人年龄、病人身份证号和就诊时间进行精确查询,以及对病人年龄和就诊时间进行区间查询,医生端发送查询条件和操作码11给可信代理;可信代理处理查询条件(加密查询条件)并向半可信服务器发送密文SQL,半可信服务器执行操作并将查询到的数据返回给可信代理,可信代理解密查询到的数据,然后使用会话密钥加密数据发送给用户端,包括响应码21,医生端解密并显示结果在界面上。
如上所述的一种保护隐私的可搜索密文电子病历系统,其特征在于:
所述用户管理模块,用于管理维护电子病历医生端(或电子病历病人端)用户的注册、登录以及个人信息修改;
所述密钥管理模块,用于管理电子病历系统中使用的密钥的更新维护,包括用户表SM4密钥2个、挂号表SM4密钥1个、就诊表SM4密钥2个和1个OPE的密钥,共6个对称算法的密钥,此外,还有与用户进行会话密钥协商的SM2密钥对,其中SM2的公钥证书需要设定一个合理的有效期,以防止敌手获取到可信中心的SM2私钥后伪装成可信中心与用户通信,对称密钥也需要定期更换,对于已录入数据的处理,如果是密钥到期更换,那么保留原有已加密数据和密钥不变,以供查询使用,如果是密钥被盗则需要用新的密钥重新加密已录入的数据。
如上所述的一种保护隐私的可搜索密文电子病历系统,其特征在于:还包括会话密钥协商模块;
所述会话密钥协商模块,如图6所示,用于电子病历病人端(或电子病历医生端)和可信代理中心在进行数据传输前协商一个临时会话密钥,用此会话密钥来进行后续通信。
如上所述的一种保护隐私的可搜索密文电子病历系统,其特征在于:还包括一个应用层协议;
所述应用层协议,用于规范医生端(或病人端)与服务器端的数据编码与解码,以及解决服务器端如何引导数据流的走向问题(不同走向对应不同的功能,解析数据的格式也不同),包括数据体、状态码、操作码以及响应码;
所述数据体,包含一次操作的所有数据对象的集合,医生端(或病人端)和可信代理中心预先协商好各个功能模块的数据的编码与解码格式;
所述状态码,是数据体的一部分,标识了病人端和医生端,状态码只需在登录和注册时提供,随后系统会用户保留这个状态码;
所述操作码,如图7所示,是客户端向服务器发送请求时的标识码,用于标识当前操作的类型,病人端(或医生端)在向可信代理中心发送数据包时应包含其中一个操作码,用来引导可信代理中心以正确的格式解析,可信代理在解密数据包并解码后首先获得该操作码,然后根据操作码以特定的格式解析剩下的字符串;
所述响应码,如图8所示,是服务器给客户端返回数据时的标识码,用于标识为什么操作返回数据,响应码是可信代理中心在执行完操作后给用户返回数据时使用的标识,具体流程和操作码相同。
如上所述的一种保护隐私的可搜索密文电子病历系统,其特征在于:还包括数据表的设计;所述数据表,是电子病历系统中不同数据的具体存储方式,表的设计与加密算法直接决定了电子病历系统对该数据表进行操作的效率和系统的安全等级,包括医生信息表、病人信息表、挂号表、就诊表;
所述医生信息表,如图9所示,是保存医生注册信息的数据表,包括身份证号、用户名、登录密码和所属科室,所有这些字段的值除所属科室外都是可信代理中心经SM4算法CBC工作模式加密存储,所属科室字段使用SM4算法ECB模式进行加密,由于使用非确定性加密模式,为了在查询数据时不用去遍历所有密文数据,为身份证号添加了字段id_hash_code,所有的哈希值使用SM3算法,在用户登录时只需计算用户的身份证号的哈希值即可直接从数据库中查询;
所述病人信息表,如图10所示,是保存病人注册信息的数据表,包括用户名、登录密码、年龄、住址等,除了id_hash_code字段外,其它字段均使用SM4算法CBC模式进行加密;
所述挂号表,如图11所示,是存储病人挂号信息的表,包括挂号所需的必要信息:科室、身份证号、用户名和id_hash_code,其中科室信息使用SM4算法ECB模式,其它字段(id_hash_code)外均使用SM4算法CBC模式进行加密。
所述就诊表,如图12所示,是用于存储医生为病人录入的诊断信息,其中就诊时间和年龄使用OPE加密,医生姓名和科室使用SM4算法ECB工作模式加密,其他字段使用SM4算法CBC工作模式加密。
如上所述的一种保护隐私的可搜索密文电子病历系统,其特征在于:还具有使用java的多线程技术提供多用户同时在线的功能,并设计合理的线程锁来管理资源的并发访问。
如上所述的基于国密算法的溯源和前向安全的可搜索密文病历系统,其特征在于:查询就诊记录时可达到密文搜索的前向安全性。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (6)
1.基于国密算法的溯源和前向安全的可搜索密文病历系统,其特征在于:包括电子病历病人端、电子病历医生端、半可信密文存储服务器和可信代理中心;
所述电子病历病人端包括病人注册登录模块、病人挂号模块、病人查询就诊记录模块;
所述电子病历医生端包括医生注册登录模块、医生查询挂号模块、医生接诊模块、医生录入就诊记录模块、医生就诊记录溯源认证模块和医生查询就诊记录模块;
所述半可信密文存储服务器,用于存储电子病历医生端上传的加密数据,并与可信代理中心通信,执行对应的搜索操作,并将搜索结果返回给可信代理中心;
所述可信代理中心,其与电子病历医生端或者电子病历病人端直接交互并处理数据、管理密钥,其与半可信密文存储服务器通信,可信代理中心是客户端与半可信密文存储服务器之间的调度层,负责资源分配和安全计算,
可信代理中心还包括用户管理模块,密钥管理模块;
还包括一个应用层协议;所述应用层协议,用于规范医生端或病人端与服务器端的数据编码与解码,以及解决服务器端如何引导数据流的走向问题,包括数据体、状态码、操作码以及响应码;所述数据体,包含一次操作的所有数据对象的集合,医生端或病人端和可信代理中心预先协商好各个功能模块的数据的编码与解码格式;
所述状态码,是数据体的一部分,标识了病人端和医生端,状态码只需在登录和注册时提供,随后系统会保留这个状态码;
所述操作码,是客户端向服务器发送请求时的标识码,用于标识当前操作的类型,病人端或医生端在向可信代理中心发送数据包时应包含其中一个操作码,用来引导可信代理中心以正确的格式解析,可信代理在解密数据包并解码后首先获得该操作码,然后根据操作码以特定的格式解析剩下的字符串;
所述响应码,是服务器给客户端返回数据时的标识码,用于标识为什么操作返回数据,响应码是可信代理中心在执行完操作后给用户返回数据时使用的标识,具体流程和操作码相同;
还包括数据表的设计;所述数据表,是电子病历系统中不同数据的具体存储方式,所述数据表包括医生信息表、病人信息表、挂号表和就诊表;
所述医生信息表,是保存医生注册信息的数据表,包括身份证号、用户名、登录密码和所属科室,所有这些字段的值除所属科室外都是可信代理中心经SM4算法CBC工作模式加密存储,所属科室字段使用SM4算法ECB模式进行加密,由于使用非确定性加密模式,为了在查询数据时不用去遍历所有密文数据,为身份证号添加了字段id_hash_code,所有的哈希值使用SM3算法,在用户登录时只需计算用户的身份证号的哈希值即可直接从数据库中查询;
所述病人信息表,是保存病人注册信息的数据表,包括用户名、登录密码、年龄和住址,除了id_hash_code字段外,其它字段均使用SM4算法CBC模式进行加密;
所述挂号表,是存储病人挂号信息的表,包括挂号所需的必要信息:科室、身份证号、用户名和id_hash_code,其中科室信息使用SM4算法ECB模式,其它字段除id_hash_code外均使用SM4算法CBC模式进行加密;
所述就诊表,是用于存储医生为病人录入的诊断信息,其中就诊时间和年龄使用OPE加密,医生姓名和科室使用SM4算法ECB工作模式加密,其他字段使用SM4算法CBC工作模式加密;
用户端将信息发送至可信代理中心,可信代理中心进行加密,随后发送密文至半可信密文存储服务器,随后半可信密文存储服务器将相应的操作结果发送至可信代理中心,可信代理中心将接收到的信息解密,随后使用会话密钥加密数据发送给用户端。
2.根据权利要求1所述的基于国密算法的溯源和前向安全的可搜索密文病历系统,其特征在于:所述病人注册登录模块,用于病人注册、登录到病人端,以及后续挂号和查询;病人注册登录模块首先与可信代理中心建立安全通信,然后发送注册信息或登录信息给可信代理中心,注册信息或登录信息包括身份证号、操作码和用户类型状态码;可信代理中心计算用户身份证号的哈希值,将用户发来的数据和哈希值插入半可信密文存储服务器的用户表,半可信密文存储服务器接收数据并插入数据信息,如果用户已存在,即身份证号的哈希值相同,则返回插入失败;然后半可信密文存储服务器把操作结果true或false和响应码24加密发送给用户端,用户判断注册或登录是否成功;
所述病人挂号模块,用于病人在登录电子病历病人端后,根据自身病情,选择相应科室和医生进行挂号操作;病人首先填写并发送挂号信息,包括身份证号、所挂科室和医生姓名信息和操作码31,可信代理中心接收到挂号信息后加密数据并向半可信密文存储服务器发送SQL语句,半可信密文存储服务器接收到指令后向挂号表插入就诊信息,随后将执行结果:true/false返回给可信代理中心,可信代理中心向病人端发送加密的响应数据和响应码41,病人端接收数据并将数据显示给用户查看;
所述病人查询就诊记录模块,用于病人查询自己就诊的记录情况,查询操作支持对科室、医生姓名和医生身份证号的精确查询,以及对于就诊时间的区间查询,病人端发送查询条件和操作码11给可信代理;可信代理加密查询条件并向半可信服务器发送密文SQL,半可信服务器执行操作并将查询到的数据返回给可信代理,可信代理解密查询到的数据,然后使用会话密钥加密数据发送给用户端,包括响应码21,病人端解密并显示结果在界面上,同时自动进行签名验证并将验证结果显示在病人端界面。
3.根据权利要求1所述的基于国密算法的溯源和前向安全的可搜索密文病历系统,其特征在于:所述医生注册登录模块,用于医生注册、登录到医生端,再执行后续操作,首先与可信代理建立安全通信,然后发送注册或者登录信息给可信代理,注册信息或登录信息包括身份证号、操作码和用户类型状态码;可信代理计算用户身份证号的哈希,然后将用户发来的数据和哈希值插入半可信服务器的用户表,半可信服务器接收数据并插入信息,如果用户已存在,即身份证号的哈希值相同,则返回插入失败,然后半可信服务器把操作结果:true或者false,以及响应码24加密发送给用户,判断注册或登录是否成功;
所述医生查询挂号模块,用于医生查看挂号在自己名下的病人;医生端首先向可信代理中心请求当前科室和挂自己号的挂号信息,医生端系统自动向可信代理发送其所在的科室信息和操作码32,可信代理处理数据生成密文SQL并发送给半可信服务器,半可信服务器执行操作并将当前科室的所有挂号信息返回给可信代理,可信代理先使用私有的SM4密钥解密结果,再用会话密钥加密发送给医生,包括响应码42;医生端系统解密并将挂号信息显示给医生;
所述医生接诊模块,用于医生接诊挂号在自己名下的病人,医生在接收到当前科室的挂号信息后确认接诊一位病人,医生端系统发送该病人的身份证号和操作码33给可信代理中心,可信代理中心根据身份证号的哈希值向半可信密文存储服务器查询病人用户表,半可信服务器将查询到的病人详细信息发送给可信代理,可信代理使用私有SM4密钥解密再使用会话密钥加密数据发送给医生端,包括响应码43;医生端系统接收到病人的个人信息并自动填写到医生的诊断表中;所述医生录入就诊记录模块,用于医生接诊病人后为其录入诊断情况、处方用药,医生在诊断表上填写诊断信息,然后系统发送数据和操作码12给可信代理中心,可信代理中心将数据再加工后给半可信密文存储服务器发送密文SQL向就诊表插入数据,半可信服务器执行操作并将结果true/false返回给可信代理中心,可信代理中心判断插入是否成功,若成功再向半可信服务器发送密文SQL删除当前挂号信息,并返回插入成功和响应码22给医生端,半可信服务器删除挂号表对应的挂号信息,并返回结果给可信代理,医生端接收消息并显示插入是否成功;
所述医生就诊记录溯源认证模块,用于对医生诊断记录的溯源认证,便于以后医疗事故追责,医生在录入诊断记录时,电子病历医生端读取医生的SM2私钥并为医生本次录入的诊断信息进行签名存放在诊断表的signature字段中,诊断表还将医生的公钥存到诊断表的d_pk 字段,当病人查询就诊记录时就可以使用医生的公钥验证这个签名;
所述医生查询就诊记录模块,用于医生对于自己就诊过的诊断记录进行查询,查询操作支持对病人年龄、病人身份证号和就诊时间进行精确查询,以及对病人年龄和就诊时间进行区间查询,医生端发送查询条件和操作码11给可信代理中心;可信代理中心加密查询条件并向半可信服务器发送密文SQL,半可信服务器执行操作并将查询到的数据返回给可信代理,可信代理解密查询到的数据,然后使用会话密钥加密数据发送给用户端,包括响应码21,医生端解密并显示结果在界面上。
4.根据权利要求1所述的基于国密算法的溯源和前向安全的可搜索密文病历系统,其特征在于:所述用户管理模块,用于管理维护电子病历医生端或电子病历病人端的用户的注册、登录以及个人信息修改;
所述密钥管理模块,用于管理电子病历系统中使用的密钥的更新维护,包括用户表SM4密钥2个、挂号表SM4密钥1个、就诊表SM4密钥2个和1个OPE的密钥,共6个对称算法的密钥,还包括与用户进行会话密钥协商的SM2密钥对,其中SM2的公钥证书设定一个有效期,以防止敌手获取到可信代理中心的SM2私钥后伪装成可信代理中心与用户通信;对称算法密钥定期更换,对于录入数据的处理,如果是密钥到期更换,那么保留原有已加密数据和密钥不变,以供查询使用,如果是密钥被盗则需要用新的密钥重新加密已录入的数据。
5.根据权利要求1所述的基于国密算法的溯源和前向安全的可搜索密文病历系统,其特征在于:还包括会话密钥协商模块;
所述会话密钥协商模块,用于电子病历病人端或电子病历医生端和可信代理中心在进行数据传输前协商一个临时会话密钥,用此会话密钥来进行后续通信。
6.根据权利要求1所述的基于国密算法的溯源和前向安全的可搜索密文病历系统,其特征在于:还具有使用java的多线程技术提供多用户同时在线的功能,并设计合理的线程锁来管理资源的并发访问。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010122180.6A CN111625856B (zh) | 2020-02-27 | 2020-02-27 | 基于国密算法的溯源和前向安全的可搜索密文病历系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010122180.6A CN111625856B (zh) | 2020-02-27 | 2020-02-27 | 基于国密算法的溯源和前向安全的可搜索密文病历系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111625856A CN111625856A (zh) | 2020-09-04 |
CN111625856B true CN111625856B (zh) | 2022-10-25 |
Family
ID=72271732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010122180.6A Active CN111625856B (zh) | 2020-02-27 | 2020-02-27 | 基于国密算法的溯源和前向安全的可搜索密文病历系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111625856B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930881B (zh) * | 2020-10-10 | 2021-01-26 | 南京理工大学 | 基于国密算法的连接关键词认证可搜索加密方法 |
CN112231465B (zh) * | 2020-10-20 | 2024-07-02 | 南方电网数字电网研究院有限公司 | 业务数据的资源分离方法、装置、计算机设备和存储介质 |
CN113849843B (zh) * | 2021-11-12 | 2024-07-23 | 南京邮电大学 | 一种面向边缘云的电子健康记录可溯生成及访问控制方法 |
CN114640501B (zh) * | 2022-02-14 | 2023-06-23 | 杭州锘崴信息科技有限公司 | 基于隐私计算平台的超融合安全监察和控制系统及方法 |
CN115664810B (zh) * | 2022-10-25 | 2024-02-23 | 电子科技大学 | 一种面向云辅助电子医疗系统的流行病预警方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104683351A (zh) * | 2015-03-17 | 2015-06-03 | 西安电子科技大学 | 基于属性的匿名就医和医疗信息安全访问控制系统及方法 |
CN105656881A (zh) * | 2015-12-21 | 2016-06-08 | 湖北工业大学 | 一种电子病历的可验证外包存储和检索系统及方法 |
CN108171066A (zh) * | 2017-12-22 | 2018-06-15 | 湖北工业大学 | 一种医疗云中隐私保护下的关键词跨域搜索方法及系统 |
-
2020
- 2020-02-27 CN CN202010122180.6A patent/CN111625856B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104683351A (zh) * | 2015-03-17 | 2015-06-03 | 西安电子科技大学 | 基于属性的匿名就医和医疗信息安全访问控制系统及方法 |
CN105656881A (zh) * | 2015-12-21 | 2016-06-08 | 湖北工业大学 | 一种电子病历的可验证外包存储和检索系统及方法 |
CN108171066A (zh) * | 2017-12-22 | 2018-06-15 | 湖北工业大学 | 一种医疗云中隐私保护下的关键词跨域搜索方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111625856A (zh) | 2020-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111625856B (zh) | 基于国密算法的溯源和前向安全的可搜索密文病历系统 | |
Zhang et al. | Security models and requirements for healthcare application clouds | |
CN111934879B (zh) | 一种内外网系统数据传输加密方法、装置、设备和介质 | |
EP3668049A1 (en) | Method and system for distributed cryptographic key provisioning and storage via elliptic curve cryptography | |
Gonçalves et al. | Security architecture for mobile e-health applications in medication control | |
Ding et al. | Model-driven application-level encryption for the privacy of e-health data | |
JP2007536833A (ja) | マルチ・ソース型の長期患者レベルのデータ暗号化処理 | |
Marshall et al. | Use of a secure Internet Web site for collaborative medical research | |
CN111933292B (zh) | 基于区块链的医联体及医疗数据交互方法和存储介质 | |
Ribeiro et al. | XDS-I outsourcing proxy: ensuring confidentiality while preserving interoperability | |
KR20010102851A (ko) | 개인 정보 교환 신택스 객체를 처리하기 위한 방법,데이터 처리 시스템 및 컴퓨터 프로그램 | |
US20140156988A1 (en) | Medical emergency-response data management mechanism on wide-area distributed medical information network | |
JPH09282393A (ja) | 保健医療カードとオンラインデータベースの連携方法 | |
Wu et al. | A patient-centric interoperable framework for health information exchange via blockchain | |
CN116662957A (zh) | 身份认证方法、装置、计算机可读存储介质及计算机设备 | |
KR20120124298A (ko) | 개인 건강기록 관리 시스템 및 그 방법 | |
US10929509B2 (en) | Accessing an interoperable medical code | |
CN117012324A (zh) | 一种基于区块链的健康数据钱包管理方法及系统 | |
JP2000331101A (ja) | 医療関連情報管理システム及びその方法 | |
US20210049301A1 (en) | Method for combining different partial data | |
Rubio et al. | A robust and simple security extension for the medical standard SCP-ECG | |
CN110138792A (zh) | 一种公共卫生地理数据去隐私处理方法及系统 | |
Mohammadi et al. | SCALHEALTH: Scalable Blockchain Integration for Secure IoT Healthcare Systems | |
CN109858217A (zh) | 电子档案真实性验证方法及系统 | |
KR102662521B1 (ko) | Cdm아이디의 상호 대응을 이용한 의료데이터 제공시스템 |
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 |