发布网友 发布时间:2024-05-07 00:29
共1个回答
热心网友 时间:2024-08-28 01:22
欢迎来到OpenSSL 3.0.0设计的深度解读,我们将聚焦于FIPS模块的精髓。由蚂蚁集团的开发者金九(花名:王祖熙)精心翻译,本文专为Tongsuo密码库开发者设计,深入探讨密码学的核心组件。每期我们将逐一剖析,这周我们就来深入探讨FIPS模块的运作机制和关键特性。
FIPS模块,版本号FIPS-Mole-3.0,是经过FIPS 140-2严格验证的加密模块,其设计旨在动态加载,非FIPS算法由默认Provider提供。在FIPS模式下,所有操作必须严格遵循FIPS算法,任何变更都需要通过实验室验证。在编译时,我们通过更新fips.checksum确保代码的完整性和一致性,这个过程是make update的一部分,不容忽视。
在FIPS模式的边界之外,处理FIPS属性尤为重要。FIPS模式的切换逻辑隐藏在模块内部,确保了严格的隔离。
密码安全至关重要,密码官(CO)负责软件安装,用户认证非强制。FIPS 140-2的第4.4节定义了有限状态模型,包括自检、错误状态,如自检失败和DRBG错误。
从初始化到运行,FIPS模块经历了电源关闭、初始化、完整性检查、自检、运行、错误和关闭等阶段。一旦遇到错误,如初始化时检测到问题,模块会自动进入错误状态。
FIPS模块提供运行状态指示(0或1)、密码服务(如HMAC、SHA、加密),以及自检功能。运行状态决定密码服务的可用性,自检仅在无其他服务时执行,失败时将被禁用。
包括POST测试(验证模块完整性和算法性能)和运行时测试,POST在初始化时自动运行,需依赖库路径和特定信息。
新版本的fips应用增加了安装和检查功能,依赖于DEP确保所有测试的执行,同时设置模块变量。
构建过程中,通过HMAC_SHA256计算并保存校验和,存于独立文件,使用预设密钥保证唯一性。
KAT工具用于检测模块故障,不验证实现。测试包括AES_128_GCM、TDES_CBC等,以及哈希算法和签名验证,如DSA_2048和RSA_SHA256。
必须遵循FIPS 186-4要求,如支持RSA FIPS 186-4密钥生成,以及支持成对一致性测试。DH参数根据SP 800-131A的规定,确保112位及以上安全强度。
IV生成遵循特定策略,如TLS或NIST SP 800-38D,IV由DRBG生成并保证至少96位熵。FIPS模式下,IV设置需谨慎处理,以防止潜在安全漏洞。
模块的卸载过程确保CSP对象清零,以维护FIPS模块的纯净性。所有FIPS内操作必须在模块的封装范围内进行,保持一致性。
S模块虽依赖FIPS模块,但OpenSSL 3.0设计严格*跨模块使用。EVP_DigestSign等函数明确禁止混合FIPS和非FIPS算法,确保了模块间的清晰区分。