秘钥归档和还原的概述
在有些时候保障证书和对应的配对秘钥的安全是很重要的,例如,如果我们使用一个证书去对Email或文档的内容进行加密,但是我们把公钥和私钥遗失了,那么我们就无法访问被证书的公钥加密的数据了,因此对公钥和私钥进行归档和还原就显得非常重要了。我们可以将证书结合一个私钥导出,然后将它保存在一个安全的位置,例如独立媒体或者特定的云存储,以这样的方式来归档或备份私钥。但是这种方法要求每个用户都要备份自己的私钥,这样就算不上一个可靠的备份方式了,那么我们可以选择在CA上集中秘钥归档来作为替代的方法。
注意:在常规的操作中,CA是无法访问用户的私钥的,因为私钥是在客户端上生成的,所以我们必须在每个证书模板上明确的启用私钥归档功能,才能对用户的私钥进行归档。
秘钥丢失的原因:
用户配置文件被删除或损坏。加密服务提供程序(CSP)将私钥加密并存储在用户配置文件夹的本地文件系统和注册表中,删除或损坏了配置文件则会导致私钥资料丢失。
操作系统重装。当我们重装操作系统时,之前安装的用户配置文件就丢失了,其中就包含了私钥资料,在这种情况下,计算机的证书也同样丢失了。
硬盘损坏。如果硬盘损坏了并且用户的配置文件无法读取,私钥资料和安装在计算机上的证书也就意味着丢失了。
计算机遗失或被盗。如果用户的计算机遗失或被盗了,那么用户的配置文件肯定也就随着计算机一同丢失了。
注意:不是所有的配对秘钥(或者证书)遗失都是个特别棘手的问题,例如,如果你遗失了用于数字签名或者登陆所使用的证书,你可以非常简单的通过重新颁发一个证书来解决,这不会对数据产生影响,但是如果你遗失的证书是用于数据加密的,那么这就会导致数据的不可访问,这种情况下秘钥的归档和还原就非常重要了。
秘钥归档和恢复代理
要想对私钥进行归档,我们必须在CA和指定的证书模板上启用归档功能,例如EFS。在CA和证书模板上,这个功能默认是关闭的,要启用秘钥归档我们还需要定义一个KRA(Key Recovery Agents秘钥还原代理)。
注意:CA上的秘钥的归档动作时从完全配置好之后才开始的,但是它不会应用到启用这个功能前颁发的证书上。
在秘钥丢失的情况下,我们通过秘钥归档和KRA来实现数据恢复,KRA是指使用了颁发的KRA证书的用户能够去解密存储在证书服务数据库中的私钥。当我们在CA和证书模板上启用了秘钥归档时,每个私钥都会被KRA的公钥加密,然后被保存在CA数据库中,最后KRA的私钥必须能被任何用户的私钥解密。KRA是特定于那些能够获取被用于加密数据的原始证书,私钥和公钥的用户。
注意:不要将KRA(Key Recovery Agent)和DRA(Data Recovery Agent)搞混淆了,数据恢复代理是在初始用户的私钥不可用的时候,能够直接使用EFS对数据进行加密。而KRA不会直接去加密任何数据,它仅仅对归档的私钥进行加密。
要成为KRA,我们必须使用一个基于KRA模板的证书进行注册,在这个证书颁发给指定用户后,CA会导入KRA证书的公钥,并启用秘钥归档,此时那些基于已启用证书归档功能的证书模板所颁发的证书,它们的私钥将会保存在CA数据库中并被KRA的公钥加密。
秘钥恢复过程中,证书管理器或CA管理员从CA数据库中获取包含证书和私钥的加密文件,然后KRA用户使用他的私钥去解密加密文件中的私钥,并将证书和私钥返回给用户。
注意:秘钥恢复有两个步骤,首先需要从CA数据库中获取加密秘钥,其次KRA将证书和秘钥进行解密。出于安全性的考虑,我们建议由不同的用户来执行这两个步骤,默认情况下,KRA是没有权限从CA数据库中获取加密秘钥的。
秘钥归档的安全性
当我们配置了一个CA去颁发KRA证书时,任何对KRA证书模板具有读取和注册权限的用户都可以注册并成为KRA。域管理员和企业管理员默认有KRA权限。秘钥归档的安全性需要注意以下几点:
只有受信任的用户才能够开放此证书的注册权限
必须将KRA的私钥以安全的方式保存
用于秘钥归档的服务器需要单独的防止在一个安全的物理位置
在KRA证书被颁发后,我们建议从CA中将这个模板移除,同时建议只在执行秘钥还原的时候才将KRA证书导入。
秘钥归档和还原
秘钥还原是指在配对秘钥中的私钥部分可以被归档和还原,私钥还原不会恢复任何数据和消息,它仅仅是让用户找回丢失或损坏的秘钥,或者出于数据访问或数据还原的目的,由管理员将角色指派给某个用户。在很多应用程序中,数据还原在没有执行秘钥还原前是无法进行的。
秘钥还原的过程如下:
用户从CA申请一个证书,并将私钥的副本加入到这个申请中,处理申请的CA将加密的私钥归档到CA数据库中,然后将证书颁发给申请的用户。
应用程序使用颁发的证书对文件进行加密
如果私钥丢失或损坏了,用户可以通过企业的证书管理器去还原私钥。证书管理器结合KRA对私钥进行还原,并将私钥保存在一个受保护的文件格式中,将它发回给用户。
在用户将还原的私钥保存在本地的秘钥库中后,私钥就可以再次被引用程序使用,对之前的加密文件进行解密,或对新的文件进行加密。
配置自动秘钥归档
在正常使用秘钥归档之前,我们必须执行几个配置步骤,秘钥归档默认是没有启用的,所以我们要在CA和用于秘钥归档和秘钥还原的证书上做一些配置。
以下为配置自动秘钥归档的过程:
配置KRA证书模板。只有企业管理员或域管理员能够申请KRA证书,如果想让其他的用户能够注册KRA证书,就需要在模板的DACL中加入该用户的权限。
配置证书管理员:
a.CA强制一个用户作为证书管理员。证书管理员通常保管一个有效KRA证书的私钥,CA管理员默认为所有用户的证书管理员,除非有明确定义其他的证书管理员。不过我们还是推荐将CA管理员角色和证书管理员角色分开指定。
b.一个CA管理员用户被定义为证书管理员。这个用户拥有颁发和管理证书的权限,该权限在CA的颁发机构管理控制台中打开CA属性中的安全选项卡进行设置。
c.KRA不一定要是CA管理员或证书管理员。这些角色可以被区分成单独的角色,KRA是某个拥有有效KRA证书私钥的人。
启用KRA:
a.以管理员账号登入服务器,或CA管理员账号登入服务器
b.在CA控制台中,右键点击CA名称,打开属性页面,在恢复代理选项卡中点击"存档秘钥",将秘钥归档功能启用
c.CA会默认使用一个KRA,但是在归档开始前我们需要点击"添加",为CA选择一个KRA证书
d.系统发现有效的KRA证书,然后显示可用的KRA证书,这些证书通常会在注册时被企业CA发布到ADDS中。KRA证书被保存在ADDS配置分区的公钥服务分支的KRA容器中,由于CA颁发多个KRA证书,每个KRA证书将会被添加到CA对象的多值的用户属性。
e.选择证书,然后点击"确定",确保所选的证书是正确的
f.添加完一个或多个KRA证书后,点击"确定",KRA证书仅在服务启动的时候处理。
配置用户模板:
a.在证书模板控制台,右键点击秘钥归档模板,然后点击属性
b.要在CA上总是强制秘钥归档,在模板的属性页面,选中请求处理选项卡,勾选"把使用者的加密私钥存档",在Windows2008以上版本的CA中,需要选择"使用高级对称算法将秘钥发送到CA"
还原丢失的秘钥
秘钥还原需要经过几个步骤,我们必须严格的按照这些步骤进行秘钥还原操作:
私钥丢失。这个步骤通常是发生于用户报告说他无法访问证书的私钥。
查找恢复人选。执行秘钥还原需要两条信息,第一,证书管理员或CA管理员找到CA数据库中正确的证书对象,第二,证书管理员或CA管理员取得正确证书对象的序列号以及用于秘钥还原的KRA证书。
从数据库中获取PKCS#7二进制大对象,这是前半部分的秘钥还原步骤,证书管理员或CA管理员从CA数据库中获取正确的二进制大对象,证书和加密私钥被恢复并保存在二进制大对象中,私钥会被一个或多个KRA的公钥加密。
证书管理器将二进制大对象传递给KRA。
还原秘钥资料并保存为PKCS#12(.pfx),这是后半部分的秘钥还原步骤,其中一个KRA私钥的处理器将恢复的私钥进行解密,并通过处理器生成一个密码保护的.pfx文件,这个文件包含了证书和私钥。
导入还原的证书。受密码保护的.pfx文件被传送给终端用户,用户将该文件导入到本地的用户证书库中,或者由KRA或管理员代表此用户进行以上操作。
转载于:https://blog.51cto.com/thefallenheaven/1622464