我必须使用HSM设备来满足项目中的安全要求.我对HSM如何在
Linux机器上与C接口感到困惑.
用户如何访问HSM内部存储器以执行不同的操作?
解决方法
每个HSM供应商都支持至少一个加密API. PKCS#11是一个特别常见的选择,但还有许多其他选择.例如,OpenSSL通过
engine interface支持HSM.
除了它实现的“标准”API之外,供应商通常还会公开专有API.专有API通常提供对标准API中可能表达的关键安全属性和密钥使用的更大程度的控制.
使用HSM时,通常会发出命令以从安全存储加载密钥并检索密钥对象的句柄.此句柄是抽象层,允许HSM安全地执行密钥操作,而不会暴露密钥材料.
关于您的项目,重要的是您不要简单地将HSM“推”到解决方案的某个位置以使其看起来安全.相反,要仔细思考系统的安全属性以及加密技术如何帮助您抵御攻击.一旦确定了攻击媒介(以及相关的加密防御),就要考虑哪种加密API可以支持您的用例.只有这样,您才能从支持该API的人那里选择最好的供应商.
根据我的经验,标准API仅适用于简单的安全系统.对于复杂项目,几乎总是需要使用特定供应商的专有API.在这种情况下,在确定真正满足您需求的产品之前,在供应商的支持和概念验证方面非常依赖.