CN116305205A - 一种数据加密处理方法、装置以及设备 - Google Patents

一种数据加密处理方法、装置以及设备 Download PDF

Info

Publication number
CN116305205A
CN116305205A CN202310215357.0A CN202310215357A CN116305205A CN 116305205 A CN116305205 A CN 116305205A CN 202310215357 A CN202310215357 A CN 202310215357A CN 116305205 A CN116305205 A CN 116305205A
Authority
CN
China
Prior art keywords
application
encryption
database
data
logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310215357.0A
Other languages
English (en)
Inventor
黄龙杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ant Blockchain Technology Shanghai Co Ltd
Original Assignee
Ant Blockchain Technology Shanghai Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ant Blockchain Technology Shanghai Co Ltd filed Critical Ant Blockchain Technology Shanghai Co Ltd
Priority to CN202310215357.0A priority Critical patent/CN116305205A/zh
Publication of CN116305205A publication Critical patent/CN116305205A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本说明书实施例公开了一种数据加密处理方法、装置以及设备。方案包括:在应用的进程启动时将加密模块注入所述进程;在所述应用与期望访问的数据库之间确定切面;通过所述进程运行的所述加密模块,在所述切面处增加加密逻辑;通过执行所述加密逻辑,对所述应用存向所述数据库的数据进行加密后,再向所述数据库中存储。

Description

一种数据加密处理方法、装置以及设备
技术领域
本说明书涉及互联网技术领域,尤其涉及一种数据加密处理方法、装置以及设备。
背景技术
在互联网行业,应用通常会采用数据库来管理用户数据,对于敏感数据,典型的比如互联网金融数据,数据库自身的安全保证通常无法满足要求。
为避免数据库自身安全体系被攻破后的数据泄露风险,往往需要将数据加密后存入数据库,并将加密算法和密钥隐藏。目前,常见的加密方案主要是开发手动将数据在应用中加密后存入数据库,并在数据取出阶段解密,这种方案较适合应用开发中的功能,而对于已开发完成的功能,改造代价较大。
基于此,需要针对应用的安全且更低成本的数据处理方案。
发明内容
本说明书一个或多个实施例提供一种数据加密处理方法、装置、设备以及存储介质,用以解决如下技术问题:需要针对应用的安全且更低成本的数据处理方案。
为解决上述技术问题,本说明书一个或多个实施例是这样实现的:
本说明书一个或多个实施例提供的一种数据加密处理方法,包括:
在应用的进程启动时将加密模块注入所述进程;
在所述应用与期望访问的数据库之间确定切面;
通过所述进程运行的所述加密模块,在所述切面处增加加密逻辑;
通过执行所述加密逻辑,对所述应用存向所述数据库的数据进行加密后,再向所述数据库中存储。
本说明书一个或多个实施例提供的一种数据加密处理装置,包括:
加密注入模块,在应用的进程启动时将加密模块注入所述进程;
切面确定模块,在所述应用与期望访问的数据库之间确定切面;
切面改造模块,通过所述进程运行的所述加密模块,在所述切面处增加加密逻辑;
无感加密模块,通过执行所述加密逻辑,对所述应用存向所述数据库的数据进行加密后,再向所述数据库中存储。
本说明书一个或多个实施例提供的一种数据加密处理设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
在应用的进程启动时将加密模块注入所述进程;
在所述应用与期望访问的数据库之间确定切面;
通过所述进程运行的所述加密模块,在所述切面处增加加密逻辑;
通过执行所述加密逻辑,对所述应用存向所述数据库的数据进行加密后,再向所述数据库中存储。
本说明书一个或多个实施例提供的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
在应用的进程启动时将加密模块注入所述进程;
在所述应用与期望访问的数据库之间确定切面;
通过所述进程运行的所述加密模块,在所述切面处增加加密逻辑;
通过执行所述加密逻辑,对所述应用存向所述数据库的数据进行加密后,再向所述数据库中存储。
本说明书一个或多个实施例采用的上述至少一个技术方案能够达到以下有益效果:无需改造应用原有代码,无需依赖上层框架,通过应用进程启动时切面注入的方式,在应用的数据落入数据库前的必经切面上注入了安全代码,实现了加密逻辑动态无感地加入,进而能够通过执行加密逻辑实现对应用的数据的无感加密,成本低且有效提高了应用的数据的安全性。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例提供的一种数据加密处理方法的流程示意图;
图2为本说明书一个或多个实施例提供的一种应用、安全切面与数据库之间的关系示意图;
图3为本说明书一个或多个实施例提供的一种应用场景下,进行切面改造及使用的具体实施方案的流程示意图;
图4为本说明书一个或多个实施例提供的一种数据加密处理装置的结构示意图;
图5为本说明书一个或多个实施例提供的一种数据加密处理设备的结构示意图。
具体实施方式
本说明书实施例提供一种数据加密处理方法、装置、设备以及存储介质。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
对于敏感数据,为防止数据库系统被破解、数据库管理员账号外泄等情况,考虑加密后存入数据库。但是,在实际应用中,有很多应用开发时并没有实现加密逻辑,而应用开发完成后再改造应用又比较困难。有鉴于此,本申请提供了无感的改造方案,这种改造无需涉及应用原有代码,改造后只需要指定需要加密的字段,即可自动将应用存向数据库的数据无感地改为加密后的状态,类似地还可以实现对应的解密处理,在应用需要使用这些数据,从数据库中读取出来时可以无感地自动解密。
为了更好地理解本申请的方案的优势,示例性地对申请人考虑过的其他一些技术方案及其缺点简单说明。包括应用系统加密、前置代理加密、透明数据加密、文件系统加密、磁盘加密等。
应用系统加密原理在于:在应用系统层的源代码中对敏感数据进行加密,加密后将密文存储到数据库中。可以直接在应用系统的源代码中以独立的函数或模块形式完成加密;也可以通过源代码的方式封装出应用系统专用的加密组件或定制的加密API来完成加密。缺点在于:需要所有应用做改造,工作量大难以推动,密钥暴露在应用里,被窃取的风险大。
前置代理加密原理在于:也是在数据保存到数据库之前对敏感数据进行加密,并将密文存储到数据库中,而不同于应用系统加密的是,通常是以“前置代理加密网关”这种独立组件产品的形式实现的。缺点在于:成本高,网络访问次数增加,代理的增加使得数据被窃取的风险增加。
透明数据加密原理在于:是一种对应用系统完全透明的数据库端存储加密技术,通常由数据库厂商在数据库引擎中实现——在数据库引擎的存储管理层增加一个数据处理过程,当数据由数据库共享内存写入到数据文件时对其进行加密;当数据由数据文件读取到数据库共享内存时对其进行解密。缺点在于:需要数据库厂商在数据库引擎中实现,成本巨大,数据管理员通过日志(比如,binlog)很容易获取原始数据,存在数据泄露风险。
文件系统加密原理在于:是在操作系统的文件管理子系统层面上对文件进行加密,大多是通过对与文件管理子系统相关的操作系统内核驱动程序进行改造实现的。不同于文件加密只对单个文件设置访问口令,或对单个文件的内容进行加密转换,文件系统加密提供了一种加密文件系统格式(类似于ext4、xfs等文件系统格式),通过把磁盘存储卷或其上的目录设置为该文件加密系统格式,达到对存储于卷或卷上目录中文件进行加密的目的。文件系统加密技术本质上并不是数据库加密技术,但可以用于对数据库的数据文件进行存储层面的加密。缺点在于:对内核驱动做改造,技术难度大,风险也大,成本高,数据管理员通过日志很容易获取原始数据,存在数据泄露风险。
磁盘加密原理在于:从实现上有软硬两种方式:软件方式的磁盘加密技术,大多是通过专用的磁盘加密软件对磁盘内容进行加密,比如,Windows操作系统自带的BitLocker,同类型的商业软件在国内也有很多,但这类软件由于加密原理和使用方式等因素,基本上无法满足数据库系统的数据加密需求;而硬件方式的磁盘加密技术,在实现上则有两个思路:一种是针对单块硬盘的磁盘加密,一种是针对磁盘阵列或SAN存储设备的磁盘加密。缺点在于:技术难度大,成本高,不能提供针对数据库用户的增强权限控制,存在内部数据库超级用户泄露敏感数据的风险,数据管理员通过日志很容易获取原始数据,存在数据泄露风险。
相比于上面的这些方案,本申请的方案有效降低了对环境和已有设施的要求,能够以低成本高安全性实现无感加解密。下面继续详细说明本申请的方案。
图1为本说明书一个或多个实施例提供的一种数据加密处理方法的流程示意图。该流程可以在应用或数据库所在的设备上执行。流程中的某些输入参数或者中间结果允许人工干预调节,以帮助提高准确性。
图1中的流程包括以下步骤:
S102:在应用的进程启动时将加密模块注入所述进程。
为了实现切面注入,应用基于动态语言或其相关平台实现,比如,基于java、python、nodejs实现。下面的一些实施例主要以java应用为例说明。
在本说明书一个或多个实施例中,加密模块至少包含加密逻辑,还可以包括执行切面注入所需执行改造操作逻辑;作为配套,加密模块还可以包含于加密逻辑对应的解密逻辑。
在应用的进程启动后,加密模块随进程运行而运行,以动态地继续执行切面注入操作。若该进程结束,则该加密模块的运行也相应结束,不会影响应用原本的代码和应用内的服务。对于java应用,通过更改加载到java虚拟机(JVM)中的字节码的方式,实现加密模块的注入,为了进一步提高效率还可以使用字节码增强技术帮助进行更改。
java本身提供了javaagent,其是一个特制的jar文件,能够利用JVM提供的Instrumentation API来更改加载到JVM中的现有字节码,基于此,可以使用javaagent参数来注入加密模块。
S104:在所述应用与期望访问的数据库之间确定切面。
切面指代码中可以被插入新逻辑的点,是面向切面编程中的概念。面向切面编程,是通过预编译方式和运行期间动态代理实现程序功能的统一维护的技术,可以对功能逻辑的各个部分进行隔离,从而使得功能逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
在实际应用中,应用可能会对接不同的数据库,基于切面来改造有助于高复用低成本地支持不同的数据库,而且有效地降低了对应用和数据库本身的影响。尤其适用于已开发完毕的应用和成熟的数据库。
应用通过访问数据库,以将自己的数据存向数据库,或者从数据库读取之前自己存储的数据,数据库提供相应的数据库连接接口,以支持这样的访问,数据库连接接口具体可以由数据库或应用来实现。为了降低改造影响,考虑将应用与数据库尽量边缘、且方便拦截数据的位置确定为切面,由于应用对数据库存取数据,会经过数据库连接接口,而从位置上来看,数据库连接接口处于应用于数据库之间,十分符合条件,因此,可以针对数据库连接接口确定切面。
对于java而言,数据库连接接口可以为java数据库连接(Java DatabaseConnectivity,JDBC)接口,JDBC是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法(即与对象关联的函数)。
S106:通过所述进程运行的所述加密模块,在所述切面处增加加密逻辑。
在本说明书一个或多个实施例中,对于java应用,可以利用重编字节码的技术,实现字节码注入,将加密逻辑注入到切面处,类似地还可以在切面处增加对应于加密逻辑的解密逻辑,解密逻辑可以预先包含于所注入的加密模块中。注入后,该切面具有了加解密的安全能力,则其成为了一个安全切面。
将数据库连接接口作为整体的切面,由于加密逻辑和解密逻辑用于处理不同方向的数据,为了便于精准高效地拦截逻辑各自的目标数据,对整体的切面进一步细化,在数据库连接接口内,可以分别为加密逻辑、解密逻辑分别确定不同的具体的切面,比如,针对数据库连接接口提供的函数,确定目标数据必经的函数,以该函数作为位置参考点,在其后、其后或函数中确定具体的切面。
加解密所涉及的密钥材料,无需提供给数据库,可以保存在应用内,或者也可以利用安全的远端动态下发密钥材料。为了避免更多方参与加解密过程,可以采用基于单钥的对称加密方式,在这种情况下,加密和解密都是采用同一个密钥执行,应用私有地保存该密钥即可。不仅如此,由于数据库本身无需参与加解密过程,因此,无需提供公钥,即无需采用非对称加密方式。
S108:通过执行所述加密逻辑,对所述应用存向所述数据库的数据进行加密后,再向所述数据库中存储。
在本说明书一个或多个实施例中,由于应用的数据在落入数据库之前,已经处于加密状态,而且无需依赖数据库来进行加密,因此,从数据库角度而言,是无感地接收到已加密数据,意识不到该加密操作,因此,即使是数据库管理员,也难以破解出明文数据,防止了应用的数据从数据库端泄露。
对于应用已存入数据库中的已加密数据,在应用需要取用时,通过执行解密逻辑,对应用从数据库读出的已加密数据进行解密。
进一步地,对于应用而言,想要落入数据库的全量数据可能较多,而只有一部分是敏感数据,则可以预先指定敏感数据对应的字段,作为待加密字段,则只针对应用存向数据库的属于待加密字段的数据,执行加密逻辑,以避免浪费处理资源。与密钥材料类似,待加密字段也可以私自持有于应用内部,而不暴露给数据库。
例如,仅对某人力资源管理应用系统中,与员工薪资相关的敏感数据进行加密保护。在实际场景中,薪资信息作为员工信息的一个子部分,在数据库中通常以独立字段或者独立数据表的形式存在,与员工基础信息、教育信息、履历信息等共同构成员工信息子系统,同时,薪资信息通常只在员工薪酬模块或子系统中使用,与其它模块相关性不高,一般也不会在其它模块中被引用,则可以将用于记录薪资信息的字段作为待加密字段。
基于上面的说明,更直观地,本说明书一个或多个实施例提供了一种应用、安全切面与数据库之间的关系示意图,如图2所示。在该图中,应用具体为基于java的web应用,处于PC端或者移动端都可以,安全切面处于web应用和数据库之间,具体处于数据库连接接口,已经注入了加密逻辑和解密逻辑。假定web应用想要将某用户“张三”的敏感数据存向数据库,则该敏感数据将会经过数据库连接接口,在安全切面处通过加密逻辑进行加密,得到已加密数据(图中以不规则符号串表示),然后再落入数据库中,反向地,在web应用需要从数据库中读取之前存入的加密数据时,该加密数据将会经过数据库连接接口,在安全切面处通过解密逻辑进行解密,将明文返回给web应用。
通过图1的方法,无需改造应用原有代码,无需依赖上层框架,通过应用进程启动时切面注入的方式,在应用的数据落入数据库前的必经切面上注入了安全代码,实现了加密逻辑动态无感地加入,进而能够通过执行加密逻辑实现对应用的数据的无感加密,成本低且有效提高了应用的数据的安全性。
关于无需不依赖上层框架,为了便于理解,举例说明。对于前面提到的应用系统加密,比如,可以基于对象关系映射(Object Relational Mapping,ORM)框架实现,比如,mybatis。一些ORM框架提供了扩展点来处理加解密问题,但是,这类方案一方面是要求改造应用代码,另一方面要求应用本身必须使用指定ORM框架,不同ORM框架用法不一,学习成本较高,方案不通用。而本申请的方案对于应用没有这样的上层框架要求,以JDBC作为切面进行改造为例,改造后加解密都在JDBC底层实现,因此,不依赖于上层框架,对用户使用什么ORM框架无要求,适用性更广。
基于图1的方法,本说明书还提供了该方法的一些具体实施方案和扩展方案,下面继续进行说明。
在本说明书一个或多个实施例中,期望加密模块的注入动作随着应用的进程的启动同步触发,以避免有目标数据遗漏未加密,为了提高该同步性,对应用的启动指令进行自适应的改造。
具体地,将加密模块打包得到jar包,确定应用的第一启动命令(即为,原始的启动命令),通过使用javaagent参数指定jar包,生成应用的第二启动命令,通过执行第二启动命令,同时实现了启动应用的进程,以及将jar包注入进程。所指定的jar一般需要满足以下要求:该jar包的MANIFEST.MF文件要指定Premain-Class项;Premain-Class指定的那个类必须实现premain()方法;premain方法,从字面上理解,就是运行在main函数之前的类;当JVM启动时,在执行main函数之前,JVM会先运行-javaagent所指定jar包内Premain-Class这个类的premain方法。下面是示例性的启动命令。
第一启动命令:java-jar APP.jar;
第二启动命令:java-javaagent:/opt/module.jar-jar APP.jar;
之后,在该premain方法中执行字节码改造的操作;
其中,APP表示所要启动的应用名称,/opt/module.jar表示包含加密模块的jar包。
在本说明书一个或多个实施例中,增加加密逻辑时,涉及到对数据库连接接口的改造,具体地,针对作为切面的数据库连接接口,确定其实现类,对实现类中将变量转换为SQL的地方进行代码改写,增加加密逻辑,在这种情况下,该地方即为对于加密逻辑而言具体的切面。
类似地,数据反向传输时,数据库能够提供待解密的SQL结果,则增加解密逻辑时,具体地,对上述的实现类中将SQL结果转换为变量的地方进行代码改写,增加解密逻辑。
进一步地,对于不同数据库对应的数据库连接接口,上述的变量转换为SQL的地方、SQL结果转换为变量的地方均可能是不同的,取决于实现类中如何实现,针对切面的定位和改造可以精确到实现类提供的具体函数。为了便于理解,仍以JDBC为例,本说明书一个或多个实施例还提供了一种应用场景下,进行切面改造及使用的具体实施方案的流程示意图,如图3所示。
在java应用的进程启动时,将加密模块注入该进程。之后可以执行图3中的流程,以将原本的JDBC的实现类进行代码改写以及使用,包括以下步骤:
S302:根据针对所述应用指定的待加密字段,确定所述数据库连接接口相应提供的对应数据类型的变量设定函数。
S304:在所述应用将属于所述待加密字段的数据存向所述数据库时,拦截所述变量设定函数,并调用所述加密模块提供的加密函数,对所述数据加密后再进行变量设定。
变量设定函数为PreparedStatement接口(用于预编译SQL)提供的函数,类似地使用PreparedStatement接口所继承的Statement接口提供的函数也是可以的,不过,使用的PreparedStatement接口的优势在于更适用于参数化查询,与待适配字段的场景更匹配,而且有助于避免SQL注入攻击妨害加密过程的正确执行。下面注解出了示例性的变量设定函数:
"@interface(java.sql.PreparedStatement.setString)",
"@interface(java.sql.PreparedStatement.setBytes)",
"@interface(java.sql.PreparedStatement.setObject)",
"@interface(java.sql.PreparedStatement.setNString)",
"@interface(java.sql.PreparedStatement.setDate)",
"@interface(java.sql.PreparedStatement.setTime)",
"@interface(java.sql.PreparedStatement.setTimestamp)"。
S306:根据所述变量设定的结果,拼接得到相应的SQL,并据此将已加密数据落入数据库中。之后等待应用需要时再读取。
S308:根据所述待加密字段,确定所述数据库连接接口相应提供的对应数据类型的结果获取函数。
结果获取函数为ResultSet接口(用于获取SQL结果)提供的函数。下面注解出了示例性的结果获取函数:
"@interface(java.sql.ResultSet.getString)",
"@interface(java.sql.ResultSet.getBytes)",
"@interface(java.sql.ResultSet.getObject)",
"@interface(java.sql.ResultSet.getNString)"。
S310:在所述应用从所述数据库读取已存储的加密数据时,拦截所述结果获取函数。
S312:调用所述加密模块提供的解密函数,对所述结果获取函数获取的所述加密数据解密后再返回所述应用。
通过上述的对应用与数据库间切面代码注入改造的方式,避免了修改应用本身,低成本且安全有效地实现了无感加解密。
基于同样的思路,本说明书一个或多个实施例还提供了上述方法对应的装置和设备,如图4、图5所示。装置和设备能够相应执行上述方法及相关的可选方案。
图4为本说明书一个或多个实施例提供的一种数据加密处理装置的结构示意图,所述装置包括:
加密注入模块402,在应用的进程启动时将加密模块注入所述进程;
切面确定模块404,在所述应用与期望访问的数据库之间确定切面;
切面改造模块406,通过所述进程运行的所述加密模块,在所述切面处增加加密逻辑;
无感加密模块408,通过执行所述加密逻辑,对所述应用存向所述数据库的数据进行加密后,再向所述数据库中存储。
可选地,所述加密注入模块402,将加密模块打包得到jar包;
确定所述应用的第一启动命令,通过使用javaagent参数指定所述jar包,生成所述应用的第二启动命令;
通过执行所述第二启动命令,将所述jar包注入所述进程。
可选地,所述切面确定模块404,获取所述应用与期望访问的数据库对应的数据库连接接口;
针对所述数据库连接接口确定切面。
可选地,所述切面改造模块406,针对作为所述切面的所述数据库连接接口,确定其实现类;
对所述实现类中将变量转换为SQL的地方进行代码改写,增加加密逻辑。
可选地,所述切面改造模块406,在所述切面处增加对应于所述加密逻辑的解密逻辑;
通过执行所述解密逻辑,对所述应用从所述数据库读出的已加密数据进行解密。
可选地,所述切面改造模块406,在所述针对作为所述切面的所述数据库连接接口,确定其实现类之后,对所述实现类中将SQL结果转换为变量的地方进行代码改写,增加解密逻辑。
可选地,所述无感加密模块408,根据针对所述应用指定的待加密字段,确定所述数据库连接接口相应提供的对应数据类型的变量设定函数;
在所述应用将属于所述待加密字段的数据存向所述数据库时,拦截所述变量设定函数,并调用所述加密模块提供的加密函数,对所述数据加密后再进行变量设定;
根据所述变量设定的结果,拼接得到相应的SQL。
可选地,还包括:
无感解密模块410,在所述根据所述变量设定的结果,拼接得到相应的SQL之后,根据所述待加密字段,确定所述数据库连接接口相应提供的对应数据类型的结果获取函数;
在所述应用从所述数据库读取已存储的加密数据时,拦截所述结果获取函数;
调用所述加密模块提供的解密函数,对所述结果获取函数获取的所述加密数据解密后再返回所述应用。
可选地,所述变量设定函数为PreparedStatement接口提供的函数;和/或,所述结果获取函数为ResultSet接口提供的函数。
可选地,所述应用包括java应用。
图5为本说明书一个或多个实施例提供的一种数据加密处理设备的结构示意图,所述设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
在应用的进程启动时将加密模块注入所述进程;
在所述应用与期望访问的数据库之间确定切面;
通过所述进程运行的所述加密模块,在所述切面处增加加密逻辑;
通过执行所述加密逻辑,对所述应用存向所述数据库的数据进行加密后,再向所述数据库中存储。
基于同样的思路,本说明书一个或多个实施例还提供了一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
在应用的进程启动时将加密模块注入所述进程;
在所述应用与期望访问的数据库之间确定切面;
通过所述进程运行的所述加密模块,在所述切面处增加加密逻辑;
通过执行所述加密逻辑,对所述应用存向所述数据库的数据进行加密后,再向所述数据库中存储。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书实施例可提供为方法、系统、或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书的一个或多个实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书的一个或多个实施例可以有各种更改和变化。凡在本说明书的一个或多个实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

Claims (21)

1.一种数据加密处理方法,包括:
在应用的进程启动时将加密模块注入所述进程;
在所述应用与期望访问的数据库之间确定切面;
通过所述进程运行的所述加密模块,在所述切面处增加加密逻辑;
通过执行所述加密逻辑,对所述应用存向所述数据库的数据进行加密后,再向所述数据库中存储。
2.如权利要求1所述的方法,所述将加密模块注入所述进程,具体包括:
将加密模块打包得到jar包;
确定所述应用的第一启动命令,通过使用javaagent参数指定所述jar包,生成所述应用的第二启动命令;
通过执行所述第二启动命令,将所述jar包注入所述进程。
3.如权利要求1所述的方法,所述在所述应用与期望访问的数据库之间确定切面,具体包括:
获取所述应用与期望访问的数据库对应的数据库连接接口;
针对所述数据库连接接口确定切面。
4.如权利要求3所述的方法,所述通过所述进程运行的所述加密模块,在所述切面处增加加密逻辑,具体包括:
针对作为所述切面的所述数据库连接接口,确定其实现类;
对所述实现类中将变量转换为SQL的地方进行代码改写,增加加密逻辑。
5.如权利要求1所述的方法,还包括:
在所述切面处增加对应于所述加密逻辑的解密逻辑;
通过执行所述解密逻辑,对所述应用从所述数据库读出的已加密数据进行解密。
6.如权利要求4所述的方法,所述针对作为所述切面的所述数据库连接接口,确定其实现类之后,所述方法还包括:
对所述实现类中将SQL结果转换为变量的地方进行代码改写,增加解密逻辑。
7.如权利要求4所述的方法,所述通过执行所述加密逻辑,对所述应用存向所述数据库的数据进行加密,具体包括:
根据针对所述应用指定的待加密字段,确定所述数据库连接接口相应提供的对应数据类型的变量设定函数;
在所述应用将属于所述待加密字段的数据存向所述数据库时,拦截所述变量设定函数,并调用所述加密模块提供的加密函数,对所述数据加密后再进行变量设定;
根据所述变量设定的结果,拼接得到相应的SQL。
8.如权利要求7所述的方法,所述根据所述变量设定的结果,拼接得到相应的SQL之后,所述方法还包括:
根据所述待加密字段,确定所述数据库连接接口相应提供的对应数据类型的结果获取函数;
在所述应用从所述数据库读取已存储的加密数据时,拦截所述结果获取函数;
调用所述加密模块提供的解密函数,对所述结果获取函数获取的所述加密数据解密后再返回所述应用。
9.如权利要求8所述的方法,所述变量设定函数为PreparedStatement接口提供的函数;和/或,所述结果获取函数为ResultSet接口提供的函数。
10.如权利要求1~9任一项所述的方法,所述应用包括java应用。
11.一种数据加密处理装置,包括:
加密注入模块,在应用的进程启动时将加密模块注入所述进程;
切面确定模块,在所述应用与期望访问的数据库之间确定切面;
切面改造模块,通过所述进程运行的所述加密模块,在所述切面处增加加密逻辑;
无感加密模块,通过执行所述加密逻辑,对所述应用存向所述数据库的数据进行加密后,再向所述数据库中存储。
12.如权利要求11所述的装置,所述加密注入模块,将加密模块打包得到jar包;
确定所述应用的第一启动命令,通过使用javaagent参数指定所述jar包,生成所述应用的第二启动命令;
通过执行所述第二启动命令,将所述jar包注入所述进程。
13.如权利要求11所述的装置,所述切面确定模块,获取所述应用与期望访问的数据库对应的数据库连接接口;
针对所述数据库连接接口确定切面。
14.如权利要求13所述的装置,所述切面改造模块,针对作为所述切面的所述数据库连接接口,确定其实现类;
对所述实现类中将变量转换为SQL的地方进行代码改写,增加加密逻辑。
15.如权利要求11所述的装置,所述切面改造模块,在所述切面处增加对应于所述加密逻辑的解密逻辑;
通过执行所述解密逻辑,对所述应用从所述数据库读出的已加密数据进行解密。
16.如权利要求14所述的装置,所述切面改造模块,在所述针对作为所述切面的所述数据库连接接口,确定其实现类之后,对所述实现类中将SQL结果转换为变量的地方进行代码改写,增加解密逻辑。
17.如权利要求14所述的装置,所述无感加密模块,根据针对所述应用指定的待加密字段,确定所述数据库连接接口相应提供的对应数据类型的变量设定函数;
在所述应用将属于所述待加密字段的数据存向所述数据库时,拦截所述变量设定函数,并调用所述加密模块提供的加密函数,对所述数据加密后再进行变量设定;
根据所述变量设定的结果,拼接得到相应的SQL。
18.如权利要求17所述的装置,还包括:
无感解密模块,在所述根据所述变量设定的结果,拼接得到相应的SQL之后,根据所述待加密字段,确定所述数据库连接接口相应提供的对应数据类型的结果获取函数;
在所述应用从所述数据库读取已存储的加密数据时,拦截所述结果获取函数;
调用所述加密模块提供的解密函数,对所述结果获取函数获取的所述加密数据解密后再返回所述应用。
19.如权利要求18所述的装置,所述变量设定函数为PreparedStatement接口提供的函数;和/或,所述结果获取函数为ResultSet接口提供的函数。
20.如权利要求11~19任一项所述的装置,所述应用包括java应用。
21.一种数据加密处理设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行:
在应用的进程启动时将加密模块注入所述进程;
在所述应用与期望访问的数据库之间确定切面;
通过所述进程运行的所述加密模块,在所述切面处增加加密逻辑;
通过执行所述加密逻辑,对所述应用存向所述数据库的数据进行加密后,再向所述数据库中存储。
CN202310215357.0A 2023-03-07 2023-03-07 一种数据加密处理方法、装置以及设备 Pending CN116305205A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310215357.0A CN116305205A (zh) 2023-03-07 2023-03-07 一种数据加密处理方法、装置以及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310215357.0A CN116305205A (zh) 2023-03-07 2023-03-07 一种数据加密处理方法、装置以及设备

Publications (1)

Publication Number Publication Date
CN116305205A true CN116305205A (zh) 2023-06-23

Family

ID=86835508

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310215357.0A Pending CN116305205A (zh) 2023-03-07 2023-03-07 一种数据加密处理方法、装置以及设备

Country Status (1)

Country Link
CN (1) CN116305205A (zh)

Similar Documents

Publication Publication Date Title
Antonopoulos et al. Azure SQL database always encrypted
US20190036693A1 (en) Controlled access to data in a sandboxed environment
CA2520669C (en) Method and apparatus for encrypting database columns
CN101587479B (zh) 面向数据库管理系统内核的数据加解密系统及其方法
JP4522705B2 (ja) ソフトウェア安全実行システム
US8971535B2 (en) Multi-level key management
US8386768B2 (en) High performance data encryption server and method for transparently encrypting/decrypting data
US8627489B2 (en) Distributed document version control
CN103825953B (zh) 一种用户模式加密文件系统
US20140245025A1 (en) System and method for storing data securely
CN114036538A (zh) 一种基于虚拟块设备的数据库透明加解密实现方法及系统
KR100594886B1 (ko) 데이터베이스 보안 시스템 및 방법
CN116680715A (zh) 一种数据库加密配置方法、装置、电子设备及存储介质
CN116305205A (zh) 一种数据加密处理方法、装置以及设备
CN111143879A (zh) 一种Android平台SD卡文件保护方法、终端设备及存储介质
Achenbach et al. Mimosecco: A middleware for secure cloud storage
CN111191261B (zh) 一种大数据安全保护方法、系统、介质及设备
CN115859339B (zh) 一种云存储数据的加密和解密的方法、装置、介质及设备
CN109241180B (zh) 一种基于日志的数据同步的方法及装置
CN103679066A (zh) 可信保密磁盘的实现方法
TW201734877A (zh) 基於應用程序的用戶資訊的隱藏方法及裝置
CN117113423B (zh) 一种数据库透明加密方法、装置、设备及存储介质
CN117194298B (zh) 一种控制方法、装置、设备及存储介质
WO2024087313A1 (zh) 一种数据库访问方法及装置
CN115688135A (zh) 一种基于Openstack的Horizon系统权域控制的安全机制设计方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination