本发明属于通信,具体涉及一种基于国密算法的智能医疗数据安全共享方法。
背景技术:
1、云计算、大数据、人工智能的快速发展相继衍生了许多应用服务行业,比如科学研究、社会生产、教育、生活消费、娱乐等,激发这些行业数字经济合作潜能,进而推动各方加快数字化转型。然而,在这些行业应用中,由于大部分用户数据的存储和处理在远程云服务器执行,因此,如何确保用户数据安全性和完整性,已经成为数字化转型发展过程中面临的严峻挑战。
2、智能医疗作为数字化转型发展过程中的典型应用场景,在该应用场景中,用户敏感数据在不可信的云服务器中计算与存储,导致个人数据泄露和丢失等很多安全性问题。为此,国内外学者使用一系列一些新型密码技术,用于解决这类应用场景中数据泄露和丢失等安全问题。医疗数据中的隐私泄露会损害用户和主要数据所有者的利益,因此确保公平,准确地搜索共享数据并保护医疗数据的隐私在医疗共享系统中变得极其重要,然而目前大多数基于区块链的密文策略属性加密方案无法解决通信成本较高,方案效率低,用户隐私信息易泄露等问题挑战。
技术实现思路
1、为了解决现有技术中存在的上述问题,本发明提供了一种基于国密算法的智能医疗数据安全共享方法。本发明要解决的技术问题通过以下技术方案实现:
2、一种基于国密算法的智能医疗数据安全共享方法,包括以下步骤:
3、病历查询端根据查询者私钥、病历查询关键字和系统公共参数生成查询陷门和查询向量,并将所述查询陷门和所述查询向量发送至区块链;
4、所述区块链根据病历索引和所述查询陷门从雾服务器获取对应的多个病历对称加密密文;
5、所述区块链根据查询者私钥和公钥对所述多个病历对称加密密文进行验证,若验证成功,向病历查询端发送符合条件的多个病历对称加密密文以及对应的对称密钥密文;
6、所述病历查询端根据所述查询者私钥对所述符合条件的多个病历对称加密密文进行解密,得到解密文件。
7、在本发明的一个实施例中,所述方法还包括:
8、属性权威机构根据安全参数和注册医生用户属性集,输出系统公共参数和主密钥;
9、所述属性权威机构根据所述系统公共参数、所述主密钥、查询者身份标识和查询者的注册医生用户属性集,确定查询者私钥和所述病历管理端的公钥和私钥,并将所述查询者私钥发送至病历查询端,将所述公钥和所述私钥发送至病历管理端;
10、所述病历管理端根据所述系统公共参数、索引密钥、预设访问结构、病历文件集、病历关键字集和对称加密算法,生成对称密钥密文、病历索引和病历索引对应的索引向量,并将所述病历索引和所述索引向量发送至区块链。
11、在本发明的一个实施例中,所述属性权威机构根据所述系统公共参数、所述主密钥、查询者身份标识和查询者的注册医生用户属性集,确定查询者私钥和所述病历管理端的公钥和私钥,并将所述查询者私钥发送至病历查询端,将所述公钥和所述私钥发送至病历管理端,包括:
12、所述属性权威机构根据所述系统公共参数、所述主密钥、查询者身份标识和查询者的注册医生用户属性集,确定检索密钥和所述病历管理端的公钥和私钥;
13、所述属性权威机构从所述病历管理端获取索引密钥;
14、所述属性权威机构将所述检索密钥和所述索引密钥作为查询者私钥发送至所述病历查询端,将所述公钥和所述私钥发送至所述病历管理端。
15、在本发明的一个实施例中,所述病历管理端根据所述系统公共参数、索引密钥、预设访问结构、病历文件集、病历关键字集和对称加密算法,生成对称密钥密文、病历索引和病历索引对应的索引向量,并将所述病历索引和所述索引向量发送至区块链,包括:
16、所述病历管理端对所述预设访问结构进行关键信息保护,得到预设保护访问结构,并将预设保护访问结构的属性保护信息发送至区块链;
17、所述病历管理端通过对称加密算法对所述病历文件集的每个病历文件进行加密,得到对应的每个病历对称加密密文和对称密钥,并将病历对称加密密文发送至所述雾服务器;
18、所述病历管理端根据所述对称密钥、随机数ri、索引密钥的二进制随机向量、所述预设保护访问结构和所述系统公共参数,在所述区块链上生成对称密钥密文;
19、所述病历管理端根据病历管理者身份标识和所述系统公共参数,计算每个病历文件的签名;
20、所述病历管理端根据病历关键字集中的关键字的随机数和所述系统公共参数,确定第一索引参数、第二索引参数和第三索引参数;
21、所述病历管理端根据所述关键字和所述病历文件,确定第四索引参数;
22、所述病历管理端根据所述第一索引参数、第二索引参数、第三索引参数和第四索引参数确定病历索引;
23、所述病历管理端根据所述病历文件和索引密钥确定病历索引对应的索引向量;
24、所述病历管理端将所述病历索引和所述索引向量发送至区块链。
25、在本发明的一个实施例中,所述病历查询端根据所述查询者私钥、病历查询关键字和所述系统公共参数生成查询陷门和查询向量,并将所述查询陷门和所述查询向量发送至区块链,包括:
26、所述病历查询端根据病历查询关键字和所述系统公共参数,生成查询陷门;
27、所述病历查询端根据所述查询者私钥中的索引密钥生成查询向量;
28、所述病历查询端将所述查询陷门和所述查询向量发送至区块链。
29、在本发明的一个实施例中,所述区块链根据所述病历索引和所述查询陷门从所述雾服务器获取对应的多个病历对称加密密文,包括:
30、所述区块链判断所述病历索引和所述查询陷门是否匹配;
31、若匹配,则所述区块链将所述病历索引对应的病历文件标识符发送至所述雾服务器;
32、所述雾服务器根据病历文件标识符查找对应的病历对称加密密文,并将查找到的多个病历对称加密密文发送至区块链。
33、在本发明的一个实施例中,所述区块链根据所述查询者私钥和所述公钥对所述多个病历对称加密密文进行验证,若验证成功,向所述病历查询端发送符合条件的多个病历对称加密密文,包括:
34、所述区块链根据所述查询者私钥计算第一待验证参数;
35、若第一待验证参数与所述属性保护信息相匹配,则所述区块链根据所述病历管理者身份标识为每个所述病历对称加密密文生成数字证书,并将所述数字证书和对应的所述病历文件的签名发送至所述雾服务器;
36、所述雾服务器根据所述数字证书和所述病历文件的签名计算待验证参数对,并将所述待验证参数对发送至所述区块链;
37、所述区块链根据所述待验证参数对和所述公钥对每个所述病历对称加密密文进行验证;
38、若验证成功,则向所述病历查询端发送符合条件的多个病历对称加密密文以及对应的对称密钥密文。
39、在本发明的一个实施例中,所述病历查询端根据所述查询者私钥对所述符合条件的多个病历对称加密密文进行解密,得到解密文件,包括:
40、所述病历查询端根据所述查询者私钥计算变换密钥;
41、所述病历查询端将所述变换密钥和所述对应的对称密钥密文发送至雾服务器助手端;
42、所述雾服务器助手端根据所述变换密钥和所述对应的对称密钥密文计算中间密文;
43、所述雾服务器助手端将所述中间密文发送至所述病历查询端;
44、所述病历查询端根据所述中间密文计算对称密钥;
45、所述病历查询端通过对称解密算法对所述符合条件的多个病历对称加密密文进行解密,得到解密文件。
46、在本发明的一个实施例中,所述系统公共参数和所述主密钥的表示为:
47、
48、其中,pp表示系统公共参数,msk表示主密钥,vi=vig,h表示单向映射散列函数,g表示的生成元,a1=αg,a2=e(a1,g)。
49、在本发明的一个实施例中,所述检索密钥的表达式为:
50、
51、其中,uid表示查询者身份标识,suid表示查询者的注册医生用户属性集。
52、本发明的有益效果:
53、本发明面向大规模的海量多模态数据,使用区块链来存储加密关键字索引和相关数据。使得数据使用者可以使用搜索智能合约可以进行快速搜索,且搜索的结果只有通过验证智能合约验证,才会发生给数据使用者,来避免了云返回错误结果,提高了计算效率,且用户隐私信息不易泄露。
54、以下将结合附图及实施例对本发明做进一步详细说明。