c - 在 Linux 上连接硬件安全模块

标签 c openssl pkcs#11 hsm

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

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

最佳答案

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

供应商通常会在其实现的“标准”API 之外公开专有 API。与标准 API 中可能表达的相比,专有 API 通常提供对 key 安全属性和 key 使用的更大程度的控制。

使用 HSM 时,通常会发出命令以从安全存储区加载 key 并检索 key 对象的句柄。此句柄是抽象层,它允许 HSM 安全地执行 key 操作而不暴露 key Material 。

关于您的项目,重要的是您不要简单地将 HSM“推”到解决方案中的某处以使其看起来安全。相反,请认真思考系统的安全属性以及密码学如何帮助您抵御攻击。一旦您确定了您的攻击 vector (以及您相关的加密防御),然后考虑哪些加密 API 可以支持您的用例。只有这样,您才应该从支持该 API 的供应商中选择最佳供应商。

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

关于c - 在 Linux 上连接硬件安全模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10796485/

相关文章:

node.js - TLS ECDHE-ECDSA-AES128-GCM-SHA256 的 key 生成要求

qt - QSslCertificate::importPkcs12 无法解析 PFX 文件

security - 有没有人有关于如何获得自己的智能卡和让 pkcs#11 使用它的教程?

c - 如何检查CSP或PKCS创建的证书和 key 对?

c - 大型与嵌套状态机

c++ - 在 C/C++ 中避免内存泄漏的方法

c# - C# 和 C 中的枚举关键字有什么区别?

ssl - 如何从证书链导出私钥?

c - 在 PKCS#11 中使用 key 对象句柄

ios - 如何在 build.sh 中正确设置编译器以在 iOS 中构建 VLC