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

时间:2018-03-21 15:04:43

标签: hsm

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

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

注意:用户可以从任何服务提供商处获得任何HSM。

3 个答案:

答案 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。

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