Botan密码库中即将废弃的功能解析
botan Cryptography Toolkit 项目地址: https://gitcode.com/gh_mirrors/bo/botan
前言
Botan作为一个功能强大的密码学库,随着密码学标准的演进和安全需求的提升,会定期评估并淘汰一些不再符合现代安全标准或使用率低的功能。本文将详细解析Botan库中即将废弃的各项功能,帮助开发者及时调整代码,确保应用的安全性和兼容性。
废弃功能警告机制
Botan通过宏定义来标记废弃的函数和头文件,默认情况下会显示警告。如果希望禁用这些警告,可以在包含任何Botan头文件前定义BOTAN_NO_DEPRECATED_WARNINGS
宏。
注意:并非所有废弃功能都有对应的警告提示。
平台支持废弃项
- Windows系统支持:Windows 10之前的版本支持将被废弃
TLS协议废弃项
以下TLS协议特性将在未来主要版本中移除:
- 点压缩支持:TLS 1.3已移除该功能,为保持一致性,TLS 1.2也将移除
- 所有CBC模式密码套件:包括所有3DES套件,连带移除Encrypt-then-MAC扩展
- 所有DHE密码套件
- TLS 1.2的重协商支持
- 使用静态RSA密钥交换的所有密码套件
Credentials_Manager::psk()
方法:改为使用Credentials_Manager
中的专用方法
椭圆曲线相关废弃项
-
弱/少用曲线:
- 将完全移除的曲线:"secp160k1", "secp160r1", "secp160r2", "brainpool160r1", "secp224k1"
- 可能移除但可自定义添加的曲线:"secp192k1", "brainpool192r1"等
-
类型变更:
EC_Point
类型将被EC_AffinePoint
取代
-
参数限制:
- 移除显式ECC曲线参数和ImplicitCA编码参数支持
- 未来将禁止创建cofactor>1的
EC_Group
- 应用自定义椭圆曲线参数将受以下限制:
- 位长度192-512位且为32的倍数
- 521位Mersenne素数或X9.62 239位素数例外
- 素数必须≡3 mod 4
- 素数位长与阶数位长必须相等
-
编码格式:
- 移除对"hybrid"编码格式的支持
- 移除对EC恒等元素的编码/解码支持
废弃模块
以下模块将在未来版本中完全移除:
-
密码算法:
kyber_90s
:未纳入NIST ML-KEM标准dilithium_aes
:类似Kyber 90s情况gost_28147
:20年前已过时noekeon
:设计有趣但应用不广lion
:类似Noekeon
-
校验和:
adler32
:无密码学用途crc32
:无密码学用途
-
哈希函数:
gost_3411
:安全性存疑streebog
:S盒设计可疑md4
/md5
:已过时keccak
:非标准SHA-3实现
-
其他:
siphash
:仅支持64位输出x919_mac
:已过时dsa
:NIST不再推荐gost_3410
mce
:将被Classic McEliece取代shake_cipher
:仅影响作为流密码的使用cryptobox
:密码加密工具,已过时dlies
:已过时tpm
:仅支持TPM 1.2且测试不足
其他废弃功能
-
密码学原语接口:
PBKDF
类将被PasswordHash
和PasswordHashFamily
取代
-
密钥处理:
- 移除私钥到公钥的隐式转换
- 统一SM2算法名称(移除"SM2_Enc"/"SM2_Sig"区分)
-
签名算法:
- 简化DSA/ECDSA等算法的哈希指定方式
-
基础类:
- 移除
Buffered_Computation
基类
- 移除
-
安全限制:
- 移除GCM对64位标签的支持
- 移除所有<2048位的MODP组
- 移除所有预置DSA组
- 限制RSA公钥指数大小(≤2⁶⁴-1)
- 限制新RSA密钥长度为≥2048位且为1024的倍数
-
填充机制名称统一:
- 标准化各种公钥填充机制的名称
即将内部化的头文件
以下头文件未来将仅限库内部使用:
- PBKDF相关:
bcrypt_pbkdf.h
,pbkdf2.h
等 - 内部实现:
assert.h
,curve_gfp.h
等 - 工具类:
compiler.h
,mem_ops.h
,uuid.h
等
迁移建议
- 定期检查代码中是否使用了废弃功能
- 关注Botan的更新日志和发布说明
- 对于关键功能,考虑提前迁移到推荐替代方案
- 如有特殊用例依赖废弃功能,及时与开发团队沟通
通过及时了解和应对这些废弃变更,可以确保您的应用在Botan未来版本中保持兼容性和安全性。
botan Cryptography Toolkit 项目地址: https://gitcode.com/gh_mirrors/bo/botan
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考