Wydano wydanie biblioteki kryptograficznej Botan 3.0.0, stosowanej w projekcie NeoPG, forku GnuPG 2. Biblioteka oferuje dużą kolekcję gotowych prymitywów używanych w protokole TLS, certyfikatach X.509, szyfrach AEAD, modułach TPM, PKCS#11, haszowaniu haseł oraz postkwantowej kryptografii (podpisy oparte na haszach i ustalanie kluczy oparte na McEliece). Biblioteka napisana jest w języku C++ i udostępniana na licencji BSD.
Wśród zmian w nowej wersji:
- W kodzie bazowym dopuszczono zastosowanie standardu C++20 (wcześniej używano C++11), w związku z tym zwiększono wymagania dotyczące kompilatorów — do kompilacji wymagane są teraz co najmniej GCC 11, Clang 14 lub MSVC 2022. Zakończono wsparcie dla kompilatorów HP i Pathscale, a także projektów Google NaCL i IncludeOS.
- Wprowadzono dużą ilość zmian naruszających zgodność wsteczną. Usunięto wiele przestarzałych plików nagłówkowych, na przykład specyficznych dla określonych algorytmów (aes.h itp.). Usunięto implementacje funkcji i algorytmów, które wcześniej zostały oznaczone jako przestarzałe (CAST-256, MISTY1, Kasumi, DESX, XTEA, PBKDF1, MCEIES, CBC-MAC, Tiger, NEWHOPE, CECPQ1). W tworzeniu entropii dla generatora liczb pseudolosowych zaprzestano używania /proc i /dev/random. Usunięto niektóre klasy (np. Data_Store), struktury i wyliczenia z API. W miarę możliwości zaprzestano zwracania i używania surowych wskaźników.
- Dodano wsparcie dla protokołu TLS 1.3. Zaprzestano wsparcia dla TLS 1.0, TLS 1.1 i DTLS 1.0. Z implementacji TLS usunięto wsparcie dla zestawów szyfrów DSA, SRP, SEED, AES-128 OCB, CECPQ1, DHE_PSK oraz Camellia CBC, szyfrów anonimowych oraz haszy SHA-1.
- Dodano wsparcie dla algorytmu postkwantowej kryptografii Kyber, odpornego na ataki przy użyciu komputerów kwantowych.
- Dodano wsparcie dla algorytmu postkwantowej kryptografii Dilithium do pracy z podpisami cyfrowymi.
- Dodano wsparcie dla haszowania w formacie punktu na krzywej eliptycznej, korzystającego z techniki SSWU (draft-irtf-cfrg-hash-to-curve).
- Dodano wsparcie dla kryptograficznej funkcji haszującej BLAKE2b.
- Zaprezentowano nowy interfejs programowania T::new_object, zwracający unique_ptr zamiast surowego wskaźnika „T*”.
- Dodano nowe funkcje i API: X509_DN::DER_encode, Public_Key::get_int_field, ideal_granularity, requires_entire_message, SymmetricAlgorithm::has_keying_material. Dodano dużą liczbę nowych funkcji do użycia w kodzie w języku C (C89).
- W implementacji algorytmu Argon2 wykorzystano instrukcje AVX2.
- Zmniejszono rozmiar tabel w implementacjach algorytmów Camellia, ARIA, SEED, DES i Whirlpool.
- Zaprezentowano nową implementację DES/3DES, zabezpieczoną przed większością klas ataków przez kanały boczne, oceniających stan pamięci podręcznej.
- Implementacja SHACAL2 została zoptymalizowana dla systemów opartych na architekturach ARMv8 i POWER.
- Kod obliczania bitów parzystości, konwersji bcrypt/base64 oraz identyfikacji typu ciągu ASN.1 został pozbawiony wyszukiwania w tabelach i teraz nie zależy od przetwarzanych danych (wykonywane w stałym czasie).
Źródło: opennet.ru
