我是 HSM 的新手。我想在我的产品之一中使用 HSM 来存储密钥数据库。我有以下问题:
1) 是否所有 HSM 都支持 HTTPS(SSL)?
2)我们在 HSM 上有用户空间可以运行我们自己的程序吗?
3) 任何通过 HTPPS 访问 HSM 的标准 API?
注意:用户可以拥有来自任何服务提供商的任何 HSM。
它在很大程度上依赖于供应商。
您假设 HSM 具有 Linux 或类似桌面的内核和 GUI。没有。HSM 可能是运行自行部署(专有)操作系统的嵌入式系统。
Utimaco 'CryptoServer' 系列不支持 HTTPS 或 SSL,但这是对错误问题的回答。该软件(称为 SecurityServer)是否在 HSM 上运行的主机应用程序和固件之间实现安全连接?是的。但它不是通过 HTTPS(截至 4.20)并且不使用 TLS。加密连接是在您的应用程序和 HSM 上的固件之间,而不是 HSM 所插入的操作系统之间。即,不存在“中间人”。
HSM 是否提供“用户空间”?不,因为 CryptoServer 上的操作系统是嵌入式操作系统,它没有用户的概念(由 Linux 或其他桌面操作系统定义)。如果您编写自定义代码(CryptoServers 支持 C 和 Lua 中的自定义代码),C 模块在内核空间中运行,Lua 模块在 Lua 沙箱中运行。
SecurityServer 支持 CXI(Utimaco 专有)、Java_CXI、JCE、PKCS#11、CSP、CNG、EKM。但不是 RESTful,而 HTTPS 连接就是 RESTful。
所以:询问供应商。
(注:是的,我为 Utimaco 工作)。
(给出一个更中立的供应商答案)
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、微软的 CryptoAPI/CNF
一些供应商提供上述 API 的替代 API 或专有扩展
我不知道任何通过 HTTPS 访问 HSM 的标准化 API
免责声明:我已经有一段时间没有处理这个问题了,所以请验证我的想法......
祝你好运!