我已关注http://msdn.microsoft.com/en-us/library/ms179331.aspx加密SQL Server中的列。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'T3stP@ssword'
CREATE CERTIFICATE TestCert WITH SUBJECT = 'SSN Encryption'
CREATE SYMMETRIC KEY HRKey
WITH ALGORITHM = DES
ENCRYPTION BY CERTIFICATE TestCert;
OPEN SYMMETRIC KEY HRKey
DECRYPTION BY CERTIFICATE TestCert;
UPDATE [dbo].[Person]
SET [EncryptedSSN] = EncryptByKey(Key_GUID('HRKey'), CAST(SSN AS varchar(10)));
SELECT TOP 10 * FROM Person
1 Tom Thomson 111111111 0x0026DA624DBCA04CBCBF621FD5F......
2 Steve Stephenson 222222222 0x0026DA624DBCA04CBCBF6.....
显示我有加密数据,这就是我想要的。
OPEN SYMMETRIC KEY HRKey
DECRYPTION BY CERTIFICATE TestCert;
SELECT PersonID, Firstname, Lastname [SSN],
CONVERT(VARCHAR, DecryptByKey([EncryptedSSN]))
AS 'Decrypted SSN'
FROM [dbo].[Person]
1 Tom Thomson 111111111 111111111
2 Steve Stephenson 222222222 222222222
Close SYMMETRIC KEY HRKey
忽略我仍然有一个未加密的列,问题是这有什么改进,我打开密钥并使用它来解密数据很简单。 我认为我错过了一些理解。
答案 0 :(得分:1)
密钥与用户帐户相关联,这意味着需要凭据才能访问密钥。如果黑客可以劫持该身份,则您的疑虑适用。但是,简单地复制或窃取IO子系统不足以破坏加密,也不能使用其他帐户访问IO子系统。
此外,为了完全的安全性,还必须保护备份媒体。备份未加密的数据会创建另一个攻击媒介。如果您为大客户运行SaaS,或者您必须遵守HIPAA或PCI等标准,则可能需要确保备份区域已加密。