Botan (bahasa Jepang untuk bunga peony) adalah perpustakaan kriptografi C++ yang dirilis dengan izin BSD yang disederhanakan lisensi.
Tujuan Botan adalah menjadi pilihan terbaik untuk kriptografi di C++ dengan menawarkan alat yang diperlukan untuk mengimplementasikan berbagai sistem praktis, seperti protokol TLS, sertifikat X.509, cipher AEAD modern, dukungan perangkat keras PKCS#11 dan TPM, hashing kata sandi, dan pasca skema kripto kuantum. Pengikatan Python disertakan, dan beberapa pengikatan bahasa lainnya tersedia. Perpustakaan disertai dengan fitur-fiturnya
antarmuka baris perintah.
Lihat dokumentasi untuk informasi lebih lanjut tentang fitur yang disertakan.
Pengembangan dikoordinasikan di GitHub dan kontribusinya diterima. Jika Anda memerlukan bantuan, silakan buka terbitan di GitHub.
Jika Anda merasa menemukan masalah keamanan, lihat halaman keamanan untuk informasi kontak.
Rilis terbaru dari seri rilis Botan3 adalah
3.6.1
(mengatakan)dirilis pada 26-10-2024.
Rilis terbaru dari seri rilis Botan2 adalah
2.19.5
(mengatakan)dirilis pada 08-07-2024. Perlu diketahui bahwa Botan2 saat ini dijadwalkan akan mencapai akhir masa pakainya pada akhir tahun 2024.
Semua rilis ditandatangani dengan a kunci PGP. Lihat catatan rilis untuk apa yang baru. Botan juga tersedia melalui sebagian besar distribusi seperti Fedora, Debian, Arch dan Homebrew.
- TLS v1.2/v1.3, dan DTLS v1.2
- Ekstensi yang didukung mencakup tiket sesi, SNI, ALPN, stapel OCSP, CBC enkripsi lalu mac, dan rahasia master yang diperluas.
- Mendukung otentikasi menggunakan sertifikat atau kunci yang dibagikan sebelumnya (PSK)
- Mendukung enkripsi catatan dengan mode AEAD modern serta ciphersuite CBC lama.
- TLS 1.3 mendukung pertukaran kunci pasca-kuantum hibrid dengan ML-KEM/Kyber dan FrodoKEM
- Sertifikat X.509v3 serta pembuatan dan penanganan CRL
- Validasi jalur sertifikat PKIX, termasuk batasan nama.
- Pembuatan permintaan OCSP dan penanganan respons
- Pembuatan dan pemrosesan permintaan sertifikat PKCS #10
- Akses ke penyimpanan sertifikat sistem Windows, macOS dan Unix
- Penyimpanan sertifikat yang didukung database SQL
- Tanda tangan dan enkripsi RSA
- Perjanjian kunci DH, ECDH, X25519 dan X448
- Skema tanda tangan ECDSA, DSA, Ed25519, Ed448, ECGDSA, ECKCDSA, SM2, GOST 34.10
- Skema tanda tangan pasca-kuantum ML-DSA (Dilithium), SLH-DSA (SPHINCS+), HSS/LMS, XMSS
- Skema enkapsulasi kunci pasca-kuantum ML-KEM (Kyber), FrodoKEM, Classic McEliece
- Enkripsi ElGamal
- Skema padding OAEP, PSS, PKCS #1 v1.5, X9.31
- Mode sandi yang diautentikasi EAX, OCB, GCM, SIV, CCM, (X)ChaCha20Poly1305
- Mode sandi CTR, CBC, XTS, CFB, OFB
- Sandi blok AES, ARIA, Blowfish, Camellia, CAST-128, DES/3DES, IDEA, Lion, SEED, Serpent, SHACAL2, SM4, Threefish-512, Twofish
- Sandi aliran (X)ChaCha20, (X)Salsa20, SHAKE-128, RC4
- Fungsi hash SHA-1, SHA-2, SHA-3, MD5, RIPEMD-160, BLAKE2b/BLAKE2s, Skein-512, SM3, Streebog, Whirlpool
- Fungsi Output yang Dapat Diperpanjang (XOFs) SHAKE-128, SHAKE-256
- Skema hashing kata sandi PBKDF2, Argon2, Scrypt, bcrypt
- Kode otentikasi HMAC, CMAC, Poly1305, KMAC, SipHash, GMAC, X9.19 DES-MAC
- Checksum non-kriptografi Adler32, CRC24, CRC32
- Pembungkus API C++ PKCS #11 lengkap
- Antarmuka untuk akses perangkat TPM v1.2 dan v2.0
- API kompresi sederhana yang membungkus perpustakaan zlib, bzip2, dan lzma
- Pembungkus RNG untuk RNG sistem dan RNG perangkat keras
- HMAC_DRBG dan sistem pengumpulan entropi untuk RNG ruang pengguna
- Pertukaran kunci yang diautentikasi kata sandi SRP-6a
- Fungsi derivasi utama termasuk HKDF, KDF2, SP 800-108, SP 800-56A, SP 800-56C
- Algoritma HOTP dan TOTP
- Skema enkripsi pelestarian format FE1
- Batasan pembagian rahasia
- Klien kasar
- Pengkodean koreksi kesalahan maju yang kompatibel dengan Zfec
- Skema pengkodean termasuk hex, base32, base64 dan base58
- Pembungkus kunci NIST
- Aliran klien TLS yang kompatibel dengan Boost.Asio