Vydání kryptografické knihovny Botan 3.0.0, použitou v projektu NeoPG, fork GnuPG 2. Knihovna poskytuje širokou sbírku připravených primitiv používaných v protokolu TLS, certifikátech X.509, šifrách AEAD, modulech TPM, PKCS#11, hashování hesel a postkvantové kryptografii (podpisy založené na hashe a shoda klíčů založená na McEliece). Knihovna je napsaná v jazyce C++ a je dodávána pod licencí BSD.
Mezi změnami v novém vydání:
- V kódové základně je povoleno použití standardu C++20 (dříve byl používán C++11), a proto se zvyšují požadavky na překladače — pro sestavení je nyní potřeba alespoň GCC 11, Clang 14 nebo MSVC 2022. Byla ukončena podpora překladačů HP a Pathscale, stejně jako projektů Google NaCL a IncludeOS.
- Byla provedena významná změna, která narušuje zpětnou kompatibilitu. Bylo odstraněno mnoho zastaralých hlavičkových souborů, například specifických pro určité algoritmy (aes.h atd.). Byly odstraněny implementace funkcí a algoritmů, které byly dříve označeny jako zastaralé (CAST-256, MISTY1, Kasumi, DESX, XTEA, PBKDF1, MCEIES, CBC-MAC, Tiger, NEWHOPE, CECPQ1). Při generování entropie pro generátor pseudonáhodných čísel byla ukončena podpora použití /proc a /dev/random. Z API byly odstraněny některé třídy (např. Data_Store), struktury a výčty. Kde to bylo možné, bylo ukončeno vracení a používání holých ukazatelů.
- Byla přidána podpora protokolu TLS 1.3. Podpora TLS 1.0, TLS 1.1 a DTLS 1.0 byla ukončena. Z implementace TLS byla odstraněna podpora sad cipherů DSA, SRP, SEED, AES-128 OCB, CECPQ1, DHE_PSK a Camellia CBC, anonymních cipherů, hashů SHA-1.
- Byla přidána podpora algoritmu postkvantové kryptografie Kyber, odolného proti útokům na kvantovém počítači.
- Byla přidána podpora algoritmu postkvantové kryptografie Dilithium pro práci s digitálními podpisy.
- Byla přidána podpora hashe ve formátu bodu na eliptické křivce, používající techniku SSWU (draft-irtf-cfrg-hash-to-curve).
- Byla přidána podpora kryptografické hashovací funkce BLAKE2b.
- Bylo navrženo nové rozhraní T::new_object, které vrací unique_ptr místo holého ukazatele „T*“.
- Byly přidány nové funkce a API: X509_DN::DER_encode, Public_Key::get_int_field, ideal_granularity, requires_entire_message, SymmetricAlgorithm::has_keying_material. Byl přidán velký soubor nových funkcí pro použití v kódu jazyka C (C89).
- V implementaci algoritmu Argon2 byly využity instrukce AVX2.
- Byly zmenšeny velikosti tabulek v realizacích algoritmů Camellia, ARIA, SEED, DES a Whirlpool.
- Byla navržena nová realizace DES/3DES, chráněná proti většině tříd útoků pomocí bočních kanálů hodnotících stav cache.
- Realizace SHACAL2 byla optimalizována pro systémy založené na architekturách ARMv8 a POWER.
- Kód pro výpočet paritních bitů, transformace bcrypt/base64 a určení typu řetězce ASN.1 byl zbaven vyhledávání v tabulkách a nyní nezávisí na zpracovávaných datech (prováděno za stálý čas).
Zdroj: opennet.ru
