APP下载

云环境下个人医疗信息的密文检索方法研究

2017-09-23冒海波李永忠

计算机应用与软件 2017年9期
关键词:私钥公钥密文

冒海波 李永忠

(江苏科技大学计算机科学与工程学院 江苏 镇江 212003)

云环境下个人医疗信息的密文检索方法研究

冒海波 李永忠

(江苏科技大学计算机科学与工程学院 江苏 镇江 212003)

针对云环境下个人医疗信息检索时出现的隐私问题,设计一种带有身份认证的公钥密文检索方法。采用RSA加密算法与SHA哈希算法对检索的关键词进行加密,先利用SHA对不同的关键词生成hash值,以防止检索时将关键词暴露给云服务器,接着用RSA公钥对关键词的hash值进行加密,并保存关键词密文。用户检索时,先用自己的私钥对采用相同SHA哈希算法生成的关键词hash值加密,同时加入用私钥对身份加密的数字签名信息,并一起上传云服务器。服务器检索时,利用用户的公钥进行解密,得到身份验证和关键词hash值。服务器先对身份进行认证,认证通过后再用公钥对关键词hash值加密,然后与保存的关键词密文进行匹配,相同则返回密文数据,不同则提示查询出错。此外对个人医疗数据的其他字段采用DES与RSA的混合加密方式。该方法不仅保障了系统的性能,而且有效地保护了用户数据的机密性与隐私性。

云环境 个人医疗信息 密文检索 身份认证

0 引 言

近年来,云计算的迅猛发展给数据存储需求量大的企业和机构带来了极大便利。像医院或医疗组织为了节省存储资源将电子医疗记录的存储和管理外包给云服务商,这不仅降低了成本,而且方便了管理[1]。然而,这些数据往往与个人隐私密切相关,一旦泄露将会带来无法挽回的损失,如何保证敏感数据的隐私和机密性成为急需解决的棘手问题。加密技术是一种保护数据机密性与隐私性的有效手段,先将数据做加密处理,再上传至第三方服务器,可以防止数据被非法读取。然而,加密的数据给需要检索的用户带来了困难。因此,如何在非可信的云环境下实现对加密数据的高效检索成为了最近的一个研究热点。

早在2000年Song等[2]首次提出了密文检索的概念,2004年,Boneh等[3]首次提出公钥可搜索加密。经过这些年的研究,密文检索取得了不错的进展,对于不同的场景模型设计出了多种密文检索方法。针对医疗场景多用户的特性,研究出了公钥可搜索加密方法,然而现有的很多方法存在计算开销量大、安全性保证弱等问题。对于这些问题,本文设计出了一种带有身份认证的公钥密文检索方法。该方法采用RSA加密算法与SHA哈希算法对检索的关键词进行加密,用户检索时,先用自己的私钥对采用相同SHA哈希算法生成的关键词hash值加密,同时加入私钥对身份加密的数字签名信息。然后上传至服务器进行检索,对个人医疗数据的其他字段采用DES与RSA的混合加密方式,此方法不仅计算开销小,安全性强,而且还有效保护了用户数据的机密性与隐私性。

1 加密算法与密文检索

1.1 非对称加密算法RSA

非对称加密也称作公钥加密。它采用不同加解密密钥,加密时采用对外公开的加密密钥PK,解密时采用只有接收者才有的私钥SK,其中最有效的RSA算法广泛应用于现代的电子商务互联网中。RSA的算法涉及三个参数:n、e1、e2。其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,即密钥长度。e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)×(q-1)互质;e2满足(e2×e1)mod((p-1)×(q-1))=1。(n,e1),(n,e2)就是密钥对,其中(n,e1)为公钥,(n,e2)为私钥。

1.2 安全哈希算法SHA

安全哈希算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段长度较短、位数固定的输出序列即散列值,主要应用于数字签名与文本摘要中,实现数据的完整性验证等。

1.3 对称加密算法DES

对称加密即加解密时采用同一个密钥,DES属于对称加密的常见一种加密算法,它的入口参数有三个:Key、Data、Mode。其中加解密密钥Key为7个字节共56位,加密的数据Data为8个字节64位,Mode为DES的工作方式,有两种:加密或解密。其算法主要为初始置换和逆置换操作。

1.4 密文检索

密文检索被认为是打开云存储加密桎梏的金钥匙。广义的密文检索概念包括两个部分:可加密搜索与外包数据库加密检索。

可搜索加密SE(Searchable Encryption)是为了解决对加密数据的检索而提出的一个概念。由于现今SE机制的构造方法众多,因此其形式化描述方法各不相同。基本的SE机制主要包括4种算法[4],分别是密钥生成算法、密文索引的建立、生成陷门和搜索。

外包数据库加密检索主要是依赖sql查询技术进行密文检索,常见的技术有等值密文检索、区间检索以及模糊检索等。客户端给云存储数据库发送sql指令,外包数据库根据sql指令返回密文结果,然后在客户端解密,其机密性要求数据库记录只能在客户端进行解密。

2 密文检索方法

2.1 密文检索系统模型

针对个人医疗健康记录云存储服务场景的多用户特性,设计出了如图1所示的多用户密文检索系统模型。

图1 系统模型

在这系统中主要含有以下几个实体。

1) 密钥分发中心。在本系统中是一个可信的第三方,主要负责为用户生成和分发密钥。当数据拥有者(Doctor)为某个患者(Patient)生成电子记录时,系统将会生成并分发该患者的公钥与私钥,同时周期性地向医生更换加密诊断数据的对称密钥。

2) 云存储中心。为云服务商提供数据存储与计算服务的第三方服务平台,将医生上传的密文数据存储在数据库表中。本系统中的云服务存储系统带有用户身份验证功能,对查询的用户进行身份验证,以保证安全性。但同时服务器也可能在通信过程中试图窃取用户的隐私数据[5]。

3) 数据拥有者。在上传数据前将数据分为关键字与医疗诊断数据两部分,其中关键词的选取为用户就诊时所挂的号,将关键字与诊断数据加密发送给云存储中心。

4) 数据访问者。采用自己的私钥加密查询的关键词与身份信息,并上传云存储中心,云存储中心根据上传的信息进行身份认证与查询,并将符合的密文返回给用户。

2.2 密文检索方法设计

2.2.1 密文的生成

密文的生成采用如图2所示的方法。

图2 密文生成

首先数据拥有者用SHA函数对关键词w进行预处理,该加密可以将不同的关键词生成相同长度的Hash值H(w),这样不仅便于表中索引的快速搜索,而且还避免搜索过程中将关键词暴露给云服务器的危险。再用用户的公钥Pk加密生成的Hash值与DES加密密钥Key。最后与DES加密过的诊断数据m一起发送给云存储中心,加密过的密文就存储在云中数据库的表中,其中密文关键词为表的索引[6]。

2.2.2 密文的检索

数据访问者在访问云中的密文数据过程如图3所示。

图3 密文检索

1) 访问者客户端用相同的SHA函数处理查询的关键词w′为H(w′),然后用自己的私钥Sk加密,生成密文C(H(w′))。同时客户端还会用私钥Sk加密时间t与身份验证信息id,用来服务器的身份验证,一起作为陷门T发送给云存储中心。

2) 云存储中心收到陷门后,首先用该用户的公钥Pk解开私钥Sk加密的陷门信息,取出身份信息,验证用户是否合法。在合法的情况下再验证时间t,如果t的时间处在上次查询预设的时间内,则直接返回先前查过的数据,如果不是则进行搜索。

3) 搜索时取出之前解密后的H(w′),然后用公钥Pk进行计算为Pk(H(w′)),接着与数据库中索引进行匹配。如果匹配成功则将包含该索引字段的数据返回。

4) 对于返回的数据,先用自己的私钥Sk解开Pk(Key),获取加密数据的对称秘钥K,然后解密数据为m。

3 密文检索方法实现

3.1 密文检索方法实验

对本方法进行实验仿真,实验环境:仿真软件Eclipse、Mysql数据库以及Matlab 7.0。CPU为:Intel(R) Core(TM)i5-2410M 2.50 GHz,内存为3 GB,Win 10 32位操作系统。仿真结果图4为加密后的数据库密文数据,图5为密文检索结果。

图4 数据库密文数据

图5 密文检索结果

3.2 安全性分析

1) 在密文检索方法中,存储在云服务中心的数据都是以密文的形式存在的。同时采用对称与非对称相结合的混合加密算法,加密数据的对称秘钥直接由用户的公钥加密,这避免了对称秘钥在共享时泄露的危险,同时还提高了加密效率。

2) 对于方法中关键词密文的建立,首先进行了关键词预处理,当服务器检索时,服务器无法知晓关键词,从而消除了伪造陷门的威胁。

3) 在上传的查询陷门中加入类似数字签名的方式,当数据访问者进行相关查询时,首先系统要认证访问者的身份,只有符合数据拥有者指定的用户才能访问数据,提高了系统的安全性。

4) 有效抵抗重放攻击,用户在半可信的服务器提出检索请求时,将一个时戳t用密钥进行非对称加密,向服务器发送请求检索带关键词w′的数据。由于加入了时戳t,因此有效地防止了重放攻击[7]。

3.3 性能效率分析

首先对不同长度的关键词进行加密检索的性能仿真,如图6所示。在没有SHA对关键词进行加密的情况下,搜索速度相对较快,但安全保证较弱。随着关键词长度的增加,检索时间也在延长,选择建立Btree索引的检索将会更有优势。除此之外,在同一个表中针对不同数量用户的情况,进行了仿真。如图7所示,用户数的增加会影响检索的性能,这与数据库检索大量数据时消耗时间有关,因此建立索引能有效提高检索速,从而提高系统性能。从仿真结果可以看出,本文所设计的方案在性能上是有效的,没有出现指数级的增长。

图6 不同长度关键词检索

图7 不同用户数下的检索

4 结 语

针对个人医疗健康记录设计出了一个带有身份认证的密文检索方法。方法中采用混合加密的方式对上传的数据进行加密,在保证了数据的机密性的同时又保障了系统的性能,对密文的搜索采用公钥对关键词加密生成密文。然后用待检索的关键词采用私钥加密,加入SHA算法有效防止了云存储服务的攻击。同时索引的建立能有效提高密文检索效率。但是针对云存储环境下加密数据索引的选择及多关键词的联合查询等问题还有待解决[8],针对这些问题将进一步进行研究,使其更好地被用到云存储系统环境下。

[1] 张丽丽,张玉清,刘雪峰,等.对加密电子医疗记录有效的连接关键词的搜索[J].软件学报,2016,27(6):1577-1591.

[2] Song D X,Wagner D,Perrig A.Practical Techniques for Searches on Encrypted Data[C]//Security and Privacy,2000.S&P 2000.Proceedings.2000 IEEE Symposium on.IEEE,2000:44.

[3] Dan B,Crescenzo G D,Ostrovsky R,et al.Public Key Encryption with Keyword Search[C]//International Conference on the Theory and Applications of Cryptographic Techniques.Springer,Berlin,Heidelberg,2004:506-522.

[4] 沈志荣,薛巍,舒继武.可搜索加密机制研究与进展[J].软件学报,2014,25(4):880-895.

[5] 杨旸,林柏钢,马懋德.具有细粒度访问控制的隐藏关键词可搜索加密方案[J].通信学报,2013,8(34):91-95.

[6] 洪澄,张敏,冯登国.面向云存储的高效动态密文访问控制方法[J].通信学报,2011,32(7):125-132.

[7] 刘鹏亮,俎龙辉,白翠翠,等.一种可验证的公钥可搜索加密方案[J].计算机工程,2014,11(11):114-118.

[8] Wang C,Cao N,Li J,et al.Secure Ranked Keyword Search over Encrypted Cloud Data[C]//IEEE,International Conference on Distributed Computing Systems.IEEE,2010:253-262.

CIPHERTEXTRETRIEVALMETHODOFPERSONALMEDICALINFORMATIONINCLOUDENVIRONMENT

Mao Haibo Li Yongzhong

(SchoolofComputerScienceandEngineering,JiangsuUniversityofScienceandTechnology,Zhenjiang212003,Jiangsu,China)

Aiming at the privacy problem of personal medical information retrieval in cloud environment, this paper designs a method of public key ciphertext retrieval with identity authentication. The RSA encryption algorithm and the SHA hash algorithm are used to encrypt the search keywords. SHA is used to generate hash values for different keywords to prevent the keywords from being exposed to the cloud server, and then use the RSA public key to encrypt the hash value of the keyword and save the keyword ciphertext. When the user retrieves, he encrypts the keyword hash with the same SHA hash algorithm with his own private key. At the same time, it adds a private key to the identity of the encrypted digital signature information, and uploads the cloud server. When the server retrieves, we use the user’s public key to decrypt and get authentication and keyword hash. The server first authenticates the identity, until the authentication passes, and we encrypt the keyword hash with the public key. Then we match the keyword with the saved ciphertext, the same is returned cipher text data, and different suggested that the query error. In addition, the other fields of personal medical data, we use DES and RSA mixed encryption. This method not only ensures the performance of the system, but also effectively protects the confidentiality and privacy of user data.

Cloud environment Personal medical information Ciphertext retrieval Identity authentication

TP309

A

10.3969/j.issn.1000-386x.2017.09.033

2016-11-03。冒海波,硕士生,主研领域:云环境下数据安全。李永忠,教授。

猜你喜欢

私钥公钥密文
一种支持动态更新的可排名密文搜索方案
比特币的安全性到底有多高
基于模糊数学的通信网络密文信息差错恢复
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
基于网络报文流量的协议密文分析方法
密钥共享下跨用户密文数据去重挖掘方法*
神奇的公钥密码
一种基于虚拟私钥的OpenSSL与CSP交互方案
基于秘密共享的IBE移动密码系统
国密SM2密码算法的C语言实现