为什么 SQL Server 需要私钥来加密备份?

kir*_*ner 8 sql-server backup encryption

我正在设置一个实验,其中我在服务器上只有证书的公钥部分。证书是在另一台服务器上生成的,我没有恢复私钥。

当我尝试使用该证书使用加密备份数据库时,出现此错误:

Msg 15556, Level 16, State 1, Line 15
Cannot decrypt or encrypt using the specified certificate, either because it has no private key or because the password provided for the private key is incorrect.
Msg 3013, Level 16, State 1, Line 15
BACKUP DATABASE is terminating abnormally.
Run Code Online (Sandbox Code Playgroud)

那是 SQL Server 清楚地告诉我它需要私钥进行加密。

但这是为什么呢?

我的理解是 BACKUP 生成对称密钥,使用证书中的公钥保护对称密钥,并将其与备份内容一起存储。然后使用对称密钥来加密实际的备份内容,因为对称加密通常(总是?)比非对称加密快。

为了恢复备份,我需要与加密中使用的公钥相对应的私钥。这是预期的。

我只是不明白为什么在备份操作期间需要私钥。没有在文档或其他任何地方找到答案。有人可以解释一下或指出一些关于为什么会这样的文件吗?

Sea*_*ser 6

我只是不明白为什么在备份操作期间需要私钥。

简答

这就是它目前的实施方式。

更长的答案

我没有查看所有其他调用的所有依赖项,以查看是否需要它(从逻辑上讲,不需要加密数据,只需按照您已经说明的那样进行解密),但它已被检查并因此给出了它当前是如何编写和实现的错误。

如果您担心将密钥放在同一台服务器或多台服务器上以便进行备份操作,您可能需要考虑使用与备份加密集成的 HSM 。

您可以将加密密钥与扩展密钥管理 (EKM) 提供程序集成。