C语言 与 Linux 上的硬件安全模块接口



我必须使用 HSM 设备来满足项目中的安全要求。我对 HSM 如何在 Linux 机器上与 C 接口感到困惑。

用户如何访问 HSM 内部存储器以使用它执行不同的操作?

每个 HSM 供应商都支持至少一个加密 API。PKCS#11 是一个特别常见的选择,但还有许多其他选项。例如,OpenSSL通过引擎接口支持HSM。

通常,除了它实现的"标准"API之外,供应商还会公开专有API。与标准 API 中可能表达的相比,专有 API 通常提供对密钥安全属性和密钥用法更大程度的控制。

使用 HSM 时,通常会发出命令以从安全存储加载密钥并检索密钥对象的句柄。此句柄是允许 HSM 安全地执行密钥操作的抽象层,而不会公开密钥材料。

对于您的项目,重要的是不要简单地将 HSM "推"到解决方案中的某个位置以使其看起来安全。相反,请仔细考虑系统的安全属性以及加密技术如何帮助您防御攻击。确定攻击媒介(以及相关的加密防御)后,请考虑哪个加密 API 可以支持您的用例。只有这样,您才应该从支持该 API 的供应商中选择最佳供应商。

根据我的经验,标准 API 仅适用于简单的安全系统。对于复杂的项目,几乎总是需要使用特定供应商的专有API。在这种情况下,在确定真正满足您需求的产品之前,请严重依赖供应商的支持和概念验证。

我知道

这是一年前的事情了,但万一其他人遇到它,在这个链接上有更详细的讨论:

使用 USB 令牌中的证书和密钥进行数字签名

包括我添加的一些长格式工作代码。 也欢迎您直接通过此链接获取我的代码:https://github.com/tkil/openssl-pkcs11-samples

祝你好运!

HSM 供应商应该为您提供了一个库。您可以使用此库通过 PKCS#11 接口与 HSM 进行交互。您将需要项目中的 PKCS#11 头文件才能执行此操作。http://www.calsoftlabs.com/whitepapers/public-key-cryptography.html 查看此网站以获取介绍

最新更新