OpenSSL 3.0.0 Kriptoqrafik Kitabxana Buraxılışı

Üç illik inkişafdan və 19 sınaq buraxılışından sonra SSL/TLS protokollarının və müxtəlif şifrələmə alqoritmlərinin tətbiqi ilə OpenSSL 3.0.0 kitabxanası buraxıldı. Yeni filial API və ABI səviyyəsində geriyə uyğunluğu pozan dəyişiklikləri əhatə edir, lakin dəyişikliklər OpenSSL 1.1.1-dən köçürmək üçün yenidən qurulma tələb edən əksər proqramların işinə təsir etməyəcək. OpenSSL 1.1.1-in əvvəlki filialı 2023-cü ilin sentyabrına qədər dəstəklənəcək.

Versiya nömrəsində əhəmiyyətli dəyişiklik ənənəvi “Major.Minor.Patch” nömrələnməsinə keçidlə bağlıdır. Bundan sonra versiya nömrəsindəki birinci rəqəm (Major) yalnız API/ABI səviyyəsində uyğunluq pozulduqda, ikinci (Minor) isə API/ABI dəyişdirilmədən funksionallıq artırıldıqda dəyişəcək. Düzəliş yeniləmələri üçüncü rəqəmə (Patch) dəyişdirilməklə çatdırılacaq. 3.0.0-dən dərhal sonra 1.1.1 rəqəmi 2.x nömrələməsinin istifadə edildiyi OpenSSL üçün hazırda hazırlanmaqda olan FIPS modulu ilə üst-üstə düşməmək üçün seçilmişdir.

Layihə üçün ikinci mühüm dəyişiklik ikili lisenziyadan (OpenSSL və SSLeay) Apache 2.0 lisenziyasına keçid oldu. Əvvəlki mülkiyyət OpenSSL lisenziyası köhnə Apache 1.0 lisenziyasının mətninə əsaslanırdı və OpenSSL kitabxanalarından istifadə edərkən marketinq materiallarında OpenSSL-in açıq-aydın qeyd edilməsini, həmçinin OpenSSL məhsulun bir hissəsi kimi təqdim edildiyi təqdirdə xüsusi bildirişi tələb edirdi. Bu tələblər köhnə lisenziyanı GPL ilə uyğun gəlmir, GPL lisenziyalı layihələrdə OpenSSL-dən istifadəni çətinləşdirir. Bu uyğunsuzluğu aradan qaldırmaq üçün GPL layihələri xüsusi lisenziya müqavilələrindən istifadə etməyə məcbur oldular, burada GPL-in əsas mətni tətbiqin OpenSSL kitabxanası ilə əlaqələndirilməsinə açıq şəkildə icazə verən və GPL tələblərinin OpenSSL ilə əlaqə üçün müraciət edin.

OpenSSL 1.1.1 filialı ilə müqayisədə, OpenSSL 3.0.0 7500 tərtibatçının töhfə verdiyi 350-dən çox dəyişiklik əlavə etdi. OpenSSL 3.0.0-ın əsas yenilikləri:

  • FIPS 140-2 təhlükəsizlik standartına uyğun kriptoqrafik alqoritmlərin tətbiqi də daxil olmaqla yeni FIPS modulu təklif olunub (modulun sertifikatlaşdırma prosesinin bu ay başlaması planlaşdırılır və gələn il FIPS 140-2 sertifikatının verilməsi gözlənilir). Yeni moduldan istifadə etmək çox asandır və onu bir çox proqrama qoşmaq konfiqurasiya faylını dəyişdirməkdən daha çətin olmayacaq. Varsayılan olaraq, FIPS modulu qeyri-aktivdir və enable-fips seçiminin aktiv edilməsini tələb edir.
  • libcrypto mühərriklər konsepsiyasını əvəz edən qoşula bilən provayderlər konsepsiyasını həyata keçirir (ENGINE API köhnəlmişdir). Provayderlərin köməyi ilə siz şifrələmə, şifrənin açılması, açarın yaradılması, MAC hesablanması, rəqəmsal imzaların yaradılması və yoxlanılması kimi əməliyyatlar üçün alqoritmlərin öz tətbiqlərini əlavə edə bilərsiniz. Həm yenilərini birləşdirmək, həm də artıq dəstəklənən alqoritmlərin alternativ tətbiqlərini yaratmaq mümkündür (standart olaraq, OpenSSL-də quraşdırılmış provayder indi hər bir alqoritm üçün istifadə olunur).
  • CA serverindən sertifikatlar tələb etmək, sertifikatları yeniləmək və sertifikatları ləğv etmək üçün istifadə edilə bilən Sertifikat İdarəetmə Protokolu (RFC 4210) üçün əlavə dəstək. CMP ilə iş CRMF formatını (RFC 4211) və HTTP/HTTPS (RFC 6712) vasitəsilə sorğuların göndərilməsini də dəstəkləyən yeni openssl-cmp yardım proqramından istifadə etməklə həyata keçirilir.
  • HTTP və HTTPS protokolları üçün GET və POST üsullarını dəstəkləyən, sorğunun yönləndirilməsini, proksi vasitəsilə işləməyi, ASN.1 kodlaşdırmasını və fasilə emalını dəstəkləyən tam hüquqlu müştəri tətbiq edilib.
  • Saxta əlavələrin yeni tətbiqlərini əlavə etməyi asanlaşdırmaq üçün yeni EVP_MAC (Message Authentication Code API) əlavə edildi.
  • Açarların yaradılması üçün yeni proqram interfeysi təklif olunur - KDF və PRF-nin yeni tətbiqlərinin əlavə edilməsini asanlaşdıran EVP_KDF (Key Derivation Function API). Scrypt, TLS1 PRF və HKDF alqoritmlərinin mövcud olduğu köhnə EVP_PKEY API, EVP_KDF və EVP_MAC API-lərinin üstündə tətbiq olunan təbəqə şəklində yenidən işlənmişdir.
  • TLS protokolunun tətbiqi əməliyyatları sürətləndirmək üçün Linux nüvəsinə daxil edilmiş TLS müştəri və serverindən istifadə etmək imkanı verir. Linux nüvəsi tərəfindən təmin edilən TLS tətbiqini aktivləşdirmək üçün siz "SSL_OP_ENABLE_KTLS" seçimini və ya "enable-ktls" parametrini aktivləşdirməlisiniz.
  • Yeni alqoritmlər üçün əlavə dəstək:
    • Açar generasiya alqoritmləri (KDF) “SINGLE STEP” və “SSH”dir.
    • Simulyasiya edilmiş daxiletmə alqoritmləri (MAC) “GMAC” və “KMAC”dır.
    • RSA Açar Enkapsulyasiya Alqoritmi (KEM) "RSASVE".
    • Şifrələmə alqoritmi "AES-SIV" (RFC-8452).
    • Açarları şifrələmək üçün AES alqoritmindən istifadə edərək tərs şifrələmə dəstəyi ilə EVP API-yə zənglər əlavə edildi (Açar Sarma): “AES-128-WRAP-INV”, “AES-192-WRAP-INV”, “AES-256-WRAP- INV” , “AES-128-WRAP-PAD-INV”, “AES-192-WRAP-PAD-INV” və “AES-256-WRAP-PAD-INV”.
    • EVP API-yə şifrəli mətn borclanması (CTS) alqoritmləri üçün əlavə dəstək: “AES-128-CBC-CTS”, “AES-192-CBC-CTS”, “AES-256-CBC-CTS”, “CAMELLIA-128-CBC -CTS” ", "CAMELLIA-192-CBC-CTS" və "CAMELLIA-256-CBC-CTS".
    • CAdES-BES rəqəmsal imzaları üçün əlavə dəstək (RFC 5126).
    • AES_GCM, AES GCM rejimindən istifadə edərək autentifikasiya edilmiş və şifrələnmiş mesajların şifrələnməsini və deşifrəsini aktivləşdirmək üçün AuthEnvelopedData (RFC 5083) parametrini tətbiq edir.
  • PKCS7_get_octet_string və PKCS7_type_is_digər funksiyaları ictimai API-yə əlavə edilmişdir.
  • PKCS#12 API, PKCS12_create() funksiyasında istifadə olunan standart alqoritmləri PBKDF2 və AES ilə əvəz edir və MAC hesablanması üçün SHA-256 alqoritmindən istifadə edir. Keçmiş davranışı bərpa etmək üçün "-legacy" seçimi təmin edilir. PKCS12_add_key_ex().PKCS5_create_ex() və PKCS8_decrypt_skey_ex() kimi PKCS12_*_ex, PKCS12_*_ex və PKCS12_*_ex-ə çoxlu sayda yeni uzadılmış zənglər əlavə edildi.
  • Windows platforması üçün SRWLock mexanizmindən istifadə edərək ip sinxronizasiyasına dəstək əlavə edilmişdir.
  • Enable-trace parametri vasitəsilə aktivləşdirilmiş yeni izləmə API əlavə edildi.
  • EVP_PKEY_public_check() və EVP_PKEY_param_check() funksiyalarında dəstəklənən açarların çeşidi genişləndirilib: RSA, DSA, ED25519, X25519, ED448 və X448.
  • RAND_DRBG alt sistemi silindi, EVP_RAND API ilə əvəz olundu. FIPS_mode() və FIPS_mode_set() funksiyaları silindi.
  • API-nin əhəmiyyətli bir hissəsi köhnəlmişdir - layihə kodunda köhnəlmiş zənglərdən istifadə kompilyasiya zamanı xəbərdarlıqlarla nəticələnəcəkdir. Alqoritmlərin müəyyən tətbiqləri ilə əlaqəli aşağı səviyyəli API-lər (məsələn, AES_set_encrypt_key və AES_encrypt) rəsmi olaraq köhnəlmiş elan edilmişdir. OpenSSL 3.0.0-da rəsmi dəstək indi yalnız fərdi alqoritm növlərindən çıxarılmış yüksək səviyyəli EVP API-ləri üçün təmin edilir (bu API-yə, məsələn, EVP_EncryptInit_ex, EVP_EncryptUpdate və EVP_EncryptFinal funksiyaları daxildir). Köhnəlmiş API-lər növbəti əsas buraxılışlardan birində silinəcək. EVP API vasitəsilə mövcud olan MD2 və DES kimi köhnə alqoritmlərin tətbiqləri defolt olaraq qeyri-aktiv olan ayrıca "miras" moduluna köçürülüb.
  • Sənədlər və sınaq dəsti əhəmiyyətli dərəcədə genişləndirildi. 1.1.1 bölməsi ilə müqayisədə sənədləşmənin həcmi 94%, test paketinin kodunun ölçüsü isə 54% artmışdır.

Mənbə: opennet.ru

Добавить комментарий