数据库加密
Luc Bouganim
法国国家信息与自动化研究所 罗屈昂库尔
勒谢奈, 法国
Luc.Bouganim@inria.fr
Yanli GUO
法国国家信息与自动化研究所 罗屈昂库尔
勒谢奈, 法国
yanli.guo@inria.fr
加密算法和操作模式
与加密策略无关,加密数据的安全性取决于加密算法,加密密钥大小及其保护。即使采用AES等强大的算法,如果不正确的模式是选择。例如,如果以电子码簿模式(ECB)实现加密算法,则将相同的明文块加密成相同的密文块,从而公开重复的模式。在数据库环境中,重复性模式是常见的,因为许多记录可能具有相同的属性值,因此在选择加密模式时应特别小心。此外,可以在其他上下文中工作的简单解决方案(例如,使用基于数据地址的初始化向量的计数器模式)可能会在数据库中失败,因为可以更新数据(以前的示例,在旧的和新的之间执行异或版本的加密数据将公开旧版本和新版本的纯文本数据之间的排他性)。应考虑数据库环境的所有特殊性,以指导选择适当的加密算法和操作模式:重复模式,更新,巨大的加密数据量。此外,保护应该足够强大,因为数据可能在很长一段时间(几年)内有效。因此,应使用最先进的加密算法和操作模式(无任何让步)。
密钥管理
密钥管理是指密码密钥在生命周期中生成和管理的方式。 因为加密是基于加密和解密数据的密钥,因此数据库保护解决方案只有保护密钥的方式一样好。 因此,加密密钥的位置及其访问限制特别重要。 由于问题与加密级别完全独立,以下文本假定数据库级加密。
对于数据库级加密,一个简单的解决方案是将密钥存储在受限数据库表或文件中,可能由主密钥加密(本身存储在数据库服务器的某处)。但具有特权访问权限的所有管理员也可以访问这些密钥并解密系统中的任何数据,而不会被检测到。
为了克服这个问题,可以使用称为硬件安全模块(HSM)的专门的防篡改密码芯片组为安全密钥提供安全存储[14] [16]。通常,加密密钥存储在由存储在HSM中的主密钥加密的服务器上。在加密/解密时,加密密钥由HSM(使用主密钥)动态解密,一旦执行密码操作就从服务器内存中删除,如图2.a.
一个替代的解决方案是将安全相关任务移动到(物理上)不同的服务器(称为安全服务器)上运行的不同软件,如图2.b所示。然后,安全服务器管理用户,角色,权限,加密策略和加密密钥(可能依赖于HSM)。在DBMS中,安全模块与安全服务器进行通信,以便对用户进行身份验证,检查权限和加密或解密数据。然后可以将加密密钥链接到用户或用户的权限。 DBA的角色,管理数据库资源以及SA(安全管理员)角色,管理安全性参数之间也有明确的区别。信心的增长来自于攻击需要DBA和SA之间的阴谋。
上面提到的使用安全服务器方法的数据库级加密由IBM DB2与数据加密专家(DEE [5])以及第三方供应商(如Protegrity [6],RSA BSAFE [17]和SafeNet [19] 基于设备的解决方案)。 第三方供应商的产品可以适应大多数DBMS加解密控制模块(Oracle,IBM DB2,SQL Server和Sybase)。
应用
自从几年以来,大多数DBMS制造商提供本地加密功能,使应用程序开发人员可以通过选择性加密存储的数据来包含额外的数据安全措施。这种本机功能采用加密工具包或软件包(Oracle8i / 9i [15])的形式,可嵌入SQL语句(IBM DB2 [5])或SQL扩展(Sybase [18]和SQL Server 2005 [ 14])。为了限制性能开销,通常可以在列级别进行选择性加密,但可能涉及更改数据库模式以适应加密过程产生的二进制数据[14]。
SQL Server 2008 [14]引入了实际上非常类似于存储级加密的数据加密(TDE)。整个数据库由单个密钥(数据库加密密钥的DEK)保护,本身由更复杂的方式保护,包括使用HSM的可能性。 TDE在I / O级别执行所有加密操作,但在数据库系统中执行所有加密操作,并且不需要应用程序开发人员创建自定义代码来加密和解密数据。
在Oracle10g / 11g中引入了TDE(与SQL Server相同的名称,但功能不同),大大扩展了在DBMS中使用加密技术的可能性[16]。加密密钥现在可以由HSM管理或存储在使用管理定义的密码加密的名为wallet的外部文件中。选择性加密可以在列粒度或更大(表空间,即与一个或多个表和索引相对应的数据文件集)中完成。为了避免分析加密数据,Oracle建议在加密过程中包含一个Salt,一个随机的16字节字符串,存储每个加密的属性值。一个有趣但相当危险的特征是使用保留相等性的加密模式(通常是具有恒定初始化向量的CBC模式)的可能性,从而允许使用索引来加密搜索到的值的等式谓词。
上面提到的使用安全服务器方法的数据库级加密由IBM DB2与数据加密专家(DEE [5])以及第三方供应商(如Protegrity [6],RSA BSAFE [17]和SafeNet [19]基于设备的解决方案)。第三方供应商的产品可以适应大多数DBMS加解密控制模块(Oracle,IBM DB2,SQL Server和Sybase)。
加密方案
虽然所有现有的商业数据库产品都采用经典的加密算法进行数据库加密,但特定的加密方案在学术领域,特别是数据库即服务模式中引起了极大的关注。在这个范例中,数据库服务提供商为其客户提供无缝机制,在主机站点创建,存储和访问其数据库[1]。在这种情况下,数据库服务器可以管理加密数据,而无需访问加密密钥(类似于应用程序级加密)。
隐私同态(PH)加密是一种加密形式,通过对密文执行(可能不同的)代数运算,人们可以在明文上执行一些特定的代数运算。 [7]中利用了PH在关系数据库中的聚合查询的首次应用,但这种同态加密功能对于仅限密文的攻击是不安全的。在[8]中,它支持复杂的聚合查询和嵌套查询,但是该方案可能会显示有关可以利用的输入分布的信息。订单保留加密方案(OPES)[9]允许直接在密文上建立索引。 OPES可以处理任何有趣的SQL查询类型,无需解密。不幸的是,OPES在[10]中被证明是不安全的,他们的作者介绍了数据库级加密策略的快速比较加密(FCE)方案.FCE可以用于通过部分解密技术进行快速比较。它逐字节加密明文,允许从最高有效字节开始快速比较,并在发现差异后立即停止。
另一种方案是使用经典加密算法,并在密文旁边存储额外的辅助模糊信息,以便对加密数据进行部分查询处理[1] [3]。这样的辅助信息不应显露纯文本内容,因此在安全性与效率之间存在权衡:增加辅助信息的精度会提高性能,因为可以对加密数据进行更多处理,而且还会增加数据泄露的风险。
新的数据库加密策略
包括数据库加密在内的现有架构并不完全令人满意,因为如上所述,加密密钥以服务器或应用程序运行的客户机的RAM中的纯文本形式出现。 HSM作为一个安全存储,以尽量减少密钥暴露在其使用寿命期间的风险。正在进行研究,以更好地利用HSM,避免在整个过程中暴露加密密钥。可以考虑两种体系结构:当HSM由所有用户共享并位于服务器上时,服务器-HSM;当HSM专用于单个用户并位于用户附近时,客户机HSM可能在客户机上。这两种架构如图3所示。
在逻辑上,服务器-HSM只不过是嵌入在HSM中的安全服务器的数据库级加密。 HSM现在管理用户,权限,加密策略和密钥。它具有与使用安全性 - 服务器方法的数据库级加密相同的优点,但不会随时暴露加密密钥(因为加密/解密在HSM内完成)。此外,由于安全服务器完全嵌入到防篡改HSM中,因此安全服务器不能被篡改。使用这种方法,纯文本中出现的唯一数据就是传递给用户的查询结果。这种方法的主要困难在于其复杂性,因为复杂的软件必须嵌入具有受限计算资源的HSM(由于安全约束)。