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



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

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

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

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

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

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

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

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

  • 据我所知,只有泰雷兹支持SSL/TLS与HSM固件的端到端连接

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

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

  • 某些 HSM 模型允许在 HSM 硬件内运行自定义代码 - 请参阅此答案

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

3) 是否有通过HTTPS访问HSM的标准API?

  • 访问 HSM 的"黄金标准"API 是 PKCS#11

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

  • 一些供应商为上述 API 提供替代 API 或专有扩展

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


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

祝你好运!

它非常依赖于供应商。

您假设 HSM 具有类似 Linux 或桌面的内核和 GUI。 不。 HSM 可能是一个运行自己的(专有)操作系统的嵌入式系统。

Utimaco的"CryptoServer"行不支持HTTPS或SSL,但这是对错误问题的答案。 软件(称为安全服务器)是否在主机应用程序和在 HSM 上运行的固件之间实现了安全连接?是的。 但它不是通过HTTPS(从4.20开始),也不使用TLS。 加密连接位于应用程序与 HSM 上的固件之间,而不是 HSM 插入的操作系统之间。 也就是说,没有"中间人"。

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

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

所以:询问供应商。

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

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

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

最新更新