注册
【与达梦同行】达梦透明数据加密技术对比研究
技术分享/ 文章详情 /

【与达梦同行】达梦透明数据加密技术对比研究

leonard 2022/12/16 3527 4 1

绝大多数关系数据库都是用明文存储用户数据的。非法用户可以绕过操作系统防护直接窃取数据文件内容。简单而言,当使用UE等字符编辑器工具直接打开数据文件,用户数据“一目了然”,可以直接从绕过DBMS读取敏感信息。针对这个问题,关系数据库管理系统早已有了解决方案。透明数据加密技术(Transparent Data Encryption,简称TDE)就是针对存储加密而设计的数据库特性。

早在Oracle 10g和达梦5时代,TDE技术就已经出现在对应版本DBMS官档里。但是,生产系统里几乎看不到这项特性的应用。时至今日,Oracle已经发展到23c版本,达梦8也在借助信创的东风一路高歌猛进攻城拔寨,TDE却仍然安静地躺在官档的角落里,极少有人问津。原因似乎很简单,用户担忧开启安全特性后会影响数据库的性能,因此天然地摒弃一众安全特性,使自己的数据库处于裸奔状态。

随着硬件性能逐年提升,硬件成本稳中趋降的大趋势下,很多曾经的性能问题,都可以用硬件的超能力来弥补。本文重提TDE技术,并在Oracle 11g与达梦8数据库中总结二者的使用方法,为广大运维人员开启一扇门:充分发掘现有DBMS产品的安全特性,满足安全考核与性能兼顾的需求。

所谓“透明数据加密”是指数据的加解密过程对于应用程序而言是透明的,无感知的,数据库管理系统完全自主掌控加解密的全部流程。Oracle 11g的透明加密的维度支持列级别加密和表空间级别;达梦8除了对列和表空间级别支持加密外,还支持对全库级别、存储过程、函数、触发器、包、类等自定义类型进行加密。

下面通过实验分别验证Oracle 11g与达梦8数据库的表空间级TDE过程和效果。

一、Oracle数据库启用透明数据加密特性

Oracle 11g开启TDE特性总共分三步。
1.查询v$encryption_wallet视图,确定密钥文件所在操作系统预定路径(此时该路径并不存在)。

2.在操作系统中创建密钥文件路径。

3.使用命令设定密钥,打开TDE特性,再次查询v$encryption_wallet视图确认结果。

操作过程如下图所示:
1.png
创建加密表空间encrypt,创建用户encrypt,使用默认表空间encrypt;创建encrypt表,循环插入数据。encrypt表数据类型包含‘This is an encrypted message’列,该列用于后期验证加密效果。
操作过程如下图所示:
2.png
直至数据插满,查询encrypt表有209万行数据。
操作过程如下图所示:
3.png
创建不加密的表空间unencrypt,创建用户unencrypt,使用默认表空间unencrypt。创建unencrypt表,循环插入数据unencrypt表数据类型包含‘This is an unencrypted message’列,用于后期验证明文效果。
操作过程如下图所示:
4.png
不加密循环插入
5.png
查询dba_tablespaces视图,encrypted列显示为YES的是已经启用TDE特性的加密表空间。如下图所示。
6.png
下载unencrypt表空间的数据文件,使用UE打开该文件,发现了明文显示的‘This is an unencrypted message’。充分验证了Oracle数据库默认是以明文方式存储的数据。
7.png
下载encrypt表空间的数据文件,使用UE打开该文件,发现所有内容均显示为乱码,表空间数据文件已经成功加密。
8.png
二、达梦8数据库启用透明数据加密特性

达梦8启用TDE表空间加密时,直接在DDL语句中加入“encrypt with”子句即可。
创建用户encrypt,使用默认表空间encrypt;创建encrypt表,循环插入数据。encrypt表数据类型包含‘This is an encrypted message’,用于后期验证加密效果。“encrypt with”子句可以指定加密算法和密钥。
操作过程如下图所示:
9.png
创建不加密的表空间unencrypt,创建用户unencrypt,使用默认表空间unencrypt。创建unencrypt表,循环插入数据unencrypt表数据类型包含‘This is an unencrypted message’,用于后期验证明文效果。
操作过程如下图所示:
10.png
循环插入数据,直至unencrypt表空间和encrypt表空间爆满。
操作过程如下图所示:
11.png
12.png
分别用UE打开unencrypt表空间和encrypt表空间的数据文件,实现预期效果。
unencrypt表空间数据文件是明文,如下图所示:
13.png
encrypt表空间数据文件是密文,如下图所示:
14.png
三、总结。
历次等保迎检所涉及的检查项目均有“数据库是否启用加密存储”,本文予以充分证明:默认条件下,Oracle 11g和达梦8数据库是采用明文方式存储数据的,可以直接使用文本编辑工具查看数据库内部数据。只有启用数据库的TDE特性后,数据库才会使用密文保存数据。
关于TDE特性开启方法,在Oracle 12c之后的版本开启TDE的语法格式变化很大,但基本原理相同。相比Oracle,达梦数据库对支持TDE全库级别加密、支持多种数据库对象加密,而且开启方法极为简单,只需要在DDL语句中加入“encrypt with”子句即可。
透明数据加密技术是一种针对存储加密简单而有效的技术。它的局限性在于仅仅针对数据文件或者数据库对象进行存储算法级别的加密,当非法用户直接获取了数据库的连接权限后,TDE就无法防护了。辩证来看,数据库的单一特性都无法解决全部的需求,只有在合适的时候用适合的特性,才能把安全与运维天平均衡,保证我们的数据库系统稳定运行。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服