我与其中一位经销商存在安全问题。我需要阻止他们访问我们数据库中的某些数据。因为他们管理数据库我不能使用数据库本身的密码控件来保护数据。我想我需要加密数据库中的敏感数据,并将加密密钥嵌入到我们创建的软件中。这样,分发者可以在数据库中随心所欲地搜索,但敏感数据对他们来说是难以理解的。我知道如何在MYSQL中完成这项工作。有ENCODE和DECODE函数允许我作为参数传递一个键。我可以将这些密钥嵌入到一个软件中,锁定软件,这将允许我插入和检索信息。但是MS SQL怎么样?如何加密数据,以便即使是数据库管理员的人也无法读取数据?
谢谢,
埃利奥特
答案 0 :(得分:2)
对于MS SQL,有大量的documentation on encryption,根据您对MYSQL的看法,我认为您最感兴趣的是Cryptographic Functions。
请注意,我会小心使用您自己的密钥加密哪些方法,因为可以使用数据库上的跟踪或其他方法通过检查您发送的SQL命令来获取密钥。
答案 1 :(得分:0)
MSSQL中肯定有加密/解密功能:
您可能希望基于代码,而不是文件加密...
答案 2 :(得分:0)
从这篇文章:http://www.sql-server-performance.com/articles/dev/encryption_2005_2_p1.aspx
(对于encrypt data sql server
的Google搜索,哪个BTW是第一个结果)
对称密钥
Symmetric Key是一个用于加密和解密的密钥。这是一种快速,常用的加密方法。与证书一样,创建对称密钥时可以使用许多参数。在大多数情况下,我们只需要一组有限的参数。您可以参考联机丛书中的所有参数。
CREATE SYMMETRIC KEY TestSymKey
WITH ALGORITHM = TRIPLE_DES
ENCRYPTION BY CERTIFICATE CertificateTest2
您可以为对称密钥指定加密算法。 DES,TRIPLE_DES,RC2,RC4,DESX,AES_128,AES_192和AES_256是可用于SQL Server数据加密的加密算法。目前仅在Windows 2003上支持AES加密算法。如果您使用的是Windows 2000或Windows XP,则无法从SQL Server访问AES加密算法。如果您尝试使用AES加密算法,则会收到错误:
在此Windows安装中,没有指定任何算法,或者为密钥指定的位长和算法不可用。
您可以使用PASSWORD
,SYMMETRIC KEY
,ASYMMETRIC KEY
或CERTIFICATE
加密对称密钥。
ALTER SYMMETRIC KEY
和DROP SYMMETRIC KEY
命令也可用于改善维护。
创建对称密钥后,只需使用它即可。您可以将三种功能用于对称密钥:Key_GUID
,EncryptByKey
和DecryptByKey
。
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))
在使用SYMMETRIC KEY之前,需要使用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'))
答案 3 :(得分:0)
我会跳过以数据库为中心的算法并将其移至软件托管解决方案。通过这种方式,您可以完全避免密钥通过网络发送并受到数据包嗅探管理员的攻击。 (这当然是假设您使用默认传输进行数据库连接)
我已使用此link作为创建DataSecurity库的参考。我更喜欢软件托管方案,因为它允许您像解决方案所需的那样重或轻,并且它允许您以损害数据库的方式管理密钥并不意味着您的数据也会受到损害。