jas*_*tim 5 sql-server encryption sql-server-2017 symmetric-key
在问我的问题之前,我将首先描述问题/原因:
如果您在 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 在加密我的证书时使用 sha2_256 吗?
不幸的是,这目前不可能或通过CREATE CERTIFICATE DDL 公开。从文档中可以看到:
... SQL Server 2017 uses the SHA2 hashing algorithm to hash the passphrase.
SQL Server 2016 and earlier versions of SQL Server use the SHA1 algorithm ...
Run Code Online (Sandbox Code Playgroud)
建议的修复是确保您安装了 CU2 并全局启用跟踪标志 #4631
这是正确的,事实上,我提出了提供该 TF 的请求。
也许可以执行以下操作:解密所有数据,重新创建证书,然后重新加密所有内容。- 因为我们对依赖跟踪标志持怀疑态度
您可以从 2016 年到 2017 年进行备份和恢复,我们对此进行了测试并且没有出现问题(对于我们运行的测试),而不是迁移对称密钥。您也可以像您所说的那样解密 2016 年的所有内容,将其加载到 2017 年并在 2017 年创建一个新密钥,但是如果不使用跟踪标志就有点过分了,因为当时的时间实际上还不到一秒。
另外,您有关于 TF4631 的更多信息吗?我无法找到 Microsoft 的任何官方文档来描述此标志/它的作用/它的行为方式
您链接的知识库文章包含最多的信息,我在 CU2 发布之前确实写了一篇关于它的博客文章(请注意,自 CU2 发布以来我还没有更新它,因此截至今天,Azure 部分可能不正确)。但总的来说,它并没有详细介绍特遣队的职责。TF 在启用时将其使用更改为较旧的哈希算法(2012-2016 年实施)。这就是为什么您需要做的就是启用它,创建密钥,然后立即禁用它。
| 归档时间: |
|
| 查看次数: |
480 次 |
| 最近记录: |