我们的项目是将数字签名应用于PDF,因此每个用户都应该有自己的密钥对和证书。为了确保密钥的安全,我们计划购买HSM,但据我所知,HSM有有限数量的钥匙可以储存。
因此,对于我的问题,我们应该如何处理这种情况,我们有成百上千的用户需要存储他们自己的密钥和证书。
我有一个想法:
但我不确定这是不是最好的做法。
谢谢。
发布于 2021-12-16 16:58:16
如果你:
若要使用所需的密钥,请:
还有一些HSM供应商提供(加密的)外部密钥存储库,其大小实际上是无限的。因此,您只需创建新的用户键并在HSM中使用它们,而不需要主键( HSM隐式地使用这个键来保护外部密钥库中的密钥)。
但正如前面所讨论的,这只是保护你不被偷的钥匙,而不是滥用它们。后者完全取决于您的应用程序检查应用程序用户的权限。
发布于 2021-12-16 23:28:06
您所描述的是加密密钥管理系统的功能。密钥管理器将包含几个组件:硬件安全模块(一般带有PKCS#11接口),用于安全地存储主密钥和加密/解密客户端密钥;加密的客户端密钥数据库;具有授予认证用户对其密钥的访问权限的接口的某种服务器;以及允许管理员绑定到HSM、管理数据库、管理用户、权限、访问规则、备份和恢复密钥、日志访问密钥等的管理功能。
有些KMS将仅充当基本密钥管理器,而其他KMS将提供加密作为服务,并且可以加密/解密用户数据或签署文档,而用户的密钥永远不会离开KMS的安全范围。
密钥管理器服务通过各种协议提供的接口提供密钥和加密功能。在您可能考虑的空间中,最显著的标准可能是密钥管理互操作性协议(KMIP),这是一个由绿洲定义的二进制协议,得到了空间中许多供应商的支持。长期从事此业务的KMS供应商通常带有古老的遗留专有接口(您可能想忽略这些接口);更现代的密钥管理器包括RESTful API对加密密钥和函数的访问。
密钥管理器通常也包含证书管理系统;允许KMS不仅生成密钥,而且为这些密钥或用户颁发证书。
密钥管理器还提供各种身份验证选项。它们都提供了一些简单的用户名/密码访问形式。具有证书功能的用户可以提供相互的TLS身份验证。许多认证与其他身份验证集成在一起,包括OIDC/JWT、LDAP集成、AWS、GCP、Kerberos等。
在这个空间中有开放源码和商业产品。主要银行和金融机构使用的商业系统通常非常昂贵,但它们提供预先构建的服务器,配备全套篡改防护,甚至是物理防护。一些大型云供应商(GCP、AWS、Azure等)将密钥管理作为一个集成服务提供;他们可以为您复制您的密钥,这样无论您的服务器在哪里,它们都是高可用的。还有一些公司提供专门的独立密钥管理服务,您可以与之签订合同。
我要提醒你不要在没有更多信息的情况下建立自己的系统。众所周知的风险“滚动自己的密码学”强烈适用于密钥管理。密钥管理服务器通常保护加密业务关键数据的密钥。因此,获得服务的安全是一个关键的安全功能;任何漏洞都将被放大。
https://security.stackexchange.com/questions/257834
复制相似问题