2011-01-06 129 views
1

请考虑下图显示SQL Server中使用的加密层次结构。请注意第一个蓝色块,它表示SMK使用DPAPI加密。 DPAPI使用当前登录的用户凭证(+更多)来加密数据,因此它是特定于计算机的。这意味着SMK(以及DMK和任何派生密码)将是特定于计算机的(实际上它是由SQL Server的设置生成的)。 OTOH,我可以在SQL Server中创建/备份X.509证书(使用CREATE CERTIFICATE,BACKUP CERTIFICATE等)。在SQL Server 2008中加密和存储敏感数据

场景/问题:

我正在开发一个Web应用程序需要加密和数据库中的列存储CC信息。我需要在另一台机器上访问这些数据,以便在另一台机器上恢复数据库时,实际上可以读取数据库备份(尽管对于有权访问上述证书的人员)。

我想知道当SMK特定于当前的SQL Server实例时,我应该如何在另一台机器上恢复备份?一旦他们在另一台机器上恢复后,我应该如何访问这些加密数据?

更新:纠正我,如果我错了! 我们可以使用BACKUP SERVICE MASTER KEY TO FILE命令来备份当前使用的SMK。但是,使用RESTORE SERVICE MASTER KEY FROM FILE命令,可以在任何其他SQLServer上(在同一台计算机上/在同一台计算机上)恢复此密钥。当SMK恢复时,它将再次使用DPAPI加密,以便密钥本身可以存储在机器上的某个位置。

任何帮助,将高度赞赏,

Encryption Hierarchy

+0

您是否阅读过您引用的MSDN链接中标题为“DPAPI *中的密钥备份和恢复”一节?这有帮助吗? – dajames 2011-01-10 13:48:45

回答

0

该图显示一证书既可以由DMK或经由密码保护。如果你只用密码保护它,它应该是便携式的。

+0

我不认为这是正确的......证书是公开数量,通常不会被加密。 – dajames 2011-01-10 13:50:54