非浸入式多种加密算法的数据加密解密的方法与流程

文档序号:24495784发布日期:2021-03-30 21:23阅读:145来源:国知局
非浸入式多种加密算法的数据加密解密的方法与流程

本发明涉及一种数据加密解密的方法,具体地说是一种非浸入式多种加密算法的数据加密解密的方法,属于数据加密解密的方法领域。



背景技术:

在电子政务中大量数据存储在关系型数据库中,为系统用户提供数据服务,而其中涉及到电子政务应用中的敏感数据安全尤其重要。一方面需要数据库中数据进行加密保护来加强数据传输和访问的安全性,另一方面对已存应用不需要修改代码的情况下,通过配置管理完成数据加密解密服务。但是目前大部分在对敏感数据加密解密应用的过程中,存在着如下的三个问题:

(1)密钥管理存在的问题,通常的情况下,数据加密解密基本上采用对称加密算法进行加解密,同时对密钥的管理基本上无记录,无法对密钥的使用情况进行追踪。

(2)密文查询存在的问题,由于字段密文存在,导致查询效率下降或无法进行条件匹配查询。

(3)加密解密服务整合应用系统的问题,加密解密服务通常采用修改应用核心代码逻辑,将加密解密服务整合进行系统,导致系统开发工作发生变更。



技术实现要素:

本发明的目的在于,设计了一种非浸入式多种加密算法的数据加密解密的方法,通过相关配置即可让加密解密服务在不同的应用环境中自由使用,不需要修改应用系统中核心功能实现的代码。

本发明的技术方案为:

非浸入式多种加密算法的数据加密解密的方法,主要包括如下步骤:

(1)采用二级密钥体系增强对密钥使用的管理,客户端用户的密钥根据用户申请来进行分配,由管理员确认并派发密钥,同时在客户端使用密钥时进行记录,并且客户端密钥也根据数据记录来分配;对敏感数据采用非对称加密算法进行加密解密;

(2)采用密文字段索引表方法来解决数据库加密系统中的密文查询问题,采用hash算法,将基于哈希函数将待加密字段内容映射到哈希值,基于加密函数将待加密字段内容所在记录的所于映射后的哈希值,实现对加密字段的等值查询和范围查询;

(3)采用非浸入式提供加密解密服务,通过配置依赖注入方式完成应用数据加密解密,无需修改原应用系统的代码。

本发明支持新建应用和已建应用数据加密解密,利用不同的密钥方法实现数据传输访问的安全性需要,同时支持对加密数据进行查询检索,并通过配置依赖注入方式集成到应用系统框架中,提供最终的数据加密解密服务。

具体包括下列步骤:

步骤s100:管理员创建非对称加密的密钥对,同时保存私钥,发送公钥到客户端,管理员生成对称加密密钥,利用密钥对非对称加密的私钥和公钥密钥对进行二次加密存储到数据库;

步骤s200:应用配置加密解密服务,在应用程序包中,前置注入到需要对敏感数据进行加密解密的接口,先对敏感数据进行加密或解密,后执行业务操作接口服务,后置注入加密解密调用的日志信息;

步骤s300:客户端利用公钥加密待上传的明文数据,服务器端记录公钥使用情况,并保存密文到数据库数据表中;

步骤s400:基于加密字段建立密文索引表,密文索引表中记录与加密字段记录建立一一对应关系的字段和唯一标识字段id;利用hash函数,将待加密字段所在记录唯一标识id映射到加密唯一标识id,并将id和字段内容哈希值存入索引表;

步骤s500:基于映射后的哈希值,实现对加密字段的等值查询和范围查询;并调用私钥或公钥对加密数据进行解密,并进行展示。

进一步,所述步骤s100包括以下子步骤:

(1)管理员生成sm2密钥,采用非对称加密sm2算法生成公钥和私钥;

(2)管理员生成sm4密钥,采用对称加密算法sm4生成密钥;

(3)对生成的公钥私钥加密存储,管理员用sm4密钥加密生成的非对称加密的私钥和公钥,同时将加密后的公钥、私钥保存到数据库;

(4)用户申请密钥,管理员审批登记发放记录,并提供密码明文给客户端,客户端通过对称加密的密钥,形成打开公钥的密文,打开非对称加密的公钥;

(5)管理员记录密钥申请,管理员记录用户申请密钥情况,并保存到数据库。

进一步,所述步骤s200包含以下子步骤:

(1)配置依赖注入函数的前置加密解密函数;

(2)配置依赖注入函数的后置加密解密日志记录函数。

进一步,所述步骤s300包括以下子步骤:

(1)用户利用对称密钥解密公钥,用户上传或查看加密的敏感数据,通过对称密钥解密公钥;调用公钥对数据进行加密解密;

(2)服务器端记录客户端公钥使用情况,形成客户端公钥使用日志,并对日志记录进行分析,查看异常情况;

(3)密文数据存储,对客户端上传的加密数据密文形式保存到数据库中。

进一步,所述步骤s400包含以下子步骤:

(1)建立加密字段所对应的索引表;

(2)在索引表中定义索引字段,索引字段的内容由字符串数据的划分值和特征值两部分组成;

(3)定义索引字段划分函数,将属性r.ai的值域di映射到划分{p1,p2,…,pk},满足:(1)所有划分的并可以覆盖整个域;(2)任意两个划分不重叠;形式上,定义函数partition如下:partition(r.ai)={p1,p2,…,pk};数值型字段值域的划分方法,通常采用等宽或等深划分的方法;对于字符型字段,根据属性值的概率分布对属性的值域进行划分,使得每个划分包含的元素数目大致相等;

(4)定义索引字段标识函数,为属性ai的每个划分pi指定一个标识符identrai(pi);

(5)定义索引字段映射函数,将属性ai域中的一个值v映射到v隶属划分的标识符;形式上,mapr.ai(v)=identr.(ai),其中向是包含可的划分。

(6)定义索引字段特征函数:利用hash函数将字符串c1c2…cn映射到二进制位串b0b1…bm-1;

(7)对于需要加密的任何一个字符串,通过映射函数和特征函数求得它的划分值和特征值;为了便于对查询条件进行翻译,规定索引字段的前h位表示字符串数据的划分值,后m位表示字符串数据的特征值,整个索引字段的长度为h+m位;

(8)建立加密字段与索引表字段记录的一一对应关系;对于每个关系r(a1,…,ar,…,an),ar为待加密的字符串字段,加密后的关系模式为re(a1,…,are,…,an,...,ars);其中,are是对应于ar的加密字符串字段,即are=e(ar);ars是对应于ar的辅助索引字段,通过对ar的划分值和特征值组合得到。

进一步,所述步骤s500包含以下子步骤:

(1)密文数据检索,根据加密关系的存储模式,利用元数据如映射函数、特征函数等中的规则,转换查询sql中的条件语句,对字符串字段的查洵被转化为对其相应的索引字段的查询;然而,存在一些记录满足索引字段的查询条件,却不满足字符串字段的查询条件,导致“伪记录”的产生;

(2)密文数据二次查询,对查询过滤后的记录调用私钥或公钥进行解密,然后在解密的数据上进行一次精确查询;

(3)密文数据解密展示,利用公钥对查询的数据中的密文进行解密展示;

(4)公钥加密解密使用日志记录,上传用户使用公钥加密解密日志情况,如公钥使用时间、用户名称、解密字段、使用客户端情况等。

本发明的有益效果为:实现了电子政务中敏感数据的安全保护,从密钥的生成到使用全过程管理,同时支持加密数据的模糊和精确查询,并通过非浸入方式集成现有的各个应用系统,体现了很好的移植性,有效的支持了敏感数据的加密解密应用。

下面结合附图和实施例对本发明作进一步说明。

附图说明

图1:本发明实施例的非浸入式基于hash算法和非对称加密算法的基础数据加密的方法的流程图。

具体实施方式

以下对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

实施例1

如图1所示,一种非浸入式多种加密算法的数据加密解密的方法,主要包括如下步骤:

(1)采用二级密钥体系增强对密钥使用的管理,客户端用户的密钥根据用户申请来进行分配,由管理员确认并派发密钥,同时在客户端使用密钥时进行记录,并且客户端密钥也根据数据记录来分配;对敏感数据采用非对称加密算法(sm2)进行加密解密;

(2)采用密文字段索引表方法来解决数据库加密系统中的密文查询问题,采用hash算法,将基于哈希函数将待加密字段内容映射到哈希值,基于加密函数将待加密字段内容所在记录的所于映射后的哈希值,实现对加密字段的等值查询和范围查询;

(3)采用非浸入式提供加密解密服务,通过配置依赖注入方式完成应用数据加密解密,无需修改原应用系统的代码。

本发明支持新建应用和已建应用数据加密解密,利用不同的密钥方法实现数据传输访问的安全性需要,同时支持对加密数据进行查询检索,并通过配置依赖注入方式集成到应用系统框架中,提供最终的数据加密解密服务。

具体包括下列步骤:

步骤s100:管理员创建非对称加密的密钥对,同时保存私钥,发送公钥到客户端,管理员生成对称加密密钥,利用密钥对非对称加密的私钥和公钥密钥对进行二次加密存储到数据库;

所述步骤s100包括以下子步骤:

(1)管理员生成sm2密钥,采用非对称加密sm2算法生成公钥和私钥;

(2)管理员生成sm4密钥,采用对称加密算法sm4生成密钥;

(3)对生成的公钥私钥加密存储,管理员用sm4密钥加密生成的非对称加密的私钥和公钥,同时将加密后的公钥、私钥保存到数据库;

(4)用户申请密钥,管理员审批登记发放记录,并提供密码明文给客户端,客户端通过对称加密的密钥,形成打开公钥的密文,打开非对称加密的公钥;

(5)管理员记录密钥申请,管理员记录用户申请密钥情况,并保存到数据库。

步骤s200:应用配置加密解密服务,在应用程序包中,前置注入到需要对敏感数据进行加密解密的接口,先对敏感数据进行加密或解密,后执行业务操作接口服务,后置注入加密解密调用的日志信息;

所述步骤s200包含以下子步骤:

(1)配置依赖注入函数的前置加密解密函数;

(2)配置依赖注入函数的后置加密解密日志记录函数。

步骤s300:客户端利用公钥加密待上传的明文数据,服务器端记录公钥使用情况,并保存密文到数据库数据表中;

所述步骤s300包括以下子步骤:

(1)用户利用对称密钥解密公钥,用户上传或查看加密的敏感数据,通过对称密钥解密公钥;调用公钥对数据进行加密解密;

(2)服务器端记录客户端公钥使用情况,形成客户端公钥使用日志,并对日志记录进行分析,查看异常情况;

(3)密文数据存储,对客户端上传的加密数据密文形式保存到数据库中。

步骤s400:基于加密字段建立密文索引表,密文索引表中记录与加密字段记录建立一一对应关系的字段和唯一标识字段id;利用hash函数,将待加密字段所在记录唯一标识id映射到加密唯一标识id,并将id和字段内容哈希值存入索引表;

所述步骤s400包含以下子步骤:

(1)建立加密字段所对应的索引表;

(2)在索引表中定义索引字段,索引字段的内容由字符串数据的划分值和特征值两部分组成;

(3)定义索引字段划分函数,将属性r.ai的值域di映射到划分{p1,p2,…,pk},满足:(1)所有划分的并可以覆盖整个域;(2)任意两个划分不重叠;形式上,定义函数partition如下:partition(r.ai)={p1,p2,…,pk};数值型字段值域的划分方法,通常采用等宽或等深划分的方法;对于字符型字段,根据属性值的概率分布对属性的值域进行划分,使得每个划分包含的元素数目大致相等;

(4)定义索引字段标识函数,为属性ai的每个划分pi指定一个标识符identrai(pi);

(5)定义索引字段映射函数,将属性ai域中的一个值v映射到v隶属划分的标识符;形式上,mapr.ai(v)=identr.(ai),其中向是包含可的划分。

(6)定义索引字段特征函数:利用hash函数将字符串c1c2…cn映射到二进制位串b0b1…bm-1;

(7)对于需要加密的任何一个字符串,通过映射函数和特征函数求得它的划分值和特征值;为了便于对查询条件进行翻译,规定索引字段的前h位表示字符串数据的划分值,后m位表示字符串数据的特征值,整个索引字段的长度为h+m位;

(8)建立加密字段与索引表字段记录的一一对应关系;对于每个关系r(a1,…,ar,…,an),ar为待加密的字符串字段,加密后的关系模式为re(a1,…,are,…,an,...,ars);其中,are是对应于ar的加密字符串字段,即are=e(ar);ars是对应于ar的辅助索引字段,通过对ar的划分值和特征值组合得到。

步骤s500:基于映射后的哈希值,实现对加密字段的等值查询和范围查询;并调用私钥或公钥对加密数据进行解密,并进行展示。

所述步骤s500包含以下子步骤:

(1)密文数据检索,根据加密关系的存储模式,利用元数据(如映射函数、特征函数等)中的规则,转换查询sql中的条件语句,对字符串字段的查洵被转化为对其相应的索引字段的查询;然而,存在一些记录满足索引字段的查询条件,却不满足字符串字段的查询条件,导致“伪记录”的产生;

(2)密文数据二次查询,对查询过滤后的记录调用私钥或公钥进行解密,然后在解密的数据上进行一次精确查询;

(3)密文数据解密展示,利用公钥对查询的数据中的密文进行解密展示;

(4)公钥加密解密使用日志记录,上传用户使用公钥加密解密日志情况,如公钥使用时间、用户名称、解密字段、使用客户端情况等。

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