标签: encryption

TDE 准备:用于还原的密钥/证书备份

我在开发环境中工作以更好地理解TDE加密。我让它与另一台服务器上的备份和恢复一起工作。有几个问题,我知道我需要使用相应的私钥备份证书。

USE master; 
GO 
BACKUP CERTIFICATE Test
TO FILE = 'C:\Test.cer'
WITH PRIVATE KEY
(FILE = 'C:\Test.pvk',
ENCRYPTION BY PASSWORD = 'Example12#')
Run Code Online (Sandbox Code Playgroud)

如果发生故障,这些需要在新服务器上移动/恢复。在需要恢复到另一台服务器的情况下,我还需要从源服务器备份什么吗?

还有关于私钥存储的任何建议吗?我目前的想法是将证书、私钥和密码备份到单独备份和异地复制的 KeePass 数据库中。

这留下了一个问题,即将 KeePass 私钥备份到哪里?

sql-server encryption transparent-data-encryption

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

使用 SQL Server TDE 编写远程备份时网络流量是否加密?

他们确实说没有“愚蠢的问题”这样的东西,所以这里是:

我了解 SQL Server透明数据加密(TDE) 对静态数据进行加密,因此如果有人闯入您的存储并窃取这些文件,您的数据库文件 (.mdf) 和备份文件 (.bak) 将被加密。我也知道从磁盘读取数据时会解密数据,因此它在内存中未加密(在运动中)。因此,运行远程查询(select * from SensitiveData)的用户请求的数据在通过网络传输时将是未加密的,因此容易被拦截。

因此,假设以上所有内容都是正确的,这是我的愚蠢问题:如果我的 SQL Server 实例在计算机 A 上并且我的 TDE 数据库备份被注销到远程计算机 B 上的存储,备份操作数据是否在传输时加密?计算机 A 要写入计算机 B 的磁盘吗?我认为它必须是(因为我认为加密操作首先发生在计算机 A 上),但我无法在任何 Microsoft 文档或博客中找到对此的确认。同样,在还原操作期间——是否有人拦截了从计算机 B 上的磁盘传输的数据以还原计算机 A 上的数据库——他们会发现移动中的数据是加密的吗?

sql-server encryption network transparent-data-encryption

9
推荐指数
2
解决办法
424
查看次数

SQL Server 2008 R2 标准版中的数据加密选项?

我正在帮助一位朋友在 SQL Server 2008 R2 标准版上设置数据加密。根据最初的研究,我认为我可以使用 TDE,但没有意识到它仅适用于 SQL Server 的 Enterprise 或 DataCenter 版本。在进一步研究 SQL Server 2008 R2功能后,我发现它确实允许“数据加密和密钥管理”,但我不确定它的含义或如何实现它。

什么是最有效和低成本的数据加密方法?我应该通过 SQL Server 做一些事情还是只使用第三方工具来加密数据库和备份所在的整个卷?此外,如果有人可以指出一种使用标准版中提供的“数据加密”的方法,我将不胜感激。每次我在 sql server 上搜索加密时,我都会以如何使用 TDE 而告终,而在当前情况下,对于企业规模而言,购买企业版是不可行的。

加密的原因 - HIPAA 合规性。如果可以访问文件系统以进行数据库或备份,则数据将被加密并且无法使用。这可能包括对机器的物理访问或通过本地管理员访问。

sql-server sql-server-2008-r2 encryption

8
推荐指数
2
解决办法
3万
查看次数

Postgres 数据库级加密

我想对整个数据库进行加密,而不是在存储到数据库之前对数据进行加密。

是否可以加密整个 postgres 数据库以及使用什么最佳方法?

谢谢 :)

postgresql encryption

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

如何在新数据库上恢复对称密钥?

我在另一个数据库上恢复对称密钥时遇到问题。我在第一个(旧)数据库中有加密列的表。(该表包含加密数据)旧数据库中的密钥已使用下一个 sql 脚本创建:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'TESTPSWD'
GO
CREATE CERTIFICATE [CertificateSecurity] WITH SUBJECT = 'Key Protection';
GO
CREATE SYMMETRIC KEY [EncryptKey] WITH
    ALGORITHM = AES_256 
    ENCRYPTION BY CERTIFICATE [CertificateSecurity]
GO
Run Code Online (Sandbox Code Playgroud)

现在我必须将这个包含所有数据的表移动到新数据库中。我从旧数据库中导入包含数据的表。还有一个问题:有没有办法在不指定key_source和identity_value的情况下,在新数据库中创建相同的加密密钥?(因为我没有它)我尝试使用与上面相同的 sql 查询创建它,但在这种情况下解密返回 NULL。

PS我知道我可以解密数据然后重新创建密钥(提供所有参数)并使用新密钥加密数据。但是找到另一种解决方案会很棒。

sql-server-2005 sql-server-2008 sql-server encryption

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

SQL Server TDE 的替代方案

由于包含透明数据加密功能的 SQL Server 企业版成本高,我正在寻找替代产品,但只找到了几个选项:

任何人都可以提供他们对上述任何一种产品的体验的详细信息(性能影响、易用性等)?

SQL Server TDE 的任何其他替代方案?

注意:我们目前使用的是 SQL Server 2008 R2 标准版。

sql-server sql-server-2008-r2 encryption transparent-data-encryption

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

错误:“无法删除证书,因为一个或多个实体使用它进行签名或加密。”

我有一个要从数据库中删除的证书。

如果我发出命令

DROP CERTIFICATE <FooCert>
Run Code Online (Sandbox Code Playgroud)

我收到错误

The certificate cannot be dropped because one or more entities are either signed or encrypted using it
Run Code Online (Sandbox Code Playgroud)

根据 Jason Strate 的说法,我应该能够找出证书签名的内容。

以下查询返回 0 行:

SELECT OBJECT_SCHEMA_NAME(co.major_id) + '.' + OBJECT_NAME(co.major_id)
FROM sys.certificates c 
INNER JOIN sys.crypt_properties co ON c.thumbprint = co.thumbprint
WHERE co.crypt_type_desc = 'SIGNATURE BY CERTIFICATE' 
AND c.name = 'FooCert'
Run Code Online (Sandbox Code Playgroud)

我还尝试根据这个 SO 问题将实体解耦。 /sf/ask/3672231/

如何删除对这个证书的依赖,以便我可以删除它?

sql-server encryption sql-server-2012 signature certificate

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

TDE - 大型数据库上的加密

我正在研究 VLDB 上的 TDE 实现,想知道是否有人拥有在生产服务器上启用加密的实际经验。

我可以期待什么样的问题(如果有的话)?我的测试显示在测试环境中影响很小,但我担心在生产环境中设置需要多长时间。任何反馈表示赞赏。

我在某处读到我需要在加密过程中禁用备份和数据库维护。这是真的?

这非常令人担忧,因为我的测试花了大约 4 天的时间来完成加密。

sql-server sql-server-2008-r2 encryption transparent-data-encryption vldb

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

如何检查数据库主密钥加密是否有效?

我有一个场景,我将数据库从一台服务器恢复到另一台服务器。在源服务器上,数据库主密钥 (DMK) 使用密码和服务主密钥 (SMK) 进行加密。当我去将它恢复到新服务器时,行中sys.key_encryptions仍然说它是由 SMK 加密的。但事实并非如此,因为两台服务器之间的 SMK 不匹配。是否有任何编程方式来验证 DMK 确实使用此服务器的SMK 进行了加密?

sql-server encryption

8
推荐指数
1
解决办法
2万
查看次数

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

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

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

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 生成对称密钥,使用证书中的公钥保护对称密钥,并将其与备份内容一起存储。然后使用对称密钥来加密实际的备份内容,因为对称加密通常(总是?)比非对称加密快。

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

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

sql-server backup encryption

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