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, 侧信道防护, 加密, 后量子密码学, 哈希, 安全编程, 密码学库, 密码算法, 开发库, 开源, 数字签名, 数据擦除, 文档结构分析, 漏洞扫描器, 网络安全, 逆向工具, 防御工具, 隐私保护