【问题标题】:Shall I use HSM to decrypt message instead of using an application server that link to HSM to decrypt the message我应该使用 HSM 来解密消息,而不是使用链接到 HSM 的应用程序服务器来解密消息吗
【发布时间】:2017-08-18 07:04:17
【问题描述】:

我们公司正在使用 HSM 来存储个人的私钥。所以这些消息都是用它们的公钥加密的。我的问题是我应该使用服务器连接到 HSM 以获取私钥然后在服务器中解密消息还是将加密的消息传递给 HSM 并要求 HSM 为我解密(这样密钥不需要传递到 HSM 之外)。但是,是HSM通常有这个功能吗?如果是,会不会太慢?消息是电子邮件和即时消息。

【问题讨论】:

    标签: email encryption messaging hsm


    【解决方案1】:

    ...我应该使用服务器连接到 HSM 以获取私钥然后在服务器中解密消息还是将加密的消息传递给 HSM 并要求 HSM 为我解密

    如果您有适当的 HSM,则永远不要允许从中导出纯私钥。否则,拥有 HSM 来保护密钥将毫无用处。只需让 HSM 对数据进行解密即可。

    无论如何,您都可以考虑将应用程序服务器添加到图片中,以便在您的客户端应用程序和 HSM 之间建立一个抽象层。根据您拥有的 HSM,您可能有两种选择:

    • 拥有一个连接了物理 HSM(例如 PCI-e 卡)的应用服务器,将您自己的 API 暴露给客户端应用程序。
    • 使用联网 HSM 并将您的应用程序服务器注册为其客户端。

    通常(几乎总是)您的代码可以通过 PKCS#11 或类似的接口/加密引擎(例如,用于 Thales HSM 的 Chil)来使用 HSM。 特别是对于 PKCS#11,几乎所有编程语言都有大量的库可用。 HSM 供应商还经常提供他们的一套软件库供您使用。

    底线是,如果您的 HSM 是经过 FIPS 批准的适当 HSM,则允许导出私钥会浪费您的钱。

    但是,是HSM通常有这个功能吗?如果是,会不会太慢?

    大多数通用 HSM 在通用加密操作中速度很快。但这又在很大程度上取决于您拥有哪种 HSM。

    【讨论】:

    • 你能解释一下这两个选项的细节吗?特别是,如果我将应用服务器用于抽象层,是否需要将私钥传递给应用服务器以解密我的电子邮件?
    【解决方案2】:

    使用 HSM 的第一条规则是永远不要在外部提取敏感密钥 HSM。

    这是不合逻辑的,因为您支付巨额资金购买 HSM 以在其上存储密钥,但您的密钥仍在 HSM 之外。

    HSM 用于加密-解密少量数据,而不是用于海量数据加密处理。对于 Emv 卡、PINS、密码等,只处理少量。

    如果您想加密消息和电子邮件(我认为它们是多 MB 大小),您需要拥有多个 HSM,这取决于您的需求及其昂贵。

    在我以前的公司,我们有解决类似问题的方法。我们在 HSM 上有一个主密钥,用于加密本地使用的主密钥 (LUMK),用于加密邮件、消息等。我们将 LUMK 存储在加密的数据库中,当我们需要这些密钥时,我们只需在 HSM 上解密它们并在我们的程序中使用加密处理。该方案为我们的密钥和数据提供了充分的保护。

    【讨论】:

      猜你喜欢
      • 2018-06-27
      • 2022-08-02
      • 1970-01-01
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      • 2021-07-04
      相关资源
      最近更新 更多