一种数据库密级标志安全网关操作的方法、装置及系统转让专利

申请号 : CN201610303267.7

文献号 : CN106022143B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 景奕昕唐威周涛

申请人 : 武汉华工安鼎信息技术有限责任公司

摘要 :

本发明公开了一种数据库密级标志安全网关操作的方法、装置及系统,当接收到第一操作指令时,查询安全网关存储的对应表的安全策略,确定第一操作指令中是否包含有敏感列;当指令中包含敏感列时,对第一操作指令中敏感列的数据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;将密文数据插入到第一操作指令中,生成对应的第二操作指令;向数据库发送第二操作指令,以便数据库完成敏感列、属性列和密标列的插入数据和更新数据;本发明可以实现结构化数据的加密,能够实现敏感列数据与对应属性列的数据应用绑定,且符合密级标志不可分离、不可篡改的技术要求,保证数据在使用过程中,与其对应的密级标志不可分离,保证数据循迹与识别。

权利要求 :

1.一种数据库密级标志安全网关操作的方法,用于安全网关,其特征在于,所述方法包括:当接收到新建表指令时,识别所述新建表指令中是否包含敏感列的标识和对应的属性列的标识;

当包含所述敏感列的标识和对应的属性列的标识时,在所述新建表指令中插入敏感列对应密标列的标识;

将插入所述密标列的标识后的新建表指令发送给数据库以新建表;

将敏感列的标识以及对应的属性列的标识和密标列的标识存储于预设的安全策略中;

当接收到对数据库中指定表的第一操作指令时,查询安全网关存储的所述指定表的安全策略,确定所述第一操作指令中是否包含有敏感列;所述第一操作指令为插入表指令或者更新表指令;

当包含所述敏感列时,对第一操作指令中敏感列的数据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;

将密文数据插入到所述第一操作指令中,生成对应的第二操作指令;

向数据库发送所述第二操作指令,以便所述数据库完成相应的操作。

2.如权利要求1所述的方法,其特征在于,所述对第一操作指令中敏感列的数据和对应的属性列的数据进行加密,包括:通过对称加密算法生成包含敏感列的数据和对应的属性列的数据的密文数据。

3.如权利要求1所述的方法,其特征在于,接收到第一操作指令时,所述方法还包括:当接收到对所述指定表的查询表指令时,查询所述安全策略,确定所述查询表指令中是否包含有敏感列;

当包含所述敏感列时,根据所述安全策略,在所述查询表指令中插入所述敏感列对应的所述密标列的标识和属性列的标识;

将插入所述密标列的标识和属性列的标识的查询表指令发送给所述数据库;

接收数据库根据所述查询表指令返回的第一查询结果;

对第一查询结果进行验证,并在验证通过时返回第一查询结果给客户端;在验证失败时返回查询失败的消息给客户端。

4.如权利要求3所述的方法,其特征在于,所述对第一查询结果进行验证,包括:检测所述第一查询结果是否包含密标列;

当检测第一查询结果中未包含密标列时,则返回查询失败的消息给客户端;

当检测第一查询结果中包含密标列时,对第一查询结果中的密标列的密文数据进行解密,验证解密后的数据同所述敏感列和对应属性列的数据是否一致,当一致时,验证通过,返回第一查询结果给客户端;当不一致时,验证失败,返回查询失败的消息给客户端。

5.如权利要求4所述的方法,其特征在于,所述验证通过时,还包括:将第一查询结果中删除密标列和属性列;

返回删除密标列和属性列后的第一查询结果给客户端。

6.如权利要求1所述的方法,其特征在于,所述对应的属性列的数据为预设的密级。

7.一种数据库密级标志安全网关操作的装置,其特征在于,包括:识别模块,用于在确定模块接收到第一操作指令之前,当接收到新建表指令时,识别所述新建表指令中是否包含敏感列的标识和对应的属性列的标识;

确定模块,用于当接收到对数据库中指定表的第一操作指令时,查询安全网关存储的所述指定表的安全策略,确定所述第一操作指令中是否包含有敏感列;所述第一操作指令为插入表指令或者更新表指令;

密文生成模块,用于当包含所述敏感列时,对第一操作指令中敏感列的数据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;

修改模块,用于当识别模块识别出所述新建表指令中包含所述敏感列的标识和对应的属性列的标识时,在所述新建表指令中插入敏感列对应密标列的标识;将密文数据插入到所述第一操作指令中,生成对应的第二操作指令;

发送模块,用于将插入所述密标列的标识后的新建表指令发送给所述数据库以新建表;向数据库发送所述第二操作指令,以便所述数据库完成相应的操作;

所述安全策略模块,用于将敏感列的标识以及对应的属性列的标识和密标列的标识存储于预设的安全策略中。

8.如权利要求7所述的装置,其特征在于,所述密文生成模块,具体用于通过对称加密算法生成包含敏感列的数据和对应的属性列的数据的密文数据。

9.如权利要求7所述的装置,其特征在于,所述装置还包括:接收模块和验证模块;

所述确定模块,还用于当接收到对所述指定表的查询表指令时,查询所述安全策略模块,确定所述查询表指令中是否包含有敏感列;

所述修改模块,还用于当所述确定模块确定包含所述敏感列时,根据所述安全策略模块,在所述查询表指令中插入所述敏感列对应的所述密标列的标识和属性列的标识;

所述发送模块,还用于将插入所述密标列的标识和属性列的标识的查询表指令发送给所述数据库;

所述接收模块,用于接收数据库根据所述发送模块发送的查询表指令返回的第一查询结果;

所述验证模块,用于对所述接收模块返回的第一查询结果进行验证,并在验证通过时返回第一查询结果;在验证失败时返回查询失败的消息。

10.如权利要求9所述的装置,其特征在于,所述验证模块,包括:检测子模块,用于检测所述接收模块接收到的第一查询结果是否包含密标列;

解密子模块,用于当检测子模块检测第一查询结果中包含密标列时,对第一查询结果中的密标列的密文数据进行解密;

验证子模块,用于当检测子模块检测第一查询结果中未包含密标列时,则返回查询失败的消息;当检测子模块检测第一查询结果中包含密标列时,验证解密子模块解密后的数据同所述敏感列和对应属性列的数据是否一致,当一致时,验证通过,返回第一查询结果;

当不一致时,验证失败,返回查询失败的消息。

11.如权利要求10所述的装置,其特征在于,还包括:删除模块,用于所述验证子模块验证通过时,将第一查询结果中删除密标列和属性列;

所述验证子模块,还用于返回删除密标列和属性列后的第一查询结果。

12.如权利要求7所述的装置,其特征在于,所述对应的属性列的数据为预设的密级。

13.一种数据库密级标志安全网关操作的系统,其特征在于,包括:安全网关和数据库管理服务器;

所述安全网关,当接收到对数据库中指定表的第一操作指令时,查询安全网关存储的所述指定表的安全策略,确定所述第一操作指令中是否包含有敏感列;所述第一操作指令为插入表指令或者更新表指令;当包含所述敏感列时,对第一操作指令中敏感列的数据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;将密文数据插入到所述第一操作指令中,生成对应的第二操作指令;向数据库发送所述第二操作指令,以便所述数据库完成相应的操作;

所述数据库管理服务器,用于接收安全网关发送的第二操作指令时,根据所述第二操作指令,完成数据表的插入数据或更新数据操作,将密文数据插入或更新到所述敏感列对应的密标列中。

说明书 :

一种数据库密级标志安全网关操作的方法、装置及系统

技术领域

[0001] 本发明涉及一种数据库密级标志安全网关操作的方法、装置及系统。

背景技术

[0002] 目前,现有电子文档的密级标志生成办法,其结果是将电子文档内容进行了加密。若将电子文档的密级标志生成办法应用于结构化数据上,将对数据库查询性能造成严重影响。
[0003] 目前,尚不具备成熟、安全的、支持同态的数据库加密算法。因此,将密级标志应用于数据库数据时,我们须重新理解“不可分离、不可篡改”的内涵。
[0004] 我们认为,密级标志不可分离,可理解为:因现有加密技术的限制,允许数据与其对应的密级标志,在存储的时候分离存放,数据保持明文;数据在使用过程中,与其对应的密级标志不可分离,保证数据循迹与识别。
[0005] 密级标志不可篡改,可理解为,通过数据对应的密级标志,须可验证数据的完整性,发现被篡改的数据。

发明内容

[0006] 鉴于上述问题,本发明实施例提供克服上述问题或者至少部分地解决上述问题的一种数据库密级标志安全网关操作的方法、装置及系统。
[0007] 作为本发明实施例的一个方面,涉及一种数据库密级标志安全网关操作的方法,用于安全网关,所述方法包括:
[0008] 当接收到对数据库中指定表的第一操作指令时,查询安全网关存储的所述指定表的安全策略,确定所述第一操作指令中是否包含有敏感列;所述第一操作指令为插入表指令或者更新表指令;
[0009] 当包含所述敏感列时,对第一操作指令中敏感列的数据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;
[0010] 将密文数据插入到所述第一操作指令中,生成对应的第二操作指令;
[0011] 向数据库发送所述第二操作指令,以便所述数据库完成相应的操作。
[0012] 可选地,在接收到所述第一操作指令之前,所述方法还包括:
[0013] 当接收到新建表指令时,识别所述新建表指令中是否包含敏感列的标识和对应的属性列的标识;
[0014] 当包含所述敏感列的标识和对应的属性列的标识时,在所述新建表指令中插入敏感列对应密标列的标识;
[0015] 将插入所述密标列的标识后的新建表指令发送给所述数据库以新建表;
[0016] 将敏感列的标识以及对应的属性列的标识和密标列的标识存储于预设的安全策略中。
[0017] 可选地,所述对第一操作指令中敏感列的数据和对应的属性列的数据进行加密,包括:
[0018] 通过对称加密算法生成包含敏感列的数据和对应的属性列的数据的密文数据。
[0019] 可选地,接收到第一操作指令时,所述方法还包括:
[0020] 当接收到对所述指定表的查询表指令时,查询所述安全策略,确定所述查询表指令中是否包含有敏感列;
[0021] 当包含所述敏感列时,根据所述安全策略,在所述查询表指令中插入所述敏感列对应的所述密标列的标识和属性列的标识;
[0022] 将插入所述密标列的标识和属性列的标识的查询表指令发送给所述数据库;
[0023] 接收数据库根据所述查询表指令返回的第一查询结果;
[0024] 对第一查询结果进行验证,并在验证通过时返回第一查询结果;在验证失败时返回查询失败的消息。
[0025] 可选地,所述对第一查询结果进行验证,包括:
[0026] 检测所述第一查询结果是否包含密标列;
[0027] 当检测第一查询结果中未包含密标列时,则返回查询失败的消息;
[0028] 当检测第一查询结果中包含密标列时,对第一查询结果中的密标列的密文数据进行解密,验证解密后的数据同所述敏感列和对应属性列的数据是否一致,当一致时,验证通过,返回第一查询结果;当不一致时,验证失败,返回查询失败的消息。
[0029] 可选地,所述验证通过时,还包括:
[0030] 将第一查询结果中删除密标列和属性列;
[0031] 返回删除密标列和属性列后的第一查询结果。
[0032] 可选地,所述对应的属性列的数据为预设的密级。
[0033] 作为本发明实施例的另一个方面,涉及一种数据库密级标志安全网关操作的装置,包括:
[0034] 确定模块,用于当接收到对数据库中指定表的第一操作指令时,查询安全网关存储的所述指定表的安全策略,确定所述第一操作指令中是否包含有敏感列;所述第一操作指令为插入表指令或者更新表指令;
[0035] 密文生成模块,用于当包含所述敏感列时,对第一操作指令中敏感列的数据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;
[0036] 修改模块,用于将密文数据插入到所述第一操作指令中,生成对应的第二操作指令;
[0037] 发送模块,用于向数据库发送所述第二操作指令,以便所述数据库完成相应的操作。
[0038] 可选地,所述装置还包括:识别模块和安全策略模块,其中:
[0039] 所述识别模块,用于在所述确定模块接收到所述第一操作指令之前,当接收到新建表指令时,识别所述新建表指令中是否包含敏感列的标识和对应的属性列的标识;
[0040] 所述修改模块,还用于当识别模块识别出所述新建表指令中包含所述敏感列的标识和对应的属性列的标识时,在所述新建表指令中插入敏感列对应密标列的标识;
[0041] 所述发送模块,还用于将插入所述密标列的标识后的新建表指令发送给所述数据库以新建表;
[0042] 所述安全策略模块,用于将敏感列的标识以及对应的属性列的标识和密标列的标识存储于预设的安全策略中。
[0043] 可选地,所述密文生成模块,具体用于通过对称加密算法生成包含敏感列的数据和对应的属性列的数据的密文数据。
[0044] 可选地,所述装置还包括:接收模块和验证模块;
[0045] 所述确定模块,还用于当接收到对所述指定表的查询表指令时,查询所述安全策略模块,确定所述查询表指令中是否包含有敏感列;
[0046] 所述修改模块,还用于当所述确定模块确定包含所述敏感列时,根据所述安全策略模块,在所述查询表指令中插入所述敏感列对应的所述密标列的标识和属性列的标识;
[0047] 所述发送模块,还用于将插入所述密标列的标识和属性列的标识的查询表指令发送给所述数据库;
[0048] 所述接收模块,用于接收数据库根据所述发送模块发送的查询表指令返回的第一查询结果;
[0049] 所述验证模块,用于对所述接收模块返回的第一查询结果进行验证,并在验证通过时返回第一查询结果;在验证失败时返回查询失败的消息。
[0050] 可选地,所述验证模块,包括:
[0051] 检测子模块,用于检测所述接收模块接收到的第一查询结果是否包含密标列;
[0052] 解密子模块,用于当检测子模块检测第一查询结果中包含密标列时,对第一查询结果中的密标列的密文数据进行解密;
[0053] 验证子模块,用于当检测子模块检测第一查询结果中未包含密标列时,则返回查询失败的消息;当检测子模块检测第一查询结果中包含密标列时,验证解密子模块解密后的数据同所述敏感列和对应属性列的数据是否一致,当一致时,验证通过,返回第一查询结果;当不一致时,验证失败,返回查询失败的消息。
[0054] 可选地,还包括:删除模块,用于所述验证子模块验证通过时,将第一查询结果中删除密标列和属性列;
[0055] 所述验证子模块,还用于返回删除密标列和属性列后的第一查询结果。
[0056] 可选地,所述对应的属性列的数据为预设的密级。
[0057] 作为本发明实施例的再一个方面,涉及一种数据库密级标志安全网关操作的系统,包括:安全网关和数据库管理服务器;
[0058] 所述安全网关,当接收到对数据库中指定表的第一操作指令时,查询安全网关存储的所述指定表的安全策略,确定所述第一操作指令中是否包含有敏感列;所述第一操作指令为插入表指令或者更新表指令;当包含所述敏感列时,对第一操作指令中敏感列的数据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;将密文数据插入到所述第一操作指令中,生成对应的第二操作指令;向数据库发送所述第二操作指令,以便所述数据库完成相应的操作;
[0059] 所述数据库管理服务器,用于接收安全网关发送的第二操作指令时,根据所述第二操作指令,完成数据表的插入数据或更新数据操作,将密文数据插入或更新到所述敏感列对应的密标列中。
[0060] 本发明实施例至少实现了如下技术效果:
[0061] 本发明实施例提供的数据库密级标志安全网关操作的方法、装置及系统,当接收到对数据库中指定表的第一操作指令时,查询安全网关存储的所述指定表的安全策略,确定第一操作指令中是否包含有敏感列;其中所述第一操作指令为插入表指令或者更新表指令;而当指令中包含敏感列时,对第一操作指令中敏感列的数据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;将密文数据插入到第一操作指令中,生成对应的第二操作指令;向数据库发送第二操作指令,以便数据库完成敏感列、属性值和密标列的插入数据和更新数据,该方案加密算法在网关完成,可以实现结构化数据的加密,且不会对数据库查询性能造成严重负担;能够实现敏感列数据与对应属性值的应用绑定,且符合密级标志不可分离、不可篡改的技术要求,保证数据在使用过程中,与其对应的密级标志不可分离,保证数据循迹与识别。
[0062] 本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其它优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
[0063] 下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

[0064] 附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0065] 图1为本发明实施例提供的数据库密级标志安全网关操作的方法的网络架构示意图;
[0066] 图2为本发明实施例提供的用于安全网关侧的方法流程图;
[0067] 图3为本发明实施例提供的用于安全网关侧对数据库新建表指令进行处理的流程图;
[0068] 图4为本发明实施例提供的用于安全网关侧对数据库查询表指令进行处理的流程图;
[0069] 图5为本发明实施例提供的查询数据库的流程的时序图;
[0070] 图6为本发明实施例提供的用于安全网关的装置的框图;
[0071] 图7为本发明实施例提供的验证模块68的框图;
[0072] 图8为本发明实施例提供的数据库密级标志安全网关操作的系统的示意图。

具体实施方式

[0073] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0074] 本公开实施例提供的技术方案,参照图1所示的网络架构示意图,可以涉及两方:安全网关和数据库管理服务器,其中,安全网关连接于应用客户端和数据库管理服务器(例如:DBMS(DBMS,数据库管理服务器,Database Management System)服务器,DBMS是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库)之间。安全网关用于截获应用客户端发送的操作指令,并对操作指令分析、识别和修改,并对其中的部分数据,生成密文数据,将密文数据更新到数据库端,从而实现数据库结构化数据的加密;数据库管理服务器接收到安全网关发来的指令,执行该指令;其中操作指令的分析、识别和修改以及数据的加密,都在安全网关完成,且不会对数据库查询性能造成严重负担;其中数据的加密,实现待加密数据与对应密级的应用绑定,且符合密级标志不可分离、不可篡改的技术要求,从而保证数据在使用过程中,与其对应的密级不可分离,保证数据循迹与识别。
[0075] 参照图2所示,上述数据库密级标志安全网关操作的方法用于安全网关,可以包括以下步骤S21-S24:
[0076] 在步骤S21中,当接收到对数据库中指定表的第一操作指令时,查询安全网关存储的所述指定表的安全策略,确定所述第一操作指令中是否包含有敏感列;所述第一操作指令为插入表指令或者更新表指令;
[0077] 在步骤S22中,当包含所述敏感列时,对第一操作指令中敏感列的数据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;
[0078] 在步骤S23中,将密文数据插入到所述第一操作指令中,生成对应的第二操作指令;
[0079] 在步骤S24中,向数据库发送所述第二操作指令,以便所述数据库完成相应的操作。
[0080] 其中,上述敏感列,是数据表中比较重要的数据所在的列,是在新建表指令中人为预设的通过一个敏感标志而标注的列;而敏感列所对应的属性列存储的是人为预设的一个密级,例如可以是'1','2','3'递增的数值,也可以是'a','b','c'等表示级别的标识,本发明对此不做限制,其它类似可以实现此效果的方式均可;而密标列是通过算法生成(敏感列数据+属性列数据)的密文数据。
[0081] 例如下述新建表指令代码:
[0082] CREATE TABLE  schedule(
[0083] task_owner    NVARCHAR2(32) NOT NULL PRIMARYKEY,  --任务人员名单[0084] task_content  NVARCHAR2(1024)NOT NULL”MBSIGN,  --任务内容。
[0085] task_slevel   CHAR(1) NOT NULL                   --任务密级,'1','2','3'等
[0086] )
[0087] 其中“MBSIGN”为安全网关语法扩展,敏感标志,所在的列task_content即为敏感列。
[0088] 上述代码为一个新建名称为schedule的表,该表包括三列,分别是task_owner,task_content和task_slevel。
[0089] 一个数据库中的表的例子,如下表1:
[0090] 表1
[0091]
[0092]
[0093] 其中:task_content为敏感列,task_slevel为属性列,task_cmbsign为密标列,该密标列的数据为敏感列和属性列数据二者加密生成的密文数据。
[0094] 上述加密算法可以是通过对称加密算法生成包含敏感列的数据和对应的属性列的数据的密文数据,该加密算法也可以对密文数据进行解密,如:对称密码体制加密算法(DES算法),AES算法(Advanced Encryption Standard加密法)或消息摘要算法5(MD5,Message-DigestAlgorithm 5)等;上述加密算法也可以是通过非对称加密算法加密而成,如:RSA算法(即RSA公钥加密算法,是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布RSA就是他们三人姓氏开头字母拼在一起组成),双钥加密算法等;本发明实施例对加密算法不做限定,其他速度更快、具有优秀的性能和抗攻击能力强的加密算法也可。
[0095] 具体地,上述步骤中的操作指令可以是数据表的插入或更新,参照图1,例如所述第一操作指令可以是SQL(结构化查询语言(Structured Query Language)简称SQL)语句,或者其他格式的语句。当客户通过应用客户端提交数据表操作SQL语句,安全网关截获SQL语句,当SQL语句为插入表指令或者更新表指令,通过查询安全网关存储的对应表的安全策略,确定SQL语句中是否包含有敏感列,并且识别出需要对敏感列插入数据或更新数据,修改SQL语句生成对应的第二操作指令,使其同时对密标列插入数据或更新数据;该密标列数据为加密算法生成的“敏感列数据+属性列数据”的绑定结果的密文数据,将修改后的数据表操作SQL语句,即第二操作指令发送给数据库,从而完成数据库表的插入或更新。
[0096] 例如:第一操作指令为插入表指令时,其代码实现如下:
[0097] INSERT INTO schedule(task_owner,task_content,task_slevel)values('张三','2月28日晚9:00行动','1')
[0098] 上述代码为:向名称为schedule的表中,插入数据,task_owner为“张三”,task_content为“2月28日晚9:00行动”,task_slevel为“1”。
[0099] 通过安全网关生成第二操作指令时,其代码实现如下:
[0100] INSERT INTO schedule(task_owner,task_content,task_slevel,task_cmbsign)values('张三','2月28日晚9:00行动','1','x$x123Y...')
[0101] 上述代码为:向名称为schedule的表中,插入数据,task_owner为“张三”,task_content为“2月28日晚9:00行动”,task_slevel为“1”,task_cmbsign为“x$x123Y...”。
[0102] 上述密文数据“x$x123Y...”是由DBMS_MBGenerate('2月28日晚9:00行动','1')=>x$x123Y...产生,DBMS_MBGenerate是包含加密算法的函数名称,功能是将两个参数数据经过算法计算,生成一个密文数据,本发明对函数名称和代码不做限定,实现此功能的函数均可。
[0103] 例如:第一操作指令为更新表指令时,其代码实现如下:
[0104] UPDATE schedule SET task_content='行动取消',task_slevel='2'WHERE task_owner='张三'
[0105] 上述代码为:更新名称为schedule的表,其中条件task_owner为“张三”所在的行,对应的task_content列更新为“行动取消”,对应的task_slevel列更新为“2”。
[0106] 通过安全网关生成第二操作指令代码如下:
[0107] UPDATE schedule SET task_content='行动取消',task_slevel='2',task_cmbsign='5634*4W...'WHERE task_owner='张三'
[0108] 上述代码为:更新名称为schedule的表,其中条件task_owner为“张三”所在的行,对应的task_content列更新为“行动取消”,对应的task_slevel列更新为“2”,对应的task_cmbsign列更新为“5634*4W...”。
[0109] 其中密文“5634*4W...”产生原理同上所述。
[0110] 本发明实施例提供的上述数据库密级标志安全网关操作的方法,用于安全网关,当接收到应用客户端发来的对数据库中指定表的第一操作指令时,查询安全网关存储的指定表的安全策略,确定第一操作指令中是否包含有敏感列;当第一操作指令为插入表指令或者更新表指令且包含敏感列数据时,对第一操作指令中敏感列的数据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据,将密文数据插入到第一操作指令中,生成对应的第二操作指令;向数据库发送第二操作指令,以便数据库完成敏感列、属性列和密标列的插入数据和更新数据。该方案加密算法在网关完成,可以实现结构化数据的加密,且不会对数据库查询性能造成严重负担;能够实现敏感列数据与对应属性值的应用绑定,且符合密级标志不可分离、不可篡改的技术要求,保证数据在使用过程中,与其对应的密级标志不可分离,保证数据循迹与识别。而且该操作全部采用实体表进行,消除使用表视图带来的操作限制。
[0111] 下面分别对上述数据库密级标志安全网关操作的方法各步骤进行详细说明。
[0112] 在一个实施例中,在接收到第一操作指令之前,还可以执行如下步骤即:
[0113] 参照图3所示,S31、当接收到新建表指令时,识别所述新建表指令中是否包含敏感列的标识和对应的属性列的标识;
[0114] S32、当包含所述敏感列的标识和对应的属性列的标识时,在所述新建表指令中插入敏感列对应密标列的标识;
[0115] S33、将插入所述密标列的标识后的新建表指令发送给所述数据库以新建表;
[0116] S34、将敏感列的标识以及对应的属性列的标识和密标列的标识存储于预设的安全策略中。
[0117] 具体地,上述标识是指列的名称,如表1中的task_owner,task_content,task_slevel,task_cmbsign;上述步骤S31中的操作指令是数据表的新建语句,当客户通过应用客户端提交数据表新建的SQL语句,安全网关截获SQL语句,通过识别出敏感标志(可以对安全网关语法进行扩展,预设的一个标志,该标志指明敏感标志所在的列为敏感列,标志可以自定义,只起到标识作用,本发明实施例也不做任何限定),从而识别出新建表指令中包含敏感列名称和对应的属性列名称(如表1中:task_content和task_slevel),在安全网关的安全策略中存储包含敏感列的标识以及对应的属性列的标识和密标列的标识,同时修改SQL语句使其包含密标列名称(如表1中的task_cmbsign),该密标列数据为预设的加密算法生成的“敏感列数据+属性列数据”的绑定结果的密文数据,将修改后的数据表新建SQL语句发送给数据库管理服务器,从而完成数据库表的新建。其中新增的密标列要存储的密文数据是对应的敏感列数据和属性列数据通过算法加密而成,这样保证以后数据在使用过程中,与其对应的属性值不可分离,保证数据循迹与识别。
[0118] 例如:数据表的新建语句的代码:
[0119] CREATE TABLE schedule(
[0120] task_owner   NVARCHAR2(32) NOT NULL PRIMARYKEY,  --任务人员名单[0121] task_content NVARCHAR2(1024)NOT NULL”MBSIGN,    --任务内容。
[0122] task_slevel  CHAR(1) NOT NULL                --任务密级,'1','2','3'等
[0123] )
[0124] 其中“MBSIGN”为安全网关语法扩展,敏感列标志。
[0125] 上述代码为新建表名称为schedule,其中包含三个列,分别是task_owner,task_content和task_slevel。
[0126] 通过安全网关修改后的新建指令如下:
[0127] CREATE TABLE  schedule(
[0128] task_owner    NVARCHAR2(32)NOT NULL PRIMARYKEY,  --任务人员名单[0129] task_content  NVARCHAR2(1024)NOT NULL”,         --任务内容[0130] task_slevel   CHAR(1)NOT NULL          --任务密级,'1','2','3'等等
[0131] task_cmbsign  VARCHAR2(1024) NOT NULL       --新增任务内容的密标列,加密算法生成(内容+密级)的绑定结果
[0132] )
[0133] 上述代码为新建表名称为schedule,其中包含4个列,分别是task_owner、task_content、task_slevel和task_cmbsign。其中task_cmbsign为密标列,将要存放加密算法生成的(task_content内容+task_slevel密级)的绑定结果。
[0134] 在一个实施例中,建立了表和插入数据之后,当接收到查询表指令时,还包括以下步骤,参照图4:
[0135] S41、当接收到对所述指定表的查询表指令时,查询所述安全策略,确定所述查询表指令中是否包含有敏感列;
[0136] S42、当包含所述敏感列时,根据所述安全策略,在所述查询表指令中插入所述敏感列对应的所述密标列的标识和属性列的标识;
[0137] S43、将插入所述密标列的标识和属性列的标识的查询表指令发送给所述数据库;
[0138] S44、接收数据库根据所述查询表指令返回的第一查询结果;
[0139] S45、对第一查询结果进行验证,并在验证通过时返回第一查询结果;在验证失败时返回查询失败的消息。
[0140] 例如:数据表的查询语句代码:
[0141] SELECT task_owner,task_content FROM schedule WHERE task_owner='张三'[0142] 上述代码从表schedule查询“张三”的task_owner和task_content信息。
[0143] 通过安全网关修改后的查询指令如下:
[0144] SELECT task_owner,task_content,task_slevel,task_cmbsign FROM schedule WHERE task_owner='张三'
[0145] 上述代码从表schedule查询“张三”的task_owner和task_content,以及task_slevel和task_cmbsign信息。
[0146] 在一个实施例中,上述S45还包括:对第一查询结果进行验证;检测所述第一查询结果是否包含密标列;
[0147] 当检测第一查询结果中未包含密标列时,则返回查询失败的消息;当检测第一查询结果中包含密标列时,对第一查询结果中的密标列的密文数据进行解密,验证解密后的数据同所述敏感列和对应属性列的数据是否一致,当一致时,验证通过,返回删除密标列和属性列的第一查询结果;当不一致时,验证失败,返回查询失败的消息。
[0148] 上述对密文数据进行解密,解密用到的加密算法也是上述加密时应用的加密算法,使加密和解密的算法保持一致。
[0149] 具体地,参照图5查询指令的时序图,上述步骤S41中的操作指令是数据表的查询语句,当客户通过应用客户端提交数据表查询的SQL语句,安全网关截获SQL语句,查询安全网关存储的对应表的安全策略,识别出查询指令中当包含敏感列时,修改SQL语句使其包含密标列名称和属性列名称,将修改后的数据表查询SQL语句发送给数据库管理服务器,数据库管理服务器执行修改后的查询SQL语句后,返回查询结果,安全网关截获数据库管理服务器返回的查询结果,并检查是否包含密标列;若无密标列,则向客户端返回查询失败的消息;
[0150] 若查询结果中包含密标列,则解密密标列的密文数据,将解密后的数据与敏感列数据和属性列数据比对,校验数据的完整性,如果验证通过,则调整查询结果即删除密标列数据和属性列数据,然后返回删除密标列数据和属性列数据的查询结果给客户端;
[0151] 当验证失败,返回查询失败的消息给客户端。
[0152] 本发明实施例示出的用于数据库侧的一种数据库密级标志安全网关操作的方法,数据库接收安全网关发送的操作指令,以便所述数据库完成相应的操作。
[0153] 下面通过安全网关和数据库的配合来说明下本发明实施例的方案,具体地,以下通过四个实例说明创建表、插入表、更新表和查询表的执行流程。
[0154] 以下实施例以该表具有一列敏感列为例,每一敏感列都有对应的属性列和密标列,而多列敏感列的实现方法与此类似,不再重复赘述。
[0155] 对其中的关键函数描述:
[0156] DBMS_MBGenerate(敏感列数据,对应的属性列数据)--产生密标列数据[0157] DBMS_MBVerify(敏感列数据,对应的属性列数据,密标列数据)--验证密标列数据与敏感列数据和对应的属性列数据是否一致
[0158] 上述函数的名称和具体算法实现代码,本发明实施例不做限制,能实现上述结果的自定义函数均可。
[0159] 一、创建表流程实例:
[0160] 1.如应用客户端创建一个名为schedule的任务表,其中task_content列为预设的敏感列,具有对应的属性列。新建表代码如下:
[0161] CREATE TABLE  schedule(
[0162] task_owner     NVARCHAR2(32) NOT NULL PRIMARYKEY,   --任务人员名单[0163] task_content   NVARCHAR2(1024)NOT NULL”MBSIGN,    --任务内容,其中“MBSIGN”为安全网关语法扩展,可以识别的敏感标志,确定此列为敏感列,名称可以自定义,只起到标识作用,本发明实施例也不做任何限定。
[0164] task_slevel     CHAR(1)  NOT NULL--任务密级,'1','2','3'等[0165] )
[0166] 上述代码为创建表schedule,包含三个列,分别为:task_owner,task_content和task_slevel。
[0167] 客户端期望创建的表结构效果如下表2:
[0168] 表2
[0169]task_owner task_content task_slevel
     
[0170] 2.应用客户端提交的新建表SQL语句经过安全网关时被截获,安全网关识别出此表有一个敏感列task_conent,且需要与对应的属性列进行绑定,生成一个对应的密标列(名称为预设产生),因此修改SQL语句如下:
[0171] CREATE TABLE  schedule(
[0172] task_owner     NVARCHAR2(32)NOT NULL PRIMARYKEY,  --任务人员名单[0173] task_content   NVARCHAR2(1024)NOT NULL”,      --任务内容[0174] task_slevel    CHAR(1)NOT NULL           --任务密级,'1','2','3'等等[0175] task_cmbsign  VARCHAR2(1024)NOT NULL --新增任务内容的密标列,算法生成(内容+密级)的绑定结果
[0176] )
[0177] 上述代码为创建表schedule,包含四个列,分别为:task_owner,task_content,task_slevel和task_cmbsign。其中task_cmbsign列存放加密算法生成(task_content内容+task_slevel密级)的绑定结果。
[0178] 实际数据库创建的表结构效果,如下表3:
[0179] 表3
[0180]task_owner task_content task_slevel task_cmbsign
       
[0181] 3.安全网关将修改后的SQL语句发送给数据库,完成表schedule创建。
[0182] 4.安全网关提取敏感列的标识以及对应的属性列的标识和密标列的标识,存储于预设的安全策略中。
[0183] 二、插入表流程实例:
[0184] 1.应用客户端发送表数据插入SQL语句
[0185] INSERT INTO schedule(task_owner,task_content,task_slevel)values('张三','2月28日晚9:00行动','1')
[0186] INSERT INTO schedule(task_owner,task_content,task_slevel)values('李四','随时配合张三','1')
[0187] INSERT INTO schedule(task_owner,task_content,task_slevel)values('王五','无工作','3')
[0188] INSERT INTO schedule(task_owner,task_content,task_slevel)values('赵六','4月1日的行动取消','1')
[0189] 上述代码为向schedule表插入4行数据,第一行数据为:task_owner=张三,task_content=2月28日晚9:00行动,task_slevel=1;
[0190] 第二行数据为:task_owner=李四,task_content=随时配合张三,task_slevel=1;
[0191] 第三行数据为:task_owner=王五,task_content=无工作,task_slevel=3;
[0192] 第四行数据为:task_owner=赵六,task_content=4月1日的行动取消,task_slevel=1。
[0193] 客户端期望插入后的表数据如下表4:
[0194] 表4
[0195]task_owner task_content task_slevel
张三 2月28日晚9:00行动 1
李四 随时配合张三 1
王五 无工作 3
赵六 4月1日的行动取消 1
[0196] 2.应用客户端提交的插入表SQL语句经过安全网关时被截获,安全网关查询存储的表schedule的安全策略,确定task_conent为敏感列,且从安全策略获取该敏感列对应的密标列标识,调用提取出SQL语句中task_content和task_slevel的值,然后调用密标列生成函数DBMS_MBGenerate产生task_cmbsign密标列的密文数据。
[0197] 例如:
[0198] DBMS_MBGenerate('2月28日晚9:00行动','1')=>x$x123Y...
[0199] DBMS_MBGenerate('随时配合张三','1')=>bb@sdfK...
[0200] DBMS_MBGenerate('无工作','3')=>353#$ds...
[0201] DBMS_MBGenerate('4月1日的行动取消','1')=>99#8%%%...
[0202] 上述DBMS_MBGenerate,为函数名称,生成(参数1,参数2)加密后的密文数据。
[0203] 其中:task_cmbsign存放的数据是由敏感列数据和对应的属性列数据加密后产生的密文数据,其密文数据用来保障敏感列数据和对应的属性列数据二者的不可分离不可篡改要求。
[0204] 3.安全网关修改数据插入SQL
[0205] INSERT INTO schedule(task_owner,task_content,task_slevel,task_cmbsign)values('张三','2月28日晚9:00行动','1','x$x123Y...')
[0206] INSERT INTO schedule(task_owner,task_content,task_slevel,task_cmbsign)values('李四','随时配合张三','1','bb@sdfK...')
[0207] INSERT INTO schedule(task_owner,task_content,task_slevel,task_cmbsign)values('王五','无工作','3','353#$ds...')
[0208] INSERT INTO schedule(task_owner,task_content,task_slevel,task_cmbsign)values('赵六','4月1日的行动取消','1','99#8%%%...')
[0209] 上述代码为向schedule表插入4行数据,第一行数据为:task_owner=张三,task_content=2月28日晚9:00行动,task_slevel=1,task_cmbsign=x$x123Y...;
[0210] 第二行数据为:task_owner=李四,task_content=随时配合张三,task_slevel=1,task_cmbsign=bb@sdfK...;
[0211] 第三行数据为:task_owner=王五,task_content=无工作,task_slevel=3,task_cmbsign=353#$ds...;
[0212] 第四行数据为:task_owner=赵六,task_content=4月1日的行动取消,task_slevel=1,task_cmbsign=99#8%%%...。
[0213] 4.安全网关将修改后的SQL语句发送给数据库,完成数据插入。
[0214] 插入后数据库的表,如下表5:
[0215] 表5
[0216]task_owner task_content task_slevel task_cmbsign
张三 2月28日晚9:00行动 1 x$x123Y...
李四 随时配合张三 1 bb@sdfK...
王五 无工作 3 353#$ds...
赵六 4月1日的行动取消 1 99#8%%%...
[0217] 三、数据更新流程实例
[0218] 1.应用客户端提交数据库表更新操作SQL语句:
[0219] UPDATE schedule SET task_content='行动取消',task_slevel='2'WHERE task_owner='张三'
[0220] 上述代码为:更新名称为schedule的表,其中条件task_owner为“张三”所在的行,对应的task_content列更新为“行动取消”,对应的task_slevel列更新为“2”。
[0221] 客户端期望的表,如下表6:
[0222] 表6
[0223]task_owner task_content task_slevel
张三 行动取消 2
[0224] 2.应用客户端提交的表更新操作SQL语句经过安全网关时被截获,安全网关查询存储的schedule表的安全策略,检查是否需要对敏感列数据进行更新,如果不是,直接将SQL语句递交给数据库管理服务器处理;若是,则需要进一步处理。
[0225] 3.安全网关识别出更新信息中的敏感列,并同时需要更新其对应的密标列数据,即调用密标列数据生成函数DBMS_MBGenerate('行动取消','2')=>5634*4W...[0226] 修改SQL语句为:
[0227] UPDATE schedule SET task_content='行动取消',task_slevel='2',task_cmbsign='5634*4W...'WHERE task_owner='张三'
[0228] 上述代码为:更新名称为schedule的表,其中条件task_owner为“张三”所在的行,对应的task_content列更新为“行动取消”,对应的task_slevel列更新为“2”,对应的task_cmbsign列更新为“5634*4W...”。
[0229] 4.安全网关将修改后的SQL语句发送给数据库,完成数据更新。
[0230] 实际数据库的表,如下表7:
[0231] 表7
[0232]task_owner task_content task_slevel task_cmbsign
张三 行动取消 2 5634*4W...
[0233] 四、查询流程实例:
[0234] 1.应用客户端提交数据库表查询操作SQL语句:
[0235] SELECT task_owner,task_content FROM schedule WHERE task_owner='张三'[0236] 上述代码从表schedule查询“张三”的task_owner和task_content信息。
[0237] 2.经过安全网关,安全网关首先查询存储的schedule表的安全策略,确定task_content为敏感列,并从安全策略里提取出敏感列对应的属性列和密标列的标识,然后动态修改查询SQL
[0238] SELECT task_owner,task_content,task_slevel,task_cmbsign FROM schedule WHERE task_owner='张三'
[0239] 上述代码从表schedule查询“张三”的task_owner,task_content,task_slevel和task_cmbsign信息。
[0240] 3.安全网关截获数据库管理服务器返回的数据,如下表8:
[0241] 表8
[0242]task_owner task_content task_slevel task_cmbsign
张三 2月28日晚9:00行动 1 x$x123Y...
[0243] 4.安全网关调用算法对内容执行验证
[0244] 安全网关调用验证函数DBMS_MBVerify('2月28日晚9:00行动','1','x$x123Y...'),该函数用于解密密文数据,将解密后的数据同'2月28日晚9:00行动','1',对比是否一致。
[0245] 如果验证通过,则重新调整查询结果(比如:删除密标列和属性列数据),然后返回如下查询结果给客户端,如下表9:
[0246] 表9
[0247]task_owner task_content
张三 2月28日晚9:00行动
[0248] 否则验证失败,返回查询失败的消息给客户端。
[0249] 基于同一发明构思,本发明实施例还提供了一种数据库密级标志安全网关操作的装置和系统,由于该装置和系统所解决问题的原理与前述实施例一种数据库密级标志安全网关操作的方法相似,因此该装置和系统的实施可以参见前述方法的实施,重复之处不再赘述。
[0250] 下述为本发明实施例提供的装置,可以用于执行上述数据库密级标志安全网关操作的方法实施例。
[0251] 参照图6,本发明实施例还提供了一种数据库密级标志安全网关操作的装置,该装置包括:
[0252] 确定模块61,用于当接收到对数据库中指定表的第一操作指令时,查询安全网关存储的所述指定表的安全策略,确定所述第一操作指令中是否包含有敏感列;其中第一操作指令为插入表数据指令或者更新表数据指令;
[0253] 密文生成模块62,用于当确定模块61确定包含所述敏感列时,对第一操作指令中敏感列的数据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;
[0254] 修改模块63,用于将密文生成模块62的密文数据插入到所述第一操作指令中,生成对应的第二操作指令;
[0255] 发送模块64,用于向数据库发送所述修改模块63的第二操作指令,以便所述数据库完成相应的操作。
[0256] 在密文生成模块62中,该加密算法可以是通过对称加密算法生成包含敏感列的数据和属性值的密文数据,也可以对密文数据进行解密,如:DES算法,AES算法或MD5算法等;上述加密算法也可以是通过非对称加密算法加密而成,如:RSA算法,双钥加密等;本发明实施例对加密算法不做限定,其他速度更快、优秀的性能和抗攻击能力强的加密算法也可。
[0257] 具体地,上述确定模块61的操作指令可以是数据表的插入或更新,例如所述指令可以是SQL语句,当客户通过应用客户端提交数据表操作SQL语句,安全网关截获SQL语句,当SQL语句为插入表指令或者更新表指令,通过查询安全网关存储的对应表的安全策略,确定SQL语句中是否包含有敏感列,并且识别出需要对敏感列插入数据或更新数据,修改SQL语句生成对应的第二操作指令,使其同时对密标列插入数据或更新数据;该密标列数据为加密算法生成的“敏感列数据+属性列数据”的绑定结果的密文数据,将修改后的数据表操作SQL语句,即第二操作指令发送给数据库,从而完成数据库表的插入或更新。
[0258] 本发明实施例提供的上述数据库密级标志安全网关操作的装置,安全网关当接收到客户端发来的对数据库中指定表的第一操作指令时,查询安全网关存储的指定表的安全策略,确定第一操作指令中是否包含有敏感列;当第一操作指令为插入表指令或者更新表指令且包含敏感列数据时,对第一操作指令中敏感列的数据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据,将密文数据插入到第一操作指令中,生成对应的第二操作指令;向数据库发送第二操作指令,以便数据库完成敏感列、属性列和密标列的插入数据和更新数据。该方案加密算法在网关完成,可以实现结构化数据的加密,且不会对数据库查询性能造成严重负担;能够实现敏感列数据与对应属性值的应用绑定,且符合密级标志不可分离、不可篡改的技术要求,保证数据在使用过程中,与其对应的密级标志不可分离,保证数据循迹与识别。而且该操作全部采用实体表进行,消除使用表视图带来的操作限制。
[0259] 下面分别对上述数据库密级标志安全网关操作的装置各模块进行详细说明。
[0260] 在一个实施例中,参照图6,该装置还包括:
[0261] 识别模块66,用于在确定模块61接收到所述第一操作指令之前时,识别所述新建表指令中是否包含敏感列的标识和对应的属性列的标识;
[0262] 修改模块63,还用于当识别模块66识别出所述新建表指令中包含所述敏感列的标识和对应的属性列的标识时,在所述新建表指令中插入敏感列对应密标列的标识;
[0263] 发送模块64,还用于将插入所述密标列的标识后的新建表指令发送给所述数据库以新建表;
[0264] 安全策略模块65,用于将敏感列的标识以及对应的属性列的标识和密标列的标识存储于预设的安全策略中。
[0265] 具体地,上述标识是指列的名称,如表1中的task_owner,task_content,task_slevel,task_cmbsign;上述装置识别模块66中的操作指令是数据表的新建语句,当客户通过应用客户端提交数据表新建的SQL语句,安全网关截获SQL语句,通过识别出敏感标志(安全网关语法扩展,预设的一个标志,指明敏感字段所在的列为敏感列,名称可以自定义,只起到标识作用,本发明也不做任何限定),从而识别出新建表指令中包含敏感列名称和对应的属性列名称(如表1中:task_content和task_slevel),在安全网关的安全策略中存储包含敏感列的标识以及对应的属性列的标识和密标列的标识,同时修改SQL语句使其包含密标列名称(如表1中的task_cmbsign),该密标列数据为加密算法生成的“敏感列数据+属性列数据”的绑定结果的密文数据,将修改后的数据表新建SQL语句发送给数据库管理服务器,从而完成数据库表的新建。其中新增的密标列要存储的密文数据是对应的敏感列数据和属性列数据通过算法加密而成,这样保证数据在使用过程中,与其对应的属性值不可分离,保证以后数据循迹与识别。
[0266] 在一个实施例中,建立了表和插入数据之后,当指令是查询表指令时,参照图6,还包括:接收模块67和验证模块68
[0267] 确定模块61,还用于当接收到对所述指定表的查询表指令时,查询所述安全策略模块,确定所述查询表指令中是否包含有敏感列;
[0268] 修改模块63,还用于当所述确定模块确定包含所述敏感列时,根据所述安全策略模块,在所述查询表指令中插入所述敏感列对应的所述密标列的标识和属性列的标识;
[0269] 发送模块64,还用于将插入所述密标列的标识和属性列的标识的查询表指令发送给所述数据库;
[0270] 接收模块67,用于接收数据库根据所述发送模块发送的查询表指令返回的第一查询结果;
[0271] 验证模块68,用于对所述接收模块返回的第一查询结果进行验证,并在验证通过时返回第一查询结果;在验证失败时返回查询失败的消息。
[0272] 在一个实施例中,参照图7,上述验证模块68还包括:
[0273] 检测子模块681,用于检测所述接收模块67接收到的第一查询结果是否包含密标列;
[0274] 解密子模块682,用于当检测子模块检测第一查询结果中包含密标列时,对第一查询结果中的密标列的密文数据进行解密;
[0275] 验证子模块683,用于当检测子模块检测第一查询结果中未包含密标列时,则返回查询失败的消息;当检测子模块检测第一查询结果中包含密标列时,验证解密子模块解密后的数据同所述敏感列和对应属性列的数据是否一致,当一致时,验证通过,返回第一查询结果;当不一致时,验证失败,返回查询失败的消息。
[0276] 上述验证子模块683对密文数据进行解密,解密用到的加密算法也是上述加密时应用的加密算法,使加密和解密的算法保持一致。
[0277] 具体地,参照图5查询指令的时序图,上述装置中的确定模块61的操作指令是数据表的查询语句,当客户通过应用客户端提交数据表查询的SQL语句,安全网关截获SQL语句,查询安全策略模块65中安全网关存储的对应表的安全策略,识别出查询指令中当包含敏感列时,修改模块63修改SQL语句使其包含密标列名称和属性列名称,将修改后的数据表查询SQL语句通过发送模块64发送给数据库管理服务器,数据库管理服务器执行修改后的查询SQL语句后,返回查询结果,安全网关接收模块67截获数据库管理服务器返回的查询结果,检测子模块681检查是否包含密标列;若无密标列,则返回查询失败的消息;
[0278] 若检测子模块681查询结果中包含密标列,则解密子模块682解密密标列,验证子模块683将解密后的数据与敏感列数据和属性值数据比对,校验数据的完整性,如果验证通过,则调整查询结果即删除模块69删除密标列和属性列,然后返回删除密标列和属性列的查询结果给客户端;
[0279] 当验证失败,返回空记录或查询失败的消息给客户端。
[0280] 上述数据库密级标志安全网关操作的装置用于数据库中,数据库接收安全网关发送的第二操作指令,以便所述数据库完成相应的操作;
[0281] 具体地,作为数据库一方,接收到安全网关发送的包含密文数据的插入表数据指令或者更新表数据指令,执行该指令后,将密文数据插入或更新到密标列;
[0282] 当该指令为新建表指令时,完成数据表的新建。
[0283] 当该指令为查询表指令时,将包含敏感列和对应的属性列以及密标列的数据的查询结果返回给安全网关。
[0284] 本公开实施例还提供了一种数据库密级标志安全网关操作的系统,参照图8所示,包括安全网关和数据库管理服务器;
[0285] 所述安全网关,当接收到对数据库中指定表的第一操作指令时,查询安全网关存储的所述指定表的安全策略,确定所述第一操作指令中是否包含有敏感列;所述第一操作指令为插入表指令或者更新表指令;当包含所述敏感列时,对第一操作指令中敏感列的数据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;将密文数据插入到所述第一操作指令中,生成对应的第二操作指令;向数据库发送所述第二操作指令,以便所述数据库完成相应的操作;
[0286] 所述数据库管理服务器,用于接收安全网关发送的第二操作指令时,根据所述第二操作指令,完成数据表的插入数据或更新数据操作,将密文数据插入或更新到所述敏感列对应的密标列中。
[0287] 本发明实施例提供的数据库密级标志安全网关操作的方法、装置及系统,当接收到第一操作指令时,查询安全网关存储的对应表的安全策略,确定第一操作指令中是否包含有敏感列;当指令中包含敏感列时,对第一操作指令中敏感列的数据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;将密文数据插入到第一操作指令中,生成对应的第二操作指令;向数据库发送第二操作指令,以便数据库完成敏感列、属性列和密标列的插入数据和更新数据;本发明可以实现结构化数据的加密,能够实现敏感列数据与对应属性列的数据应用绑定,且符合密级标志不可分离、不可篡改的技术要求,保证数据在使用过程中,与其对应的密级标志不可分离,保证数据循迹与识别。
[0288] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0289] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0290] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0291] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0292] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。