اوپن ایس ایس ایل 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 کو OpenSSL کے لیے فی الحال زیر ترقی FIPS ماڈیول کے ساتھ اوورلیپ سے بچنے کے لیے منتخب کیا گیا تھا، جس کے لیے 2.x نمبر استعمال کیا گیا تھا۔

پروجیکٹ کے لیے دوسری اہم تبدیلی دوہری لائسنس (اوپن ایس ایس ایل اور ایس ایس ایلے) سے اپاچی 2.0 لائسنس میں منتقلی تھی۔ پچھلا ملکیتی اوپن ایس ایس ایل لائسنس لیگیسی اپاچی 1.0 لائسنس کے متن پر مبنی تھا اور اوپن ایس ایس ایل لائبریریوں کا استعمال کرتے وقت مارکیٹنگ کے مواد میں اوپن ایس ایس ایل کا واضح ذکر ضروری تھا، ساتھ ہی ایک خصوصی نوٹس اگر اوپن ایس ایل کو پروڈکٹ کے حصے کے طور پر فراہم کیا گیا ہو۔ ان تقاضوں نے پرانے لائسنس کو GPL کے ساتھ غیر مطابقت پذیر بنا دیا، جس سے GPL لائسنس یافتہ پروجیکٹس میں OpenSSL کا استعمال مشکل ہو گیا۔ اس عدم مطابقت کو حاصل کرنے کے لیے، 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 ماڈیول غیر فعال ہے اور اسے فعال کرنے کے لیے enable-fips آپشن کی ضرورت ہوتی ہے۔
  • libcrypto پلگ ایبل فراہم کنندگان کے تصور کو نافذ کرتا ہے، جس نے انجن کے تصور کی جگہ لے لی (ENGINE API کو فرسودہ کر دیا گیا ہے)۔ فراہم کنندگان کی مدد سے، آپ انکرپشن، ڈکرپشن، کلیدی جنریشن، MAC کیلکولیشن، ڈیجیٹل دستخطوں کی تخلیق اور تصدیق جیسے کاموں کے لیے الگورتھم کے اپنے نفاذ کو شامل کر سکتے ہیں۔ دونوں نئے کو جوڑنا اور پہلے سے تعاون یافتہ الگورتھم کے متبادل نفاذ کو تخلیق کرنا ممکن ہے (بطور ڈیفالٹ، OpenSSL میں بنایا ہوا فراہم کنندہ اب ہر الگورتھم کے لیے استعمال ہوتا ہے)۔
  • سرٹیفکیٹ مینجمنٹ پروٹوکول (RFC 4210) کے لیے معاونت شامل کی گئی، جسے CA سرور سے سرٹیفکیٹ کی درخواست کرنے، سرٹیفکیٹس کو اپ ڈیٹ کرنے، اور سرٹیفکیٹس کو منسوخ کرنے کے لیے استعمال کیا جا سکتا ہے۔ CMP کے ساتھ کام کرنا نئی openssl-cmp یوٹیلیٹی کا استعمال کرتے ہوئے کیا جاتا ہے، جو CRMF فارمیٹ (RFC 4211) کو بھی سپورٹ کرتا ہے اور HTTP/HTTPS (RFC 6712) کے ذریعے درخواستیں بھیجتا ہے۔
  • HTTP اور HTTPS پروٹوکولز کے لیے ایک مکمل کلائنٹ لاگو کیا گیا ہے، جو GET اور POST طریقوں کی حمایت کرتا ہے، ری ڈائریکشن کی درخواست کرتا ہے، پراکسی، ASN.1 انکوڈنگ اور ٹائم آؤٹ پروسیسنگ کے ذریعے کام کرتا ہے۔
  • ایک نیا EVP_MAC (Message Authentication Code API) شامل کیا گیا ہے تاکہ فرضی داخلوں کے نئے نفاذ کو شامل کرنا آسان ہو۔
  • چابیاں پیدا کرنے کے لیے ایک نیا سافٹ ویئر انٹرفیس تجویز کیا گیا ہے - EVP_KDF (Key Derivation Function API)، جو KDF اور PRF کے نئے نفاذ کو آسان بناتا ہے۔ پرانا EVP_PKEY API، جس کے ذریعے سکرپٹ، TLS1 PRF اور HKDF الگورتھم دستیاب تھے، کو EVP_KDF اور EVP_MAC APIs کے اوپر لاگو کردہ ایک پرت کی شکل میں دوبارہ ڈیزائن کیا گیا ہے۔
  • TLS پروٹوکول کا نفاذ آپریشن کو تیز کرنے کے لیے لینکس کرنل میں بنائے گئے TLS کلائنٹ اور سرور کو استعمال کرنے کی صلاحیت فراہم کرتا ہے۔ لینکس کرنل کے ذریعہ فراہم کردہ TLS نفاذ کو فعال کرنے کے لیے، آپ کو "SSL_OP_ENABLE_KTLS" اختیار یا "enable-ktls" ترتیب کو فعال کرنا ہوگا۔
  • نئے الگورتھم کے لیے شامل کردہ تعاون:
    • کلیدی جنریشن الگورتھم (KDF) "سنگل سٹیپ" اور "SSH" ہیں۔
    • نقلی اندراج الگورتھم (MAC) "GMAC" اور "KMAC" ہیں۔
    • RSA Key Encapsulation Algorithm (KEM) "RSASVE"۔
    • خفیہ کاری الگورتھم "AES-SIV" (RFC-8452)۔
    • EVP API میں کالز شامل کی گئیں جو AES الگورتھم کا استعمال کرتے ہوئے الٹا سائفرز کو سپورٹ کرتی ہیں کلیدوں کو خفیہ کرنے کے لیے: "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"۔
    • EVP API میں سائفر ٹیکسٹ قرض لینے (CTS) الگورتھم کے لیے تعاون شامل کیا گیا: "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 فنکشنز کو عوامی API میں شامل کر دیا گیا ہے۔
  • PKCS#12 API PKCS12_create() فنکشن میں استعمال ہونے والے پہلے سے طے شدہ الگورتھم کو PBKDF2 اور AES سے بدل دیتا ہے، اور MAC کا حساب لگانے کے لیے SHA-256 الگورتھم کا استعمال کرتا ہے۔ ماضی کے رویے کو بحال کرنے کے لیے، "-legacy" آپشن فراہم کیا جاتا ہے۔ PKCS12_*_ex، PKCS5_*_ex اور PKCS8_*_ex، جیسے PKCS12_add_key_ex().PKCS12_create_ex() اور PKCS12_decrypt_skey_ex() میں بڑی تعداد میں نئی ​​توسیع شدہ کالیں شامل کی گئیں۔
  • ونڈوز پلیٹ فارم کے لیے، SRWLock میکانزم کا استعمال کرتے ہوئے تھریڈ سنکرونائزیشن کے لیے تعاون شامل کیا گیا ہے۔
  • ایک نیا ٹریسنگ API شامل کیا گیا، enable-trace پیرامیٹر کے ذریعے فعال کیا گیا۔
  • 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 کے ایک اہم حصے کو متروک قرار دیا گیا ہے - پراجیکٹ کوڈ میں متروک کالوں کے استعمال کے نتیجے میں تالیف کے دوران انتباہات ہوں گے۔ الگورتھم کے کچھ نفاذ سے منسلک کم درجے کے APIs سمیت (مثال کے طور پر، AES_set_encrypt_key اور AES_encrypt) کو سرکاری طور پر متروک قرار دیا گیا ہے۔ OpenSSL 3.0.0 میں باضابطہ تعاون اب صرف اعلیٰ سطح کے EVP APIs کے لیے فراہم کیا جاتا ہے جو انفرادی الگورتھم کی اقسام (اس API میں شامل ہیں، مثال کے طور پر، EVP_EncryptInit_ex، EVP_EncryptUpdate، اور EVP_EncryptFinal فنکشنز)۔ فرسودہ APIs کو اگلی بڑی ریلیز میں سے ایک میں ہٹا دیا جائے گا۔ EVP API کے ذریعے دستیاب لیگیسی الگورتھم جیسے MD2 اور DES کے نفاذ کو ایک علیحدہ "لیگیسی" ماڈیول میں منتقل کر دیا گیا ہے، جو بطور ڈیفالٹ غیر فعال ہے۔
  • دستاویزات اور ٹیسٹ سوٹ کو نمایاں طور پر بڑھا دیا گیا ہے۔ برانچ 1.1.1 کے مقابلے میں، دستاویزات کے حجم میں 94% اضافہ ہوا ہے، اور ٹیسٹ سویٹ کوڈ کے سائز میں 54% اضافہ ہوا ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں