牡丹密码库 3.0.0 版

Botan 3.0.0 加密库现已可在 NeoPG 项目(GnuPG 2 的一个分支)中使用。该库提供了大量用于 TLS 协议、X.509 证书、AEAD 密码、TPM 模块的现成原语、PKCS#11、密码散列和后量子加密(基于散列的签名和基于 McEliece 的密钥协议)。 该库是用 C++ 编写的,并在 BSD 许可证下分发。

新版本的变化包括:

  • 代码库允许使用C++20标准(之前使用C++11);相应地,对编译器的要求也增加了——现在至少需要GCC 11、Clang 14或MSVC 2022来进行汇编。 HP 和 Pathscale 编译器以及 Google NaCL 和 IncludeOS 项目均已停止。
  • 所做的大部分更改违反了向后兼容性。 许多过时的头文件已被删除,例如特定于某些算法的头文件(aes.h 等)。 以前宣布过时的函数和算法的实现已被删除(CAST-256、MISTY1、Kasumi、DESX、XTEA、PBKDF1、MCEIES、CBC-MAC、Tiger、NEWHOPE、CECPQ1)。 当为伪随机数生成器生成熵时,我们停止使用 /proc 和 /dev/random。 某些类(例如 Data_Store)、结构和枚举已从 API 中删除。 已尽可能停止退货和使用裸露标志。
  • 添加了对 TLS 1.3 协议的支持。 对 TLS 1.0、TLS 1.1 和 DTLS 1.0 的支持已停止。 TLS 实现中删除了对 DSA、SRP、SEED、AES-128 OCB、CECPQ1、DHE_PSK 和 Camellia CBC 密码套件、匿名密码和 SHA-1 哈希的支持。
  • 添加了对 Kyber 后量子加密算法的支持,该算法可以抵抗量子计算机上的暴力破解。
  • 添加了对 Dilithium 后量子加密算法的支持,以处理数字签名。
  • 添加了对使用 SSWU (draft-irtf-cfrg-hash-to-curve) 技术的椭圆曲线点格式哈希的支持。
  • 添加了对 BLAKE2b 加密哈希函数的支持。
  • 提出了一个新的编程接口 T::new_object,它返回一个 unique_ptr 而不是一个裸露的“T*”指针。
  • 添加了新函数和 API:X509_DN::DER_encode、Public_Key::get_int_field、ideal_capsularity、requires_entire_message、SymmetricAlgorithm::has_keying_material。 添加了大量用于 C (C89) 代码的新函数。
  • Argon2算法的实现使用AVX2指令。
  • Camellia、ARIA、SEED、DES 和 Whirlpool 算法实现中的表大小已减小。
  • 提出了 DES/3DES 的新实现,可防止评估缓存状态的大多数类别的旁路攻击。
  • SHACAL2 实现针对基于 ARMv8 和 POWER 架构的系统进行了优化。
  • 用于计算奇偶校验位、bcrypt/base64 转换和确定 ASN.1 字符串类型的代码不再需要查找表,并且现在独立于正在处理的数据(以恒定时间运行)

来源: opennet.ru

添加评论