Rilis Perpustakaan Kriptografi OpenSSL 3.0.0

Setelah tiga tahun pengembangan dan 19 rilis pengujian, pustaka OpenSSL 3.0.0 dirilis dengan penerapan protokol SSL/TLS dan berbagai algoritma enkripsi. Cabang baru ini mencakup perubahan yang merusak kompatibilitas mundur di tingkat API dan ABI, namun perubahan tersebut tidak akan memengaruhi pengoperasian sebagian besar aplikasi yang memerlukan pembangunan kembali untuk bermigrasi dari OpenSSL 1.1.1. Cabang OpenSSL 1.1.1 sebelumnya akan didukung hingga September 2023.

Perubahan signifikan pada nomor versi disebabkan oleh transisi ke penomoran tradisional “Major.Minor.Patch”. Mulai sekarang, digit pertama (Mayor) pada nomor versi hanya akan berubah jika kompatibilitas rusak pada tingkat API/ABI, dan digit kedua (Minor) akan berubah ketika fungsionalitas ditingkatkan tanpa mengubah API/ABI. Update korektif akan dikirimkan dengan perubahan digit ketiga (Patch). Nomor 3.0.0 tepat setelah 1.1.1 dipilih untuk menghindari tumpang tindih dengan modul FIPS yang sedang dikembangkan untuk OpenSSL, yang menggunakan penomoran 2.x.

Perubahan penting kedua untuk proyek ini adalah transisi dari lisensi ganda (OpenSSL dan SSLeay) ke lisensi Apache 2.0. Lisensi OpenSSL kepemilikan sebelumnya didasarkan pada teks lisensi Apache 1.0 yang lama dan memerlukan penyebutan OpenSSL secara eksplisit dalam materi pemasaran saat menggunakan perpustakaan OpenSSL, serta pemberitahuan khusus jika OpenSSL disediakan sebagai bagian dari produk. Persyaratan ini membuat lisensi lama tidak kompatibel dengan GPL, sehingga menyulitkan penggunaan OpenSSL dalam proyek berlisensi GPL. Untuk mengatasi ketidakcocokan ini, proyek GPL terpaksa menggunakan perjanjian lisensi khusus di mana teks utama GPL dilengkapi dengan klausul yang secara eksplisit mengizinkan aplikasi untuk dihubungkan dengan perpustakaan OpenSSL dan menyebutkan bahwa persyaratan GPL tidak. berlaku untuk menghubungkan dengan OpenSSL.

Dibandingkan dengan cabang OpenSSL 1.1.1, OpenSSL 3.0.0 menambahkan lebih dari 7500 perubahan yang disumbangkan oleh 350 pengembang. Inovasi utama OpenSSL 3.0.0:

  • Modul FIPS baru telah diusulkan, termasuk penerapan algoritma kriptografi yang sesuai dengan standar keamanan FIPS 140-2 (proses sertifikasi modul dijadwalkan akan dimulai bulan ini, dan sertifikasi FIPS 140-2 diharapkan tahun depan). Modul baru ini jauh lebih mudah digunakan dan menghubungkannya ke banyak aplikasi tidak lebih sulit daripada mengubah file konfigurasi. Secara default, modul FIPS dinonaktifkan dan memerlukan opsi aktifkan-fips untuk diaktifkan.
  • libcrypto mengimplementasikan konsep penyedia pluggable, yang menggantikan konsep mesin (ENGINE API sudah tidak digunakan lagi). Dengan bantuan penyedia, Anda dapat menambahkan implementasi algoritme Anda sendiri untuk operasi seperti enkripsi, dekripsi, pembuatan kunci, perhitungan MAC, pembuatan dan verifikasi tanda tangan digital. Dimungkinkan untuk menghubungkan yang baru dan membuat implementasi alternatif dari algoritma yang sudah didukung (secara default, penyedia yang ada di dalam OpenSSL sekarang digunakan untuk setiap algoritma).
  • Menambahkan dukungan untuk Certificate Management Protocol (RFC 4210), yang dapat digunakan untuk meminta sertifikat dari server CA, memperbarui sertifikat, dan mencabut sertifikat. Bekerja dengan CMP dilakukan menggunakan utilitas openssl-cmp baru, yang juga mendukung format CRMF (RFC 4211) dan mengirimkan permintaan melalui HTTP/HTTPS (RFC 6712).
  • Klien lengkap untuk protokol HTTP dan HTTPS telah diimplementasikan, mendukung metode GET dan POST, pengalihan permintaan, bekerja melalui proxy, pengkodean ASN.1, dan pemrosesan batas waktu.
  • EVP_MAC (API Kode Otentikasi Pesan) baru telah ditambahkan untuk memudahkan penambahan implementasi baru dari sisipan tiruan.
  • Antarmuka perangkat lunak baru untuk menghasilkan kunci diusulkan - EVP_KDF (API Fungsi Derivasi Kunci), yang menyederhanakan penambahan implementasi baru KDF dan PRF. API EVP_PKEY lama, yang menyediakan algoritma scrypt, TLS1 PRF dan HKDF, telah didesain ulang dalam bentuk lapisan yang diimplementasikan di atas API EVP_KDF dan EVP_MAC.
  • Implementasi protokol TLS memberikan kemampuan untuk menggunakan klien dan server TLS yang dibangun di dalam kernel Linux untuk mempercepat operasi. Untuk mengaktifkan implementasi TLS yang disediakan oleh kernel Linux, Anda harus mengaktifkan opsi "SSL_OP_ENABLE_KTLS" atau pengaturan "enable-ktls".
  • Menambahkan dukungan untuk algoritma baru:
    • Algoritma pembangkitan kunci (KDF) adalah “SINGLE STEP” dan “SSH”.
    • Algoritme penyisipan simulasi (MAC) adalah “GMAC” dan “KMAC”.
    • Algoritma Enkapsulasi Kunci RSA (KEM) "RSASVE".
    • Algoritma enkripsi "AES-SIV" (RFC-8452).
    • Menambahkan panggilan ke EVP API dengan dukungan untuk cipher terbalik menggunakan algoritma AES untuk mengenkripsi kunci (Key Wrap): “AES-128-WRAP-INV”, “AES-192-WRAP-INV”, “AES-256-WRAP- INV”, "AES-128-WRAP-PAD-INV", "AES-192-WRAP-PAD-INV" dan "AES-256-WRAP-PAD-INV".
    • Menambahkan dukungan untuk algoritma peminjaman ciphertext (CTS) ke EVP API: “AES-128-CBC-CTS”, “AES-192-CBC-CTS”, “AES-256-CBC-CTS”, “CAMELLIA-128-CBC -CTS” ", "CAMELLIA-192-CBC-CTS" dan "CAMELLIA-256-CBC-CTS".
    • Menambahkan dukungan untuk tanda tangan digital CAdES-BES (RFC 5126).
    • AES_GCM mengimplementasikan parameter AuthEnvelopedData (RFC 5083) untuk mengaktifkan enkripsi dan dekripsi pesan yang diautentikasi dan dienkripsi menggunakan mode AES GCM.
  • Fungsi PKCS7_get_octet_string dan PKCS7_type_is_other telah ditambahkan ke API publik.
  • API PKCS#12 menggantikan algoritma default yang digunakan dalam fungsi PKCS12_create() dengan PBKDF2 dan AES, dan menggunakan algoritma SHA-256 untuk menghitung MAC. Untuk memulihkan perilaku masa lalu, opsi "-legacy" disediakan. Menambahkan sejumlah besar panggilan tambahan baru ke PKCS12_*_ex, PKCS5_*_ex dan PKCS8_*_ex, seperti PKCS12_add_key_ex().PKCS12_create_ex() dan PKCS12_decrypt_skey_ex().
  • Untuk platform Windows, dukungan untuk sinkronisasi thread menggunakan mekanisme SRWLock telah ditambahkan.
  • Menambahkan API penelusuran baru, diaktifkan melalui parameter aktifkan-jejak.
  • Kisaran kunci yang didukung dalam fungsi EVP_PKEY_public_check() dan EVP_PKEY_param_check() telah diperluas: RSA, DSA, ED25519, X25519, ED448 dan X448.
  • Subsistem RAND_DRBG telah dihapus, digantikan oleh EVP_RAND API. Fungsi FIPS_mode() dan FIPS_mode_set() telah dihapus.
  • Sebagian besar API telah dianggap usang - penggunaan panggilan usang dalam kode proyek akan menghasilkan peringatan selama kompilasi. Menyertakan API tingkat rendah yang terkait dengan implementasi algoritme tertentu (misalnya, AES_set_encrypt_key dan AES_encrypt) telah secara resmi dinyatakan tidak berlaku lagi. Dukungan resmi di OpenSSL 3.0.0 kini hanya disediakan untuk API EVP tingkat tinggi yang diabstraksi dari jenis algoritme individual (API ini mencakup, misalnya, fungsi EVP_EncryptInit_ex, EVP_EncryptUpdate, dan EVP_EncryptFinal). API yang tidak digunakan lagi akan dihapus pada salah satu rilis besar berikutnya. Implementasi algoritma lama seperti MD2 dan DES, tersedia melalui EVP API, telah dipindahkan ke modul "warisan" terpisah, yang dinonaktifkan secara default.
  • Dokumentasi dan rangkaian pengujian telah diperluas secara signifikan. Dibandingkan dengan cabang 1.1.1, volume dokumentasi meningkat sebesar 94%, dan ukuran kode rangkaian pengujian meningkat sebesar 54%.

Sumber: opennet.ru

Tambah komentar