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