详解SQL Server加密功能--数据加密和密钥管理

概述

今天主要介绍SQLServer加密功能,比较特殊,跟其他数据库的设计还是有些不太一样的。下面一起来看看吧~

SQLServer加密功能

数据加密是数据库被破解、物理介质被盗、备份被窃取的最后一道防线,数据加密,一方面解决数据被窃取安全问题,另一方面有关法律要求强制加密数据。SQLServer的数据加密相较于其他数据库,功能相对完善,加密方法较多。通常来讲,数据加密分为对称加密和非对称加密。对称加密:加密与解密使用同一密钥,密钥需要传输,安全性较弱,但性能较非对称要好。非对称加密:加密与解密使用不同密钥(公钥和私钥),较对称密钥安全性较好,但是算法较复杂,带来性能上的损失。因此,折中的方法是使用对称密钥加密数据,使用非对称密钥加密对称密钥。这样既保证高性能,又提高密钥的可靠性。

同样,SQLServer就使用了折中的方法,所以SQLServer加密功能包含2个部分:数据加密和密钥管理

数据加密

SQLServer支持以下多种加密算法

数据库内的加密对象受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之后会删除此功能

密钥管理

SQLServer中加密是层级的,每一个上层为下提供保护。如图:

由图可以看出,加密是分层级的。每一个数据库实例都拥有一个服务主密钥(ServiceMasterKey),这个密钥是实例的根密钥,在实例安装的时候自动生成,其本身由Windows提供的数据保护API进行保护(DataPertectionAPI),服务主密钥除了为其子节点提供加密服务之外,还用于加密一些实例级别的信息,比如实例的登录名密码或者链接服务器的信息。

在服务主密钥之下的是数据库主密钥(DatabaseMasterKey),这个密钥由服务主密钥进行加密。这是一个数据库级别的密钥,可以用于为创建数据库级别的证书或非对称密钥提供加密,每一个数据库只能有一个数据库主密钥。

EKM模块,这个比较特别,全称可扩展密钥管理模块,该功能增强sqlserver密钥管理的能力,允许将密钥存储到数据库之外,包括一些硬件,如智能卡、USB设备或硬件安全模块(HSM);并且允许使用第三方产品来管理密钥和进行加密;另外,有条件的可以使用更高性能的HSM模块来加解密,减少加解密上性能的损失。

实例

sqlserver2008

1.创建非对称密钥

createasymmetrickeyasyc_key_encwithalgorithm=RSA_1024encryptionbypassword=N'Pass@word'go

2.创建对称密钥

createsymmetrickeysymc_key_encwithalgorithm=Triple_DESencryptionbypassword=N'Pass@word'go

3.创建证书

证书也可被其它方式保护

createcertificatecert_ENCwithsubject='certificateforENC',expiry_date='20990101'go

4.对称密钥可由以上三种方式提供加密保护

4.1由非对称密钥加密

createsymmetrickeysymc_key_enc_byAsycwithalgorithm=AES_128encryptionbyasymmetrickeyasyc_key_encgo

4.2由对称密钥加密

opensymmetrickeysymc_key_encdecryptionbypassword=N'Pass@word';createsymmetrickeysymc_key_enc_bySymcwithalgorithm=DESencryptionbysymmetrickeysymc_key_encgo

4.3由证书加密

createsymmetrickeysymc_key_enc_byCertwithalgorithm=AES_128encryptionbycertificatecert_ENCgo

版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。

相关推荐