数据安全是数据库安全性的核心要素,达梦数据库(以下简称达梦)从多维度、不同层面对用户数据实现立体式保护。纵向来看,登录用户的账户密码每次使用协商的密钥加密传输、 对用户数据库操作的每个动作进行严格的权限检查、数据落地的完整性校验和完备的TDE加密方案。横向来看,用户和用户之间是会话独立的、操作层面实现REDO、UNDO等恢复保护机制、落地数据提供双写文件等备份机制。

鉴于达梦安全体系的复杂性,我们对其研究不能做到面面俱到。本文的分析基于达梦7.6版本,侧重讨论其加密体系,并在此基础上观察当前的加密体系存在的安全性风险,给出有效的解决方案。

加密体系

提起数据库加密,大家最先想到的可能就是TDE加密。TDE加密保护的是用户数据,理所当然是加密中的重中之重。除此之外,用户身份认证、通讯加密、多级密钥管理等也不可或缺。

1 密钥管理

达梦使用多级密钥管理方式保证数据库密钥的安全性。达梦安装时通过RSA生成1024位的公私钥对,用公钥加密叫做SVRKEY的服务器主密钥,私钥PRIKEY被单独加密存储在本地文件中。主密钥再加密叫做DBKEY的二级密钥。二级密钥用来加密全库加密的密钥、用户表空间的密钥、REDO日志的密钥等。除主密钥的加密使用RSA算法外,其它密钥包括PRIKEY都是用AES加密的。

多级密钥的架构

2 身份认证及密码存储

达梦使用账户密码的登录方式进行身份认证。账户密码的是以密文形式传输的,其加密使用的密钥是在客户端和服务器建立会话时进行协商的,一次一密。

新建用户初次设置登录密码时,数据库只存储加密后的密码,并且不会保存任何形式的明文密码。

3 通讯加密

达梦支持SSL加密通讯,默认情况下SSL加密通讯不开启。关于SSL不做进一步讨论,客户SSL设置如图2所示。

达梦客户端SSL设置

表空间TDE安全性

达梦的表空间可以按创建方式分为两种,第一种是创建数据库时系统生成的,我们把这种叫默认表空间,另外一种是用户创建的,叫做用户表空间。默认表空间加密只能使用全库加密方式,在用户创建数据库时指明。使用全库加密后不再支持单独新建的加密表空间,可以认为全库加密是表空间加密的一种特例。默认表空间包括日志文件的密钥存储在系统文件的控制页中,用户表空间的密钥存储在控制文件中。

默认表空间密钥及算法

用户表空间密钥及算法

达梦表空间加密支持AES等高安全性算法。既然算法是安全的,唯一需要关心的就是密钥的安全性。然而表空间的密钥是落地存储的,其安全性只能依赖于加密该表空间密钥的算法强度及密钥的安全程度。算法方面,如前所述各级密钥管理均使用高强度的加密算法,略显不足的是AES算法使用IV是固定不变的,这在一定程度上弱化了加密强度。另一方面,由于多级密钥管理的缘故,密钥安全性形成层层依赖的关系。根密钥即加密PRIKEY的密钥的安全性至关重,达梦的根密钥虽然没有落地,但其生成方式很容易被获取。有了根密钥就能依次解密各级密钥,最终得到表空间密钥,顺利的解密想要的数据。

认证及密码安全性

用户登录服务器时,客户端首先使用Diffie-Hellman算法产生一对公私钥,然后发送自己的公钥给服务器,服务器收到客户端的会话请求后使用相同的算法生成自己的公私钥,并且把公钥发送给客户端。双方会根据对方的公钥及自己的私钥计算出相同的数值串作为共享密钥,客户端以该密钥使用对称加密算法加密登录账户密码,服务器收到密文形式的账户密码后再以自己计算的密钥解密。

用户登录过程的密码传输

从登录的过程来看,每次会话双方都会交换公钥,然后随机生成加密密钥,这样可以确保登录账户的安全。根据Diffie-Hellman算法可知,双方公私钥的生成依赖于两个公共的参数,而这两个公共参数是可以被第三方获取到的。拿到参数的第三方可以伪装成服务器的角色监听客户端的会话请求,从而获取登录账户密码,然后再以客户端的角色利用获取的账户信息登录真正的服务器,实现中间人劫持攻击。这种方式的缺陷是通讯双方没有进行的身份认证(安华金和提交漏洞CNNVD-201901-1090)。

服务器在拿到明文的账户密码后,会进行比对验证。前面我们提到用户密码是以密文形式存储的,服务器首先要对收到的密码做加密处理,生成固定长度的密文串。然后把该密文串和初次设定的密码密文进行比较。用户密码虽然是以密文形式存储的,但是其生成过程并不安全。

缓解措施

达梦的加密体系不管是多层密钥管理还是用户认证登录,或多或少存在一些问题。而这些问题容易被利用形成潜在攻击面,给用户财产造成巨大的损失。一般来说厂商对漏洞问题的修复需要一定的周期,就算是厂商能及时进行修复,用户也会因为各种因素考虑是否安装补丁或者升级到新的版本。

安华金和针对上述问题提出了自己的解决方案。我们的DBCoffer TDE系列产品,除支持AES等国际商密算法外,更是支持安全性高的国密SM1和SM4算法;KMS动态密钥生成、隔离机制,即使在密钥泄露、加密失效(安华金和提交漏洞CNNVD-201812-1421)情况下也可以有效防护用户数据的安全;我们产品的权限管理机制可以从不同的访问维度针对性做防控策略,即使用户密码被盗的情况下,我们也可以根据登录用户的属性的变化做到访问控制。

此外,我们的漏洞扫描产品DBScan,防火墙DBFirewall也针对上述问题添加了相应的规则和特征,能帮助用户及时有效发现和阻断恶意攻击。

声明:本文来自安华金和,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。