问完这个我还有一个问题。
公司需要存储敏感数据。请我们现在不要谈论证书。
一个DBA执行以下操作:
CREATE SYMMETRIC KEY SecureSymmetricKey1
WITH ALGORITHM = DESX
ENCRYPTION BY PASSWORD = N'blabla';
Run Code Online (Sandbox Code Playgroud)
一个程序员想要加密数据并执行以下操作:
-- open key
OPEN SYMMETRIC KEY SecureSymmetricKey1
DECRYPTION BY PASSWORD = N'blabla'
-- actual encrpyt
DECLARE @encrypted_str VARBINARY(MAX)
SET @encrypted_str = EncryptByKey(Key_GUID('SecureSymmetricKey1'),'my data');
Run Code Online (Sandbox Code Playgroud)
另一个程序员想要读取数据,所以他这样做:
DECLARE @decrypted_str VARBINARY(MAX)
SET @decrypted_str = DecryptByKey(...encrypted_str...)
Run Code Online (Sandbox Code Playgroud)
一切都很好。
问题 :
当程序员打开对称密钥时,他必须知道密码。我不认为程序员应该知道密码。如何解决?
如果一个 GOD 黑客得到了整个.BAK
文件并将备份恢复到他自己的机器上 - 他可以查看其中一个程序员编写的存储过程源,并查看密码。然后黑客可以做:
开放对称密钥 SecureSymmetricKey1 密码解密 = N'blabla'
我错过了什么?
谢谢你的帮助。