کتابخانه رمزنگاری Botan 3.0.0 که توسط پروژه NeoPG استفاده میشود، فورکی از GnuPG 2، اکنون در دسترس است. این کتابخانه مجموعه بزرگی از اولیههای خارج از جعبه مورد استفاده در پروتکل TLS، گواهیهای X.509، AEAD را ارائه میکند. رمزها، ماژولهای TPM، PKCS#11، هش رمز عبور و رمزنگاری پس کوانتومی (امضاهای مبتنی بر هش و توافقنامه کلید مبتنی بر مکالیس). این کتابخانه به زبان C++ نوشته شده است و تحت مجوز BSD مجوز دارد.
از جمله تغییرات نسخه جدید:
- پایگاه کد مجاز به استفاده از استاندارد C++20 است (قبلاً از C++11 استفاده می شد)، به ترتیب، الزامات کامپایلرها افزایش یافته است - حداقل GCC 11، Clang 14 یا MSVC 2022 اکنون برای مونتاژ مورد نیاز است. پشتیبانی برای کامپایلرهای HP و Pathscale و همچنین پروژه های Google NaCL و IncludeOS متوقف شده اند.
- بخش بزرگی از تغییراتی که سازگاری رو به عقب را نقض می کند، ایجاد شده است. بسیاری از فایلهای هدر منسوخ، مانند فایلهای مخصوص الگوریتمهای خاص (aes.h و غیره) را حذف کرد. اجرای توابع و الگوریتمهایی که قبلاً منسوخ شده بودند (CAST-256، MISTY1، Kasumi، DESX، XTEA، PBKDF1، MCEIES، CBC-MAC، Tiger، NEWHOPE، CECPQ1) حذف شد. هنگام ایجاد آنتروپی برای مولد اعداد شبه تصادفی، استفاده از /proc و /dev/random متوقف شده است. برخی از کلاس ها (به عنوان مثال، Data_Store)، ساختارها و شمارش ها از API حذف شده اند. بازگشت و استفاده از نشانگرهای خالی در صورت امکان متوقف شده است.
- پشتیبانی از پروتکل TLS 1.3 اضافه شده است. پشتیبانی از TLS 1.0، TLS 1.1 و DTLS 1.0 حذف شده است. پشتیبانی از مجموعههای رمز DSA، SRP، SEED، AES-128 OCB، CECPQ1، DHE_PSK و Camellia CBC، رمزهای ناشناس، هشهای SHA-1 از اجرای TLS حذف شده است.
- پشتیبانی از الگوریتم رمزنگاری پس کوانتومی Kyber اضافه شده است که در برابر انتخاب در رایانه کوانتومی مقاوم است.
- پشتیبانی از الگوریتم رمزنگاری پس کوانتومی Dilithium برای کار با امضای دیجیتال اضافه شده است.
- با استفاده از تکنیک SSWU (draft-irtf-cfrg-hash-to-curve) پشتیبانی از هش کردن منحنی نقطه روی بیضی اضافه شد.
- پشتیبانی از عملکرد هش رمزنگاری BLAKE2b اضافه شده است.
- API جدید پیشنهادی T::new_object با بازگشت unique_ptr به جای نشانگر "T*" خالی.
- توابع و APIهای جدید اضافه شده است: X509_DN::DER_encode، Public_Key::get_int_field، ideal_granularity، requires_entire_message، Symmetric Algorithm::has_keying_material. مجموعه بزرگی از توابع جدید برای استفاده در کد C (C89) اضافه شده است.
- پیاده سازی الگوریتم Argon2 از دستورالعمل های AVX2 استفاده می کند.
- کاهش اندازه جدول در اجراهای Camellia، ARIA، SEED، DES و Whirlpool.
- یک پیادهسازی جدید از DES/3DES پیشنهاد شده است که در برابر بیشتر کلاسهای حملات کانال جانبی که وضعیت حافظه پنهان را ارزیابی میکنند محافظت میشود.
- پیاده سازی SHACAL2 برای سیستم های مبتنی بر معماری های ARMv8 و POWER بهینه شده است.
- کد محاسبه بیتهای برابری، تبدیل bcrypt / base64 و تعیین نوع رشته ASN.1 از جستجوی جدول خالی است و اکنون مستقل از دادههای در حال پردازش است (زمان ثابت انجام میشود)
منبع: opennet.ru