我是HSM的新手。我想在我的一个产品中使用HSM来存储密钥数据库。我有以下问题:
1)所有HSM都支持HTTPS(SSL)吗? 2)我们在HSM上有用户空间,我们可以运行自己的程序吗? 3)通过HTPPS访问HSM的任何标准API?
注意:用户可以从任何服务提供商处获得任何HSM。
答案 0 :(得分:4)
(提供更多供应商中立的答案)
1a)所有HSM是否都支持保护HTTPS(SSL)?
我认为大多数支持RSA加密的HSM都可用于HTTPS / SSL / TLS加速
请注意,HSM通常仅用于初始密钥交换(例如RSA),连续加密(例如AES)由应用程序完成
1b)所有HSM是否都支持HTTPS(SSL)作为应用程序和HSM硬件之间的通信通道?
据我所知,只有Thales支持SSL / TLS进行HSM固件的端到端连接
其他供应商使用他们自己的专有协议来保护应用程序和HSM固件之间的通信
2)我们在HSM上有用户空间,我们可以运行自己的程序吗?
某些HSM模型允许在HSM硬件中运行自定义代码 - 请参阅this answer
请注意,在HSM硬件中运行自定义代码可能会破坏安全认证
3)通过HTTPS访问HSM的任何标准API?
访问HSM的“黄金标准”API为PKCS#11
替代API是Java的JCA / JCE,微软的CryptoAPI / CNF
有些供应商为上述API提供了替代API或专有扩展
我不知道任何通过HTTPS访问HSM的标准化API
免责声明:自从我处理此事以来已经有一段时间了,所以请确认我的想法......
祝你好运!答案 1 :(得分:3)
这非常依赖于供应商。
您假设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连接。
所以:询问供应商。
(注意:是的,我为Utimaco工作)。
答案 2 :(得分:0)
我同意HSM功能会因用户而异。 我可以谈谈金雅拓提供的Network HSM。