إصدار مكتبة التشفير OpenSSL 3.0.0

بعد ثلاث سنوات من التطوير و19 إصدارًا تجريبيًا، تم إصدار مكتبة OpenSSL 3.0.0 مع تنفيذ بروتوكولات SSL/TLS وخوارزميات التشفير المختلفة. يتضمن الفرع الجديد تغييرات تؤدي إلى قطع التوافق مع الإصدارات السابقة على مستوى API وABI، لكن التغييرات لن تؤثر على تشغيل معظم التطبيقات التي تتطلب إعادة البناء للانتقال من OpenSSL 1.1.1. سيتم دعم الفرع السابق من OpenSSL 1.1.1 حتى سبتمبر 2023.

يرجع التغيير الكبير في رقم الإصدار إلى الانتقال إلى الترقيم التقليدي "Major.Minor.Patch". من الآن فصاعدًا، لن يتغير الرقم الأول (الرئيسي) في رقم الإصدار إلا في حالة انقطاع التوافق على مستوى API/ABI، وسيتغير الرقم الثاني (الثانوي) عند زيادة الوظيفة دون تغيير API/ABI. سيتم تسليم التحديثات التصحيحية مع تغيير الرقم الثالث (التصحيح). تم اختيار الرقم 3.0.0 مباشرةً بعد 1.1.1 لتجنب التداخلات مع وحدة FIPS قيد التطوير حاليًا لـ OpenSSL، والتي تم استخدام الترقيم 2.x لها.

التغيير المهم الثاني للمشروع كان الانتقال من الترخيص المزدوج (OpenSSL وSSLeay) إلى ترخيص Apache 2.0. كان ترخيص OpenSSL الخاص السابق يستند إلى نص ترخيص Apache 1.0 القديم ويتطلب ذكرًا صريحًا لـ OpenSSL في المواد التسويقية عند استخدام مكتبات OpenSSL، بالإضافة إلى إشعار خاص إذا تم توفير OpenSSL كجزء من المنتج. هذه المتطلبات جعلت الترخيص القديم غير متوافق مع GPL، مما يجعل من الصعب استخدام OpenSSL في المشاريع المرخصة بـ GPL. للتغلب على عدم التوافق هذا، اضطرت مشاريع GPL إلى استخدام اتفاقيات ترخيص محددة تم فيها استكمال النص الرئيسي لـ GPL ببند يسمح صراحةً بربط التطبيق بمكتبة OpenSSL وذكر أن متطلبات GPL لا تنطبق تنطبق على الارتباط مع OpenSSL.

بالمقارنة مع فرع OpenSSL 1.1.1، أضاف OpenSSL 3.0.0 أكثر من 7500 تغيير ساهم بها 350 مطورًا. الابتكارات الرئيسية لـ OpenSSL 3.0.0:

  • تم اقتراح وحدة FIPS جديدة، بما في ذلك تنفيذ خوارزميات التشفير التي تتوافق مع معيار الأمان FIPS 140-2 (من المقرر أن تبدأ عملية اعتماد الوحدة هذا الشهر، ومن المتوقع الحصول على شهادة FIPS 140-2 في العام المقبل). الوحدة الجديدة أسهل بكثير في الاستخدام ولن يكون توصيلها بالعديد من التطبيقات أكثر صعوبة من تغيير ملف التكوين. بشكل افتراضي، يتم تعطيل وحدة FIPS وتتطلب تمكين خيار تمكين fips.
  • يطبق libcrypto مفهوم الموفرين القابلين للتوصيل، والذي حل محل مفهوم المحركات (تم إهمال واجهة برمجة تطبيقات ENGINE). بمساعدة مقدمي الخدمة، يمكنك إضافة تطبيقاتك الخاصة للخوارزميات لعمليات مثل التشفير وفك التشفير وإنشاء المفاتيح وحساب MAC وإنشاء التوقيعات الرقمية والتحقق منها. من الممكن توصيل خوارزميات جديدة وإنشاء تطبيقات بديلة للخوارزميات المدعومة بالفعل (افتراضيًا، يتم الآن استخدام الموفر المدمج في OpenSSL لكل خوارزمية).
  • تمت إضافة دعم لبروتوكول إدارة الشهادات (RFC 4210)، والذي يمكن استخدامه لطلب شهادات من خادم CA، وتحديث الشهادات، وإلغاء الشهادات. يتم العمل مع CMP باستخدام الأداة المساعدة openssl-cmp الجديدة، والتي تدعم أيضًا تنسيق CRMF (RFC 4211) وإرسال الطلبات عبر HTTP/HTTPS (RFC 6712).
  • تم تنفيذ عميل كامل لبروتوكولات HTTP وHTTPS، ويدعم أساليب GET وPOST، وإعادة توجيه الطلب، والعمل من خلال وكيل، وترميز ASN.1 ومعالجة المهلة.
  • تمت إضافة EVP_MAC (واجهة برمجة تطبيقات رمز مصادقة الرسائل) الجديدة لتسهيل إضافة تطبيقات جديدة للإدراجات الوهمية.
  • تم اقتراح واجهة برمجية جديدة لإنشاء المفاتيح - EVP_KDF (Key Derivation Function API)، والتي تعمل على تبسيط إضافة تطبيقات جديدة لـ KDF وPRF. تمت إعادة تصميم واجهة برمجة التطبيقات EVP_PKEY القديمة، والتي من خلالها كانت خوارزميات scrypt وTLS1 PRF وHKDF متاحة، في شكل طبقة تم تنفيذها أعلى واجهات برمجة التطبيقات EVP_KDF وEVP_MAC.
  • يوفر تطبيق بروتوكول TLS القدرة على استخدام عميل وخادم TLS المدمج في Linux kernel لتسريع العمليات. لتمكين تنفيذ TLS المقدم من Linux kernel، يجب عليك تمكين الخيار "SSL_OP_ENABLE_KTLS" أو الإعداد "enable-ktls".
  • تمت إضافة دعم للخوارزميات الجديدة:
    • خوارزميات توليد المفاتيح (KDF) هي "SINGLE STEP" و"SSH".
    • خوارزميات الإدراج المحاكية (MAC) هي "GMAC" و"KMAC".
    • خوارزمية تغليف مفتاح RSA (KEM) "RSASVE".
    • خوارزمية التشفير "AES-SIV" (RFC-8452).
    • تمت إضافة استدعاءات إلى EVP API التي تدعم الأصفار العكسية باستخدام خوارزمية AES لتشفير المفاتيح (Key Wrap): "AES-128-WRAP-INV"، "AES-192-WRAP-INV"، "AES-256-WRAP-INV" " و "AES-128-WRAP-PAD-INV" و"AES-192-WRAP-PAD-INV" و"AES-256-WRAP-PAD-INV".
    • تمت إضافة دعم لخوارزميات استعارة النص المشفر (CTS) إلى EVP API: "AES-128-CBC-CTS"، "AES-192-CBC-CTS"، "AES-256-CBC-CTS"، "CAMELLIA-128-CBC" "-CTS" و"CAMELLIA-192-CBC-CTS" و"CAMELLIA-256-CBC-CTS".
    • تمت إضافة دعم للتوقيعات الرقمية CAdES-BES (RFC 5126).
    • يطبق AES_GCM معلمة AuthEnvelopedData (RFC 5083) لتمكين تشفير وفك تشفير الرسائل التي تمت مصادقتها وتشفيرها باستخدام وضع AES GCM.
  • تمت إضافة وظائف PKCS7_get_octet_string وPKCS7_type_is_other إلى واجهة برمجة التطبيقات العامة.
  • تستبدل واجهة برمجة التطبيقات PKCS#12 الخوارزميات الافتراضية المستخدمة في وظيفة PKCS12_create() بـ PBKDF2 وAES، وتستخدم خوارزمية SHA-256 لحساب MAC. لاستعادة السلوك السابق، يتم توفير خيار "-legacy". تمت إضافة عدد كبير من المكالمات الموسعة الجديدة إلى PKCS12_*_ex وPKCS5_*_ex وPKCS8_*_ex، مثل PKCS12_add_key_ex().PKCS12_create_ex() وPKCS12_decrypt_skey_ex().
  • بالنسبة لنظام التشغيل Windows، تمت إضافة دعم لمزامنة مؤشر الترابط باستخدام آلية SRWLock.
  • تمت إضافة واجهة برمجة تطبيقات تتبع جديدة، تم تمكينها عبر معلمة تمكين التتبع.
  • تم توسيع نطاق المفاتيح المدعومة في وظائف EVP_PKEY_public_check() وEVP_PKEY_param_check(): RSA وDSA وED25519 وX25519 وED448 وX448.
  • تمت إزالة النظام الفرعي RAND_DRBG، واستبداله بـ EVP_RAND API. تمت إزالة الدالتين FIPS_mode() وFIPS_mode_set().
  • لقد أصبح جزء كبير من واجهة برمجة التطبيقات (API) قديمًا - سيؤدي استخدام الاستدعاءات القديمة في كود المشروع إلى ظهور تحذيرات أثناء التجميع. بما في ذلك واجهات برمجة التطبيقات ذات المستوى المنخفض المرتبطة بتطبيقات معينة للخوارزميات (على سبيل المثال، AES_set_encrypt_key وAES_encrypt) تم إعلان أنها قديمة رسميًا. يتوفر الآن الدعم الرسمي في OpenSSL 3.0.0 فقط لواجهات EVP API عالية المستوى المستخرجة من أنواع الخوارزميات الفردية (تتضمن واجهة برمجة التطبيقات هذه، على سبيل المثال، وظائف EVP_EncryptInit_ex وEVP_EncryptUpdate وEVP_EncryptFinal). ستتم إزالة واجهات برمجة التطبيقات المهملة في أحد الإصدارات الرئيسية التالية. تم نقل تطبيقات الخوارزميات القديمة مثل MD2 وDES، المتوفرة من خلال EVP API، إلى وحدة "قديمة" منفصلة، ​​والتي يتم تعطيلها افتراضيًا.
  • تم توسيع مجموعة الوثائق والاختبار بشكل كبير. مقارنةً بالفرع 1.1.1، زاد حجم التوثيق بنسبة 94%، وزاد حجم مجموعة التعليمات البرمجية للاختبار بنسبة 54%.

المصدر: opennet.ru

إضافة تعليق