HSM(硬件安全模块)如何工作?

how HSM (Hardware Security Module) works?

我是 HSM 的新手。我想在我的一个产品中使用 HSM 来存储密钥数据库。我有以下问题:

1) 所有 HSM 都支持 HTTPS(SSL) 吗?
2) 我们在 HSM 上是否有用户空间,我们可以在其中 运行 我们自己的程序?
3) 通过 HTTPS 访问 HSM 的任何标准 API?

注意:用户可以拥有来自任何服务提供商的任何 HSM。

这在很大程度上取决于供应商。

您假设 HSM 具有 linux 或 desktop-like 内核和 GUI。没有。 HSM 可能是一个嵌入式系统 运行ing roll-your-own(专有)操作系统。

Utimaco 'CryptoServer' 行不支持 HTTPS 或 SSL,但这是对错误问题的回答。该软件(称为 SecurityServer)是否在主机应用程序和固件之间实现安全连接,运行ning 在 HSM 上?是的。但它不是通过 HTTPS(从 4.20 开始)并且它不使用 TLS。并且加密连接是在您的应用程序 和 HSM 上的固件之间,而不是 HSM 插入的 OS。即没有'man-in-the-middle'。

HSM 是否提供 "user space"?不,因为 CryptoServer 上的 OS 是嵌入式 OS,它没有用户的概念(由 linux 或其他桌面 OS 定义)。如果您编写自定义代码(CryptoServers 支持 C 和 Lua 中的自定义代码),内核中的 C 模块 运行 space,Lua 模块 运行 Lua沙箱。

SecurityServer 支持 CXI(Utimaco 专有)、Java_CXI、JCE、PKCS#11、CSP、CNG、EKM。但不是 RESTful,这就是 HTTPS 连接。

所以:询问供应商。

(注意:是的,我为 Utimaco 工作)。

(给出更中立的供应商答案)

1a) 是否所有 HSM 都支持保护 HTTPS(SSL)?

  • 我想大多数支持 RSA 加密的 HSM 都可用于 HTTPS/SSL/TLS 加速

  • 请注意,HSM 通常仅用于初始密钥交换(例如 RSA),连续加密(例如 AES)由应用程序完成

1b) 是否所有 HSM 都支持 HTTPS(SSL) 作为应用程序和 HSM 硬件之间的通信通道?

  • 据我所知,只有 Thales 支持 SSL/TLS end-to-end 连接到 HSM 固件

  • 其他供应商使用他们自己的专有协议来保护应用程序和 HSM 固件之间的通信

2) 我们在 HSM 上是否有用户空间,我们可以在其中 运行 我们自己的程序?

  • 一些 HSM 型号允许 运行在 HSM 硬件中使用自定义代码——参见 this answer

  • 请注意,运行HSM 硬件中的自定义代码可能会破坏安全认证

3) 通过 HTTPS 访问 HSM 的任何标准 API?

  • 访问 HSM 的 'gold standard' API 是 PKCS#11

  • 替代的API是Java的JCA/JCE,微软的CryptoAPI/CNF

  • 一些供应商提供替代 APIs 或上述 APIs

  • 的专有扩展
  • 我不知道有任何标准化的 API 可以通过 HTTPS 访问 HSM


免责声明:我处理这个问题已经有一段时间了,所以请验证我的想法...

祝你好运!

我同意 HSM 功能因用户而异。 我可以谈谈金雅拓提供的Network HSM。

  1. 他们通过静态 IP 或 DNS 访问网络中的 HSM。
  2. 提供商使用的标准是 PKCS #11 2.20 和 2.30 - cryptoki 库。 您基本上可以使用提供的 SDK 来开发您的应用程序,并且功能和用法基于 PKCS,但供应商可能会有他们的添加或减少。 您还可以编写自定义函数(功能模块 - FM)并下载到 HSM。
  3. 在金雅拓网络 HSM 案例中,金雅拓提供的 Message Dispatch 库用于与 HSM 内的 FM 通信