OpenSSL 3.0.0 క్రిప్టోగ్రాఫిక్ లైబ్రరీ విడుదల

మూడు సంవత్సరాల అభివృద్ధి మరియు 19 పరీక్ష విడుదలల తర్వాత, SSL/TLS ప్రోటోకాల్‌లు మరియు వివిధ ఎన్‌క్రిప్షన్ అల్గారిథమ్‌ల అమలుతో OpenSSL 3.0.0 లైబ్రరీ విడుదల చేయబడింది. కొత్త శాఖ API మరియు ABI స్థాయిలో వెనుకకు అనుకూలతను విచ్ఛిన్నం చేసే మార్పులను కలిగి ఉంటుంది, అయితే OpenSSL 1.1.1 నుండి మైగ్రేట్ చేయడానికి పునర్నిర్మాణం అవసరమయ్యే చాలా అప్లికేషన్‌ల ఆపరేషన్‌ను మార్పులు ప్రభావితం చేయవు. OpenSSL 1.1.1 యొక్క మునుపటి శాఖకు సెప్టెంబర్ 2023 వరకు మద్దతు ఉంటుంది.

సాంప్రదాయ "Major.Minor.Patch" నంబరింగ్‌కి మారడం వల్ల వెర్షన్ నంబర్‌లో గణనీయమైన మార్పు వచ్చింది. ఇప్పటి నుండి, API/ABI స్థాయిలో అనుకూలత విచ్ఛిన్నమైతే మాత్రమే వెర్షన్ నంబర్‌లోని మొదటి అంకె (మేజర్) మారుతుంది మరియు API/ABIని మార్చకుండా కార్యాచరణను పెంచినప్పుడు రెండవ (మైనర్) మారుతుంది. దిద్దుబాటు నవీకరణలు మూడవ అంకె (ప్యాచ్)కి మార్పుతో బట్వాడా చేయబడతాయి. OpenSSL కోసం ప్రస్తుతం అభివృద్ధిలో ఉన్న FIPS మాడ్యూల్‌తో అతివ్యాప్తి చెందకుండా ఉండేందుకు 3.0.0 తర్వాత వెంటనే 1.1.1 నంబర్ ఎంచుకోబడింది, దీని కోసం 2.x నంబరింగ్ ఉపయోగించబడింది.

ప్రాజెక్ట్ కోసం రెండవ ముఖ్యమైన మార్పు డ్యూయల్ లైసెన్స్ (OpenSSL మరియు SSleay) నుండి Apache 2.0 లైసెన్స్‌కి మారడం. మునుపటి యాజమాన్య OpenSSL లైసెన్స్ లెగసీ Apache 1.0 లైసెన్స్ యొక్క టెక్స్ట్ ఆధారంగా రూపొందించబడింది మరియు OpenSSL లైబ్రరీలను ఉపయోగిస్తున్నప్పుడు మార్కెటింగ్ మెటీరియల్‌లలో OpenSSL యొక్క స్పష్టమైన ప్రస్తావన అవసరం, అలాగే ఉత్పత్తిలో భాగంగా OpenSSL అందించబడితే ప్రత్యేక నోటీసు. ఈ అవసరాలు పాత లైసెన్స్‌ని GPLతో అననుకూలంగా మార్చాయి, GPL-లైసెన్స్ పొందిన ప్రాజెక్ట్‌లలో OpenSSLని ఉపయోగించడం కష్టతరం చేసింది. ఈ అననుకూలతను అధిగమించడానికి, GPL ప్రాజెక్ట్‌లు నిర్దిష్ట లైసెన్స్ ఒప్పందాలను ఉపయోగించవలసి వచ్చింది, దీనిలో GPL యొక్క ప్రధాన పాఠం ఒక నిబంధనతో అనుబంధించబడింది, ఇది అప్లికేషన్‌ను OpenSSL లైబ్రరీతో లింక్ చేయడానికి స్పష్టంగా అనుమతించింది మరియు GPL యొక్క అవసరాలు లేవని పేర్కొన్నాయి. OpenSSLతో లింక్ చేయడానికి వర్తిస్తాయి.

OpenSSL 1.1.1 బ్రాంచ్‌తో పోలిస్తే, OpenSSL 3.0.0 7500 డెవలపర్‌లు అందించిన 350 కంటే ఎక్కువ మార్పులను జోడించింది. OpenSSL 3.0.0 యొక్క ప్రధాన ఆవిష్కరణలు:

  • FIPS 140-2 భద్రతా ప్రమాణానికి అనుగుణంగా ఉండే క్రిప్టోగ్రాఫిక్ అల్గారిథమ్‌ల అమలుతో సహా కొత్త FIPS మాడ్యూల్ ప్రతిపాదించబడింది (మాడ్యూల్ కోసం ధృవీకరణ ప్రక్రియ ఈ నెలలో ప్రారంభం కానుంది మరియు FIPS 140-2 సర్టిఫికేషన్ వచ్చే ఏడాది ఆశించబడుతుంది). కొత్త మాడ్యూల్ ఉపయోగించడానికి చాలా సులభం మరియు దీన్ని అనేక అప్లికేషన్‌లకు కనెక్ట్ చేయడం కాన్ఫిగరేషన్ ఫైల్‌ను మార్చడం కంటే కష్టం కాదు. డిఫాల్ట్‌గా, FIPS మాడ్యూల్ నిలిపివేయబడింది మరియు ఎనేబుల్-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 (మెసేజ్ అథెంటికేషన్ కోడ్ API) మాక్ ఇన్‌సర్ట్‌ల యొక్క కొత్త ఇంప్లిమెంటేషన్‌లను జోడించడాన్ని సులభతరం చేయడానికి జోడించబడింది.
  • కీలను రూపొందించడానికి కొత్త సాఫ్ట్‌వేర్ ఇంటర్‌ఫేస్ ప్రతిపాదించబడింది - EVP_KDF (కీ డెరివేషన్ ఫంక్షన్ API), ఇది KDF మరియు PRF యొక్క కొత్త ఇంప్లిమెంటేషన్‌ల జోడింపును సులభతరం చేస్తుంది. పాత EVP_PKEY API, దీని ద్వారా స్క్రిప్ట్, TLS1 PRF మరియు HKDF అల్గారిథమ్‌లు అందుబాటులో ఉన్నాయి, EVP_KDF మరియు EVP_MAC APIల పైన అమలు చేయబడిన లేయర్ రూపంలో పునఃరూపకల్పన చేయబడింది.
  • TLS ప్రోటోకాల్ అమలు చేయడం వలన కార్యకలాపాలను వేగవంతం చేయడానికి Linux కెర్నల్‌లో నిర్మించబడిన TLS క్లయింట్ మరియు సర్వర్‌ని ఉపయోగించగల సామర్థ్యాన్ని అందిస్తుంది. Linux కెర్నల్ అందించిన TLS అమలును ప్రారంభించడానికి, మీరు తప్పనిసరిగా "SSL_OP_ENABLE_KTLS" ఎంపికను లేదా "enable-ktls" సెట్టింగ్‌ను ప్రారంభించాలి.
  • కొత్త అల్గారిథమ్‌లకు మద్దతు జోడించబడింది:
    • కీ జనరేషన్ అల్గారిథమ్‌లు (KDF) "సింగిల్ స్టెప్" మరియు "SSH".
    • అనుకరణ చొప్పించే అల్గారిథమ్‌లు (MAC) “GMAC” మరియు “KMAC”.
    • RSA కీ ఎన్‌క్యాప్సులేషన్ అల్గోరిథం (KEM) "RSASVE".
    • ఎన్క్రిప్షన్ అల్గోరిథం "AES-SIV" (RFC-8452).
    • కీలను గుప్తీకరించడానికి (కీ ర్యాప్) AES అల్గారిథమ్‌ని ఉపయోగించి విలోమ సైఫర్‌లకు మద్దతుతో EVP APIకి కాల్‌లు జోడించబడ్డాయి: “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 మోడ్‌ని ఉపయోగించి ప్రమాణీకరించబడిన మరియు గుప్తీకరించిన సందేశాల గుప్తీకరణ మరియు డిక్రిప్షన్‌ను ప్రారంభించడానికి AES_GCM AuthEnvelopedData (RFC 5083) పరామితిని అమలు చేస్తుంది.
  • PKCS7_get_octet_string మరియు PKCS7_type_is_other ఫంక్షన్‌లు పబ్లిక్ APIకి జోడించబడ్డాయి.
  • PKCS12_create() ఫంక్షన్‌లో ఉపయోగించిన డిఫాల్ట్ అల్గారిథమ్‌లను PKCS#12 API PBKDF2 మరియు AESతో భర్తీ చేస్తుంది మరియు MACని లెక్కించడానికి SHA-256 అల్గారిథమ్‌ని ఉపయోగిస్తుంది. గత ప్రవర్తనను పునరుద్ధరించడానికి, "-legacy" ఎంపిక అందించబడింది. PKCS12_*_ex, PKCS5_*_ex మరియు PKCS8_*_exకి PKCS12_add_key_ex().PKCS12_create_ex() మరియు PKCS12_decrypt_skey_ex() వంటి పెద్ద సంఖ్యలో కొత్త పొడిగించిన కాల్‌లు జోడించబడ్డాయి.
  • Windows ప్లాట్‌ఫారమ్ కోసం, SRWLock మెకానిజం ఉపయోగించి థ్రెడ్ సింక్రొనైజేషన్ కోసం మద్దతు జోడించబడింది.
  • కొత్త ట్రేసింగ్ API జోడించబడింది, ఎనేబుల్-ట్రేస్ పారామీటర్ ద్వారా ప్రారంభించబడింది.
  • 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) నిర్దిష్ట అమలులతో ముడిపడి ఉన్న తక్కువ-స్థాయి APIలు అధికారికంగా వాడుకలో లేనివిగా ప్రకటించబడ్డాయి. OpenSSL 3.0.0లో అధికారిక మద్దతు ఇప్పుడు వ్యక్తిగత అల్గారిథమ్ రకాల నుండి సంగ్రహించబడిన ఉన్నత-స్థాయి EVP APIలకు మాత్రమే అందించబడింది (ఈ APIలో, ఉదాహరణకు, EVP_EncryptInit_ex, EVP_EncryptUpdate మరియు EVP_EncryptFinal ఫంక్షన్‌లు ఉంటాయి). తదుపరి ప్రధాన విడుదలలలో ఒకదానిలో నిలిపివేయబడిన APIలు తీసివేయబడతాయి. EVP API ద్వారా లభించే MD2 ​​మరియు DES వంటి లెగసీ అల్గారిథమ్‌ల అమలులు ప్రత్యేక "లెగసీ" మాడ్యూల్‌కి తరలించబడ్డాయి, ఇది డిఫాల్ట్‌గా నిలిపివేయబడుతుంది.
  • డాక్యుమెంటేషన్ మరియు టెస్ట్ సూట్ గణనీయంగా విస్తరించబడ్డాయి. బ్రాంచ్ 1.1.1తో పోలిస్తే, డాక్యుమెంటేషన్ పరిమాణం 94% పెరిగింది మరియు టెస్ట్ సూట్ కోడ్ పరిమాణం 54% పెరిగింది.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి