开源之夏-9
这次是在整理SoftSDF的迁移。
想办法了解这个项目,把它载入到TongSuo体系。
softsdfinit
我发现softsdfinit没有ldd到libsoftsdf.so,为什么会这样?
是的,softsdfinit
和 SDF 软实现(如 libsoftsdf.so
)是两回事,各自作用不同:
softsdfinit
是一个初始化和密钥生成工具,用于生成 KEK、SM2 密钥对等文件,模拟硬件设备的初始化过程。它只负责密钥的生成和存储,不提供 SDF 标准接口。SDF 软实现(如
libsoftsdf.so
)是一个实现了 SDF 标准接口的动态库,供上层 SDF 客户端(如中间件、业务系统)加载和调用,实现加解密、签名、密钥管理等功能。它会读取softsdfinit
生成的密钥文件,作为自己的密钥存储。
总结:softsdfinit
负责“造钥匙”,libsoftsdf.so
负责“用钥匙办事”,两者配合模拟真实 SDF 设备的完整流程。
之所以要有 softsdfinit
这样的工具单独做密钥生成,主要有以下原因:
模拟硬件设备初始化流程
真实的 SDF 硬件设备(如密码机、加密卡)在首次使用时,通常需要初始化密钥(如 KEK、SM2 密钥对等),这些密钥会被安全地存储在设备内部。SoftSDF 作为软件模拟实现,也需要有初始化密钥的过程。密钥与设备分离
SDF 动态库(如libsoftsdf.so
)只实现接口和算法逻辑,密钥数据(KEK、SM2 密钥对等)需要单独生成和存储。这样可以让密钥管理更灵活,也便于密钥的备份、迁移和恢复。安全性和可控性
通过专门的初始化工具生成密钥,可以控制密钥生成的参数、口令保护等,避免密钥在运行时被意外覆盖或泄露。便于测试和部署
在不同环境下部署 SoftSDF 时,可以用softsdfinit
工具快速生成一套新的密钥文件,方便测试和初始化。符合 SDF 标准流程
SDF 标准要求设备具备密钥生成、导入、导出等管理能力。softsdfinit
工具就是对这些管理能力的模拟和实现。
总结:softsdfinit
的作用是模拟真实 SDF 设备的密钥初始化流程,生成并管理密钥文件,使 SoftSDF 能像硬件设备一样被安全、规范地使用。