數據加密 第二篇:加密算法和加密機制


加密是指通過使用密鑰或密碼對數據進行模糊處理的過程,加密解密最簡單的過程如下圖所示:

 

對稱加密是加密和解密使用同一個密鑰的加密算法,在圖中就是加密密鑰和解密密鑰是相同的。對稱加密通常來說會比較羸弱,因為使用數據時不僅僅需要傳輸數據本身,還是要通過某種方式傳輸密鑰,這很有可能使得密鑰在傳輸的過程中被竊取。

非對稱加密是加密和解密使用不同密鑰的加密算法,在圖中就是加密密鑰和解密密鑰是不同的。用於加密的密鑰稱之為公鑰,用於解密的密鑰稱之為私鑰。因此安全性相比對稱加密來說會大大提高。當然有一長必有一短,非對稱加密的方式通常算法會相比對稱密鑰來說復雜許多,因此會帶來性能上的損失。

因此,一種折中的辦法是使用對稱密鑰來加密數據,而使用非對稱密鑰來加密對稱密鑰。這樣既可以利用對稱密鑰的高性能,還可以利用非對稱密鑰的可靠性。

沒有一個加密算法能夠適用所有的情況,在選擇加密機制時,可以借鑒一些成功的經驗:

  • 強的加密通常意味着消耗更多的CPU資源;
  • 長的密鑰比短密鑰的加密效果更好;
  • 長密碼比短密碼的加密效果更好
  • 非對稱加密比對稱加密更慢,但是加密效果更好;
  • 如果要加密大量的數據,推薦使用對稱密鑰來加密數據,然后使用非對稱密鑰加密該非對稱密鑰。
  • 密文不能被壓縮,但是,壓縮后的數據可以被加密,推薦在壓縮數據后再對數據進行加密。

加密算法

加密算法用於把數據轉換成密文,從SQL Server 2016 (13.x)開始,除了AES_128, AES_192 和 AES_256 之外,其他加密算法都已經過時了。

關於DES算法的說明:

  • 使用ALGORITHM = TRIPLE_DES_3KEY 創建的對稱密鑰,是指192bit的TRIPLE DES
  • 使用ALGORITHM = TRIPLE_DES 創建的對稱密鑰,是指128bit的TRIPLE DES

加密機制

SQL Server提供的加密方式主要是值級加密(Cell Level)和文件級別加密(TDE)。SQL Server提供的加密機制主要有:

  • 加密函數:使用短語作為密碼對數據進行加密
  • 非對稱密鑰(Asymmetric keys)和對稱密鑰(Symmetric keys)
  • 憑證(Certificates)
  • 透明數據加密(Transparent Data Encryption,簡稱TDE),對整個數據庫文件進行加密

使用短語加密數據

對於單個值,可以使用TSQL函數EncryptByPassPhrase()進行加密,使用DecryptByPassPhrase()進行解密。傳遞一個短語作為密碼,使用128bit鍵長的TRIPLE DES 算法進行加密。

EncryptByPassPhrase ( 'passphrase', 'cleartext' [ , add_authenticator , authenticator ] )
DecryptByPassPhrase ( 'passphrase', 'ciphertext' [ , add_authenticator ,authenticator  ] ) 

參數注釋:

  • passphrase:字符串,用於生成對稱鍵
  • cleartext:需要加密的字符串,數據類型可以是:nvarchar, char, varchar, binary, varbinary, 或 nchar,不能超過8000Bytes。
  • ciphertext:密文,是加密之后的數據,數據類型是varbinary。
  • add_authenticator:布爾值,是否把authenticatory和cleartext以及加密。如果是1,authenticator參數必須有值。默認值是0,可以省略參數add_authenticator和authenticator。
  • authenticator:sysname類型,用於指示身份驗證者

返回值:這兩個函數的返回值都是varbinary,最大長度是8000Bytes。

舉個例子,使用這兩個函數對數據進行加密和解密:

declare @cipher varbinary(8000)
select @cipher=Encryptbypassphrase(N'悅光陰','A good man')
select @cipher as EncryptedText,cast(Decryptbypassphrase(N'悅光陰',@cipher) as varchar(128)) as DecryptedText

 

參考文檔:

細說SQL Server中的加密


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM