概述
今天主要介绍 SQL Server 加密功能, 比较特殊, 跟其他数据库的设计还是有些不太一样的. 下面一起来看看吧~
SQL Server 加密功能
数据加密是数据库被破解, 物理介质被盗, 备份被窃取的最后一道防线, 数据加密, 一方面解决数据被窃取安全问题, 另一方面有关法律要求强制加密数据. SQL Server 的数据加密相较于其他数据库, 功能相对完善, 加密方法较多. 通常来讲, 数据加密分为对称加密和非对称加密. 对称加密: 加密与解密使用同一密钥, 密钥需要传输, 安全性较弱, 但性能较非对称要好. 非对称加密: 加密与解密使用不同密钥 (公钥和私钥), 较对称密钥安全性较好, 但是算法较复杂, 带来性能上的损失. 因此, 折中的方法是使用对称密钥加密数据, 使用非对称密钥加密对称密钥. 这样既保证高性能, 又提高密钥的可靠性.
同样, SQL Server 就使用了折中的方法, 所以 SQL Server 加密功能包含 2 个部分: 数据加密和密钥管理
数据加密
SQL Server 支持以下多种加密算法
数据库内的加密对象受 DMK 保护
支持的对称加密算法: DES | TRIPLE_DES | TRIPLE_DES_3KEY | RC2 | RC4 | RC4_128| DESX | AES_128 | AES_192 | AES_256
非对称加密算法: RSA_512 | RSA_1024 | RSA_2048
注意避免使用 RC,DESX 类算法, 2014 之后会删除此功能
密钥管理
SQL Server 中加密是层级的, 每一个上层为下提供保护. 如图:
由图可以看出, 加密是分层级的. 每一个数据库实例都拥有一个服务主密钥 (Service Master Key), 这个密钥是实例的根密钥, 在实例安装的时候自动生成, 其本身由 Windows 提供的数据保护 API 进行保护 (Data Pertection API), 服务主密钥除了为其子节点提供加密服务之外, 还用于加密一些实例级别的信息, 比如实例的登录名密码或者链接服务器的信息.
在服务主密钥之下的是数据库主密钥 (Database Master Key), 这个密钥由服务主密钥进行加密. 这是一个数据库级别的密钥, 可以用于为创建数据库级别的证书或非对称密钥提供加密, 每一个数据库只能有一个数据库主密钥.
EKM 模块, 这个比较特别, 全称可扩展密钥管理模块, 该功能增强 sqlserver 密钥管理的能力, 允许将密钥存储到数据库之外, 包括一些硬件, 如智能卡, USB 设备或硬件安全模块 (HSM); 并且允许使用第三方产品来管理密钥和进行加密; 另外, 有条件的可以使用更高性能的 HSM 模块来加解密, 减少加解密上性能的损失.
实例
sqlserver2008
1. 创建非对称密钥
- create asymmetric key asyc_key_enc
- with algorithm=RSA_1024
- encryption by password=N'Pass@word'
- go
2. 创建对称密钥
- create symmetric key symc_key_enc
- with algorithm=Triple_DES
- encryption by password=N'Pass@word'
- go
3. 创建证书
证书也可被其它方式保护
- create certificate cert_ENC
- with subject='certificate for ENC',expiry_date='20990101'
- go
4. 对称密钥可由以上三种方式提供加密保护
4.1 由非对称密钥加密
- create symmetric key symc_key_enc_byAsyc
- with algorithm=AES_128
- encryption by asymmetric key asyc_key_enc
- go
4.2 由对称密钥加密
- open symmetric key symc_key_enc
- decryption by password=N'Pass@word';
- create symmetric key symc_key_enc_bySymc
- with algorithm = DES
- encryption by symmetric key symc_key_enc
- go
4.3 由证书加密
- create symmetric key symc_key_enc_byCert
- with algorithm =AES_128
- encryption by certificate cert_ENC
- go
来源: http://database.51cto.com/art/201908/602022.htm