标签: symmetric-key

我可以控制 SQL Server 使用哪种算法来散列对称密钥密码

在问我的问题之前,我将首先描述问题/原因:

如果您在 SQL 中使用对称密钥来加密数据。这可以设置如下:

CREATE MASTER KEY ENCRYPTION BY PASSWORD='password';
CREATE CERTIFICATE My_Certificate AUTHORIZATION [dbo] WITH SUBJECT = 'My Certificate'
CREATE SYMMETRIC KEY My_Key AUTHORIZATION [dbo] ENCRYPTION BY PASSWORD='CertificatePassword' WITH IDENTITY_VALUE = 'My Key', ALGORITHM = AES_256, KEY_SOURCE = '12345-AABB-1234-BBAA' ENCRYPTION BY CERTIFICATE My_Certificate;My_Certificate
Run Code Online (Sandbox Code Playgroud)

然后可以将其与 de/encryptbykey 函数一起使用以加密数据,反之亦然。

问题是在 SQL Server 2016(或以前版本)上加密的数据如果移动到 SQL Server 2017(重新应用该证书后)将无法访问。

这看起来是 SQL Server 2017 的问题,请参阅:https : //support.microsoft.com/en-us/help/4053407/sql-server-2017-cannot-decrypt-data-encrypted-by-earlier-versions

建议的修复是确保您已安装 CU2 并全局启用跟踪标志 #4631

我的问题是:是否可以(如果可以的话)指定应该使用哪种散列算法。

例如,我可以告诉 SQL 在加密我的证书时使用 sha2_256 吗?

sql-server encryption sql-server-2017 symmetric-key

5
推荐指数
1
解决办法
480
查看次数

通过删除和重新创建相同的名称来更改证书+密钥算法

我们有一种情况,使用TRIPLE_DES. 这用于加密密码列,并由大约十个存储过程使用(使用这些与OPEN SYMMETRIC KEY SSN_Key_01 DECRYPTION BY CERTIFICATE MyCertificate01;

我想用AES_192. 但是,如果可能,我宁愿避免编辑存储过程。

我写了以下例程:

  1. 将密码列解密为纯文本字段
  2. 删除现有的密钥和证书
  3. 创建一个与上面同名的新证书和密钥
  4. 使用新的证书/密钥重新加密纯文本列

我的问题是,对于训练有素的眼睛,这里是否有任何事情会引起警钟,特别是因为旧名称和新名称相同,并且这些名称是在存储过程中使用的?

我已经测试了代码并且它有效,但是我缺乏加密经验和今天的信息过载剂量让我非常紧张,因此请求专业知识......

-- Decrypt data

ALTER TABLE [dbo].[tbl_Users] ADD PasswordClear nvarchar(250) NULL;
GO

OPEN SYMMETRIC KEY SSN_Key_01 DECRYPTION BY CERTIFICATE MyCertificate01;
 UPDATE [tbl_Users] SET PasswordClear = CONVERT(nvarchar(250), DECRYPTBYKEY(PasswordEnc))
CLOSE SYMMETRIC KEY SSN_Key_01;
GO

-- Drop old encryption

ALTER TABLE [dbo].[tbl_Users] DROP COLUMN PasswordEnc;
GO

DROP SYMMETRIC KEY SSN_Key_01;
GO

DROP CERTIFICATE [MyCertificate01];
GO


-- Create new certificate …
Run Code Online (Sandbox Code Playgroud)

sql-server encryption sql-server-2012 certificate symmetric-key

5
推荐指数
1
解决办法
443
查看次数

SQL Server 在哪里存储对称密钥?

我想知道在特定数据库中创建的对称密钥是否存储在主文件组中?

或者它们存储在用户无法与之交互的某些特殊文件组中?

例如,如果我对文件组(主要或次要)执行部分备份,我可以确定备份不包含对称密钥吗?

sql-server filegroups t-sql sql-server-2016 symmetric-key

4
推荐指数
1
解决办法
649
查看次数

在 SQL Server 中打开主密钥后如何停止解密数据?

我使用证书、带密码的主密钥使用 SQL Server 对称密钥加密技术实现了数据加密。

当我们从 PROD 服务器备份数据库并恢复到不同的服务器时,我们使用 OPEN MASTER KEY DECRYPTION BY PASSWORD = ''... 语句打开主密钥。

主密钥的密码由 SQL 管理员管理。

打开主密钥后,我们可以使用 DecryptByKey 函数解密列数据。但是,一旦我们做了一些分析,我们就想停止解密数据。一段时间后,没有开发人员应该能够解密数据。

如何停止解密数据或关闭主密钥,让开发人员无法看到明文数据?

sql-server encryption symmetric-key

1
推荐指数
1
解决办法
327
查看次数