透明数据加密
(TDE)
是在
Microsoft SQL Server 2008
中推出的一个新的加密功能。它
旨在为整个数据库提供静态保护而不影响现有的应用程序。对数据库进行加密,传统上都
会涉及复杂的应用程序改动,例如修改表
schemas
、删除函数和明显的性能下降。举例来
说,要在
Microsoft SQL Server 2005
中使用加密,字段数据类型必须改为
varbinary
;
不允许进行范围和相等搜索;并且应用程序必须调用内置函数
(
或自动使用这些内置函数的
存储过程或视图
)
来处理加密和解密,这些都会降低查询性能。这些问题不是只存在于
SQL
Server
的;其它数据库管理系统也受到相似的限制。定制
schemes
经常用来解决根本不能
使用的相等搜索和范围搜索。即使是像创建一个索引或使用外键等的基本数据库元素也通
常不能与单元级或字段级加密
schemes
一起使用,因为这些特性的使用会泄漏信息。
TDE
简单地加密了所有东西,从而解决了这些问题。因此,所有的数据类型、键、索引,等等
这些可以完全使用而不必牺牲安全或泄漏磁盘上的信息。而单元级加密不能提供这些功
能、两个
Windows
特性:文件加密系统
(EFS)
和
BitLocker™ D
rive Encryption
,它通常用
于和
TDE
同样的原因——它们提供相同范围的保护并对于用户来说是透明的。
2
、
Microsoft SQL Server
加密
Microsoft SQL Server
提供两个级别的加密:数据库级别和单元级别。两个都使用密
钥管理层次结构。
2.1
、密码密钥层次结构
在加密树的根部是
Windows Data Protection API(DPAPI )
,它在机器级别保护密钥
层次,并用来保护数据库服务器实例的服务主键
(SMK)
。
SMK
保护数据库主键
(DMK)
,它存
储在用户数据库级别并反过来保护证书和非对称密钥。这些反过来保护对称密钥,对称密
钥保护数据。
TDE
使用相似的层级到证书。注意区别是当你使用
TDE
时,
DMK
和证书必须存
储在主数据库上而不是用户数据库中。一个只用于
TDE
并作为数据库加密密钥
(DEK)
的新密
钥,被创建和存储在用户数据库中。
这个层次结构使得服务器可以自动地打开单元级和数据库级加密的密钥和解译数据。
主要区别在于当使用单元级加密时,所有从
DMK
来的密钥都可以用一个密码来保护,而不
是另一个密钥。这破坏了解密链并强迫用户输入一个密码来访问数据。在
TDE
中,必须维
护从
DPAPI
到
DEK
的整个链以便服务器可以自动地提供对
TDE
所保护的文件访问。在单元
级加密和
TDE
中,通过这些密钥的加密和解密是由
Windows Cryptographic API(CAPI)
提
供的。
下面的图片显示了完整的加密层次结构。虚线显示了
TDE
所使用的加密层次结构。