0

我是 HSM 的新手,我没有找到任何有关详细通信的信息。HSM 和主机应用程序之间的通信如何工作?我知道有一些驱动程序,但我想了解密钥解密和加密的部分。应用程序如何加密消息?它怎么知道具体的Key?

谢谢你的支持。

干杯,霍斯特

4

2 回答 2

0

当 HSM 采用设备形式时,将有一个低级协议,类似于 */IP(TCP 或 UDP),或者当它是 PCIe 卡时是 PCIe 驱动程序,或者当它是 USB 驱动程序时是一种 USB 外形尺寸。

最重要的是 HSM 自己的通信协议。这是“通信”协议,而不是加密系统。

在通信协议之上,将是一个加密系统。基于标准的加密系统类似于 PKCS#11 或 CAPI/CSP/CNG 或 JCE。HSM 也可能拥有自己的本地加密系统,并且在大多数情况下,基于标准的加密系统只是通往专有系统的桥梁。

因此,HSM 如何准备密钥以供使用,以及您的应用程序如何使用密钥完全取决于 HSM 和您的应用程序。

一般来说,您的应用程序将:

  1. 登录(如果您的 HSM 会话是双控制(或“4 眼”)感知的,这可能不止一次发生)。
  2. 查找、打开或准备要使用的密钥(不同的 HSM 使用不同的习语)。此“密钥”可能是加密(“包装”)blob,也可能是密钥句柄。
  3. 向 HSM 提供密钥、数据和标志以及请求。签名/验证/加密/解密/包装/解包/散列/...

HSM 将

  1. 接受密钥、数据、标志和操作请求,使用或对输入执行操作,然后丢弃密钥和输入数据。
  2. 返回操作的结果。

您可以使用基于软件的 HSM 模拟器(SoftHSM,Utimaco GmbH 的 CryptoServer 模拟器)来研究如何在本地环境中使用它们。

于 2019-11-30T21:29:42.350 回答
0

...而且我没有找到任何有关详细通信的信息。

难怪:至少 3 年前,当我与 HSM 合作时,HSM 文件是机密或严格机密的,并不是每个客户都可以访问所有文件。

HSM 和主机应用程序之间的通信如何工作?

我不能谈论我从这里的机密文件中获得的信息。

但是,即使阅读 27x CPU 的用户手册,也可以清楚地看到,共享 RAM 用于 HSM 和主机 CPU 之间的通信。

我知道有一些驱动程序...

HSM 只是与主机 CPU 位于同一芯片上的第二个 CPU。它有自己的 RAM,并且(如果 HSM 处于活动状态)在闪存中拥有主 CPU 无法访问的区域。

“驱动程序”不仅是驱动程序,而且是在第二个 CPU 上运行的完整代码。

您可以用执行其他计算(例如 2D 图形)而不是加密和安全性的软件替换该“驱动程序”。在这种情况下,HSM 将执行 2D 图形计算而不是数据加密!

您可能会问为什么不在主 CPU 上进行加密计算。答案很简单:

主 CPU 无法访问 Flash 存储器或 HSM 的 RAM。

如果主 CPU 被黑客入侵,黑客可以读取主 CPU 的 RAM 和 Flash 存储器,但无法访问存储在 HSM 的 RAM 或 Flash 中的机密数据(如密钥)。

应用程序如何加密消息?
它如何知道特定的 Key ?

当然,这取决于在 HSM 上运行的软件(“驱动程序”)。

通常,要加密的密钥和数据由主 CPU 写入共享 RAM。

在 HSM(“驱动程序”)上运行的应用程序将从那里读取数据。

通常,此类应用程序提供将密钥存储到 HSM 闪存(主 CPU 无法访问)并使用这些密钥进行加密的功能。

结果(例如加密的消息)将放回主机 CPU 可以读取数据的共享 RAM 中。

于 2021-10-31T21:16:28.520 回答