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