一种数据加密处理方法及装置与流程

文档序号:22804537发布日期:2020-11-04 04:07阅读:99来源:国知局
本发明涉及信息处理
技术领域
:,尤其涉及一种数据加密处理方法及装置。
背景技术
::随着互联网的飞速发展,个人敏感信息泄露越演越烈,企业对自身采集的客户敏感信息的重视程度越来越高,针对上述情况,企业研发了多种加密策略以保证信息的安全。但现有的数据加密策略中,传统视图、数据库函数加密无法通用,且计算密集型的加密过程通常集中在数据库,这些都会严重影响数据服务器的性能。另一方面,现有加密策略在加密时需要升级大量的加密逻辑,造成工作量以及复杂度较大。针对历史数据而言,现有技术中通常不作加密处理,无法保证历史数据的安全性,即使选择对历史数据加密,所对应的工作量会进一步增加。因此现有的加密策略存在影响数据库性能以及工作量和复杂度大的问题。技术实现要素:本发明实施例提供一种数据加密处理方法及装置,以解决现有的加密策略存在影响数据库性能、工作量和复杂度大的问题。为了解决上述问题,本发明实施例是这样实现的:第一方面,本发明实施例提供一种数据加密处理方法,应用于客户端,所述客户端内集成有加密软件开发工具包sdk,所述方法包括:获取目标数据,并识别所述目标数据的数据类别;若所述目标数据的数据类别为预设的第一增量数据,通过所述加密sdk采用对应的第一加密信息对所述第一增量数据进行加密;和/或,若所述目标数据的数据类别为预设的遗留数据,通过所述加密sdk采用对应的第二加密信息对所述遗留数据进行加密。第二方面,本发明实施例提供一种数据加密处理装置,应用于客户端,客户端内集成有加密软件开发工具包sdk,该装置用于:获取目标数据,并识别所述目标数据的数据类别;若所述目标数据的数据类别为预设的第一增量数据,通过所述加密sdk采用对应的第一加密信息对所述第一增量数据进行加密;和/或,若所述目标数据的数据类别为预设的遗留数据,通过所述加密sdk采用对应的第二加密信息对所述遗留数据进行加密。第三方面,本发明实施例提供一种数据加密处理装置,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述的数据加密处理方法的步骤。第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的数据加密处理方法的步骤。本发明技术方案,通过加密sdk,根据所获取的第一加密信息对第一增量数据进行加密,或根据第二加密信息对遗留数据进行加密,可以利用sdk实现无业务代码入侵的方式完成数据加密,实现减少工作量和降低复杂度的效果,且sdk集成于客户端,降低了加密对数据库工作性能带来的压力,保证了数据库的运转性能,同时通过对遗留数据进行加密,在使得客户端平滑的,不停机的保障业务连续性的情况下,实现对数据库中敏感数据的加密。附图说明下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1表示本发明实施例数据加密处理方法示意图;图2表示本发明实施例客户端、kms以及密码机之间的交互流程图;图3表示本发明实施例的设计框图;图4是本发明实施例提供的数据加密处理装置的结构图;图5是本发明又一实施例提供的数据加密处理装置的结构图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供一种数据加密处理方法,可以应用于客户端,客户端内集成有加密sdk(softwaredevelopmentkit,软件开发工具包),本发明实施例数据加密处理方法包括但不限于如下步骤:获取目标数据,并识别所述目标数据的数据类别;若所述目标数据的数据类别为预设的第一增量数据,通过所述加密sdk采用对应的第一加密信息对所述第一增量数据进行加密;和/或,若所述目标数据的数据类别为预设的遗留数据,通过所述加密sdk采用对应的第二加密信息对所述遗留数据进行加密。需要首先说明的是,本实施方式可以根据目标数据的数据类别,而采取不同的加密方式,比如,如果获取到的是第一增量数据,则通过所述加密sdk采用对应的第一加密信息对所述第一增量数据进行加密,比如是遗留数据,则通过所述加密sdk采用对应的第二加密信息对所述遗留数据进行加密,通过这种方式,本实施例可以有效地解决加密信息改变时,增量数据和遗留数据的加密处理问题,无论获取到何种数据类别,均能通过加密sdk进行对应的处理。容易理解的是,本实施例的数据类别可以不限于上述两类,也可以同时存在多种分类,比如由于加密信息周期改变/不定期改变等时,如果存在多种类别,均可以通过升级版本的方式对应提供多种加密处理方式。同时,本实施例对第一增量数据和遗留数据之间的处理顺序不作限定,可以按获取顺序进行处理,也可以按照工作性能同时处理,还可以按照用户的设置顺序进行处理。作为其中一个实施例,如图1所示,若所述目标数据的数据类别为预设的第一增量数据,通过所述加密sdk采用对应的第一加密信息对所述第一增量数据进行加密;和/或,若所述目标数据的数据类别为预设的遗留数据,通过所述加密sdk采用对应的第二加密信息对所述遗留数据进行加密,可以包括:步骤101、获取第一增量数据加密所需的第一加密信息。本发明实施例的客户端内首先获取第一增量数据加密所需的第一加密信息,这里的第一加密信息包括加密密钥以及加密算法。其中增量数据为客户端实时产生的数据。步骤102、通过加密sdk,采用第一加密信息对第一增量数据进行加密。在获取第一增量数据所对应的第一加密信息之后,可以通过客户端所集成的加密sdk,根据第一加密信息执行对第一增量数据的加密。其中,通过将加密过程集成在客户端,可以降低加密对数据库带来的压力。且采用加密sdk进行加密,无需客户端升级大量的加密逻辑,以最小的工作量、复杂度完成加密过程,实现无业务代码入侵的方式完成数据加密。步骤103、在第一增量数据加密完成且可正常解密的情况下,获取遗留数据所对应的第二加密信息。在对第一增量数据加密完成之后,需要检测加密后的第一增量数据是否可正常解密,在解密成功的情况下,可以针对遗留数据获取所对应的第二加密信息。其中,增量数据和遗留数据的区分需要确定一个划分时间点,在该时间点之前产生的数据为遗留数据,在该时间点之后的数据为增量数据。步骤104、通过加密sdk,采用第二加密信息对遗留数据进行加密。在获取遗留数据所对应的第二加密信息之后,可以通过客户端所集成的加密sdk,根据第二加密信息执行对遗留数据的加密。通过采用加密sdk对遗留数据进行加密,在使得客户端平滑的,不停机的保障业务连续性的情况下,实现数据的加密。本发明实施例的数据加密处理方法,通过加密sdk,根据所获取的第一加密信息对第一增量数据进行加密,在第一增量数据加密完成且可正常解密的情况下,根据第二加密信息对遗留数据进行加密,可以利用sdk实现无业务代码入侵的方式完成数据加密,实现减少工作量和降低复杂度,且sdk集成于客户端,降低了加密对数据库带来的压力,保证了数据库的性能,通过对遗留数据进行加密,在使得客户端平滑的,不停机的保障业务连续性的情况下,实现数据库中敏感数据的加密。可选的,在本发明一实施例中,获取第一增量数据加密所需的第一加密信息,包括:采用加密sdk的结构化查询语言sql解析模块,对第一增量数据进行解析,获取第一增量数据所对应的第一解析字段;根据加密规则,在第一解析字段中确定待加密字段;获取与待加密字段对应的第一加密信息,第一加密信息包括加密密钥和加密算法。加密sdk包括sql(structuredquerylanguage,结构化查询语言)解析模块,sql解析模块负责解析客户端插入或者更新的数据信息。在获取第一增量数据所对应的第一加密信息时,首先需要采用sql解析模块对第一增量数据进行解析,获取第一增量数据所对应的第一解析字段。然后根据客户端所配置的加密规则,在第一解析字段中确定出待加密字段。由于增量数据中的某些信息不需要加密,因此需要在获取第一解析字段之后,进一步确定出待加密字段。客户端所配置的加密规则即为在哪个字段处进行加密,在确定待加密字段之后,可以针对待加密字段获取第一加密信息。其中,不论是增量数据还是遗留数据都可存在数据库结构表中,数据库结构表中存在多个字段,数据在对应的字段处进行存储,对数据进行加密时可以增加对应的加密字段。上述过程,通过根据加密规则确定待加密字段,并针对待加密字段获取对应的第一加密信息,可以实现根据客户端的配置对相应的数据进行加密。可选的,在本发明一实施例中,获取与待加密字段对应的第一加密信息,包括:向密钥管理服务器kms发送采用访问密钥加密后的请求报文,请求报文中携带有与待加密字段所对应的数据敏感类型,其中各数据敏感类型可对应于相同或者不同的加密密钥和加密算法;接收kms发送的采用访问密钥加密的反馈信息,反馈信息中携带有与待加密字段所对应的加密密钥和加密算法;其中,访问密钥由kms预先发送。本实施例中,客户端在获取加密密钥和加密算法时,需要首先使用rsa(rsaalgorithm,rsa加密)算法生成第一公私钥对,这里的rsa是一种非对称加密算法。然后使用第一私钥对请求报文进行签名,并采用kms(keymanagementservice,密钥管理服务器)颁布给客户端的访问密钥对已签名的请求报文进行加密,然后将经过签名和加密后的请求报文发送至kms。其中,在所发送的请求报文中携带有与待加密字段所对应的数据敏感类型,各数据敏感类型可对应于相同或者不同的加密密钥和加密算法,数据敏感类型可以包括姓名、手机号码、证件信息、银行卡信息以及地址信息中的至少一项。在对请求报文进行加密时,需要将请求报文以及第一公钥均进行加密。kms接收到请求报文之后,首先对接收到的请求报文采用访问密钥进行解密,然后通过第一公钥验证请求报文中的签名,在验证通过之后,向客户端发送反馈信息。其中,kms在发送反馈信息时,需要生成第二公私钥对,采用第二私钥对包括加密密钥和加密算法的反馈信息进行签名,并采用访问密钥对反馈信息以及第二公钥进行加密,保证加密密钥和加密算法安全的在客户端和kms端传输。客户端获取反馈信息之后,采用访问密钥进行解密、并在通过第二公钥验证签名后,可以获取反馈信息中的加密密钥和加密算法,且可以针对每一个数据敏感类型,获取一对应的加密密钥和加密算法,也可以针对各数据敏感类型确定至少两个加密密钥和加密算法,还可以是针对各数据敏感类型确定一个加密密钥和加密算法。上述过程,可以保证加密密钥和加密算法传输的安全性。可选的,在本发明一实施例中,获取待加密字段所对应的第一加密信息,包括:通过加密sdk定时从密钥管理服务器kms同步待加密字段所对应的最新的加密密钥和加密算法;其中,每一个待加密字段对应于一个数据敏感类型,各数据敏感类型可对应于相同或者不同的加密密钥和加密算法。由于kms中存储的加密密钥和加密算法是会自动/手动轮换更新的,为了保证客户端能获取到最新的轮换版本,加密sdk会定时从kms同步待加密字段所对应的最新的加密密钥和加密算法,其中加密密钥和加密算法并不一定同时轮换,即加密密钥轮换时,加密算法不一定会轮换,相应的,加密算法轮换时,加密密钥不一定轮换。上述过程,可以保证加密信息的高安全性管理,通过加密信息能自动/手动的轮换,一旦加密信息出现泄露,可立即手动的轮换更新,使得新的数据使用新的加密信息,之前加密的数据因为版本的存在,获取之前的加密信息,从而可实现正常解密。下面对kms进行简要阐述,kms可定义数据的敏感类型,每一种数据敏感类型可对应于一把加密的密钥,存储于kms中,每把密钥(加密密钥和解密密钥是相同的)可定期自动/手动的轮换,保证密钥安全,每次轮换会记录当前的密钥版本。相应的加密算法也可定期自动/手动轮换,且与密钥的轮换可以同步或者不同步,各数据敏感类型可对应于相同或者不同的加密算法。且加密算法以文本的形式存储在kms后端的密码机中。其中解密算法与加密算法是两个可逆的算法,两者的轮换过程以及存储都是同步的,对加密算法的描述同样适用于解密算法。其中,kms存储密钥id(identitydocument,身份标识)以及加密算法id,真正的密钥以及加密算法存储在密码机硬件设备中,保证安全程度;客户端获取密钥和加密算法的时候,通过数据敏感类型找到对应的密钥id和加密算法id,然后使用密钥id加密算法id,从密码机中获取对应的加密密钥和加密算法。参见图2,为客户端、kms以及密码机之间的加密过程交互流程图。针对kms而言,需要在启动时判断是否初始化加密密钥以及加密算法,如果没有,则按照数据敏感类型初始化加密密钥和加密算法,在初始化之后可以将加密密钥和加密算法进行加密后放入密码机中,kms和密码机之间可以使用aes256进行加密。例如,对加密密钥和加密算法进行加密如下所示:path=/secret/kms/dbcrypto,数据结构:type:secretpath=/secret/kms/dbalgorithm,数据结构:algorithm:算法base64在密码机中提取加密密钥和加密算法时,可以通过相应的id进行查找,并在查找到之后进行解密,解密完成后获取加密密钥和加密算法。针对客户端而言,在应用程序启动时,可以调用kms获取密钥接口,具体为使用rsa(rsaalgorithm,rsa加密)算法生成第一公私钥对,然后使用第一私钥对携带数据敏感类型的请求报文进行签名,并采用kms颁布的访问密钥对已签名的请求报文和第一公钥进行加密,并在加密后发送至kms。kms使用访问密钥进行解密,然后用第一公钥验证签名,用于认证客户端的请求,在认证通过后生成包括加密密钥和加密算法的反馈信息。其中反馈信息采用临时生成的第二私钥签名、并与第二公钥共同采用访问密钥加密,将反馈信息和第二公钥发送至客户端。客户端接收反馈信息之后,采用访问密钥解密并采用第二公钥验证,获取加密密钥和加密算法并进行存储。可选的,在本发明一实施例中,通过加密sdk,采用第一加密信息对第一增量数据进行加密,包括:调用加密sdk的sql重写模块,依据第一加密信息,修改待加密字段所对应的字段信息以及参数信息,其中字段信息的修改优先级高于参数信息的修改优先级。在通过sql解析模块完成解析且获取第一加密信息之后,可以采用第一加密信息对第一增量数据进行加密,此时需要调用加密sdk的sql重写模块,通过调用sql重写模块,根据第一加密信息修改待加密字段所对应的字段信息以及参数信息,完成对第一增量数据所对应的待加密字段的加密。其中,由于待加密字段可对应于多种数据敏感类型,多种数据敏感类型可对应于至少一个加密密钥和至少一个加密算法,因此第一加密信息中可对应于至少一个加密密钥和至少一个加密算法,且加密密钥和加密算法的数量可以不同。在修改待加密字段时所对应的修改原则为首先修改字段信息,然后修改参数信息,即字段信息的修改优先级高于参数信息的修改优先级,这里的字段信息即为字段名称信息,如姓名、手机号码、证件信息、银行卡信息、地址信息,参数信息即为字段名称处所对应的具体内容,如姓名处对应的内容“张三”,手机号码处对应的内容“13912345678”,证件信息处对应的身份证号码“110……x”,银行卡信息处对应的账号“6321……x”,地址信息处对应的内容“北京市海淀区xx小区3号楼2单元301室”。上述过程,通过利用加密sdk的sql重写模块,对第一增量数据进行加密,可以实现无业务代码入侵的方式完成数据加密,进而保证加密过程的透明化,且通过使用sdk的方式在客户端完成加密,可以降低加密过程对数据库带来的压力。可选的,在本发明一实施例中,调用加密sdk的sql重写模块,依据第一加密信息,修改待加密字段对应的字段信息以及参数信息,包括:调用加密sdk的sql加密模块,依据第一加密信息中的加密密钥和加密算法,确定字段信息的第一密文,并根据加密密钥的类型、加密密钥的版本以及第一密文,生成字段信息的第一密文值;调用加密sdk的sql加密模块,依据第一加密信息中的加密密钥和加密算法,确定参数信息的第二密文,并根据加密密钥的类型、加密密钥的版本以及第二密文,生成参数信息的第二密文值;根据第一密文值和第二密文值,获取修改后的字段信息以及参数信息。在调用加密sdk的sql重写模块,依据第一加密信息,修改待加密字段对应的字段信息以及参数信息时,需要首先根据第一加密信息,采用加密sdk的sql加密模块对字段信息进行加密,获取字段信息所对应的第一密文,然后按照密文值规则,根据加密密钥的类型、加密密钥的版本以及第一密文,生成字段信息所对应的第一密文值。然后根据第一加密信息,采用加密sdk的sql加密模块对参数信息进行加密,获取参数信息所对应的第二密文,然后按照密文值规则,根据加密密钥的类型、加密密钥的版本以及第二密文,生成参数信息所对应的第二密文值。最后根据第一密文值和第二密文值,获取修改后的字段信息以及参数信息,并设置到对应的位置,实现针对插入/更新语句的透明加密存储,然后将sql执行请求发送给数据库,使得数据库执行sql完成存储。下面进一步对加密过程进行介绍,针对加密过程而言,密钥类型对应于客户端配置的原始列数据的敏感类型,最新的加密密钥可以根据kms密钥集合获取,密文则可以采用aes256加密获取,而密文值规则即为:密文值=密钥类型(2位)+密钥轮换后最新的版本(3位)+密文。每次的加密都会将加密结果放入本地缓存,使用lru(leastrecentlyused最近最少使用)算法淘汰数据,减少加密这种计算密集型操作带来的性能损失。且在加密完成之后,进行本地缓存,以提高加密效率,其中缓存策略为选择最近最久未使用的缓存数据予以淘汰,缓存初始容量、缓存最大容量以及缓存存活时间可进行配置,如缓存初始容量可以配置为100,缓存最大容量可配置为3000,缓存存活时间可配置为300秒,上述配置可根据需求进行更改。针对加密本地缓存的情况,缓存key=明文hash值(sha256(明文)),在加密前通过明文hash值去本地缓存中查找是否存在密文,若存在则直接返回,不存在则执行加密过程。其中,上述sql重写模块的重写逻辑为:首先生成替换的sql(字段),再生成替换的参数,针对插入过程而言:生成的完整sql=使用自动生成的加密字段替换原始字段+在最后追加原始字段。生成的完整参数=使用原始字段的参数索引替换为加密后的值+在参数列表按原始顺序追加原始字段的参数值。比如:插入顺序为inserttable(a,b,c)values(1,2,3),那么重写后为inserttable(a_enc,b_enc,c_enc,a,b,c)values(1_enc,2_enc,3_enc,1,2,3)。针对更新过程而言:生成的完整sql=使用自动生成的加密字段替换原始的字段+在每个加密字段之后增加原始字段。生成的完整参数=使用原始字段的参数索引替换为加密后的值+使用计算出来的原始字段索引追加到参数列表中。计算出来的原始字段索引=原始字段的参数索引+当前字段循环下标+1。比如,更新顺序为seta=1,b=2,c=3,那么重写后为:seta_enc=1_enc,a=1,b_enc=2_enc,b=2,c_enc=3_enc,c=3。上述过程中的原始字段即为明文字段,通过调用加密sdk,对待加密字段进行修改,可以实现无业务代码入侵的方式完成数据加密,进而保证加密过程的透明化,且通过使用sdk的方式在客户端完成加密,可以降低加密过程对数据库带来的压力。可选的,在本发明一实施例中,获取遗留数据所对应的第二加密信息之前,还包括:分批次查询加密字段为空的遗留数据,加密字段为待加密的明文字段所对应的密文形式;根据查询结果筛选出待加密的遗留数据。在获取遗留数据所对应的第二加密信息之前,可以查询加密字段为空的遗留数据,可以配置查询时机,如每天凌晨进行查询。查询时可以分批次查询,每次查询多条,且每次查询的条数都不能超过上限(如1000条),然后根据查询结果确定待加密的遗留数据。如根据客户端的配置,找到每张表的原始字段和加密字段,查询对应表中的加密字段为空的数据,每次查询1000条(可配置批次处理多少条,限制最大1000),每次查询使用上一次最大的主键id做为范围查询,初始主键id为0,保证最快的查询到未生成密文值的数据,其对应的过程可以为:算法=select*from“配置的加密表”where“主键”大于“上一次查询出来的最大的主键”and“加密字段值为空”“限制1000条记录”。其中遗留数据为数据库之前保存的数据,还可以包括在加密状态已经丢失且处于解密状态的历史数据,通过将丢失的数据进行解密后作为遗留数据,重新对其进行加密,可以避免这部分数据的再次丢失。需要说明的是,在执行查询操作之前,还需要通过加密sdk的遗留数据批量迁移模块检测是否满足迁移条件;在满足迁移条件的情况下,分批次查询加密字段为空的数据。这里的迁移条件为:增量数据是否可以按以上逻辑实现存储加密、查询解密,若是则可以确定满足迁移条件。在筛选出待加密的遗留数据,且获取第二加密信息之后,可以执行通过加密sdk,采用第二加密信息对遗留数据进行加密的过程,具体为:调用加密sdk,采用第二加密信息,对待加密的遗留数据进行批量加密处理。对遗留数据和增量数据进行加密的加密原则是相同的,均是需要调用加密sdk,根据对应的加密信息进行加密,区别在于,对遗留数据进行加密时,可以进行批量加密。下面对批量加密的过程进行阐述,如循环本次1000条加密字段为空的数据,使用主键更新原始字段的值为当前值,通过加密sdk,自动完成加密更新,其对应的过程为:算法=update“配置的加密表”set“明文字段”=查询出来的明文字段的值(不变化)where“主键”=“查询出来的主键”,该过程与上述增量数据的加密过程相同,这里不再进一步阐述。通过循环执行上述过程所部署的间隔时间、以及执行时长来控制迁移的速率,降低迁移对数据库带来的压力(如默认迁移在凌晨业务低谷执行,也是为了不影响白天的联机交易)。上述过程,通过查询获取待加密的遗留数据,并采用批量加密的方式对遗留数据进行加密,可以在使得客户端平滑的,不停机的保障业务连续性的情况下,实现对数据库中敏感数据的加密。可选的,在本发明一实施例中,客户端内集成有解密sdk,其中加密sdk与解密sdk可以集成在一起,形成加解密sdk,加密sdk与解密sdk也可以分别集成在客户端内。其中,该方法还包括:在接收到查询请求的情况下,检测是否开启使用加密字段的功能;若开启采用解密sdk的结构化查询语言sql解析模块,对查询请求进行解析,获取对应的第二解析字段;根据解密规则,判断第二解析字段是否均存在加密字段;若存在,则提取第二解析字段中的查询条件字段;根据查询条件字段获取目标数据;通过解密sdk,采用目标数据对应的解密信息对目标数据进行解密。在客户端接收到查询请求时,需要首先检测是否开启了使用加密字段的功能,如果没有开启且明文数据未被清理的状态下,则按照现有的明文查找策略获取查询请求所对应的查询结果,若开启了使用加密字段的功能,则需要采用解密sdk的sql解析模块,对查询请求进行解析,获取对应的第二解析字段,然后根据解密规则,判断第二解析字段是否均存在加密字段,若存在,则可以针对第二解析字段,提取查询条件字段,并根据查询条件字段获取目标数据,然后调用解密sdk,采用目标数据对应的解密信息,执行对目标数据进行解密的过程。其中,第二解析字段中包括查询条件字段和查询结果字段,通过判断第二解析字段是否均存在加密字段,可以避免在查询结果字段不存在对应的加密字段的情况下仍执行解密的问题,且加密规则与解密规则可以集成为一个规则,也可以分为两个规则。且目标数据对应的解密信息也可以通过与kms的交互来获取,与上述加密信息的获取流程相同,这里不再赘述。其中,根据查询条件字段获取目标数据,包括:采用解密sdk的sql加密模块对查询条件字段进行加密;根据加密结果进行查询,获取目标数据。在根据查询条件字段获取目标数据时,首先需要采用解密sdk的sql加密模块对查询条件字段进行加密处理,在完成加密之后,可以根据加密之后的查询条件字段查找目标数据。这里的加密可以采用预设的加密密钥和加密算法,也可以获取kms中最新的加密密钥和加密算法。其中,通过解密sdk,采用目标数据对应的解密信息对目标数据进行解密,包括:调用解密sdk的sql重写模块,依据解密信息,修改目标数据的查询结果字段和查询结果参数,其中查询结果字段的修改优先级大于查询结果参数的修改优先级。解密信息包括解密密钥以及解密算法,若kms中解密密钥和/或解密算法已轮换,客户端还未及时同步到最新的版本,解密时仍然会主动向kms发起一次同步请求,获取最新的解密密钥和/或解密算法。在获取最新的解密密钥和/或解密算法之后,可以调用解密sdk的sql重写模块,依据解密密钥和解密算法,修改目标数据的查询结果字段,在对查询结果字段修改完整后,修改目标数据的查询结果参数,完成对目标数据的修改。其中,调用解密sdk的sql重写模块,依据解密信息,修改目标数据的查询结果字段和查询结果参数,包括:根据查询结果字段解析出密文类型、密文版本以及第三密文,调用解密sdk的sql解密模块,根据解密信息的解密密钥和解密算法对第三密文进行解密,获取解密后的查询结果字段;根据查询结果参数解析出密文类型、密文版本以及第四密文,调用解密sdk的sql解密模块,根据解密信息的解密密钥和解密算法对第四密文进行解密,获取解密后的查询结果参数。客户端可以将查询结果字段解析出密文类型、密文版本以及第三密文,然后调用解密sdk的sql解密模块,根据解密密钥和解密算法对查询结果字段所对应的第三密文进行解密,获取解密后的查询结果字段。客户端可以将查询结果参数解析出密文类型、密文版本以及第四密文,然后调用解密sdk的sql解密模块,根据解密密钥和解密算法对查询结果参数所对应的第四密文进行解密,获取解密后的查询结果参数。至此,可以获取明文状态的查询结果字段以及查询结果参数,然后将获取的结果设置到对应的明文字段上。下面进一步对解密过程进行介绍,针对解密算法而言,密文=截取5位到末尾的字符作为真正的密文数据,密钥类型=截取前2位作为密钥类型,当前加密的密钥版本=截取第3位到第5位作为当前加密的密钥版本,解密密钥和解密算法可以根据kms获取,明文值可根据解密密钥和解密算法获取。每次解密都会将解密结果放入本地缓存,使用lru算法淘汰数据,减少解密这种计算密集型操作带来的性能损失。且在解密完成之后,进行本地缓存,可以提高效率,缓存策略可以为选择最近最久未使用的缓存数据予以淘汰,缓存初始容量、缓存最大容量以及缓存存活时间可进行配置,如缓存初始容量可以配置为100,缓存最大容量可配置为3000,缓存存活时间可配置为300秒。上述配置可根据需求进行更改。针对解密本地缓存的情况,缓存key=密文hash值(sha256(密文)),解密前通过密文hash值取本地缓存中获取是否存在明文,存在则直接返回,不存在则调用解密模块。上述为解密的处理流程,通过上述方法,可以在执行解密操作时,客户端通过自身所集成解密sdk完成解密,配合本地缓存,降低解密对数据库带来的压力,同时在执行解密操作时,无需客户端升级大量的解密逻辑,可以以最小的工作量、复杂度完成数据解密,实现无业务代码入侵的方式完成查询解密。可选的,在开启使用加密字段的功能之后,在查询时,系统自动的从密文列获取值,解密替换到原始列上,实现透明的查询解密,一旦查询解密异常,可以修改配置,重启应用程序,恢复使用明文字段(因明文字段存在,可无缝回滚)。若无查询异常,则执行批量清理原始字段值程序,分批将明文值设置为空,完成数据库中明文数据的清理。本发明实施例提供的数据加密、解密的方法,可以解决如下问题:加解密信息泄露,加解密业务系统改造成本高;传统视图和数据库函数加解密无法通用、降低数据库性能;加解密工作量和复杂度大;对于历史遗留数据,无法在保证业务稳定正常开展时,实施敏感信息加密存储。下面以一具体实例对本发明实施例的数据加密、解密的处理方法进行阐述,数据加密、解密的处理方法可对应于以下4个阶段,如下所述。第一阶段:增量数据实现加密存储1、变更数据库表结构,增加加密字段:修改表(user_info)结构,添加表对应的enc字段(加密字段),如:姓名name>name_enc;手机号码mobile>mobile_enc;证件信息idcard>idcard_enc;银行卡信息card>card_enc;地址信息addr>addr_enc。2、增加加密规则配置:添加表对应原始字段(明文字段)和加密字段的配置,用户表对应的name字段的加密字段为name_enc,依次类推:crypto.cipher.user_info.name=name_enccrypto.cipher.user_info.mobile=mobile_enccrypto.cipher.user_info.idcard=idcard_enccrypto.cipher.user_info.card=card_enccrypto.cipher.user_info.addr=addr_enc3、集成加密解密sdk,更新应用程序,实现增量敏感数据的加密存储:设置cipher.comlum.enabled=false,表示不使用密文列,sdk自动完成增量数据的存储加密、查询解密;加密存储前后,都可以使用原始字段进行查询和更新。第二阶段:遗留未加密数据批量迁移为加密数据1、配置增加crypto.legacy.enabled=true开启遗留数据迁移功能并执行。2、待任务自动每日凌晨执行完毕,检查迁移结果。3、验证所有表的所有敏感原始字段的值全部加密设置到加密字段上后,准备启动第三阶段。第三阶段:开启使用加密字段查询时,自动的从密文列获取值,解密替换到原始列上,实现透明的查询解密,一旦查询解密异常,可以修改配置cipher.column.enabled=false,重启应用程序,恢复使用明文字段(因明文字段存在,可无缝回滚)。第四阶段:阶段三验证无误后,执行批量清理原始字段值程序,完成明文字段的清理。上述为本发明的一具体实施例,通过加密/解密sdk实现透明的,无业务代码入侵的方式完成原始字段的存储加密、查询解密,控制历史遗留数据的批量迁移并生成对应的加密字段,帮助应用程序平滑的,不停机的,在保障业务连续性的情况下,实现数据库中敏感信息的加密。其中,本发明实施例的设计框图如图3所示:客户端应用程序可以配置数据加密解密规则,其中根据数据加密解密规则可以确定数据结构表中的哪些字段是需要加密的原始字段,哪些是加密字段,在通过加密sdk进行数据的加密之后,可以将数据存储至数据库中。针对解密而言,在客户端应用程序接收到查询请求的情况下,可以通过解密sdk在数据库中进行透明查询,获取解密结果。其中,客户端应用程序还可以与kms之间进行交互,根据kms的授权获取加密信息和解密信息,加密/解密sdk集成在客户端应用程序中,通过加密/解密sdk与kms之间的交互,可以获取最新的加密信息和解密信息。加密/解密sdk(加密sdk和解密sdk可以集成为一体,也可以分开设置)包括sql解析模块、sql重写模块、sql加密解密执行模块以及遗留数据批量迁移模块,通过上述模块来实现加密存储和解密查询。以上,为本发明实施例的数据加密处理方法的实施过程,通过加密传输方式,可以保证加解密信息的高安全性管理,通过定期轮换密钥和算法,可以实现加解密信息的更新进而提升安全性,通过加密/解密sdk,可以实现透明的,无业务代码入侵的方式完成原始字段的存储加密、查询解密,通过使用sdk在客户端完成加密解密,配合本地缓存,可以降低加密解密对数据库带来的压力,保证了数据库的性能,通过针对历史遗留数据进行批量迁移,可以使得应用程序在平滑的,不停机的保障业务连续性的情况下,实现数据库中敏感信息的加密存储。本发明实施例还提供一种数据加密处理装置,应用于客户端,客户端内集成有加密软件开发工具包sdk,所述数据加密处理装置,用于获取目标数据,并识别所述目标数据的数据类别;若所述目标数据的数据类别为预设的第一增量数据,所述数据加密处理装置,用于通过所述加密sdk采用对应的第一加密信息对所述第一增量数据进行加密;和/或,若所述目标数据的数据类别为预设的遗留数据,所述数据加密处理装置,用于通过所述加密sdk采用对应的第二加密信息对所述遗留数据进行加密。需要首先说明的是,本实施方式可以根据目标数据的数据类别,而采取不同的加密方式,比如,如果获取到的是第一增量数据,则通过所述加密sdk采用对应的第一加密信息对所述第一增量数据进行加密,比如是遗留数据,则通过所述加密sdk采用对应的第二加密信息对所述遗留数据进行加密,通过这种方式,本实施例可以有效地解决加密信息改变时,增量数据和遗留数据的加密处理问题,无论获取到何种数据类别,均能通过加密sdk进行对应的处理。容易理解的是,本实施例的数据类别可以不限于上述两类,也可以同时存在多种分类,比如由于加密信息周期改变/不定期改变等时,如果存在多种类别,均可以通过升级版本的方式对应提供多种加密处理方式。同时,本实施例对第一增量数据和遗留数据之间的处理顺序不作限定,可以按获取顺序进行处理,也可以按照工作性能同时处理,还可以按照用户的设置顺序进行处理。具体而言,如图4所示,本实施例数据加密处理装置400包括:第一获取模块401,用于获取第一增量数据加密所需的第一加密信息;第一加密模块402,用于通过加密sdk,采用第一加密信息对第一增量数据进行加密;第二获取模块403,用于在第一增量数据加密完成且可正常解密的情况下,获取遗留数据所对应的第二加密信息;第二加密模块404,用于通过加密sdk,采用第二加密信息对遗留数据进行加密。可选的,第一获取模块包括:第一获取子模块,用于采用加密sdk的结构化查询语言sql解析模块,对第一增量数据进行解析,获取第一增量数据所对应的第一解析字段;第一确定子模块,用于根据加密规则,在第一解析字段中确定待加密字段;第二获取子模块,用于获取与待加密字段对应的第一加密信息,第一加密信息包括加密密钥和加密算法。可选的,第二获取子模块包括:发送单元,用于向密钥管理服务器kms发送采用访问密钥加密后的请求报文,请求报文中携带与待加密字段所对应的数据敏感类型,其中各数据敏感类型可对应于相同或者不同的加密密钥和加密算法;接收单元,用于接收kms发送的采用访问密钥加密的反馈信息,反馈信息中携带待加密字段所对应的加密密钥和加密算法;其中,访问密钥由kms预先发送。可选的,第二获取子模块获进一步用于:通过加密sdk定时从密钥管理服务器kms同步待加密字段所对应的最新的加密密钥和加密算法;其中,每一个待加密字段对应于一个数据敏感类型,各数据敏感类型可对应于相同或者不同的加密密钥和加密算法。可选的,第一加密模块包括:第一加密子模块,用于调用加密sdk的sql重写模块,依据第一加密信息,修改待加密字段所对应的字段信息以及参数信息,其中字段信息的修改优先级高于参数信息的修改优先级。可选的,第一加密子模块进一步用于:调用加密sdk的sql加密模块,依据第一加密信息中的加密密钥和加密算法,确定字段信息的第一密文,并根据加密密钥的类型、加密密钥的版本以及第一密文,生成字段信息的第一密文值;调用加密sdk的sql加密模块,依据第一加密信息中的加密密钥和加密算法,确定参数信息的第二密文,并根据加密密钥的类型、加密密钥的版本以及第二密文,生成参数信息的第二密文值;根据第一密文值和第二密文值,获取修改后的字段信息以及参数信息。可选的,该装置还包括:查询模块,用于在第二获取模块获取遗留数据所对应的第二加密信息之前,分批次查询加密字段为空的遗留数据,加密字段为待加密的明文字段所对应的密文形式;筛选模块,用于根据查询结果筛选出待加密的遗留数据。可选的,第二加密模块进一步用于:调用加密sdk,采用第二加密信息,对待加密的遗留数据进行批量加密处理。可选的,客户端内集成有解密sdk,该装置还包括:检测模块,用于在接收到查询请求的情况下,检测是否开启使用加密字段的功能;解析模块,用于若开启,采用解密sdk的结构化查询语言sql解析模块,对查询请求进行解析,获取对应的第二解析字段;判断模块,用于根据解密规则,判断第二解析字段是否均存在加密字段;提取模块,用于若存在,则提取第二解析字段中的查询条件字段;第三获取模块,用于根据查询条件字段获取目标数据;解密模块,用于通过解密sdk,采用目标数据对应的解密信息对目标数据进行解密。可选的,第三获取模块进一步用于:采用解密sdk的sql加密模块对查询条件字段进行加密;根据加密结果进行查询,获取目标数据。可选的,解密模块包括:解密子模块,用于调用解密sdk的sql重写模块,依据解密信息,修改目标数据的查询结果字段和查询结果参数,其中查询结果字段的修改优先级大于查询结果参数的修改优先级。可选的,解密子模块进一步用于:根据查询结果字段解析出密文类型、密文版本以及第三密文,调用解密sdk的sql解密模块,根据解密信息的解密密钥和解密算法对第三密文进行解密,获取解密后的查询结果字段;根据查询结果参数解析出密文类型、密文版本以及第四密文,调用解密sdk的sql解密模块,根据解密信息的解密密钥和解密算法对第四密文进行解密,获取解密后的查询结果参数。本发明实施例数据加密处理装置,通过加密传输方式,可以保证加解密信息的高安全性管理,通过定期轮换密钥和算法,可以实现加解密信息的更新进而提升安全性,通过加密/解密sdk,可以实现透明的,无业务代码入侵的方式完成原始字段的存储加密、查询解密,实现减少工作量和降低复杂度,通过使用sdk在客户端完成加密解密,配合本地缓存,可以降低加密解密对数据库带来的压力,保证了数据库的性能,通过针对历史遗留数据进行批量迁移,可以使得应用程序在平滑的,不停机的保障业务连续性的情况下,实现数据库中敏感信息的加密存储。参见图5,图5是本发明又一实施提供的数据加密处理装置的结构图,该装置应用于客户端,客户端内集成有加密软件开发工具包sdk和解密sdk,如图5所示,数据加密处理装置500包括:处理器501、存储器502及存储在存储器502上并可在处理器上运行的计算机程序,数据加密处理装置500中的各个组件通过总线接口503耦合在一起,计算机程序被处理器501执行时实现如下步骤:获取目标数据,并识别目标数据的数据类别;若目标数据的数据类别为预设的第一增量数据,通过加密sdk采用对应的第一加密信息对第一增量数据进行加密;和/或,若目标数据的数据类别为预设的遗留数据,通过加密sdk采用对应的第二加密信息对遗留数据进行加密。可选的,计算机程序被处理器501执行时还用于:获取第一增量数据加密所需的第一加密信息;通过加密sdk,采用第一加密信息对第一增量数据进行加密;在第一增量数据加密完成且可正常解密的情况下,获取遗留数据所对应的第二加密信息;通过加密sdk,采用第二加密信息对遗留数据进行加密。可选的,计算机程序被处理器501执行时还用于:采用加密sdk的结构化查询语言sql解析模块,对第一增量数据进行解析,获取第一增量数据所对应的第一解析字段;根据加密规则,在第一解析字段中确定待加密字段;获取与待加密字段对应的第一加密信息,第一加密信息包括加密密钥和加密算法。可选的,计算机程序被处理器501执行时还用于:向密钥管理服务器kms发送采用访问密钥加密后的请求报文,请求报文中携带与待加密字段所对应的数据敏感类型,其中各数据敏感类型可对应于相同或者不同的加密密钥和加密算法;接收kms发送的采用访问密钥加密的反馈信息,反馈信息中携带待加密字段所对应的加密密钥和加密算法;其中,访问密钥由kms预先发送。可选的,计算机程序被处理器501执行时还用于:通过加密sdk定时从密钥管理服务器kms同步待加密字段所对应的最新的加密密钥和加密算法;其中,每一个待加密字段对应于一个数据敏感类型,各数据敏感类型可对应于相同或者不同的加密密钥和加密算法。可选的,计算机程序被处理器501执行时还用于:调用加密sdk的sql重写模块,依据第一加密信息,修改待加密字段所对应的字段信息以及参数信息,其中字段信息的修改优先级高于参数信息的修改优先级。可选的,计算机程序被处理器501执行时还用于:调用加密sdk的sql加密模块,依据第一加密信息中的加密密钥和加密算法,确定字段信息的第一密文,并根据加密密钥的类型、加密密钥的版本以及第一密文,生成字段信息的第一密文值;调用加密sdk的sql加密模块,依据第一加密信息中的加密密钥和加密算法,确定参数信息的第二密文,并根据加密密钥的类型、加密密钥的版本以及第二密文,生成参数信息的第二密文值;根据第一密文值和第二密文值,获取修改后的字段信息以及参数信息。可选的,计算机程序被处理器501执行时还用于:在获取遗留数据所对应的第二加密信息之前,分批次查询加密字段为空的遗留数据,加密字段为待加密的明文字段所对应的密文形式;根据查询结果筛选出待加密的遗留数据。可选的,计算机程序被处理器501执行时还用于:调用加密sdk,采用第二加密信息,对待加密的遗留数据进行批量加密处理。可选的,计算机程序被处理器501执行时还用于:在接收到查询请求的情况下,检测是否开启使用加密字段的功能;若开启,采用解密sdk的结构化查询语言sql解析模块,对查询请求进行解析,获取对应的第二解析字段;根据解密规则,判断第二解析字段是否均存在加密字段;若存在,则提取第二解析字段中的查询条件字段;根据查询条件字段获取目标数据;通过解密sdk,采用目标数据对应的解密信息对目标数据进行解密。可选的,计算机程序被处理器501执行时还用于:采用解密sdk的sql加密模块对查询条件字段进行加密;根据加密结果进行查询,获取目标数据。可选的,计算机程序被处理器501执行时还用于:调用解密sdk的sql重写模块,依据解密信息,修改目标数据的查询结果字段和查询结果参数,其中查询结果字段的修改优先级大于查询结果参数的修改优先级。可选的,计算机程序被处理器501执行时还用于:根据查询结果字段解析出密文类型、密文版本以及第三密文,调用解密sdk的sql解密模块,根据解密信息的解密密钥和解密算法对第三密文进行解密,获取解密后的查询结果字段;根据查询结果参数解析出密文类型、密文版本以及第四密文,调用解密sdk的sql解密模块,根据解密信息的解密密钥和解密算法对第四密文进行解密,获取解密后的查询结果参数。本发明实施例还提供一种数据加密处理装置,包括处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现包括上述数据加密处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述数据加密处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(read-onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、磁碟或者光盘等。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1