CN102968455A - 一种应用层透明的数据库加密方法 - Google Patents
一种应用层透明的数据库加密方法 Download PDFInfo
- Publication number
- CN102968455A CN102968455A CN 201210425928 CN201210425928A CN102968455A CN 102968455 A CN102968455 A CN 102968455A CN 201210425928 CN201210425928 CN 201210425928 CN 201210425928 A CN201210425928 A CN 201210425928A CN 102968455 A CN102968455 A CN 102968455A
- Authority
- CN
- China
- Prior art keywords
- data
- encrypted
- database
- sql
- name
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000013507 mapping Methods 0.000 claims description 4
- 238000000151 deposition Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
Landscapes
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种应用层透明的数据库加密方法,属于数据库加密技术。该方法通过对数据库驱动的代理实现对应用层执行的SQL语句的分析,并根据分析结果进行数据加密和返回的结果集的数据解密过程。与现有技术相比,本发明的应用层透明的数据库加密方法对应用层的存取的表中敏感字段数据进行加密和解密,在不影响开发人员和用户读取的情况下能够保证数据的安全存储,具有安全性好等特点,具有很好的推广应用价值。
Description
技术领域
本发明涉及一种数据库技术,具体地说是一种应用层透明的数据库加密方法。
背景技术
在医疗卫生信息化过程中,涉及到大量患病就诊居民的姓名和身份证件信息。出于对居民个人隐私的保护考虑,需要通过一种技术手段保证数据的安全性。即使在获取数据库权限的情况下,也能保证拿到的数据是不可用的。
目前一种保护方式是数据库加密技术。此种加密仅能保证在数据库停止的情况下,拿到数据文件的人无法获取其内容。但是在已经启动数据库的情况下,无法保证能否访问数据库的人员获取不到数据。也无法防范内部人员获取敏感的业务数据。另外并不是所有的数据都支持此种加密。
另一种方式是通过对数据库存取数据部分扩展实现数据的加解密操作。这种对数据库存取方式扩展的方法,对于开源的数据库来说还可以实现。但是对于商业数据库,需要得到厂商的代码支持才可以,这是一件很困难的事情。
还有如果在业务逻辑部分进行数据的加解密操作,会造成大量的数据加解密逻辑代码。增加了大量的开发负担,也无法保证需要加密的字段在业务层处理时不被遗漏。
发明内容
本发明的技术任务是针对上述现有技术的不足,提供一种应用层透明的数据库加密方法。该方法对应用层的存取的表中敏感字段数据进行加密和解密,在不影响开发人员和用户读取的情况下能够保证数据的安全存储,且能够在数据流出的情况下保证敏感数据的安全性。
本发明的技术任务是按以下方式实现的:一种应用层透明的数据库加密方法,其特点是通过对数据库驱动的代理实现对应用层执行的SQL语句的分析,并根据分析结果进行数据加密和返回的结果集的数据解密过程。
具体包括以下步骤:
1)通过JDBC组件在应用层对SQL进行拦截,拦截到应用层面的所有执行的SQL语句;
2)对SQL语句进行解析,生成SQL的抽象语法树;
3)对抽象语法树进行遍历;
4)将SQL语法树节点内容与配置的加密的表和字段进行匹配,对需要加密的数据内容进行加密,遍历完成后生成带加密内容的SQL语句提交数据库执行;同时对SQL语句的表名与表别名和列名与列别名的映射进行记录,在获取结果集内容时根据映射的内容对查询获取的结果集进行匹配,将属于加密的结果集数据进行解密,为了保证数据加密的强度,可使用256位AES加密算法,并使用迭代模式增加破解的复杂度。
数据加密的实现方法包括:
A、 不带参数的语句在进行SQL分析后,对生成的抽象语法树节点进行遍历时,如果表属于加密表,执行的字段属于加密表字段时,则直接对执行的数据进行加密操作,遍历完成后,根据遍历结果生成一条数据加密后的SQL语句提交到数据库执行;
B、 带参数的SQL语句进行SQL分析后,对生成的抽象语法树进行遍历时,记录待加密字段的参数次序,根据次序在对参数进行赋值时,将需要加密的字段内容进行加密后再进行赋值操作。
数据的解密主要是在获取结果集数据时,对获取数据的方法进行拦截,通过拦截获取字段名称,然后根据SQL语句分析时记录的表名及表别名,列名及列别名对字段名称进行匹配,获取表名及列名信息判断是否为加密的表的列,如果是加密列,则将结果数据进行解密。
对于整个系统来说,数据的安全性取决于数据加密密钥的安全性。为了保证系统透明加密密钥的安全性,使用非对称加密算法对数据加密密钥进行保护。将系统使用数据加密算法的密钥和初始化向量通过私钥进行加密后生成加密文件存放到系统中。在系统初始化的时候,使用系统公钥进行解密后,对数据加密算法进行密钥和向量的初始化。在实现时,使用的是1024位RSA加密算法。
如果有必要,可以将加密密钥和初始化向量的文件通过其他介质和其他形式进行存储,在系统初始化的时候获取密钥和初始化向量。将密钥文件和应用系统的分开存放,进一步提升密钥的安全性。
根据安全需要对系统密钥进行更新时,需要先将系统配置的加密表字段的加密数据通过旧密钥进行解密后,使用新密钥进行数据加密处理。
本发明的应用层透明的数据库加密方法与现有技术相比具有以下突出的有益效果:
(一) 加密数据库表的敏感字段内容,在数据库层面未解密的数据是无意义的,即使获取了全部数据,也无法取得加密数据的明文内容;
(二) 对于开发人员来说,对业务数据操作不需要考虑对数据的加密解密,所有的加密解密操作对用户和开发人员是透明的;
(三) 保证了数据的安全性,所有的数据,仅在应用层面能够获取到明文内容,结合应用层面的权限控制,可以很好的保护好系统中敏感的数据内容不被越权获取。
附图说明
附图1是本发明应用层透明的数据库加密方法的设计描述图;
附图2是利用本发明方法加密后存储数据样例(ID随机生成);
附图3是未利用本发明方法加密的存储数据样例(ID随机生成)。
具体实施方式
参照说明书附图以具体实施例对本发明的应用层透明的数据库加密方法作以下详细地说明。
实施例:
如附图1所示,本发明的应用层透明的数据库加密方法是通过JDBC组件在应用层对SQL进行拦截,拦截到应用层面的所有执行的SQL语句。对SQL语句进行解析后,生成SQL的抽象语法树(AST)。对抽象语法树(AST)进行遍历,将SQL语法树节点内容与配置的加密的表和字段进行匹配,对需要加密的数据内容进行加密,遍历完成后生成带加密内容的SQL语句提交数据库执行。同时对SQL语句的表名与表别名和列名与列别名的映射进行记录,在获取结果集内容时根据映射的内容对查询获取的结果集进行匹配。将属于加密的结果集数据进行解密。为了保证数据加密的强度,使用256位AES加密算法,并使用迭代模式增加破解的复杂度。
数据加密的实现:SQL语句包括不带参数的语句和带参数的语句,对于两种不同的语句,加密的处理方式不同。
A、 不带参数的语句在进行SQL分析后,对生成的抽象语法树(AST)节点进行遍历时,如果表属于加密表,执行的字段属于加密表字段时,则直接对执行的数据进行加密操作。遍历完成后,根据遍历结果生成一条数据加密后的SQL语句提交到数据库执行。
B、 带参数的SQL语句进行SQL分析后,对生成的抽象语法树(AST)进行遍历时,记录待加密字段的参数次序。根据次序在对参数进行赋值时,将需要加密的字段内容进行加密后再进行赋值操作。
数据解密的实现:数据的解密主要是在获取结果集数据时,对获取数据的方法进行拦截。通过拦截获取字段名称,然后根据SQL语句分析时记录的表名及表别名,列名及列别名对字段名称进行匹配,获取表名及列名信息判断是否为加密的表的列。如果是加密列,则将结果数据进行解密。
加密密钥的保护:对于整个系统来说,数据的安全性取决于数据加密密钥的安全性。为了保证系统透明加密密钥的安全性,使用非对称加密算法对数据加密密钥进行保护。将系统使用数据加密算法的密钥和初始化向量通过私钥进行加密后生成加密文件存放到系统中。在系统初始化的时候,使用系统公钥进行解密后,对数据加密算法进行密钥和向量的初始化。在实现时,使用的是1024位RSA加密算法。
如果有必要,可以将加密密钥和初始化向量的文件通过其他介质和其他形式进行存储,在系统初始化的时候获取密钥和初始化向量。将密钥文件和应用系统的分开存放,进一步提升密钥的安全性。
密钥的更新:根据安全需要对系统密钥进行更新时,需要先将系统配置的加密表字段的加密数据通过旧密钥进行解密后,使用新密钥进行数据加密处理。
利用本发明方法加密后存储数据样例(ID随机生成)如附图2所示;未利用本发明方法加密的存储数据样例(ID随机生成)如附图3所示。
Claims (5)
1.一种应用层透明的数据库加密方法,其特征在于:通过对数据库驱动的代理实现对应用层执行的SQL语句的分析,并根据分析结果进行数据加密和返回的结果集的数据解密过程。
2.根据权利要求1所述的应用层透明的数据库加密方法,其特征在于,包括以下步骤:
1)通过JDBC组件在应用层对SQL进行拦截,拦截到应用层面的所有执行的SQL语句;
2)对SQL语句进行解析,生成SQL的抽象语法树;
3)对抽象语法树进行遍历;
4)将SQL语法树节点内容与配置的加密的表和字段进行匹配,对需要加密的数据内容进行加密,遍历完成后生成带加密内容的SQL语句提交数据库执行;同时对SQL语句的表名与表别名和列名与列别名的映射进行记录,在获取结果集内容时根据映射的内容对查询获取的结果集进行匹配,将属于加密的结果集数据进行解密。
3.根据权利要求2所述的应用层透明的数据库加密方法,其特征在于,数据加密的实现方法包括:
1)不带参数的语句在进行SQL分析后,对生成的抽象语法树节点进行遍历时,如果表属于加密表,执行的字段属于加密表字段时,则直接对执行的数据进行加密操作,遍历完成后,根据遍历结果生成一条数据加密后的SQL语句提交到数据库执行;
2)带参数的SQL语句进行SQL分析后,对生成的抽象语法树进行遍历时,记录待加密字段的参数次序,根据次序在对参数进行赋值时,将需要加密的字段内容进行加密后再进行赋值操作。
4.根据权利要求2所述的应用层透明的数据库加密方法,其特征在于,数据的解密主要是在获取结果集数据时,对获取数据的方法进行拦截,通过拦截获取字段名称,然后根据SQL语句分析时记录的表名及表别名,列名及列别名对字段名称进行匹配,获取表名及列名信息判断是否为加密的表的列,如果是加密列,则将结果数据进行解密。
5.根据权利要求1所述的应用层透明的数据库加密方法,其特征在于,通过非对称加密算法对数据加密算法密钥进行保护。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201210425928 CN102968455A (zh) | 2012-10-31 | 2012-10-31 | 一种应用层透明的数据库加密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201210425928 CN102968455A (zh) | 2012-10-31 | 2012-10-31 | 一种应用层透明的数据库加密方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102968455A true CN102968455A (zh) | 2013-03-13 |
Family
ID=47798593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201210425928 Pending CN102968455A (zh) | 2012-10-31 | 2012-10-31 | 一种应用层透明的数据库加密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102968455A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104794204A (zh) * | 2015-04-23 | 2015-07-22 | 上海新炬网络信息技术有限公司 | 一种数据库敏感数据自动识别方法 |
WO2015196810A1 (zh) * | 2014-06-27 | 2015-12-30 | 中兴通讯股份有限公司 | 一种读写数据库的数据的方法和应用应答装置 |
CN106484378A (zh) * | 2015-08-28 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 一种无落地的数据处理方法及装置 |
CN107644175A (zh) * | 2017-09-13 | 2018-01-30 | 南京南瑞集团公司 | 一种防止sql注入的方法 |
WO2018152904A1 (zh) * | 2017-02-24 | 2018-08-30 | 中国科学院大学 | 一种支持密文数据操作的关系型数据库安全外包数据处理方法 |
CN108734016A (zh) * | 2018-04-17 | 2018-11-02 | 新大陆(福建)公共服务有限公司 | 一种数据持久层的访问方法以及计算机设备 |
CN109947780A (zh) * | 2017-08-17 | 2019-06-28 | 天津数观科技有限公司 | 一种利用代理程序更新缓存的方法、装置及系统 |
CN111552698A (zh) * | 2020-04-21 | 2020-08-18 | 重庆富民银行股份有限公司 | 一种解决环境差异的sql版本控制系统及方法 |
CN113204776A (zh) * | 2021-04-30 | 2021-08-03 | 新华三大数据技术有限公司 | 实现列加密的方法、装置、设备及存储介质 |
-
2012
- 2012-10-31 CN CN 201210425928 patent/CN102968455A/zh active Pending
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015196810A1 (zh) * | 2014-06-27 | 2015-12-30 | 中兴通讯股份有限公司 | 一种读写数据库的数据的方法和应用应答装置 |
CN105302822A (zh) * | 2014-06-27 | 2016-02-03 | 中兴通讯股份有限公司 | 一种读写数据库的数据的方法和应用应答装置 |
CN105302822B (zh) * | 2014-06-27 | 2020-07-31 | 中兴通讯股份有限公司 | 一种读写数据库的数据的方法和应用应答装置 |
CN104794204A (zh) * | 2015-04-23 | 2015-07-22 | 上海新炬网络信息技术有限公司 | 一种数据库敏感数据自动识别方法 |
CN106484378A (zh) * | 2015-08-28 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 一种无落地的数据处理方法及装置 |
WO2018152904A1 (zh) * | 2017-02-24 | 2018-08-30 | 中国科学院大学 | 一种支持密文数据操作的关系型数据库安全外包数据处理方法 |
CN109947780A (zh) * | 2017-08-17 | 2019-06-28 | 天津数观科技有限公司 | 一种利用代理程序更新缓存的方法、装置及系统 |
CN107644175A (zh) * | 2017-09-13 | 2018-01-30 | 南京南瑞集团公司 | 一种防止sql注入的方法 |
CN108734016A (zh) * | 2018-04-17 | 2018-11-02 | 新大陆(福建)公共服务有限公司 | 一种数据持久层的访问方法以及计算机设备 |
CN111552698A (zh) * | 2020-04-21 | 2020-08-18 | 重庆富民银行股份有限公司 | 一种解决环境差异的sql版本控制系统及方法 |
CN113204776A (zh) * | 2021-04-30 | 2021-08-03 | 新华三大数据技术有限公司 | 实现列加密的方法、装置、设备及存储介质 |
CN113204776B (zh) * | 2021-04-30 | 2022-08-30 | 新华三大数据技术有限公司 | 实现列加密的方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102968455A (zh) | 一种应用层透明的数据库加密方法 | |
US9548866B2 (en) | Deletion of content in digital storage systems | |
CN1761923B (zh) | 加密数据库列的方法和设备 | |
CN102236766B (zh) | 安全的数据项级数据库加密方法 | |
EP2430789B1 (en) | Protection of encryption keys in a database | |
CN102855448B (zh) | 一种字段级数据库加密装置 | |
KR101371608B1 (ko) | Dbms 및 데이터베이스에서 암호화 방법 | |
US7792300B1 (en) | Method and apparatus for re-encrypting data in a transaction-based secure storage system | |
AU2010256810B2 (en) | Workgroup key wrapping for community of interest membership authentication | |
CN102902932B (zh) | 基于sql重写的数据库外部加解密系统的使用方法 | |
CN102891876B (zh) | 云计算环境下分布式数据加密方法及系统 | |
US20070079386A1 (en) | Transparent encryption using secure encryption device | |
US9798893B2 (en) | Secure format-preserving encryption of data fields | |
CN104995633A (zh) | 利用下游解密器进行端到端加密情况下实现存储效率 | |
US20230370248A1 (en) | Data sharing system, data sharing method and data sharing program | |
GB2595167A (en) | Secure, multi-level access to obfuscated data for analytics | |
CN106713334B (zh) | 虚拟存储卷的加密方法、解密方法、访问方法以及装置 | |
CN104778954A (zh) | 一种光盘分区加密方法及系统 | |
US20110107109A1 (en) | Storage system and method for managing data security thereof | |
CN102752112B (zh) | 基于sm1/sm2算法的权限控制方法及装置 | |
CN109981579B (zh) | 基于SGX的Hadoop秘钥管理服务安全加强方法 | |
CN102945339A (zh) | 一种计算机数据保护系统 | |
CN105160272A (zh) | 一种基于自主可控数据库的安全加密方法及系统 | |
CN104182691B (zh) | 数据保密方法及装置 | |
US8995665B1 (en) | Role based encryption without key management system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130313 |
|
WD01 | Invention patent application deemed withdrawn after publication |