徐毅
摘 要:信息系统在经济活动和社会活动中的地位和作用越来越重要,信息安全问题成为不可忽视的问题,数据加密能有效防止数据库中敏感数据泄漏。Oracle数据库透明数据加密(TDE)使用主密钥和表密钥对敏感数据字段进行加解密。本文结合“煤粉燃烧特性管理信息系统”项目开发,使用透明数据加密(TDE)对敏感数据字段进行了加密应用研究。
关键词:敏感数据;主密钥;表密钥;透明数据加密
中图分类号:TP392 文献标识码:A
Research on the Application of Sensitive Data Encryption Based on Oracle Database
XU Yi
(Business School of Northwest University of Politics and Law,Xi'an 710122,China)
Abstract:At present,the problem of information security in economic activities and social activities is becoming increasingly prominent,data encryption can effectively prevent sensitive data leakage in the database.Oracle database transparent data encryption(TDE)algorithm using the master key and table key to encrypt the sensitive data fields.Combined with"pulverized coal combustion characteristics management information system"project,paper used TDE to encrypt sensitive data fields.
Keywords:sensitive data;master key;table key;transparent data encryption
1 引言(Introduction)
数据库安全目标是为了维护存储于数据库管理系统(DBMS)中数据的三个安全特性,即机密性、完整性和可用性[1]。一般地,数据库的安全性控制措施主要通过用户标识与鉴别、访问控制、视图机制、数据加密、安全审计等机制来完成,然而这些安全机制只能满足一般的数据库安全应用,而对于高度敏感性数据,数据库系统所提供的安全性措施难以保证其安全。
造成数据库安全隐患的一个主要原因是因为原始数据以可读(明文)形式存放在数据库中。只要避开系统身份鉴别认证,进入到数据库系统中,就可以窃取或篡改数据库中的任何数据。因此,为了保证数据库中的数据安全,限制用户非法访问,必须对数据库中存储的重要敏感数据进行保护处理。数据库加密技术能有效弥补传统数据库安全手段的不足。
数据加密(Data Encryption)是防止数据库中数据存储和传输过程中失密的有效手段。加密的基本思想是根据一定的算法将原始数据(明文plaintext)加密成为不可直接识别的格式(密文,ciphertext),数据则以密文的方式存储和传播,从而保证敏感数据访问和传输的安全[2]。
2 数据加密技术(Data encryption technology)
数据加密是保证用户与数据隔离,防止敏感数据泄漏的重要手段。数据加密后,对于不知道密钥的攻击者,即使利用系统漏洞或其他方法非法访问到数据,也无法获取真正的数据内容;而经过系统验证确认其合法性和权限的用户拥有正确的密钥,可以从系统获得可识别的数据。
2.1 加密层次
一般地,数据存储加密可在三个层次实现数据库加密工作,即操作系统(OS)层、DBMS内核层和DBMS外层[3]。
(1)操作系统层加密:应用程序通过操作系统提供的API调用数据库文件,直接解密整个数据库文件,然后访问这个完全解密的文件,而在应用程序关闭时,再将已解密的文件进行加密。
(2)DBMS内核层加密:数据在物理存取之前完成加解密工作。这种加密方式功能强大、完全透明,应用程序不需要做任何修改可以直接访问数据库系统。
(3)DBMS外层加密:数据库中存储密文数据,应用程序和外层工具交互,对数据库的每一次操作都由加密系统转化后再交给数据库处理,然后再将数据库返回的结果解密后返回给应用程序。
2.2 加密粒度
加密粒度是指加密的最小数据单位,可分为数据库级、表级、记录级、字段级和数据项级。总体来说,加密的粒度越小,灵活度越高且安全性越好,但实现技术难度就越大,越不易实现。因此,选择合适的加密粒度是保证数据库灵活性、安全性和执行效率的重要因素。
数据库级加密的弊端是每查询一条记录,需要对整个数据库文件解密,极大地增加了系统时空开销;表级加密对包含敏感数据的表与表密钥运算,形成密文后存储,非敏感表则保持明文存储;记录级加密对记录统一进行加密和解密处理;记录级加密加解密钥数量非常庞大,密钥管理变得困难。
2.3 加密算法
密码算法的优劣决定敏感信息保护的有效性。密码学中有三大加密算法类型:对称密钥加密算法、公开密钥加密算法以及哈希函数[4]。
(1)对称加密算法的加解密过程釆用同一个密钥。可以分为流密码加密和分组密码加密两种。
(2)公开密钥加密算法中,每一个公开密钥都对应一个私钥。公钥和私钥构成密钥对,加密和解密过程使用不同密钥,所以也成为非对称加密算法。
(3)哈希函数的特点是能够应用在任意长度的数据上,并且生成大小固定的输出,计算相对简单,易于软硬件实现。
3 透明数据加密(TDE)
Oracle提供两种数据加密方法:使用程序包DBMS_CRYPTO和透明数据加密(TDE)。
(1)DBMS_CRYPTO可以生成私有密钥,也可以自己指定并存储密钥。在Oracle Database 11g中,DBMS_CRYPTO甚至可以加密内部大对象,例如BLOB和CLOB类型。
(2)透明数据加密(TDE)是基于密钥的访问控制,依赖于外部模块实施授权。“透明”的意思是当访问表中或加密表空间中的加密字段时,授权用户不必指定密码或密钥[4]。
透明数据加密(TDE)的优点在于可以随时地对表中的一个或多个字段加密,只需将加密字段指定加密算法即可,不必编写代码。
4 TDE应用实例(TDE application examples)
“煤粉燃烧特性管理信息系统”基于Oracle 11g R2数据库,使用透明数据加密(TDE)对敏感数据进行了加密机制应用研究。现将加解密过程阐述如下。
数据库为每个包含加密列的表创建一个私密的安全加密密钥,采用指定的加密算法加密指定的明文数据。主密钥对表密钥加密,主密钥保存在“钱夹(wallet)”中,加密的表密钥保存在数据字典中。
当写入数据到加密的列中时,数据库首先从wallet中获取主密钥,用主密钥解密数据字典中的表密钥,然后用解密的表密钥加密输入的明文数据,再将加密后的数据保存在数据库。
当用户查询加密列的时候,数据库首先将加密的表密钥从数据字典取出,然后从wallet中取出主密钥,解密表密钥,再用解密的表密钥解密磁盘上的加密数据。
以数据库中煤粉燃烧特性工业分析表为例,表中C_No字段为试验编号字段(Primary Key,Not Null),C_Code字段为样品编号字段(Not Null),C_Mt、C_Mad、C_Aar、C_Vdaf和C_Qnetar等五个字段均为试验数据字段。由于涉及商业机密和知识产权等问题,这些试验数据均属于敏感数据,因此需要对五个试验数据字段进行加密保护,试验编号字段作为主键、索引字段,样品编号字段作为外键,不需要加密。
(1)创建主密钥的默认存放目录,在sqlnet.ora文件中添加wallet文件夹的绝对路径。
NAMES.DIRECTORY_PATH=(TNSNAMES,EZCONNECT)ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)
(METHOD_DATA=(DIRECTORY=G:\APP\ADMINISTRATOR\
PRODUCT\11.2.0\WALLET)))
然后,在SQL*Plus中创建Wallet密钥,如图1所示。
(2)创建数据库表结构,并为需要加密的字段指定加密算法。为了兼顾效率和时空开销,系统中选用了AES128加密算法。如图2所示。
(3)打开Wallet的情况下,即使用主密钥解密表密钥,再用解密的表密钥解密磁盘上的加密数据,就可以正常浏览表数据。如图4所示。
可以看到,通过透明数据加密(TDE)可以最大限度的加密敏感数据字段,防止数据库被非法访问。透明数据加密(TDE)将密钥管理的复杂性交给数据库引擎来处理,同时允许数据库管理员(DBA)在不必实际看到数据的情况下管理数据库。
5 结论(Conclusion)
透明数据加密(TDE)方法基于wallet机制,当数据库表中的一个或多个字段被加密时,只需要为当前表分配一个表密钥(即一个表只需要一个密钥)。系统中所有的密钥再经过服务器中的一个主密钥加密后存储在数据字典中,即密钥本身也是加密存储的。而服务器主密钥则存储在数据库外部,使用外部安全机制来保证主密钥的安全。这种加密方法更加安全高效、易于实现。
参考文献(References)
[1] (美)Mark Stamp著.张戈,译.信息安全原理与实践(第2版)[M].北京:清华大学出版社,2013.5:2-5.
[2] 吴世忠,等.信息安全技术[M].北京:机械工业出版社,2014,4:2-5.
[3] 李光华.基于Oracle对象的数据库加密应用研究[D].硕士学位论文,河南:郑州大学,2011.
[4] 庄海燕.数据库加密技术及其在Oracle中的应用[D]硕士学位论文,河南:郑州大学,2006.