ĂshtĂ« publikuar biblioteka kriptografike Botan 3.0.0, e pĂ«rdorur nĂ« projektin NeoPG, njĂ« fork i GnuPG 2. Biblioteka ofron njĂ« koleksion tĂ« gjerĂ« primitivesh tĂ« gatshme, qĂ« pĂ«rdoren nĂ« protokollin TLS, certifikatat X.509, shifrat AEAD, modulet TPM, PKCS#11, hashimin e fjalĂ«kalimeve dhe kriptografinĂ« post-kuantike (nĂ«nshkrime tĂ« bazuara nĂ« hash dhe dakordĂ«sim çelĂ«sash i bazuar nĂ« McEliece). Biblioteka Ă«shtĂ« shkruar nĂ« C++ dhe shpĂ«rndahet nĂ«n licencĂ«n BSD.
Mes ndryshimeve në versionin e ri:
- NĂ« bazĂ«n e kodit tani lejohet pĂ«rdorimi i standardit C++20 (mĂ« parĂ« pĂ«rdorej C++11), ndaj janĂ« rritur edhe kĂ«rkesat pĂ«r kompajlerĂ«t â pĂ«r ndĂ«rtim tani nevojiten tĂ« paktĂ«n GCC 11, Clang 14 ose MSVC 2022. MbĂ«shtetja pĂ«r kompajlerĂ«t HP dhe Pathscale, si edhe pĂ«r projektet Google NaCL dhe IncludeOS, Ă«shtĂ« ndĂ«rprerĂ«.
- Janë bërë shumë ndryshime që prishin përputhshmërinë mbrapsht. Janë hequr shumë skedarë header të vjetëruar, për shembull ata specifikë për algoritme të caktuara (aes.h e të ngjashëm). Janë hequr edhe implementimet e funksioneve dhe algoritmeve të shpallura më parë si të vjetruara (CAST-256, MISTY1, Kasumi, DESX, XTEA, PBKDF1, MCEIES, CBC-MAC, Tiger, NEWHOPE, CECPQ1). Gjatë krijimit të entropisë për gjeneratorin e numrave pseudo-rastësorë është ndërprerë përdorimi i /proc dhe /dev/random. Nga API janë hequr disa klasa (për shembull, Data_Store), struktura dhe enumerime. Aty ku ka qenë e mundur, është hequr dorë nga kthimi dhe përdorimi i pointerëve të zhveshur.
- ĂshtĂ« shtuar mbĂ«shtetja pĂ«r protokollin TLS 1.3. ĂshtĂ« ndĂ«rprerĂ« mbĂ«shtetja pĂ«r TLS 1.0, TLS 1.1 dhe DTLS 1.0. Nga implementimi i TLS Ă«shtĂ« hequr mbĂ«shtetja pĂ«r grupet e shifrave DSA, SRP, SEED, AES-128 OCB, CECPQ1, DHE_PSK dhe Camellia CBC, pĂ«r shifrat anonime dhe pĂ«r hash-et SHA-1.
- ĂshtĂ« shtuar mbĂ«shtetja pĂ«r algoritmin e kriptografisĂ« post-kuantike Kyber, rezistent ndaj sulmeve me forcĂ« brute nĂ« njĂ« kompjuter kuantik.
- ĂshtĂ« shtuar mbĂ«shtetja pĂ«r algoritmin e kriptografisĂ« post-kuantike Dilithium pĂ«r punĂ« me nĂ«nshkrime dixhitale.
- ĂshtĂ« shtuar mbĂ«shtetja pĂ«r hashimin nĂ« formatin e pikĂ«s nĂ« njĂ« kurbĂ« eliptike, qĂ« pĂ«rdor teknikĂ«n SSWU (draft-irtf-cfrg-hash-to-curve).
- ĂshtĂ« shtuar mbĂ«shtetja pĂ«r funksionin kriptografik hash BLAKE2b.
- ĂshtĂ« propozuar njĂ« ndĂ«rfaqe e re programimi T::new_object, e cila kthen unique_ptr nĂ« vend tĂ« pointerit tĂ« zhveshur «T*».
- JanĂ« shtuar funksione dhe API tĂ« reja: X509_DN::DER_encode, Public_Key::get_int_field, ideal_granularity, requires_entire_message, SymmetricAlgorithm::has_keying_material. ĂshtĂ« shtuar gjithashtu njĂ« grup i madh funksionesh tĂ« reja pĂ«r pĂ«rdorim nĂ« kodin nĂ« gjuhĂ«n C (C89).
- Në implementimin e algoritmit Argon2 përdoren instruksionet AVX2.
- ĂshtĂ« zvogĂ«luar madhĂ«sia e tabelave nĂ« implementimet e algoritmeve Camellia, ARIA, SEED, DES dhe Whirlpool.
- ĂshtĂ« propozuar njĂ« implementim i ri i DES/3DES, i mbrojtur nga shumica e klasave tĂ« sulmeve pĂ«rmes kanaleve anĂ«sore qĂ« vlerĂ«sojnĂ« gjendjen e cache-it.
- Implementimi i SHACAL2 është optimizuar për sisteme të bazuara në arkitekturat ARMv8 dhe POWER.
- Kodi për llogaritjen e biteve të paritetit, shndërrimin bcrypt/base64 dhe përcaktimin e llojit të vargut ASN.1 është çliruar nga kërkimi në tabela dhe tani nuk varet nga të dhënat që përpunohen (ekzekutohet në kohë konstante)
Burimi: opennet.ru
