基于同态加密的医疗数据高效安全的k-NN查询方法

文档序号:34595610发布日期:2023-06-28 20:30阅读:110来源:国知局
基于同态加密的医疗数据高效安全的k-NN查询方法

本发明属于数据处理,具体涉及一种基于同态加密的医疗数据高效安全的k-nn查询方法。


背景技术:

1、云计算作为一种新兴的计算范式,在电子医疗数据查询领域有着重要应用。虽然云服务器具有灵活、可靠、存储能力强等优点,但云中数据的安全和隐私问题仍然需要重视。实际上,云服务器是无法完全可信的,当医疗数据等高度敏感的数据不经任何处理直接上传到云时,可能产生严重的隐私泄露问题。因此,对数据加密后再上传成为保护数据安全的一种有效手段。

2、k-nn算法作为机器学习的基本查询算法,旨在寻找数据集中距离给定查询数据最近的k条数据。考虑到密文数据不像明文一样透明,云服务器如何对加密状态下的数据进行安全高效的k-nn查询,成为了近年来不断研究的课题。相关技术中,利用k-nn算法查询医疗数据时,大多数k-nn查询算法都假设病人是完全可信的,拥有加密解密外包数据的密钥,这显然会带来一些问题:一方面,一旦病人持有的密钥被攻击者窃取,那么整个云服务器的密文数据都会被攻击者解密成功,医疗数据将不具备安全性;另一方面,一旦病人得到密钥,那么其后续的操作将不受医院控制,也就是说,医院等医疗机构是无法阻止病人的某些操作的,这会带来极大的安全隐患。


技术实现思路

1、为了解决现有技术中存在的上述问题,本发明提供了一种基于同态加密的医疗数据高效安全的k-nn查询方法。本发明要解决的技术问题通过以下技术方案实现:

2、本发明提供一种基于同态加密的医疗数据高效安全的k-nn查询方法,应用于云服务器,所述云服务器包括云计算服务器和云存储服务器;

3、所述方法包括:

4、云计算服务器生成公私钥对,并基于私钥sk和拉格朗日多项式生成用户端的id身份集后,从所述id身份集中为每个用户端分配身份标识;

5、云存储服务器接收用户端上传的密文数据库、基于病人身体指标生成的病人数据密文[q]pk、基于随机数r生成的密文cr以及基于病人数据密文[q]pk、随机数r和所述身份标识生成的验证值h,所述密文数据库包含多条医疗数据密文;

6、云存储服务器将所述密文cr发送至云计算服务器,并根据云计算服务器返回的第一aes密文验证用户端是否注册;

7、若用户端已注册,则云存储服务器基于随机数r生成密文x1和密文x2,并在接收到云计算服务器计算的密文x后,根据密文x1和密文x计算病人数据密文[q]pk中各项指标与每条医疗数据密文中各项指标间的欧氏距离密文;

8、云存储服务器从多条欧氏距离密文中随机选取k条欧式距离密文存入优先队列后,基于随机选择的s计算中间值,并将中间值发送至云计算服务器;

9、云计算服务器利用私钥sk解密所述中间值,根据得到的明文长度设置第一标识t;

10、云存储服务器基于第二aes密文调整所述优先队列,获得所述多条欧式距离密文中最小的k条欧式距离密文,所述第二aes密文由所述云存储服务器对第一标识t加密后获得;

11、云存储服务器获取最小的k条欧式距离密文对应的k条医疗数据密文,解密后发送至用户端。

12、在本发明的一个实施例中,所述云计算服务器生成公私钥对,并基于公钥pk生成用户端的id身份集后,从所述id身份集中为每个用户端分配身份标识的步骤之后,还包括:

13、云计算服务器根据所述身份标识计算第一密钥skid和第二密钥skδ;其中,

14、

15、

16、式中,f(·)为云计算服务器生成的a-1阶拉格朗日多项式,a表示预设常数,wi、wj分别表示第i个随机数和第j个随机数,xi表示第i个用户端的身份标识。

17、在本发明的一个实施例中,所述云存储服务器将所述密文cr发送至云计算服务器,并根据云计算服务器返回的第一aes密文验证用户端是否注册的步骤,包括:

18、云存储服务器将所述密文cr发送至云计算服务器;

19、云计算服务器对所述密文cr解密后得到随机数r,并在利用aes对称加密算法对随机数r加密后,将获得的第一aes密文发送至云存储服务器;

20、云存储服务器对所述第一aes密文解密得到随机数r,将随机数r与密文q进行异或处理后,利用哈希函数计算得到的第一异或处理结果的哈希值;

21、云存储服务器将所述哈希值与验证值h进行异或处理,并比较用户端的身份标识与得到的第二异或处理结果;若用户端的身份标识与所述第二异或处理结果相等,则所述用户端已注册;反之,则所述用户端未注册。

22、在本发明的一个实施例中,若用户端已注册,所述云存储服务器基于随机数r生成密文x1和密文x2,并在接收到云计算服务器计算的密文x后,根据密文x1和密文x计算病人数据密文[q]pk中各项指标与每条医疗数据密文中各项指标间的欧氏距离密文的步骤,包括:

23、云存储服务器利用paillier算法对选择的随机数r进行加密,生成密文x1,其中,[pl,n']pk表示所述密文数据库d中第l条医疗数据密文中的第n’项指标,[qn']pk表示病人数据密文中的第n’项指标,n’=1,2…,n,n表示病人数据密文及每条医疗数据密文的指标项数,[·]pk表示利用公钥pk加密,n表示paillier算法的模数;

24、云存储服务器基于随机数r和密文x1生成密文x2,并将密文x2发送至云计算服务器,其中,x2=x1·[r]pk;

25、云计算服务器解密密文x2得到明文pl,n'-qn'+r,计算明文pl,n'-qn'+r的平方并加密为密文x后发送至云存储服务器;

26、云存储服务器根据密文x1和密文x,按照如下公式计算计算病人数据密文[q]pk中各项指标与每条医疗数据密文中各项指标间的欧氏距离密文:

27、

28、式中,n表示paillier算法的模数,[r2]pk表示利用pk加密r2得到的密文,d为病人数据密文中第n’项指标与第l条医疗数据密文中第n’项指标间的欧氏距离密文。

29、在本发明的一个实施例中,所述云存储服务器从多条欧氏距离密文中随机选取k条欧式距离密文存入优先队列后,基于随机选择的s计算中间值,并将中间值发送至云计算服务器的步骤,包括:

30、云存储服务器从计算得到的多条欧氏距离密文中随机选取k条欧式距离密文,并将所述k条欧式距离密文及其索引值存入优先队列;

31、云存储服务器随机选择s=0或s=1并选择随机数u满足之后,根据s的取值计算中间值[l']pk;其中,若s=1,则若s=0,则pl表示所述优先队列中最小的欧氏距离密文对应的医疗数据,pv表示未存入优先队列的任一条欧式距离密文对应的医疗数据,q表示病人数据,表示比特长度;

32、云存储服务器将中间值[l']pk发送至云计算服务器。

33、在本发明的一个实施例中,所述云计算服务器利用私钥sk解密所述中间值,根据得到的明文长度设置第一标识t的步骤,包括:

34、云计算服务器利用私钥sk解密中间值[l']pk,若解密得到的明文l'满足:则设置第一标识t=1;否则,设置第一标识t=0。

35、在本发明的一个实施例中,所述云存储服务器基于第二aes密文调整所述优先队列,获得所述多条欧式距离密文中最小的k条欧式距离密文的步骤,包括:

36、当s≠t时,表示则抛弃pl并将pv存入pl在优先队列中的位置,获得所述多条欧式距离密文中最小的k条欧式距离密文。

37、在本发明的一个实施例中,所述云存储服务器获取最小的k条欧式距离密文对应的k条医疗数据密文,解密后发送至用户端的步骤,包括:

38、云存储服务器获取所述最小的k条欧式距离密文对应的k条医疗数据密文的各项指标并利用所述第一密钥skid解密,得到用户端所需的医疗数据密文其中,

39、云存储服务器将用户所需的医疗数据密文和所述第二密钥skδ发送至用户端,以使用户端利用所述第二密钥skδ对进行解密,得到所需的医疗数据明文。

40、与现有技术相比,本发明的有益效果在于:

41、本发明实施例提供一种基于同态加密的医疗数据高效安全的k-nn方法,通过将paillier算法的私钥融入到拉格朗日插值多项式的常数项中,使各个用户端分别拥有自己的私钥,只能对自身所需的医疗数据密文进行解密,有利于保护外包数据的安全性。此外,本发明为每个用户端分配唯一的身份标识,通过比较验证值h与身份标识来验证用户端是否注册,可以拒绝非注册用户的请求服务,提高了服务器的真实使用率。

42、进一步地,用户端在查询过程中,本发明采用优先队列的思想临时存储k条欧氏距离密文,通过将剩余的欧式距离密文与优先队列中最小的欧式距离密文进行比较来动态调整队列中元素的顺序,从而有效减少云计算服务器与云存储服务器之间重复的欧氏距离密文比较操作,降低了查询算法的时间复杂度。

43、以下将结合附图及实施例对本发明做进一步详细说明。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1