【发布时间】:2017-08-18 07:04:17
【问题描述】:
我们公司正在使用 HSM 来存储个人的私钥。所以这些消息都是用它们的公钥加密的。我的问题是我应该使用服务器连接到 HSM 以获取私钥然后在服务器中解密消息还是将加密的消息传递给 HSM 并要求 HSM 为我解密(这样密钥不需要传递到 HSM 之外)。但是,是HSM通常有这个功能吗?如果是,会不会太慢?消息是电子邮件和即时消息。
【问题讨论】:
标签: email encryption messaging hsm
我们公司正在使用 HSM 来存储个人的私钥。所以这些消息都是用它们的公钥加密的。我的问题是我应该使用服务器连接到 HSM 以获取私钥然后在服务器中解密消息还是将加密的消息传递给 HSM 并要求 HSM 为我解密(这样密钥不需要传递到 HSM 之外)。但是,是HSM通常有这个功能吗?如果是,会不会太慢?消息是电子邮件和即时消息。
【问题讨论】:
标签: email encryption messaging hsm
...我应该使用服务器连接到 HSM 以获取私钥然后在服务器中解密消息还是将加密的消息传递给 HSM 并要求 HSM 为我解密
如果您有适当的 HSM,则永远不要允许从中导出纯私钥。否则,拥有 HSM 来保护密钥将毫无用处。只需让 HSM 对数据进行解密即可。
无论如何,您都可以考虑将应用程序服务器添加到图片中,以便在您的客户端应用程序和 HSM 之间建立一个抽象层。根据您拥有的 HSM,您可能有两种选择:
通常(几乎总是)您的代码可以通过 PKCS#11 或类似的接口/加密引擎(例如,用于 Thales HSM 的 Chil)来使用 HSM。 特别是对于 PKCS#11,几乎所有编程语言都有大量的库可用。 HSM 供应商还经常提供他们的一套软件库供您使用。
底线是,如果您的 HSM 是经过 FIPS 批准的适当 HSM,则允许导出私钥会浪费您的钱。
但是,是HSM通常有这个功能吗?如果是,会不会太慢?
大多数通用 HSM 在通用加密操作中速度很快。但这又在很大程度上取决于您拥有哪种 HSM。
【讨论】:
使用 HSM 的第一条规则是永远不要在外部提取敏感密钥 HSM。
这是不合逻辑的,因为您支付巨额资金购买 HSM 以在其上存储密钥,但您的密钥仍在 HSM 之外。
HSM 用于加密-解密少量数据,而不是用于海量数据加密处理。对于 Emv 卡、PINS、密码等,只处理少量。
如果您想加密消息和电子邮件(我认为它们是多 MB 大小),您需要拥有多个 HSM,这取决于您的需求及其昂贵。
在我以前的公司,我们有解决类似问题的方法。我们在 HSM 上有一个主密钥,用于加密本地使用的主密钥 (LUMK),用于加密邮件、消息等。我们将 LUMK 存储在加密的数据库中,当我们需要这些密钥时,我们只需在 HSM 上解密它们并在我们的程序中使用加密处理。该方案为我们的密钥和数据提供了充分的保护。
【讨论】: