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