詳解SQL Server加密功能:數(shù)據(jù)加密和密鑰管理
概述
今天主要介紹SQL Server加密功能,比較特殊,跟其他數(shù)據(jù)庫的設(shè)計(jì)還是有些不太一樣的。下面一起來看看吧~
SQL Server 加密功能
數(shù)據(jù)加密是數(shù)據(jù)庫被破解、物理介質(zhì)被盜、備份被竊取的最后一道防線,數(shù)據(jù)加密,一方面解決數(shù)據(jù)被竊取安全問題,另一方面有關(guān)法律要求強(qiáng)制加密數(shù)據(jù)。SQL Server 的數(shù)據(jù)加密相較于其他數(shù)據(jù)庫,功能相對(duì)完善,加密方法較多。通常來講,數(shù)據(jù)加密分為對(duì)稱加密和非對(duì)稱加密。對(duì)稱加密:加密與解密使用同一密鑰,密鑰需要傳輸,安全性較弱,但性能較非對(duì)稱要好。非對(duì)稱加密:加密與解密使用不同密鑰(公鑰和私鑰),較對(duì)稱密鑰安全性較好,但是算法較復(fù)雜,帶來性能上的損失。因此,折中的方法是使用對(duì)稱密鑰加密數(shù)據(jù),使用非對(duì)稱密鑰加密對(duì)稱密鑰。這樣既保證高性能,又提高密鑰的可靠性。
同樣,SQL Server 就使用了折中的方法,所以SQL Server 加密功能包含2個(gè)部分:數(shù)據(jù)加密和密鑰管理
數(shù)據(jù)加密
SQL Server支持以下多種加密算法

數(shù)據(jù)庫內(nèi)的加密對(duì)象受DMK保護(hù)
支持的對(duì)稱加密算法:DES | TRIPLE_DES | TRIPLE_DES_3KEY | RC2 | RC4 | RC4_128| DESX | AES_128 | AES_192 | AES_256
非對(duì)稱加密算法:RSA_512 | RSA_1024 | RSA_2048
注意避免使用RC,DESX類算法,2014之后會(huì)刪除此功能
密鑰管理
SQL Server中加密是層級(jí)的,每一個(gè)上層為下提供保護(hù)。如圖:

由圖可以看出,加密是分層級(jí)的。每一個(gè)數(shù)據(jù)庫實(shí)例都擁有一個(gè)服務(wù)主密鑰(Service Master Key),這個(gè)密鑰是實(shí)例的根密鑰,在實(shí)例安裝的時(shí)候自動(dòng)生成,其本身由Windows提供的數(shù)據(jù)保護(hù)API進(jìn)行保護(hù)(Data Pertection API),服務(wù)主密鑰除了為其子節(jié)點(diǎn)提供加密服務(wù)之外,還用于加密一些實(shí)例級(jí)別的信息,比如實(shí)例的登錄名密碼或者鏈接服務(wù)器的信息。
在服務(wù)主密鑰之下的是數(shù)據(jù)庫主密鑰(Database Master Key),這個(gè)密鑰由服務(wù)主密鑰進(jìn)行加密。這是一個(gè)數(shù)據(jù)庫級(jí)別的密鑰,可以用于為創(chuàng)建數(shù)據(jù)庫級(jí)別的證書或非對(duì)稱密鑰提供加密,每一個(gè)數(shù)據(jù)庫只能有一個(gè)數(shù)據(jù)庫主密鑰。
EKM模塊,這個(gè)比較特別,全稱可擴(kuò)展密鑰管理模塊,該功能增強(qiáng)sqlserver密鑰管理的能力,允許將密鑰存儲(chǔ)到數(shù)據(jù)庫之外,包括一些硬件,如智能卡、USB設(shè)備或硬件安全模塊(HSM);并且允許使用第三方產(chǎn)品來管理密鑰和進(jìn)行加密;另外,有條件的可以使用更高性能的HSM模塊來加解密,減少加解密上性能的損失。
實(shí)例

sqlserver2008
1.創(chuàng)建非對(duì)稱密鑰
- create asymmetric key asyc_key_enc
- with algorithm=RSA_1024
- encryption by password=N'Pass@word'
- go
2.創(chuàng)建對(duì)稱密鑰
- create symmetric key symc_key_enc
- with algorithm=Triple_DES
- encryption by password=N'Pass@word'
- go
3.創(chuàng)建證書
證書也可被其它方式保護(hù)
- create certificate cert_ENC
- with subject='certificate for ENC',expiry_date='20990101'
- go
4.對(duì)稱密鑰可由以上三種方式提供加密保護(hù)
4.1 由非對(duì)稱密鑰加密
- create symmetric key symc_key_enc_byAsyc
- with algorithm=AES_128
- encryption by asymmetric key asyc_key_enc
- go
4.2 由對(duì)稱密鑰加密
- 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
【編輯推薦】