天天看點

騰訊雲資料庫團隊:SQL Server 資料加密功能解析

資料加密是資料庫被破解、實體媒體被盜、備份被竊取的最後一道防線;資料加密,一方面解決資料被竊取安全問題,另一方面有關法律要求強制加密資料;SQL Server 的資料加密相較于其他資料庫,功能相對完善,加密方法較多。本文在此為您解析SQL Server資料加密功能~

資料加密是資料庫被破解、實體媒體被盜、備份被竊取的最後一道防線;資料加密,一方面解決資料被竊取安全問題,另一方面有關法律要求強制加密資料;SQL Server 的資料加密相較于其他資料庫,功能相對完善,加密方法較多。

通常來講,資料加密分為對稱加密和非對稱加密。對稱加密:加密與解密使用同一密鑰,密鑰需要傳輸,安全性較弱,但性能較非對稱要好。非對稱加密:加密與解密使用不同密鑰(公鑰和私鑰),較對稱密鑰安全性較好,但是算法較複雜,帶來性能上的損失。是以,折中的方法是使用對稱密鑰加密資料,使用非對稱密鑰加密對稱密鑰。這樣既保證高性能,又提高密鑰的可靠性。

同樣,SQL Server 就使用了折中的方法,是以SQL Server 加密功能包含2個部分:資料加密和密鑰管理

一.資料加密

說道資料加密,我們不得不說下加密算法,SQL Server支援多種加密算法: 

騰訊雲資料庫團隊:SQL Server 資料加密功能解析

二.密鑰管理:

1.SQL Server加密層次結構

騰訊雲資料庫團隊:SQL Server 資料加密功能解析

由圖可以看出,加密是分層級的。每一個資料庫執行個體都擁有一個服務主密鑰(Service Master Key),這個密鑰是執行個體的根密鑰,在執行個體安裝的時候自動生成,其本身由Windows提供的資料保護API進行保護(Data Pertection API),服務主密鑰除了為其子節點提供加密服務之外,還用于加密一些執行個體級别的資訊,比如執行個體的登入名密碼或者連結伺服器的資訊。

在服務主密鑰之下的是資料庫主密鑰(Database Master Key),這個密鑰由服務主密鑰進行加密。這是一個資料庫級别的密鑰,可以用于為建立資料庫級别的證書或非對稱密鑰提供加密,每一個資料庫隻能有一個資料庫主密鑰。

EKM子產品,這個比較特别,全稱可擴充密鑰管理子產品,該功能增強sqlserver密鑰管理的能力,允許将密鑰存儲到資料庫之外,包括一些硬體,如智能卡、USB裝置或硬體安全子產品(HSM);并且允許使用第三方産品來管理密鑰和進行加密;另外,有條件的可以使用更高性能的HSM子產品來加解密,減少加解密上性能的損失。

2.SQL Server加密方式

對象定義加密

未保證觸發器、存儲過程、視圖等定義資訊,我們可以在定義sqlserver對象的時候添加WITH ENCRYPTION字段來加密對象。

列資料加密

通過函數加密表中的某一列資料。可以通過密碼、對稱密鑰、非對稱密鑰、證書等4中方式加密。其中,還包括 帶有驗證器的加密函數,驗證器用來解決密文替換問題,驗證器一般選用不更改獨一無二的id,這樣就算密文替換,驗證器不對,一樣失敗。

連接配接加密

通過證書的方式對ssl連接配接加密,一般用于鏡像,主從機器之前的連接配接就是通過這種方式。

TDE(透明資料加密)

透明資料加密,顧名思義,是在使用者不感覺的情況下完成加解密操作。 它的加密是在頁級别進行,是在寫入磁盤前加密,讀入記憶體時解密,針對資料和日志檔案,做到實時I/O加密,并且備份檔案也會一同加密。 密鑰存在資料庫引導記錄中,收到證書或者非對稱密鑰的保護,也可以與EKM子產品一同使用。官方說法,額外占用3%-5%的cpu資源。 TDE也有一些缺點: 壓縮率小,由于它是先加密再壓縮的,是以無法顯著壓縮備份。 備份同樣是加密的,所有恢複的時候要小心,注意備份證書和密鑰,才能在另個執行個體中還原資料庫 性能有一定損耗

備份加密(2014)

支援備份的過程中進行加密,并且支援先壓縮在加密,保持高壓縮比,打破了使用透明資料加密後幾乎沒有壓縮率的窘境。 是以,使用原生備份加密無論在将資料備份到異地資料中心,還是将資料備份到雲端,都能夠以非常低的成本對資料提供額外的安全保障。

全程加密(2016)

全程加密,資料永遠是加密狀态,你可以在加密資料上執行操作,無需先對它們解密,也就是說加密的敏感資訊不會有機會變為明文。 全程加密針對列做處理,在建立列主密鑰,列加密密鑰後,可以在建立表的時候設定列加密。 加密模式分為兩種:确定型加密與随機型加密。 确定型加密能夠確定對某個值加密後的結果是始終相同的,這就允許使用者對該資料列進行等值比較、連接配接及分組操作。确定型加密的缺點在于有可能揣測出原文,而随機型加密能夠保證某個給定值在任意兩次加密後的結果總是不同的,進而杜絕了猜出原值的可能性。官方建議需要搜尋和分組的列使用确定性加密,而注釋和其他敏感不會進行搜尋分組的資訊使用随機性加密。 最後附上TDE開通示例: 

騰訊雲資料庫團隊:SQL Server 資料加密功能解析

參考連結:

sqlserver加密:https://msdn.microsoft.com/zh-cn/library/bb510663(v=sql.120).aspx 

可擴充密鑰管理子產品EKM :https://msdn.microsoft.com/zh-CN/library/bb895340(v=sql.120).aspx 

透明資料加密TDE:https://msdn.microsoft.com/zh-cn/library/bb934049(v=sql.120).aspx

相關推薦:

MariaDB 加密特性及使用方法

騰訊雲TDSQL審計原理揭秘

此文已由作者授權騰訊雲技術社群釋出,轉載請注明文章出處,擷取更多雲計算技術幹貨,可請前往騰訊雲技術社群

歡迎大家關注騰訊雲技術社群-部落格園官方首頁,我們将持續在部落格園為大家推薦技術精品文章哦~

海量技術實踐經驗,盡在雲加社群!

https://cloud.tencent.com/developer

繼續閱讀