数据加密存储及存储后查询方法及系统与流程

文档序号:32416416发布日期:2022-12-02 22:17阅读:94来源:国知局
技术简介:
本发明针对数据加密后难以高效查询的问题,提出基于国密SM2算法的加密存储方案。通过预设索引规则生成字段的加密索引值,将索引值与密文数据共同存储于治理表中,实现数据匹配方通过索引快速定位加密数据并解密返回。该方法在保障数据安全的同时显著提升查询效率。
关键词:数据加密,索引查询

1.本发明涉及数据处理技术领域,具体地说是数据加密存储及存储后查询方法及系统。


背景技术:

2.在社会调查、传染病预防等行政行为中,需要收集人员信息的进行研判分析,其中涉及人员信息中姓名、证件号、手机号等核心敏感字段,对于上述敏感字段的需要加强保密。
3.在数据交换和存储过程中为减少密钥交换的风险以及密钥管理的安全,采用了sm2的数据加密方式,数据发送方采用数据接收方提供的sm2公钥进行加密后通过共享交换平台提供给接收方,接收方得到数据后使用sm2私钥解密后重新更换密钥按批次加密后进行密文存储,示意图如图1所示。
4.使用sm2加密解决了数据安全交换和存储的问题,但因相同数据通过sm2加密两次产生的密文不相同,这样会带来数据查询慢或不能批量查询匹配的应用问题。
5.如何实现字段安全存储后快速查询应用,是需要解决的技术问题。


技术实现要素:

6.本发明的技术任务是针对以上不足,提供数据加密存储及存储后查询方法及系统,来解决如何实现字段安全存储后快速查询应用的技术问题。
7.第一方面,本发明的一种数据加密存储及存储后查询方法,应用于包括数据发送发、数据接收方、共享交互平台、区块链和数据匹配方的数据管理系统,所述方法包括如下步骤:
8.数据发送方根据数据接收方提供的公钥、通过国密sm2算法对涉及个人敏感信息的字段加密生成密文数据,并通过共享交互平台将密文数据发送至数据接收方;
9.接收方将接受的密文数据存储至本地数据库,通过私钥密文数据解密并对核验后,基于预配置的索引计算规则对核验后的字段进行摘要索引计算、得到对应的索引值,并基于公钥、通过国密sm2算法对字段再次加密生成密文数据,将索引值和密文数据存储形成一个含有索引列的治理数据表,将所述治理数据表存储至接收方本地数据库,并将所述治理数据表存储至区块链中;
10.将待查询的字段,数据匹配方基于预配置的索引计算规则对所述字段进行摘要索引计算,得到对应的索引值,基于所述索引值从治理数据表中进行查询匹配,将匹配的加密字段解密后返回数据匹配方。
11.作为优选,所述涉及个人敏感信息的字段包括姓名、身份证号码和手机号;
12.对于数据发送方,所述涉及个人敏感信息的字段以及同步时间存储在数据发送发数据表中。
13.作为优选,通过md5的方式对字段进行摘要索引计算;
14.对于身份证号码,所述索引计算规则包括如下操作:
15.生成盐,取身份证号码后四位作为特征盐;
16.选取身份证号码前十六个字节,每四个字节为一组与所述盐进行异或操作,生成计算参数a;
17.对于非身份证的其他证件,将证件号码扩充至十六个字节,不足十六个字节末尾补充字符0,每四个字节为一组与盐进行异或操作,生成计算参数a;
18.通过字符串相加的方式计算参数a+公共盐,形成计算参数b;
19.生成md5(计算参数b),对于得到的十六字节结果,每两个字节交换形成主索引值;
20.对于身份证号码,所述索引计算规则包括如下操作:
21.生成盐,选取手机号码后四位作为特征盐;
22.通过在电话号码末尾补充字符0的方式将电话号码扩展到十六个字节,每四个字节为一组与所述盐进行异或操作,生成计算参数a;
23.通过字符串相加的方式计算参数a+公共盐,形成计算参数b;
24.生成md5(计算参数b),对于得到的十六字节结果,每两个字节交换形成主索引值;
25.对于姓名,所述索引计算规则包括如下操作:
26.通过字符串相加的方式计算姓名+公共盐,形成计算参数a;
27.生成md5(计算参数a),对于得到的十六字节结果,每两个字节交换形成主索引值。
28.作为优选,每个字段、每个字段对应的索引值以及同步时间存储在治理数据表中;
29.每个字段对应的索引值形成索引列。
30.作为优选,对于待查询的一批字段,数据匹配方基于预配置的索引计算规则对每个字段进行摘要索引计算,得到对应的索引值,将所述一批字段对应的索引值存储至待匹配表中,对待匹配表与治理数据表通过相应的索引列进行关联查询,将相关联的加密字段解密后返回数据匹配方。
31.第二方面,本发明的一种数据加密存储及存储后查询系统,通过如第一方面任一项所述的一种数据加密存储及存储后查询方法对涉及个人信息的字段提供存储及存储后查询服务,所述系统包括:
32.加密模块,所述加密模块用于支持数据发送方根据数据接收方提供的公钥、通过国密sm2算法对涉及个人敏感信息的字段加密生成密文数据,并通过共享交互平台将密文数据发送至数据接收方;
33.索引配置模块,所述索引配置模块面向数据接收方,用于将接受的密文数据存储至接收方本地数据库,用于通过私钥对密文数据解密并核验后,基于预配置的索引计算规则对字段进行摘要索引计算、得到对应的索引值,并基于公钥、通过国密sm2算法对字段再次加密生成密文数据,用于将索引值和密文数据存储形成一个含有索引列的治理数据表,用于将所述治理数据表存储至接收方本地数据库,并将所述治理数据表存储至区块链中;
34.查询模块,将待查询的字段,所述查询模块面向数据匹配方,用于基于预配置的索引计算规则对所述字段进行摘要索引计算,得到对应的索引值,并用于基于所述索引值从治理数据表中进行查询匹配,将匹配的加密字段解密后返回数据匹配方。
35.作为优选,所述涉及个人敏感信息的字段包括姓名、身份证号码和手机号;
36.对于数据发送方,所述涉及个人敏感信息的字段以及同步时间存储在数据发送发
数据表中。
37.作为优选,所述索引配置模块用于通过md5的方式对字段进行摘要索引计算;
38.对于身份证号码,所述索引计算规则包括如下操作:
39.生成盐,取身份证号码后四位作为特征盐;
40.选取身份证号码前十六个字节,每四个字节为一组与所述盐进行异或操作,生成计算参数a;
41.对于非身份证的其他证件,将证件号码扩充至十六个字节,不足十六个字节末尾补充字符0,每四个字节为一组与盐进行异或操作,生成计算参数a;
42.通过字符串相加的方式计算参数a+公共盐,形成计算参数b;
43.生成md5(计算参数b),对于得到的十六字节结果,每两个字节交换形成主索引值;
44.对于身份证号码,所述索引计算规则包括如下操作:
45.生成盐,选取手机号码后四位作为特征盐;
46.通过在电话号码末尾补充字符0的方式将电话号码扩展到十六个字节,每四个字节为一组与所述盐进行异或操作,生成计算参数a;
47.通过字符串相加的方式计算参数a+公共盐,形成计算参数b;
48.生成md5(计算参数b),对于得到的十六字节结果,每两个字节交换形成主索引值;
49.对于姓名,所述索引计算规则包括如下操作:
50.通过字符串相加的方式计算姓名+公共盐,形成计算参数a;
51.生成md5(计算参数a),对于得到的十六字节结果,每两个字节交换形成主索引值。
52.作为优选,每个字段、每个字段对应的索引值以及同步时间存储在治理数据表中;
53.每个字段对应的索引值形成索引列。
54.作为优选,对于待查询的一批字段,所述查询模块用于基于预配置的索引计算规则对每个字段进行摘要索引计算,得到对应的索引值,用于将所述一批字段对应的索引值存储至待匹配表中,对待匹配表与治理数据表通过相应的索引列进行关联查询,将相关联的加密字段解密后返回数据匹配方。
55.本发明的数据加密存储及存储后查询方法及系统具有以下优点:通过在治理表中增加加密字段的索引列,数据查询时只需要把输入明文进行索引值计算后去治理表中直接精准查询即可,大大提高了查询效率。
附图说明
56.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
57.下面结合附图对本发明进一步说明。
58.图1为使用sm2数据加密传输示意图;
59.图2实施例1一种数据加密存储及存储后查询方法的流程框图;
60.图3实施例1一种数据加密存储及存储后查询方法中数据流转的框架图;
61.图4实施例1一种数据加密存储及存储后查询方法中数据索引值计算示意图。
具体实施方式
62.下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。
63.本发明实施例提供数据加密存储及存储后查询方法及系统,用于解决如何实现字段安全存储后快速查询应用的技术问题。
64.实施例1:
65.本发明的一种数据加密存储及存储后查询方法,应用于包括数据发送发、数据接收方、共享交互平台、区块链和数据匹配方的数据管理系统,该方法包括如下步骤:
66.s100、数据发送方根据数据接收方提供的公钥、通过国密sm2算法对涉及个人敏感信息的字段加密生成密文数据,并通过共享交互平台将密文数据发送至数据接收方;
67.s200、接收方将接受的密文数据存储至本地数据库,通过私钥密文数据解密并对核验后,基于预配置的索引计算规则对核验后的字段进行摘要索引计算、得到对应的索引值,并基于公钥、通过国密sm2算法对字段再次加密生成密文数据,将索引值和密文数据存储形成一个含有索引列的治理数据表,将所述治理数据表存储至接收方本地数据库,并将所述治理数据表存储至区块链中;
68.s300、将待查询的字段,数据匹配方基于预配置的索引计算规则对所述字段进行摘要索引计算,得到对应的索引值,基于所述索引值从治理数据表中进行查询匹配,将匹配的加密字段解密后返回数据匹配方。
69.本实施例中涉及个人敏感信息的字段包括姓名、身份证号码和手机号。
70.步骤s100对于数据发送方,上述涉及个人敏感信息的字段以及同步时间存储在数据发送方数据表中,如表1所示。
71.表1发送方数据表:
72.字段名字段中文名说明name姓名使用接收方公钥进行sm2加密code身份证件号码使用接收方公钥进行sm2加密telephone手机号使用接收方公钥进行sm2加密cd_time同步时间最新同步时间
73.步骤s200中,接收方通过共享交换平台收到发送方的原始数据后不做处理,原样存储一份,并定时与发送方进行数据发送和接收的数据对账。
74.接收方对存储的加密字段数据进行解密、稽核校验、生成索引列、原始加密字段数据重新sm2加密、完整数据存入数据表,整个数据处理过程都在内存中进行。针对生成的索引列必须保证既能体现每个加密值的特征,又不能被破解还原出原始值内容,md5本身具有不可还原性,但针对证件号或手机号,也会通过大数据碰撞的方式实现数据还原,因此索引列实现基本思路为md5(明文+盐)的方式,具体制定计算索引列值的规则如下表2所示。
75.表2、计算索引列值的规则
[0076][0077]
[0078]
最终,在数据接收方,每个字段、每个字段对应的索引值以及同步时间存储在治理数据表中;每个字段对应的索引值形成索引列。治理数据表如表3所示。
[0079]
表3、治理数据表
[0080][0081]
步骤s300中,数据服务可以分为单条的数据查询和批量库表的匹配方式查询两种。
[0082]
对于单条查询,当用户输入一条个人信息进行查询时,如身份证号,系统程序自动对明文身份证号进行索引值计算,计算出来的索引值与治理表所在的证件号索引列进行精准匹配,如果匹配到,则把匹配出的数据提取出来,并对加密字段进行解密后返回给用户。
[0083]
对于批量匹配,当用户提供一批待查询数据时,如一批次身份证号,系统程序自动对所有明文身份证号进行索引值计算,把计算出来的一批索引值形成索引列放入待匹配表中,待匹配表与治理表通过相应的索引列进行关联查询,关联出数据后,把相应的加密字段数据解密后形成完整数据返回给用户。
[0084]
sm2的加密方式主要考虑数据的交换和存储安全性,但同一条数据sm2加密后的密文不同,这就导致无法一条明文或一批明文数据在进行查询时,需要对治理库中的所有密文数据解密后碰撞才能匹配出相应数据,过程解密次数为nm次,(n为治理库中的数据条数,m为用户输入的待查询的数据条数),通过在治理表中增加加密字段的索引列,数据查询时只需要把输入明文进行索引值计算后去治理表中直接精准查询即可,大大提高了查询效率。
[0085]
实施例2:
[0086]
本发明一种数据加密存储及存储后查询系统,包括加密模块、索引配置模块以及查询模块,该系统通过实施例2公开的方法对涉及个人信息的字段提供存储及存储后查询服务。
[0087]
加密模块用于支持数据发送方根据数据接收方提供的公钥、通过国密sm2算法对涉及个人敏感信息的字段加密生成密文数据,并通过共享交互平台将密文数据发送至数据
接收方。
[0088]
对于数据发送方,上述涉及个人敏感信息的字段以及同步时间存储在数据发送方数据表,该表的结构如实施例1中表1。
[0089]
索引配置模块面向数据接收方,用于将接受的密文数据存储至接收方本地数据库,用于通过私钥对密文数据解密并核验后,基于预配置的索引计算规则对字段进行摘要索引计算、得到对应的索引值,并基于公钥、通过国密sm2算法对字段再次加密生成密文数据,用于将索引值和密文数据存储形成一个含有索引列的治理数据表,用于将所述治理数据表存储至接收方本地数据库,并将所述治理数据表存储至区块链中。
[0090]
作为索引配置模块的具体实施,索引配置模块用于执行如下操作:
[0091]
(1)通过共享交换平台收到发送方的原始数据后不做处理,原样存储一份,并定时与发送方进行数据发送和接收的数据对账;
[0092]
(2)对存储的加密字段数据进行解密、稽核校验、生成索引列、原始加密字段数据重新sm2加密、完整数据存入数据表,整个数据处理过程都在内存中进行;
[0093]
针对生成的索引列必须保证既能体现每个加密值的特征,又不能被破解还原出原始值内容,md5本身具有不可还原性,但针对证件号或手机号,也会通过大数据碰撞的方式实现数据还原,因此索引列实现基本思路为md5(明文+盐)的方式,具体制定计算索引列值的规则实施例1表2所示;
[0094]
(3)将每个字段、每个字段对应的索引值以及同步时间存储在治理数据表中;每个字段对应的索引值形成索引列。治理数据表如实施例1表3所示。
[0095]
查询模块支持单条的数据查询和批量库表的匹配方式查询两种。
[0096]
对于单条查询,该查询模块用于执行如下操作:当用户输入一条个人信息进行查询时,如身份证号,系统程序自动对明文身份证号进行索引值计算,计算出来的索引值与治理表所在的证件号索引列进行精准匹配,如果匹配到,则把匹配出的数据提取出来,并对加密字段进行解密后返回给用户。
[0097]
对于批量匹配,该查询模块用于执行如下操作:当用户提供一批待查询数据时,如一批次身份证号,系统程序自动对所有明文身份证号进行索引值计算,把计算出来的一批索引值形成索引列放入待匹配表中,待匹配表与治理表通过相应的索引列进行关联查询,关联出数据后,把相应的加密字段数据解密后形成完整数据返回给用户。
[0098]
上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 留言:0条
  • 还没有人留言评论。精彩留言会获得点赞!