我必须使用 HSM 设备来满足我项目中的安全要求。我对 HSM 如何在 Linux 机器上与 C 接口感到困惑。
用户如何访问 HSM 内部存储器以执行不同的操作?
每个 HSM 供应商都支持至少一个加密 API。PKCS#11 是一个特别常见的选择,但还有许多其他选择。例如,OpenSSL 通过引擎接口支持 HSM 。
供应商通常会在其实现的“标准”API 之外公开一个专有 API。与标准 API 中可能表达的内容相比,专有 API 通常提供对密钥安全属性和密钥使用的更大程度的控制。
使用 HSM 时,通常会发出命令以从安全存储中加载密钥并检索密钥对象的句柄。此句柄是允许 HSM 安全地执行密钥操作而不暴露密钥材料的抽象层。
对于您的项目,重要的是您不要简单地将 HSM “推”到解决方案中的某个位置以使其看起来安全。相反,请仔细考虑系统的安全属性以及密码学如何帮助您防御攻击。确定攻击向量(以及相关的加密防御)后,请考虑哪些加密 API 可以支持您的用例。只有这样,您才能从支持该 API 的供应商中选择最佳供应商。
根据我的经验,标准 API 仅适用于简单的安全系统。对于复杂的项目,几乎总是需要使用特定供应商的专有 API。在这种情况下,在确定真正满足您需求的产品之前,请严重依赖供应商提供支持和概念验证。
我知道这是一岁了,但如果其他人遇到它,这个链接有更详细的讨论:
包括我添加的一些长格式的工作代码。也欢迎您直接通过此链接获取我的代码: https ://github.com/tkil/openssl-pkcs11-samples
祝你好运!
HSM 供应商应该为您提供了一个库。您可以使用此库通过 PKCS#11 接口与您的 HSM 进行交互。为此,您需要项目中的 PKCS#11 头文件。查看此站点http://www.calsoftlabs.com/whitepapers/public-key-cryptography.html以获得介绍