SQL Server证书和对称密钥

时间:2016-07-26 08:28:24

标签: sql-server encryption sql-server-express

我需要加密/解密我的数据库中的某些个人信息,例如信用卡号和密码。

按照Microsoft的步骤,我成功加密了&解密数据。

但经过一些测试我有疑问。

假设有人未经授权访问数据库(hack),并且可以从他自己的计算机中查看SSMS中的数据库。他可以看到我有一些证书和对称密钥设置。

为了显示数据,示例显示以下查询

OPEN symmetric KEY symmetrickey1 
decryption BY certificate certificate1
Now list the original ID, the encrypted ID  
SELECT customer_id, 
   credit_card_number_encrypt                                 AS 
   'Encrypted Credit Card Number', 
   CONVERT(VARCHAR, Decryptbykey(credit_card_number_encrypt)) AS 
   'Decrypted Credit Card Number' 
FROM   dbo.customer_data; 
-- Close the symmetric key 
CLOSE symmetric KEY symmetrickey1; 

如果上述查询返回数据并且可以看到信用卡怎么能被保护?难道不需要在查询中的某处传递密码吗?

我相信我在这里会遗漏一些东西。任何人都可以向我解释这个吗?

1 个答案:

答案 0 :(得分:1)

我必须在证书中加入密码

CREATE CERTIFICATE Certificate1
Encryption By Password='Password123'
WITH SUBJECT = 'Protect Data'

用于检索数据

OPEN Symmetric KEY SymmetricKey1
DECRYPTION BY CERTIFICATE Certificate1 With Password='Password123'
;
select *,CONVERT(nvarchar(255),DECRYPTBYKEY(Credit_Card_No)) as
[Credit_Card_No3] from Customers
;
Close Symmetric Key SymmetricKey1