一种客户端与数据库交互时使用的密钥的获取方法和装置转让专利

申请号 : CN202111168213.1

文献号 : CN113609512B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨海峰高强花

申请人 : 北京安华金和科技有限公司

摘要 :

本申请公开了一种客户端与数据库交互时使用的密钥的获取方法和装置,该方法包括:第一软件截取客户端与数据库进行交互时发送的多个数据包;第一软件获取客户端与数据库用于交换密钥的数据包的格式以及发送用于交换密钥的数据包的时机;第一软件根据格式和时机模拟数据库与客户端进行第一交互;第一软件根据格式和时机模拟客户端与数据库进行第二交互;第一软件对进行第一交互和第二交互的过程中接收到的数据包进行解析,得到客户端和数据库进行交互时使用的密钥。通过本申请解决了现有技术中无法对客户端和数据库之间加密数据交互进行安全处理所导致的问题,为对加密数据的进一步处理提供可能,在某种程度上为提高数据库的安全性做出了贡献。

权利要求 :

1.一种客户端与数据库交互时使用的密钥的获取方法,其特征在于,包括:第一软件截取客户端与数据库进行交互时发送的多个数据包;

所述第一软件获取所述客户端与所述数据库用于交换密钥的数据包的格式以及发送所述用于交换密钥的数据包的时机;

在解析到所述客户端向所述数据库发送用于交换密钥的第一数据包情况下,所述第一软件根据所述格式和时机模拟所述数据库与所述客户端进行第一交互;

在解析到所述数据库向所述客户端发送用于交换密钥的第二数据包的情况下,所述第一软件根据所述格式和时机模拟所述客户端与所述数据库进行第二交互;其中,使用人工智能的方式对数据包进行解析,该人工智能的机器学习模型是经过多组训练数据训练得到,所述多组训练数据中的每组训练数据均包括一个数据包和用于标识该数据包是否携带有密钥的标签,经过训练之后该机器学习模型可以使用,其中,将抓取到的数据包输入到该机器学习模型中,该机器学习模型输入一个标签,如果该标签指示该数据包携带有密钥,则将该数据包进行保存;获取该数据包的格式,并对该数据包的格式进行保存;

所述第一软件对进行所述第一交互和所述第二交互的过程中接收到的数据包进行解析,得到所述客户端和所述数据库进行交互时使用的密钥;其中,所述密钥用于对所述客户端和所述数据库之间交互的数据包中的加密数据进行解密,解密之后的数据用于审计。

2.根据权利要求1所述的方法,其特征在于,所述第一软件根据所述格式和时机模拟所述数据库与所述客户端进行第一交互包括:所述第一软件构建所述第一数据包的第一响应,其中,所述第一响应为模拟所述数据库发送的对所述第一数据包的回应。

3.根据权利要求1所述的方法,其特征在于,所述第一软件根据所述格式和时机模拟所述客户端与所述数据库进行第二交互包括:所述第一软件构建所述第二数据包的第二响应,其中,所述第二响应为模拟所述客户端发送的对所述第二数据包的回应。

4.根据权利要求1所述的方法,其特征在于,所述第一软件获取所述客户端与所述数据库用于交换密钥的数据包的格式以及发送所述用于交换密钥的数据包的时机包括:所述第一软件对所述多个数据包根据所述客户端与所述数据库之间使用的协议进行解析,得到所述客户端与所述数据库用于交换密钥的数据包的格式以及发送所述用于交换密钥的数据包的时机。

5.根据权利要求1至4中任一项所述的方法,其特征在于,还包括:所述第一软件使用所述密钥对所述客户端和所述数据库之间交互的数据包中的加密数据进行解密;

所述第一软件对所述解密后的数据进行审计。

6.一种客户端与数据库交互时使用的密钥的获取装置,其特征在于,包括:截取模块,用于截取客户端与数据库进行交互时发送的多个数据包;

获取模块,用于获取所述客户端与所述数据库用于交换密钥的数据包的格式以及发送所述用于交换密钥的数据包的时机;

第一模拟模块,用于在解析到所述客户端向所述数据库发送用于交换密钥的第一数据包情况下,根据所述格式和时机模拟所述数据库与所述客户端进行第一交互;其中,使用人工智能的方式对数据包进行解析,该人工智能的机器学习模型是经过多组训练数据训练得到,所述多组训练数据中的每组训练数据均包括一个数据包和用于标识该数据包是否携带有密钥的标签,经过训练之后该机器学习模型可以使用,其中,将抓取到的数据包输入到该机器学习模型中,该机器学习模型输入一个标签,如果该标签指示该数据包携带有密钥,则将该数据包进行保存;获取该数据包的格式,并对该数据包的格式进行保存;

第二模拟模块,用于在解析到所述数据库向所述客户端发送用于交换密钥的第二数据包的情况下,根据所述格式和时机模拟所述客户端与所述数据库进行第二交互;

解析模块,用于对进行所述第一交互和所述第二交互的过程中接收到的数据包进行解析,得到所述客户端和所述数据库进行交互时使用的密钥;其中,所述密钥用于对所述客户端和所述数据库之间交互的数据包中的加密数据进行解密,解密之后的数据用于审计。

7.根据权利要求6所述的装置,其特征在于,所述第一模拟模块用于:构建所述第一数据包的第一响应,其中,所述第一响应为模拟所述数据库发送的对所述第一数据包的回应。

8.根据权利要求6所述的装置,其特征在于,所述第二模拟模块用于:构建所述第二数据包的第二响应,其中,所述第二响应为模拟所述客户端发送的对所述第二数据包的回应。

9.根据权利要求6所述的装置,其特征在于,所述获取模块用于:对所述多个数据包根据所述客户端与所述数据库之间使用的协议进行解析,得到所述客户端与所述数据库用于交换密钥的数据包的格式以及发送所述用于交换密钥的数据包的时机。

10.根据权利要求6至9中任一项所述的装置,其特征在于,还包括:解密模块,用于使用所述密钥对所述客户端和所述数据库之间交互的数据包中的加密数据进行解密;

处理模块,用于对所述解密后的数据进行审计。

说明书 :

一种客户端与数据库交互时使用的密钥的获取方法和装置

技术领域

[0001] 本申请涉及到数据处理领域,具体而言,涉及一种客户端与数据库交互时使用的密钥的获取方法和装置。

背景技术

[0002] 在现有技术中,需要获取到客户端与数据库之间进行交互时的数据内容,从而对该数据内容进行相应的安全处理(例如,审计等)。
[0003] 如果客户端和数据库之间进行数据交互的时候使用了密钥进行加密,就无法获取到数据,从而影响到对数据库访问数据的安全处理,进而可能会导致出现风险。

发明内容

[0004] 本申请实施例提供了一种客户端与数据库交互时使用的密钥的获取方法和装置,以至少解决现有技术中无法对客户端和数据库之间加密数据交互进行安全处理所导致的
问题。
[0005] 根据本申请的一个方面,提供了一种客户端与数据库交互时使用的密钥的获取方法,包括:第一软件截取客户端与数据库进行交互时发送的多个数据包;所述第一软件获取
所述客户端与所述数据库用于交换密钥的数据包的格式以及发送所述用于交换密钥的数
据包的时机;在解析到所述客户端向所述数据库发送用于交换密钥的第一数据包情况下,
所述第一软件根据所述格式和时机模拟所述数据库与所述客户端进行第一交互;在解析到
所述数据库向所述客户端发送用于交换密钥的第二数据包的情况下,所述第一软件根据所
述格式和时机模拟所述客户端与所述数据库进行第二交互;所述第一软件对进行所述第一
交互和所述第二交互的过程中接收到的数据包进行解析,得到所述客户端和所述数据库进
行交互时使用的密钥。
[0006] 进一步地,所述第一软件根据所述格式和时机模拟所述数据库与所述客户端进行第一交互包括:所述第一软件构建所述第一数据包的第一响应,其中,所述第一响应为模拟
所述数据库发送的对所述第一数据包的回应。
[0007] 进一步地,所述第一软件根据所述格式和时机模拟所述客户端与所述数据库进行第二交互包括:所述第一软件构建所述第二数据包的第二响应,其中,所述第二响应为模拟
所述客户端发送的对所述第二数据包的回应。
[0008] 进一步地,所述第一软件获取所述客户端与所述数据库用于交换密钥的数据包的格式以及发送所述用于交换密钥的数据包的时机包括:所述第一软件对所述多个数据包根
据所述客户端与所述数据库之间使用的协议进行解析,得到所述客户端与所述数据库用于
交换密钥的数据包的格式以及发送所述用于交换密钥的数据包的时机。
[0009] 进一步地,还包括:所述第一软件使用所述密钥对所述客户端和所述数据库之间交互的数据包中的加密数据进行解密;所述第一软件对所述解密后的数据进行审计。
[0010] 根据本申请的另一个方面,还提供了一种客户端与数据库交互时使用的密钥的获取装置,包括:截取模块,用于截取客户端与数据库进行交互时发送的多个数据包;获取模
块,用于获取所述客户端与所述数据库用于交换密钥的数据包的格式以及发送所述用于交
换密钥的数据包的时机;第一模拟模块,用于在解析到所述客户端向所述数据库发送用于
交换密钥的第一数据包情况下,根据所述格式和时机模拟所述数据库与所述客户端进行第
一交互;第二模拟模块,用于在解析到所述数据库向所述客户端发送用于交换密钥的第二
数据包的情况下,根据所述格式和时机模拟所述客户端与所述数据库进行第二交互;解析
模块,用于对进行所述第一交互和所述第二交互的过程中接收到的数据包进行解析,得到
所述客户端和所述数据库进行交互时使用的密钥。
[0011] 进一步地,所述第一模拟模块用于:构建所述第一数据包的第一响应,其中,所述第一响应为模拟所述数据库发送的对所述第一数据包的回应。
[0012] 进一步地,所述第二模拟模块用于:构建所述第二数据包的第二响应,其中,所述第二响应为模拟所述客户端发送的对所述第二数据包的回应;
[0013] 进一步地,所述获取模块用于:对所述多个数据包根据所述客户端与所述数据库之间使用的协议进行解析,得到所述客户端与所述数据库用于交换密钥的数据包的格式以
及发送所述用于交换密钥的数据包的时机。
[0014] 进一步地,还包括:解密模块,用于使用所述密钥对所述客户端和所述数据库之间交互的数据包中的加密数据进行解密;处理模块,用于对所述解密后的数据进行审计。
[0015] 在本申请实施例中,采用了第一软件截取客户端与数据库进行交互时发送的多个数据包;所述第一软件获取所述客户端与所述数据库用于交换密钥的数据包的格式以及发
送所述用于交换密钥的数据包的时机;在解析到所述客户端向所述数据库发送用于交换密
钥的第一数据包情况下,所述第一软件根据所述格式和时机模拟所述数据库与所述客户端
进行第一交互;在解析到所述数据库向所述客户端发送用于交换密钥的第二数据包的情况
下,所述第一软件根据所述格式和时机模拟所述客户端与所述数据库进行第二交互;所述
第一软件对进行所述第一交互和所述第二交互的过程中接收到的数据包进行解析,得到所
述客户端和所述数据库进行交互时使用的密钥。通过本申请解决了现有技术中无法对客户
端和数据库之间加密数据交互进行安全处理所导致的问题,为对加密数据的进一步处理提
供可能,在某种程度上为提高数据库的安全性做出了贡献。

附图说明

[0016] 构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0017] 图1是根据本申请实施例的客户端与数据库交互时使用的密钥的获取方法的流程图。

具体实施方式

[0018] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0019] 需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不
同于此处的顺序执行所示出或描述的步骤。
[0020] 在本实施例中提供了一种客户端与数据库交互时使用的密钥的获取方法,图1是根据本申请实施例的客户端与数据库交互时使用的密钥的获取方法的流程图,如图1所示,
该流程包括如下步骤:
[0021] 步骤S102,第一软件截取客户端与数据库进行交互时发送的多个数据包;
[0022] 所述第一软件可以是数据库代理,也可以是具有审计功能的软件或者服务。
[0023] 在步骤S102之前,所述第一软件中保存有所述客户端和所述数据库未使用密钥时在交互流程中发送的数据包。所述第一软件根据所述未使用密钥是在交互流程中发送的数
据包建立未使用密钥是的发送数据包的类型(或者称为格式)和顺序。所述第一软件在截取
所述客户端与所述数据库发送的多个数据包之后,如果根据预选保存的未使用密钥时发送
数据包的类型和顺序不同,则所述第一软件确定所述客户端和所述数据库的交互使用了密
钥。然后,所述第一软件从使用了密钥的数据包中获取用于交换密钥的数据包的格式以及
时机并进行保存。步骤S104就是从该保存下来的内容中获取到用于交换密钥的数据包的格
式以及时机的。
[0024] 步骤S104,所述第一软件获取所述客户端与所述数据库用于交换密钥的数据包的格式以及发送所述用于交换密钥的数据包的时机;所述第一软件可以根据所述多个数据包
发送顺序和格式是否与未使用密钥的流程中的数据包的发送顺序和格式相同,如果不同,
则执行该步骤S104.
[0025] 例如,所述第一软件对所述多个数据包根据所述客户端与所述数据库之间使用的协议进行解析,得到所述客户端与所述数据库用于交换密钥的数据包的格式以及发送所述
用于交换密钥的数据包的时机。
[0026] 在一个可选的实施方式中,可以使用人工智能的方式对数据包进行解析,该人工智能的机器学习模型是经过多组训练数据训练得到,所述多组训练数据中的每组训练数据
均包括一个数据包和用于标识该数据包是否携带有密钥的标签,经过训练之后该机器学习
模型就可以使用了。将抓取到的数据包输入到该机器学习模型中,该机器学习模型输入一
个标签,如果该标签指示该数据包携带有密钥,则将该数据包进行保存。获取该数据包的格
式,并对该数据包的格式进行保存。
[0027] 可选地,获取携带有密钥的数据包的前后时间段内发送的其他交互的数据包。建立所述携带有密钥的数据包和其他交互的数据包之间的时间关联关系,根据所述时间关联
关系确定发送携带有所述密钥的数据包的发送时机。
[0028] 步骤S106,在解析到所述客户端向所述数据库发送用于交换密钥的第一数据包情况下,所述第一软件根据所述格式和时机模拟所述数据库与所述客户端进行第一交互;
[0029] 例如,所述第一软件构建所述第一数据包的第一响应,其中,所述第一响应为模拟所述数据库发送的对所述第一数据包的回应,构建第一数据包的时候是根据所述格式和所
述时机构建的。
[0030] 步骤S108,在解析到所述数据库向所述客户端发送用于交换密钥的第二数据包的情况下,所述第一软件根据所述格式和时机模拟所述客户端与所述数据库进行第二交互;
[0031] 例如,所述第一软件构建所述第二数据包的第二响应,其中,所述第二响应为模拟所述客户端发送的对所述第二数据包的回应,构建第二数据包的时候是根据所述格式和所
述时机构建的。
[0032] 步骤S110,所述第一软件对进行所述第一交互和所述第二交互的过程中接收到的数据包进行解析,得到所述客户端和所述数据库进行交互时使用的密钥。
[0033] 在获取到所述密钥之后,可以保存所述客户端与所述数据库的会话连接,在所述会话中向所述数据库发送一个查询加密数据的命令,然后对接收到的数据进行解密,如果
使用所述密钥解密成功,则确定所述密钥正确。
[0034] 如果解密失败,则可以使用预先配置的账号在所述数据库存储密钥的空间中查找所述标识信息对应的密钥,其中,所述预先配置的账号是配置在所述数据库上的,所述预先
配置的账号与所述数据库为互信账号,其中,所述互信账号具有查去密钥的权限。然后使用
查找到的密钥进行解密。
[0035] 如果仍然解密失败,保存接收到的所有加密的数据包,将所述加密的数据包发给审计功能进行保存。
[0036] 在确定所述密钥正确之后,获取所述客户端连接所述数据库所使用的用户名,建立所述用户名和所述密钥的对应关系,并进行保存。在所述客户端断开连接之后,所述第一
软件将所述用户名和所述密钥的对应关系保存在密钥表中。在所述客户端再次进行连接的
情况下,所述第一软件从所述密钥表中获取此次连接使用的用户名对应的密钥,如果获取
成功,则使用所述密钥进行解密。
[0037] 如果获取失败或使用从密钥表中获取到的密钥进行解密失败,则所述第一软件执行步骤S106到步骤S110来获取取密钥。
[0038] 通过上述步骤解决了现有技术中无法对客户端和数据库之间加密数据交互进行安全处理所导致的问题,为对加密数据的进一步处理提供可能,在某种程度上为提高数据
库的安全性做出了贡献。
[0039] 在本实施例中,所述第一软件还可以使用所述密钥对所述客户端和所述数据库之间交互的数据包中的加密数据进行解密;所述第一软件对所述解密后的数据进行审计。
[0040] 在本实施例中,提供一种电子装置,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行以上实施例中的方法。
[0041] 上述程序可以运行在处理器中,或者也可以存储在存储器中(或称为计算机可读介质),计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或
技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计
算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动
态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可
擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器 
(CD‑ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他
磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文
中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据
信号和载波。
[0042] 这些计算机程序也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他
可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方
框或多个方框中指定的功能的步骤,对应与不同的步骤可以通过不同的模块来实现。
[0043] 该本实施例中就提供了这样的一种装置和系统。该系统被称为客户端与数据库交互时使用的密钥的获取装置,包括:截取模块,用于截取客户端与数据库进行交互时发送的
多个数据包;获取模块,用于获取所述客户端与所述数据库用于交换密钥的数据包的格式
以及发送所述用于交换密钥的数据包的时机;第一模拟模块,用于在解析到所述客户端向
所述数据库发送用于交换密钥的第一数据包情况下,根据所述格式和时机模拟所述数据库
与所述客户端进行第一交互;第二模拟模块,用于在解析到所述数据库向所述客户端发送
用于交换密钥的第二数据包的情况下,根据所述格式和时机模拟所述客户端与所述数据库
进行第二交互;解析模块,用于对进行所述第一交互和所述第二交互的过程中接收到的数
据包进行解析,得到所述客户端和所述数据库进行交互时使用的密钥。
[0044] 该系统或者装置用于实现上述的实施例中的方法的功能,该系统或者装置中的每个模块与方法中的每个步骤相对应,已经在方法中进行过说明的,在此不再赘述。
[0045] 例如,所述第一模拟模块用于:构建所述第一数据包的第一响应,其中,所述第一响应为模拟所述数据库发送的对所述第一数据包的回应。或者,所述第二模拟模块用于:构
建所述第二数据包的第二响应,其中,所述第二响应为模拟所述客户端发送的对所述第二
数据包的回应;
[0046] 又例如,所述获取模块用于:对所述多个数据包根据所述客户端与所述数据库之间使用的协议进行解析,得到所述客户端与所述数据库用于交换密钥的数据包的格式以及
发送所述用于交换密钥的数据包的时机。可选地,该装置还可以包括:解密模块,用于使用
所述密钥对所述客户端和所述数据库之间交互的数据包中的加密数据进行解密;处理模
块,用于对所述解密后的数据进行审计。
[0047] 上述实施例可以应用到Orcale 高级加密之后,上述第一软件可以双方获取秘钥,在数据库和客户端之间进行抓取,需要精确匹配到哪些数据包是用来交换秘钥的,哪些字
节是秘钥,秘钥加密算法。通过正常的数据包分析出在什么时间节点进行秘钥交换,在该时
间节点进行模拟发包换秘钥。
[0048] 以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、
改进等,均应包含在本申请的权利要求范围之内。