randombit/botan
GitHub: randombit/botan
一个跨平台的 C++ 加密库,提供 TLS 协议、X.509 证书、后量子密码学等全面功能,适合构建生产级安全应用。
Stars: 3211 | Forks: 645
# Botan
Botan 是一个 C++ 加密库,采用宽松的 `Simplified BSD `_ 许可证发布。
Botan 的 `目标 `_ 是通过提供实现各种实用系统所需的工具,成为生产环境加密的最佳选择,例如 TLSv1.3、X.509 PKI、现代 AEAD 密码、支持 PKCS#11 和 TPM 硬件、内存困难型密码哈希以及后量子密码学。所有这些都由广泛的测试套件覆盖,包括用于检测侧信道的自动化系统。模块化构建系统允许以细粒度的方式启用或禁用功能,并且还支持合并构建(amalgamation builds)。
它开箱即用,提供 C++、C 和 Python API,并且还有其他几种 `语言绑定 `_ 可用。
该库附带了一个功能丰富的 `命令行界面 `_。请查阅 `文档 `_ 以获取更多信息。
开发工作在 `GitHub `__ 上协调进行,欢迎贡献。如果你需要帮助,请在 `GitHub `__ 上开一个 issue。如果你认为自己发现了一个安全问题,请参阅 `安全页面 `_ 获取联系方式。
|ci_status| |nightly_ci_status| |coverage| |ossfuzz| |repo| |ossf| |cii|
.. |ci_status| image:: https://github.com/randombit/botan/actions/workflows/ci.yml/badge.svg?branch=master
:target: https://github.com/randombit/botan/actions/workflows/ci.yml
:alt: CI status
.. |nightly_ci_status| image:: https://github.com/randombit/botan/actions/workflows/nightly.yml/badge.svg?branch=master
:target: https://github.com/randombit/botan/actions/workflows/nightly.yml
:alt: nightly CI status
.. |coverage| image:: https://img.shields.io/coverallsCoverage/github/randombit/botan?branch=master
:target: https://coveralls.io/github/randombit/botan
:alt: Coverage report
.. |ossfuzz| image:: https://oss-fuzz-build-logs.storage.googleapis.com/badges/botan.svg
:target: https://oss-fuzz.com/coverage-report/job/libfuzzer_asan_botan/latest
:alt: OSS-Fuzz status
.. |repo| image:: https://repology.org/badge/tiny-repos/botan.svg
:target: https://repology.org/project/botan/versions
:alt: Packaging status
.. |ossf| image:: https://api.securityscorecards.dev/projects/github.com/randombit/botan/badge
:target: https://securityscorecards.dev/viewer/?uri=github.com/randombit/botan
:alt: OSSF Scorecard
.. |cii| image:: https://bestpractices.coreinfrastructure.org/projects/531/badge
:target: https://bestpractices.coreinfrastructure.org/projects/531
:alt: CII Best Practices statement
## 版本发布
所有版本均使用 `PGP 密钥 `_ 签名。
请参阅 `发布说明 `_ 了解新特性。
Botan 也可以通过大多数 `发行版 `_ 获取,例如 Fedora、Debian、Arch 和 Homebrew。
## Botan3
Botan3 的新次要版本每季度发布一次,通常在 2 月、5 月、8 月和 11 月的第一个星期二。
Botan3 系列的最新版本是
`3.11.1 `_
`(sig) `__,
发布于 2026-03-31。
## Botan2
自 2025-01-01 起,Botan2 已达生命周期结束(EOL)。预计不会再有后续发布。
Botan2 系列的最新版本是
`2.19.5 `_
`(sig) `__,
发布于 2024-07-08。
## 内置功能
## 传输层安全 (TLS) 协议
* TLS v1.2/v1.3, 以及 DTLS v1.2
* 支持的扩展包括会话票证(session tickets)、SNI、ALPN、OCSP 装订(stapling)、encrypt-then-mac CBC 和扩展主密钥(extended master secret)。
* 支持使用证书或预共享密钥 (PSK) 进行认证
* 支持使用现代 AEAD 模式以及旧版 CBC 密码套件进行记录加密。
* TLS 1.3 支持使用 ML-KEM 或 FrodoKEM 的混合后量子密钥交换
## 公钥基础设施
* X.509v3 证书和 CRL 创建及处理
* PKIX 证书路径验证,包括名称约束
* OCSP 请求创建和响应处理
* PKCS #10 证书请求生成和处理
* 访问 Windows、macOS 和 Unix 系统证书存储
* SQL 数据库后端证书存储
## 公钥密码学
* RSA 签名和加密
* DH, ECDH, X25519 和 X448 密钥协商
* 椭圆曲线签名方案 ECDSA, Ed25519, Ed448, ECGDSA, ECKCDSA, SM2
* 后量子签名方案 ML-DSA (Dilithium), SLH-DSA (SPHINCS+), HSS/LMS, XMSS
* 后量子密钥封装方案 ML-KEM (Kyber), FrodoKEM, Classic McEliece
## 密码、哈希、MAC 和校验和
* 认证加密模式 EAX, OCB, GCM, SIV, CCM, (X)ChaCha20Poly1305
* 密码模式 CTR, CBC, XTS, CFB, OFB
* 分组密码 AES, ARIA, Blowfish, Camellia, CAST-128, DES/3DES, IDEA,
SEED, Serpent, SHACAL2, SM4, Threefish-512, Twofish
* 流密码 (X)ChaCha20, (X)Salsa20, RC4
* 哈希函数 SHA-1, SHA-2, SHA-3, RIPEMD-160, BLAKE2b/BLAKE2s, Skein-512, SM3, Whirlpool
* 密码哈希方案 Argon2, Scrypt, bcrypt, 以及 PBKDF2
* 认证代码 HMAC, CMAC, Poly1305, KMAC, GMAC
## 其他实用功能
* 完整的 C++ PKCS #11 API 封装
* 用于 TPM v2.0 设备访问的接口
* 封装 zlib、bzip2 和 lzma 库的简单压缩 API
* 用于系统 RNG、ESDM 和硬件 RNG 的 RNG 封装器
* 用于用户空间 RNG 的 HMAC_DRBG 和熵收集系统
* SRP-6a 密码认证密钥交换
* 密钥派生函数,包括 HKDF, KDF2, SP 800-108, SP 800-56A, SP 800-56C
* HOTP 和 TOTP 算法
* 格式保留加密方案 FE1
* 门限秘密共享
* Roughtime 客户端
* Zfec 兼容的前向纠错编码
* 编码方案,包括 hex, base32, base64 和 base58
* NIST 密钥封装
* Boost.Asio 兼容的 TLS 客户端流
* 24 位 OpenPGP CRC
标签:AEAD, Botan, BSD许可证, C++, CVE, Golang, HTTP工具, PKCS#11, Python绑定, TLS, TPM, X.509, 侧信道防护, 加密, 后量子密码学, 哈希, 安全编程, 密码学库, 密码算法, 开发库, 开源, 数字签名, 数据擦除, 文档结构分析, 漏洞扫描器, 网络安全, 逆向工具, 防御工具, 隐私保护