2011-04-30 127 views
0

我與我們的一位分銷商存在安全問題。我需要阻止他們訪問我們數據庫中的某些數據。由於他們管理數據庫,因此我無法使用數據庫本身的密碼控制來保護數據。我在想,我需要加密數據庫中的敏感數據,並將加密密鑰嵌入到我們創建的軟件中。這樣分銷商就可以在數據庫中搜尋他們想要的所有東西,但敏感數據對他們來說是無法理解的。我看到這可能是如何在MYSQL中完成的。有ENCODE和DECODE函數允許我將一個鍵作爲參數傳入。我可以將這些密鑰嵌入到一個軟件中,鎖定軟件,這將允許我插入和檢索信息。但是MS SQL呢?我如何加密數據,以至於即使是數據庫管理員的人也無法讀取這些數據?MSSQL與MYSQL數據庫安全問題

謝謝

埃利奧特

回答

2

對於MS SQL有噸documentation on encryption,並根據你說的關於MYSQL什麼,我認爲你將是最感興趣的Cryptographic Functions

請注意,我會小心使用您自己的密鑰加密哪些方法,作爲數據庫跟蹤或其他方式,可以通過檢查您發送的SQL命令來繼續獲取密鑰。

+0

加密函數鏈接很有用。我還發現這個網站有一個特別明顯的例子。 http://coder.amplify.com/2010/05/26/encryptbypassphrase-and-decryptbypassphrase/ – Elliott 2011-05-01 23:52:47

0

從這篇文章:http://www.sql-server-performance.com/articles/dev/encryption_2005_2_p1.aspx

(這順便說一句是第一結果爲谷歌搜索的encrypt data sql server

對稱密鑰

對稱密鑰是用於加密和解密的一個密鑰。這是一種快速,常用的加密方法。與證書一樣,創建對稱密鑰時有許多參數可用。在大多數情況下,我們只需要一組有限的參數。您可以參閱聯機叢書以瞭解所有參數。

您可以指定對稱密鑰的加密算法。 DES,TRIPLE_DES,RC2,RC4,DESX,AES_128,AES_192和AES_256是可用於SQL Server數據加密的加密算法。 AES加密算法目前僅在Windows 2003上受支持。如果您使用Windows 2000或Windows XP,則無法從SQL Server訪問AES加密算法。如果您嘗試使用AES加密算法,你會得到一個錯誤:

要麼沒有算法已被指定或位長和鍵指定的算法不可用在此安裝的Windows。

可以使用PASSWORDSYMMETRIC KEYASYMMETRIC KEYCERTIFICATE加密對稱密鑰。

ALTER SYMMETRIC KEYDROP SYMMETRIC KEY命令也可用於改善維修。

創建一個對稱密鑰後,它只是一個使用它的問題。有三種功能可用於對稱密鑰:Key_GUIDEncryptByKeyDecryptByKey

OPEN SYMMETRIC KEY TestSymKey 
    DECRYPTION BY CERTIFICATE CertificateTest2; 

DECLARE @Encryptvalsym varbinary(MAX) 
SET @Encryptvalsym = EncryptByKey(key_guid('TestSymKey'),'scott') 

SELECT convert(varchar(max),DecryptByKey(@Encryptvalsym)) 

使用對稱密鑰之前,你需要通過OPEN SYMMETRIC KEY命令來打開它。要加密數據,您需要傳遞對稱密鑰的GUID。但是,要解密它,您不必傳遞GUID。相反,您必須使用正確的解密方法和值來打開加密的對稱密鑰。

爲了提高對稱密鑰的安全性,您可以在加密過程中添加認證器。解密過程中必須使用相同的值。

OPEN SYMMETRIC KEY TestSymKey 
    DECRYPTION BY CERTIFICATE CertificateTest2; 

DECLARE @Encryptvalsym1 varbinary(MAX) 
SET @Encryptvalsym1 = EncryptByKey(key_guid('TestSymKey'),'scott',1,'SQL Server') 

- 解密使用對稱密鑰

SELECT convert(varchar(max),DecryptByKey(@Encryptvalsym1,1,'SQL Server')) 
0

我會跳過數據庫爲中心的算法,並將其移動到一個軟件管理解決方案。通過這種方式,您可以完全避免通過網絡發送密鑰,並且受到數據包嗅探管理員的攻擊。 (當然,這是假設你使用默認傳輸您的數據庫連接)

我用這個link作爲創建我的DataSecurity庫的引用。我更喜歡軟件管理的方案,因爲它可以讓您像解決方案所需的那樣輕鬆或輕量級,並且它允許您以損害數據庫的方式管理密鑰並不意味着您的數據也會受到影響。