A fost lansată versiunea 3.0.0 a bibliotecii criptografice Botan, utilizată în proiectul NeoPG, un fork al GnuPG 2. Biblioteca oferă o mare colecție de primitive gata făcute, utilizate în protocolul TLS, certificatele X.509, schemele de criptare AEAD, modulele TPM, PKCS#11, hashing-ul parolelor și criptografia post-cuantică (semnături bazate pe hash și acordarea cheilor bazată pe McEliece). Biblioteca este scrisă în C++ și este livrată sub licența BSD.
Printre modificările din noua versiune:
- În codul sursă este permisă utilizarea standardului C++20 (anterior se folosea C++11), astfel cerințele pentru compilatoare au fost ridicate — pentru compilare sunt necesare acum cel puțin GCC 11, Clang 14 sau MSVC 2022. Suportul pentru compilatoarele HP și Pathscale, precum și pentru proiectele Google NaCL și IncludeOS a fost oprit.
- Au fost aduse o serie de modificări care întrerup compatibilitatea inversă. Au fost eliminate multe fișiere de antet învechite, de exemplu, specifice anumitor algoritmi (aes.h etc.). Au fost eliminate implementările funcțiilor și algoritmilor care fuseseră anterior declarate învechite (CAST-256, MISTY1, Kasumi, DESX, XTEA, PBKDF1, MCEIES, CBC-MAC, Tiger, NEWHOPE, CECPQ1). La generarea entropiei pentru generatorul de numere pseudo-aleatoare, nu se mai folosește /proc și /dev/random. Din API au fost eliminate unele clase (de exemplu, Data_Store), structuri și enumerări. Atunci când este posibil, s-a oprit returnarea și utilizarea pointerilor brute.
- A fost adăugată suportul pentru protocolul TLS 1.3. Suportul pentru TLS 1.0, TLS 1.1 și DTLS 1.0 a fost oprit. Din implementarea TLS a fost eliminat suportul pentru seturi de criptare DSA, SRP, SEED, AES-128 OCB, CECPQ1, DHE_PSK și Camellia CBC, criptarea anonimă și hash-urile SHA-1.
- A fost adăugată suportul pentru algoritmul de criptografie post-cuantică Kyber, rezistent la atacurile cu calculatoare cuantice.
- A fost adăugată suportul pentru algoritmul de criptografie post-cuantică Dilithium pentru lucrul cu semnături digitale.
- A fost adăugată suportul pentru hashing-ul în format punct pe o curbă eliptică, utilizând tehnica SSWU (draft-irtf-cfrg-hash-to-curve).
- A fost adăugată suportul pentru funcția de hash criptografic BLAKE2b.
- A fost propus un nou API T::new_object, care returnează unique_ptr în loc de pointer brut «T*».
- Au fost adăugate funcții și API-uri noi: X509_DN::DER_encode, Public_Key::get_int_field, ideal_granularity, requires_entire_message, SymmetricAlgorithm::has_keying_material. A fost adăugat un set mare de funcții noi pentru utilizarea în codul C (C89).
- În implementarea algoritmului Argon2 au fost utilizate instrucțiuni AVX2.
- Dimensiunea tabelelor pentru implementările algoritmilor Camellia, ARIA, SEED, DES și Whirlpool a fost redusă.
- O nouă implementare a DES/3DES a fost propusă, protejată împotriva majorității claselor de atacuri prin canale laterale care evaluează starea cache-ului.
- Implementarea SHACAL2 a fost optimizată pentru sisteme bazate pe arhitecturi ARMv8 și POWER.
- Codul pentru calcularea bitilor de paritate, transformarea bcrypt/base64 și identificarea tipului de șir ASN.1 a fost eliminat din căutarea în tabele și acum nu depinde de datele procesate (se execută în timp constant).
Sursa: opennet.ro
