ክፈት ኤስኤስኤል 3.0.0 ክሪፕቶግራፊክ ቤተ መፃህፍት መልቀቅ

ከሶስት አመታት እድገት እና 19 የሙከራ ልቀቶች በኋላ፣ የOpenSSL 3.0.0 ቤተ-መጽሐፍት በSSL/TLS ፕሮቶኮሎች እና በተለያዩ የኢንክሪፕሽን ስልተ ቀመሮች ትግበራ ተለቋል። አዲሱ ቅርንጫፍ በኤፒአይ እና በABI ደረጃ የኋላ ተኳኋኝነትን የሚሰብሩ ለውጦችን ያካትታል፣ ነገር ግን ለውጦቹ ከOpenSSL 1.1.1 ለመሸጋገር እንደገና መገንባት የሚያስፈልጋቸው የአብዛኞቹ አፕሊኬሽኖች ስራ ላይ ተጽእኖ አይኖራቸውም። የቀድሞው የOpenSSL 1.1.1 ቅርንጫፍ እስከ ሴፕቴምበር 2023 ድረስ ይደገፋል።

በስሪት ቁጥሩ ላይ ከፍተኛ ለውጥ የተደረገው ወደ ባሕላዊው "Major.Minor.Patch" ቁጥር በመሸጋገሩ ነው። ከአሁን በኋላ በስሪት ቁጥሩ ውስጥ ያለው የመጀመሪያው አሃዝ (ሜጀር) የሚለወጠው ተኳኋኝነት በኤፒአይ/ABI ደረጃ ከተሰበረ ብቻ ነው፣ እና ሁለተኛው (ትንሹ) ኤፒአይ/ኤቢአይ ሳይቀይር ተግባር ሲጨምር ይለወጣል። የማስተካከያ ዝማኔዎች ወደ ሶስተኛው አሃዝ (Patch) ለውጥ ይደርሳሉ። ቁጥር 3.0.0 ከ1.1.1 በኋላ ወዲያውኑ በመገንባት ላይ ካለው FIPS ሞጁል ለOpenSSL ጋር መደራረብን ለማስወገድ የተመረጠ ሲሆን ለዚህም 2.x ቁጥር ጥቅም ላይ ውሏል።

ለፕሮጀክቱ ሁለተኛው አስፈላጊ ለውጥ ከድርብ ፍቃድ (OpenSSL እና SSLeay) ወደ Apache 2.0 ፍቃድ የተደረገ ሽግግር ነው። የቀደመው የባለቤትነት OpenSSL ፍቃድ በአሮጌው Apache 1.0 ፍቃድ ጽሁፍ ላይ የተመሰረተ እና OpenSSL ላይብረሪዎችን በሚጠቀሙበት ጊዜ የOpenSSL የግብይት ቁሳቁሶችን በግልፅ መጥቀስ እና እንዲሁም OpenSSL የምርቱ አካል ሆኖ ከቀረበ ልዩ ማሳሰቢያ ያስፈልገዋል። እነዚህ መስፈርቶች አሮጌው ፍቃድ ከጂፒኤል ጋር ተኳሃኝ እንዳይሆን አድርገውታል፣ ይህም በጂፒኤል ፍቃድ በተሰጣቸው ፕሮጀክቶች ውስጥ OpenSSLን ለመጠቀም አስቸጋሪ አድርገውታል። ይህንን አለመጣጣም ለማግኘት የጂፒኤል ፕሮጄክቶች ልዩ የፍቃድ ስምምነቶችን ለመጠቀም የተገደዱ ሲሆን በዚህ ውስጥ የጂ.ፒ.ኤል ዋና ጽሑፍ ማመልከቻውን ከOpenSSL ቤተ-መጽሐፍት ጋር ለማገናኘት በግልፅ የሚፈቅድ እና የጂ.ፒ.ኤል መስፈርቶች የማይሟሉ መሆናቸውን በሚገልጽ አንቀጽ ተጨምሯል ። ከOpenSSL ጋር ለመገናኘት ያመልክቱ።

ከOpenSSL 1.1.1 ቅርንጫፍ ጋር ሲነጻጸር፣ OpenSSL 3.0.0 በ7500 ገንቢዎች የተበረከቱ ከ350 በላይ ለውጦችን አክሏል። የOpenSSL 3.0.0 ዋና ፈጠራዎች፡-

  • የ FIPS 140-2 የደህንነት መስፈርትን የሚያሟሉ የክሪፕቶግራፊክ ስልተ ቀመሮችን መተግበርን ጨምሮ አዲስ FIPS ሞጁል ቀርቧል (የሞጁሉ የምስክር ወረቀት ሂደት በዚህ ወር እንዲጀመር ተይዟል እና FIPS 140-2 ማረጋገጫ በሚቀጥለው ዓመት ይጠበቃል)። አዲሱ ሞጁል ለመጠቀም በጣም ቀላል ነው እና ከብዙ መተግበሪያዎች ጋር ማገናኘት የማዋቀሪያውን ፋይል ከመቀየር የበለጠ አስቸጋሪ አይሆንም. በነባሪ፣ የ FIPS ሞጁል ተሰናክሏል እና እንዲነቃ የነቃ-fips አማራጩን ይፈልጋል።
  • ሊቢክሪቶ የሞተርን ፅንሰ-ሀሳብ የተካውን ተሰኪ አቅራቢዎችን ፅንሰ-ሀሳብ ተግባራዊ ያደርጋል (ENGINE API ተቋርጧል)። በአቅራቢዎች እገዛ እንደ ምስጠራ ፣ ዲክሪፕት ፣ ቁልፍ ማመንጨት ፣ ማክ ስሌት ፣ የዲጂታል ፊርማዎችን መፍጠር እና ማረጋገጥ የእራስዎን የአልጎሪዝም አተገባበር ማከል ይችላሉ። ሁለቱንም አዳዲሶችን ማገናኘት እና ቀደም ሲል የተደገፉ አልጎሪዝም አማራጮችን መፍጠር ይቻላል (በነባሪነት በ OpenSSL ውስጥ ያለው አቅራቢ አሁን ለእያንዳንዱ አልጎሪዝም ጥቅም ላይ ይውላል)።
  • ከCA አገልጋይ ሰርተፊኬቶችን ለመጠየቅ፣ የምስክር ወረቀቶችን ለማዘመን እና የምስክር ወረቀቶችን ለመሻር የሚያገለግል ለሰርቲፊኬት አስተዳደር ፕሮቶኮል (RFC 4210) ድጋፍ ታክሏል። ከሲኤምፒ ጋር አብሮ መስራት የሚከናወነው አዲሱን openssl-cmp መገልገያን በመጠቀም ነው፣ይህም የ CRMF ቅርጸትን (RFC 4211) የሚደግፍ እና ጥያቄዎችን በ HTTP/HTTPS (RFC 6712) መላክ ነው።
  • ለኤችቲቲፒ እና ኤችቲቲፒኤስ ፕሮቶኮሎች የተሟላ ደንበኛ ተተግብሯል፣ GET እና POST ስልቶችን በመደገፍ፣ አቅጣጫ መቀየርን ይጠይቁ፣ በፕሮክሲ፣ ASN.1 ኢንኮዲንግ እና ጊዜ ማብቂያ ላይ በመስራት ላይ።
  • አዲስ የኢቪፒ_MAC (የመልእክት ማረጋገጫ ኮድ ኤፒአይ) አዲስ የማስመሰያ ማስገቢያ አተገባበርን ለመጨመር ቀላል እንዲሆን ታክሏል።
  • ቁልፎችን ለማመንጨት አዲስ የሶፍትዌር በይነገጽ ቀርቧል - EVP_KDF (የቁልፍ መነሻ ተግባር ኤፒአይ)፣ ይህም የKDF እና PRF አዳዲስ አተገባበርዎችን መጨመርን ቀላል ያደርገዋል። ስክሪፕቱ፣ TLS1 PRF እና HKDF አልጎሪዝም የተገኙበት የድሮው EVP_PKEY ኤፒአይ በEVP_KDF እና EVP_MAC APIs ላይ በተተገበረ ንብርብር መልክ እንደገና ተዘጋጅቷል።
  • የTLS ፕሮቶኮል ትግበራ ስራዎችን ለማፋጠን በሊኑክስ ከርነል ውስጥ የተሰራውን የTLS ደንበኛ እና አገልጋይ የመጠቀም ችሎታን ይሰጣል። በሊኑክስ ከርነል የቀረበውን የTLS ትግበራ ለማንቃት የ"SSL_OP_ENABLE_KTLS" ወይም "enable-ktls" መቼት ማንቃት አለቦት።
  • ለአዲስ ስልተ ቀመሮች የታከለ ድጋፍ፡-
    • የቁልፍ ማመንጨት ስልተ ቀመሮች (KDF) “ነጠላ እርምጃ” እና “ኤስኤስኤች” ናቸው።
    • አስመሳይ ማስገቢያ ስልተ ቀመሮች (MAC) “GMAC” እና “KMAC” ናቸው።
    • RSA ቁልፍ ኢንካፕስሌሽን አልጎሪዝም (KEM) "RSASVE"።
    • ምስጠራ አልጎሪዝም "AES-SIV" (RFC-8452).
    • ቁልፎችን ለመመስጠር የ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”።
    • ለኢቪፒ ኤፒአይ ለciphertext ብድር (ሲቲኤስ) ስልተ ቀመሮች ታክሏል፡ “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 የAES GCM ሁነታን በመጠቀም የተረጋገጡ እና የተመሰጠሩ መልእክቶችን ምስጠራ እና ምስጠራ መፍታትን ለማስቻል AuthEnvelopedData (RFC 5083) መለኪያን ተግባራዊ ያደርጋል።
  • የPKCS7_get_octet_string እና PKCS7_type_is_ሌሎች ተግባራት ወደ ይፋዊ ኤፒአይ ታክለዋል።
  • PKCS#12 ኤፒአይ በ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 ዘዴን በመጠቀም የክር ማመሳሰል ድጋፍ ተጨምሯል።
  • አዲስ የመከታተያ ኤፒአይ ታክሏል፣ በነቃ-መከታተያ መለኪያ በኩል የነቃ።
  • በEVP_PKEY_public_check() እና EVP_PKEY_param_check() ተግባራት ውስጥ የሚደገፉት የቁልፍ ብዛት ተዘርግቷል፡ RSA፣ DSA፣ ED25519፣ X25519፣ ED448 እና X448።
  • RAND_DRBG ንዑስ ስርዓት ተወግዷል፣ በEVP_RAND ኤፒአይ ተተክቷል። FIPS_mode() እና FIPS_mode_set() ተግባራት ተወግደዋል።
  • ጉልህ የሆነ የኤፒአይ አካል ጊዜ ያለፈበት ሆኗል - በፕሮጀክት ኮድ ውስጥ ጊዜ ያለፈባቸው ጥሪዎችን መጠቀም በሚጠናቀርበት ጊዜ ማስጠንቀቂያዎችን ያስከትላል። ዝቅተኛ ደረጃ ኤፒአይዎችን ጨምሮ ከተወሰኑ የአልጎሪዝም ትግበራዎች (ለምሳሌ AES_set_encrypt_key እና AES_encrypt) ጋር የተሳሰሩ ናቸው በይፋ ጊዜው ያለፈበት ተብሏል። በOpenSSL 3.0.0 ውስጥ ያለው ይፋዊ ድጋፍ አሁን የሚሰጠው ከግለሰባዊ አልጎሪዝም አይነቶች ለተራቀቁ ለከፍተኛ ደረጃ ኢቪፒ ኤፒአይዎች ብቻ ነው (ይህ ኤፒአይ ለምሳሌ EVP_EncryptInit_ex፣ EVP_EncryptUpdate እና EVP_EncryptFinal ተግባራትን ያካትታል)። የተቋረጡ ኤፒአይዎች በሚቀጥሉት ዋና ዋና ልቀቶች ውስጥ በአንዱ ይወገዳሉ። በEVP API በኩል የሚገኙት እንደ MD2 እና DES ያሉ የቆዩ ስልተ ቀመሮች ትግበራዎች ወደተለየ "የቆየ" ሞጁል ተወስደዋል፣ እሱም በነባሪነት ተሰናክሏል።
  • የሰነድ እና የሙከራ ክፍል በከፍተኛ ሁኔታ ተስፋፍቷል. ከቅርንጫፍ 1.1.1 ጋር ሲነጻጸር, የሰነዶች መጠን በ 94% ጨምሯል, እና የሙከራ ስብስብ ኮድ መጠን በ 54% ጨምሯል.

ምንጭ: opennet.ru

አስተያየት ያክሉ