数字证书部署:为每个用户使用两个证书?

信息安全 加密 证书 电子签名
2021-08-18 12:58:03

在大型企业环境中,我遇到了一种数字证书的部署方法,其中每个用户都获得了两 (2) 个密钥对:

用于签署完全“个人”的文件、电子邮件等(可能仅由他保存在例如智能卡中)

一种用于加密。为了避免任何用户不可用的情况,后一个密钥对的勒索等加密可以通过密钥管理系统(使用适当的策略等)规避。

这种方法应该可以防止管理员以用户身份签名,但我发现某些使用场景会使事情变得复杂。例如,发送签名和加密的电子邮件怎么样?为联系人列表中的每个用户维护两个公钥?

那么,这是一个整体上首选(和广泛使用)的设计吗?或者我们应该只在某些情况下使用它,其中防止冒充是最高优先级的?

2个回答

在一个理智的组织中,实际上需要有两个不同的密钥,一个用于签名,一个用于加密。

当您收到一些加密数据(例如,加密的电子邮件,如S/MIMEPGP中)时,您通常会存储加密数据(电子邮件默认情况下会发生这种情况)。因此,如果您的私钥变得“不可用”,您将无法读取之前存储的数据:这是一种数据丢失情况。私钥“不可用”可以有多种形式,包括硬件故障(你的狗把你的智能卡咬死)或“硬件”故障(密钥持有者被公共汽车撞到,或被毫不客气地解雇,他的继任者应该能够阅读以前收到的企业电子邮件)。为了消除因密钥丢失而导致数据丢失的风险,必须将私钥的备份存储在某处(例如打印在纸上,托管)。简而言之:加密密钥必须被托管。

丢失签名私钥并不意味着任何类型的数据丢失。先前生成的签名继续可验证。签名密钥丢失后的恢复涉及获取新密钥,仅此而已。所以这里不需要密钥备份。另一方面,签名通常意味着具有法律价值(如果您不能对签名人使用签名,那么请求签名就没有什么意义,如果他后来没有遵守他的承诺)。合法价值取决于密钥所有者以外的任何其他个人都不可能生成签名;这与密钥上的托管完全不符。因此,不得托管签名密钥。

由于一个密钥不能同时被托管和非托管,因此您需要两个密钥。

使用不同的密钥进行签名和加密是很常见的确保适当地标记密钥。

然而,专用的签名密钥并不能真正保护流氓管理员管理员能够操作正在执行签名的应用程序。请注意,这对于智能卡来说也是如此:管理员可以操纵与智能卡读卡器对话的应用程序,并将操纵的数据提交给它。

带有显示屏的智能卡读卡器提供了一些保护,例如汇款。然而,在大多数商业案例中,签名信息不适合显示,而是一个 pdf 文件。