我制作了一个非常基本的 Soft-HSM - 仅用于个人学习目的。我想给它添加一个 PKCS#11 接口。我在哪里可以了解这一点,或者也许可以找到一些已经为学习而编写的开源内容?
我意识到这可能只是因为提出这个问题(安全性差等)而被否决,但我想确保它严格用于学习目的。
您首先需要熟悉 PKCS#11 规范。我在一个地方创建了 git 存储库PKCS11-SPECS及其所有版本。我个人认为 PKCS#11 v2.20 是最后一个“可用”版本,因为在以后的版本中,作者删除了对于开发可互操作 PKCS#11 库(会话生命周期等)的任何人来说至关重要的重要部分。我警告他们要删除这些部分,但他们似乎并不在意。因此,IMO PKCS#11 v2.20 是您最好的选择,除非您需要使用 v2.20 中不存在的其他一些闪亮的新算法。
我的另一个您可能会觉得有用的项目是EMPTY-PKCS11。它是以最简单的方式实现 PKCS#11 v2.20 API 的简约 C 库 - 除了C_GetFunctionList
函数返回CKR_FUNCTION_NOT_SUPPORTED
返回值之外的所有 PKCS#11 函数。它已经在多个桌面和移动平台上进行了测试,因此可以用作开发便携式 PKCS#11 库的轻量级框架。
之后,您还可以查看PKCS11-MOCK,它是另一个简约的 PKCS#11 v2.20 库。它不是一个真正的加密模块,而只是一个专门为我的其他一些项目的单元测试而设计的虚拟模拟对象。
我希望这些项目可以成为您学习过程中坚实的起点。