लिब्रेएसएसएल

लिब्रेएसएसएल एक खुला स्रोत सॉफ्टवेयर  है।  परिवहन परत सुरक्षा  (टीएलएस) प्रोटोकॉल का ओपन-सोर्स कार्यान्वयन। कार्यान्वयन का नाम सुरक्षित सॉकेट लेयर (SSL) के नाम पर रखा गया है, जो TLS का पदावनत पूर्ववर्ती है, जिसके लिए रिलीज़ 2.3.0 में समर्थन हटा दिया गया था।  हार्दिक  सुरक्षा भेद्यता (कंप्यूटिंग) की प्रतिक्रिया के रूप में अप्रैल 2014 में OpenSSL 1.0.1g से OpenBSD प्रोजेक्ट  कांटा (सॉफ्टवेयर)  LibreSSL,    codebase  के आधुनिकीकरण, कंप्यूटर सुरक्षा में सुधार और विकास की सर्वोत्तम प्रथाओं को लागू करने के लक्ष्यों के साथ।

इतिहास
ओपनएसएसएल में हार्टब्लीड सुरक्षा भेद्यता (कंप्यूटिंग) की खोज के बाद, ओपनबीएसडी टीम कोड ने कोडबेस कोड ऑडिट किया और निर्णय लिया कि खतरनाक कोड को हटाने के लिए ओपनएसएसएल को कांटा (सॉफ्टवेयर विकास)  करना आवश्यक था। Libressl.org डोमेन 11 अप्रैल 2014 को पंजीकृत किया गया था; परियोजना ने 22 अप्रैल 2014 को नाम की घोषणा की। विकास के पहले सप्ताह में, सी कोड की 90,000 से अधिक लाइनें हटा दी गईं। अप्रयुक्त कोड हटा दिया गया था, और अप्रचलित ऑपरेटिंग सिस्टम (क्लासिक मैक ओएस, नेटवेयर, ओएस/2, 16-बिट विंडोज़) और कुछ पुराने ऑपरेटिंग सिस्टम ( ओपन VMS ) के लिए समर्थन हटा दिया गया था। LibreSSL को शुरू में OpenBSD 5.6 में OpenSSL के लिए एक इच्छित प्रतिस्थापन के रूप में विकसित किया गया था, और लाइब्रेरी के एक स्ट्रिप-डाउन संस्करण के स्थिर होने के बाद अन्य प्लेटफार्मों पर पोर्ट किया गया था।, परियोजना बाहरी फंडिंग की एक स्थिर प्रतिबद्धता की मांग कर रही थी। 17 मई 2014 को, बॉब बेक ने 2014 के बीएसडीसीन सम्मेलन के दौरान लिबरएसएसएल: द फर्स्ट 30 डेज़, एंड व्हाट द फ्यूचर होल्ड्स प्रस्तुत किया, जिसमें उन्होंने पहले महीने में हुई प्रगति का वर्णन किया। 5 जून 2014 को, कई ओपनएसएसएल बग सार्वजनिक हो गए। जबकि कई परियोजनाओं को पहले ही अधिसूचित कर दिया गया था, लिब्रेएसएसएल नहीं था; Theo de Raadt ने OpenSSL डेवलपर्स पर OpenBSD और LibreSSL से जानबूझकर इस जानकारी को वापस लेने का आरोप लगाया। 20 जून 2014 को, Google ने बोरिंगएसएसएल नामक ओपनएसएसएल का एक और कांटा बनाया, और लिब्रेएसएसएल के साथ सुधारों का आदान-प्रदान करने का वादा किया। Google के पास पहले से ही ISC लाइसेंस के तहत अपने कुछ योगदानों को पुनः प्राप्त करने वाला सॉफ़्टवेयर है, जैसा कि LibreSSL डेवलपर्स द्वारा अनुरोध किया गया था। 21 जून 2014 को, थियो डी राडट ने बोरिंगएसएसएल का स्वागत किया और लिबरएसएसएल-पोर्टेबल के लिए योजनाओं की रूपरेखा तैयार की। 8 जुलाई से macOS और Solaris (ऑपरेटिंग सिस्टम) के लिए कोड पोर्टिंग शुरू हुई, जबकि लिनक्स में प्रारंभिक पोर्टिंग 20 जून को शुरू हुई थी। 2021 तक, OpenBSD प्राथमिक SSL लाइब्रेरी के रूप में LibreSSL का उपयोग करता है। अल्पाइन लिनक्स ने जनवरी 2019 में 3.9.0 रिलीज होने तक तीन साल के लिए अपनी प्राथमिक टीएलएस लाइब्रेरी के रूप में लिबरएसएसएल का समर्थन किया। जेंटू लिनक्स ने फरवरी 2021 तक लिबरएसएसएल का समर्थन किया। पायथन (प्रोग्रामिंग लैंग्वेज) 3.10 लिब्रेएसएसएल सपोर्ट को छोड़ देता है पायथन 3.4.3 (2015) के बाद से समर्थित होने के बाद।

गोद लेना
LibreSSL इनके लिए TLS का डिफ़ॉल्ट प्रदाता है:
 * ड्रैगनफली बीएसडी
 * ओपनबीएसडी * हाइपरबोला जीएनयू/लिनक्स-लिबर
 * मैक ओएस
 * [विंडोज़ पर https://github.com/powershell/Win32-OpenSSH OpenSSH]

LibreSSL इन अब-बंद सिस्टमों के लिए TLS का डिफ़ॉल्ट प्रदाता है:

LibreSSL इनके लिए TLS का चयन योग्य प्रदाता है:
 * ओपनईएलईसी
 * ट्रूओएस पैकेज


 * फ्रीबीएसडी पैकेज
 * जेंटू लिनक्स पैकेज (समर्थन फरवरी 2021 तक गिरा दिया गया  )
 * ओपीएनसेंस पैकेज (22.7 के बाद गिरा दिया जाएगा )

मेमोरी से संबंधित
परिवर्तन में कस्टम मेमोरी कॉल को मानक लाइब्रेरी में बदलना शामिल है (उदाहरण के लिए,,  ,  ,  , वगैरह।)।  यह प्रक्रिया बाद में अधिक उन्नत मेमोरी डीबगर टूल के साथ या प्रोग्राम क्रैश ( पता स्थान लेआउट यादृच्छिकरण  के माध्यम से, NX बिट का उपयोग, स्टैक कैनरी, आदि) का अवलोकन करके  बफ़र अधिकता  त्रुटियों को पकड़ने में मदद कर सकती है।

संभावित सी डायनेमिक मेमोरी आवंटन के लिए फिक्स # सामान्य त्रुटि परिदृश्यों को संस्करण नियंत्रण प्रणाली  कमिट लॉग (नल पॉइंटर वैल्यू के स्पष्ट असाइनमेंट सहित) में भी उद्धृत किया गया है। कमिट (संस्करण नियंत्रण) लॉग में लंबाई तर्क, अहस्ताक्षरित-से-हस्ताक्षरित चर (कंप्यूटर विज्ञान) असाइनमेंट,  सूचक (कंप्यूटर प्रोग्रामिंग)  मान, और विधि रिटर्न सुनिश्चित करने से संबंधित अतिरिक्त पवित्रता जांच भी उद्धृत की गई है।

सक्रिय उपाय
अच्छे प्रोग्रामिंग अभ्यास को बनाए रखने के लिए, सुरक्षा के लिए डिज़ाइन किए गए कई कंपाइलर विकल्प और झंडे संभावित मुद्दों को खोजने में मदद करने के लिए डिफ़ॉल्ट रूप से सक्षम किए गए हैं ताकि उन्हें पहले ठीक किया जा सके (-वॉल, -वॉरर, -वेक्स्ट्रा, -विनिशियलाइज़्ड)। कोड पठनीयता अद्यतन भी हैं जो भविष्य के योगदानकर्ताओं को कार्यक्रम की शुद्धता (कर्नेल सामान्य रूप, व्हाइट-स्पेस, लाइन-रैपिंग, आदि) की पुष्टि करने में मदद करते हैं। अनावश्यक विधि रैपर और मैक्रोज़ को संशोधित या हटाने से कोड पठनीयता और ऑडिटिंग (त्रुटि और I/O अमूर्त पुस्तकालय संदर्भ) में भी मदद मिलती है।

अन्य समान प्लेटफार्मों के लिए पोर्टेबिलिटी (कंप्यूटर विज्ञान) को बनाए रखने के साथ-साथ लिबरएसएसएल वर्ष 2038 की समस्या होगी यह सुनिश्चित करने के लिए परिवर्तन किए गए थे। इसके साथ ही,  और   संकलक को उन्हें अनुकूलित करने से रोकने और हमलावरों को पहले से आवंटित मेमोरी को पढ़ने से रोकने के लिए कॉल जोड़े गए थे।

क्रिप्टोग्राफिक
असुरक्षित सीडिंग प्रथाओं के प्रतिस्थापन के माध्यम से यादृच्छिक संख्या जनरेटर-आधारित विधियों के उचित यादृच्छिक बीज को सुनिश्चित करने में मदद करने के लिए परिवर्तन किए गए थे (कर्नेल (ऑपरेटिंग सिस्टम) द्वारा प्रदान की गई सुविधाओं का लाभ उठाते हुए)। किए गए उल्लेखनीय परिवर्धन के संदर्भ में, OpenBSD ने नए और अधिक प्रतिष्ठित एल्गोरिदम (चाचा (सिफर) स्ट्रीम सिफर और Poly1305 संदेश प्रमाणीकरण कोड) के साथ-साथ दीर्घवृत्त वक्र क्रिप्टोग्राफी (RFC 5639 से ब्रेनपूल कर्व्स, 512 बिट्स तक) के सुरक्षित सेट के साथ समर्थन जोड़ा है। ताकत में)।

जोड़ी गई विशेषताएं
लिब्रेएसएसएल की शुरुआती रिलीज में कई विशेषताएं जोड़ी गईं: साल्सा20#चाचा वेरिएंट और पॉली1305 एल्गोरिदम, ब्रेनपूल और /एजेंस/प्रकाशन/प्रकाशन-डुन-पैरामेट्रेज-डी-कोर्बे-एलिप्टिक-विसेंट-डेस-एप्लीकेशन-डी-पासपोर्ट-इलेक्ट्रॉनिक-एट-डे-लाडमिनिस्ट्रेशन-इलेक्ट्रॉनिक-फ़्रैंकैस/एएनएसएसआई दीर्घवृत्त वक्र, और गैलोज़/काउंटर मोड |एईएस-जीसीएम और चाचा20-पॉली1305 प्रमाणित एन्क्रिप्शन मोड।

बाद के संस्करणों ने निम्नलिखित जोड़ा: * 2.1.0: स्वचालित क्षणिक कुंजी ईसी कुंजी।
 * 2.1.2: macOS और FreeBSD पर बिल्ट-इन RC4#RC4-आधारित रैंडम नंबर जेनरेटर कार्यान्वयन।
 * 2.1.2: GOST सिफर सूट समर्थन पर काम किया।
 * 2.1.3: एप्लिकेशन-लेयर प्रोटोकॉल बातचीत  सपोर्ट।
 * 2.1.3: SHA-256 और कमीलया (सिफर)  सिफर सुइट्स के लिए समर्थन।
 * 2.1.4: ट्रांसपोर्ट लेयर सिक्योरिटी#POODLE अटैक|TLS_FALLBACK_SCSV सर्वर-साइड सपोर्ट।
 * 2.1.4: c_rehash स्क्रिप्ट के प्रतिस्थापन के रूप में certhash।
 * 2.1.4: स्मृति से प्रमाण पत्र लोड करने के लिए X509_STORE_load_mem API (एन्हांस चेरोट सपोर्ट)।
 * 2.1.4: प्रायोगिक माइक्रोसॉफ़्ट विंडोज़  बायनेरिज़।
 * 2.1.5: मुख्य रूप से विंडोज समर्थन में सुधार के लिए मामूली अद्यतन, पहले 32- और 64-बिट कंप्यूटिंग | 64-बिट बायनेरिज़ काम कर रहे थे।
 * 2.1.6: libtls स्थिर घोषित और डिफ़ॉल्ट रूप से सक्षम।
 * 2.2.0: AIX और Cygwin सपोर्ट।
 * 2.2.1: EC_curve_nid2nist और EC_curve_nist2nid का जोड़ OpenSSL से, प्रारंभिक Windows XP/2003 समर्थन।
 * 2.2.2: LIBRESSL_VERSION_NUMBER को परिभाषित करता है, SSLv23_*मेथड कॉल, CMake बिल्ड सपोर्ट के प्रतिस्थापन के रूप में TLS_*मेथड्स जोड़े गए।

पुरानी असुरक्षित विशेषताएं
लिब्रेएसएसएल की प्रारंभिक रिलीज ने डिफ़ॉल्ट रूप से कई सुविधाओं को अक्षम कर दिया। इन सुविधाओं के लिए कुछ कोड बाद में #कोड हटाने, कर्बरोस (प्रोटोकॉल) सहित, संयुक्त राज्य अमेरिका में क्रिप्टोग्राफी का निर्यात|यूएस-निर्यात सिफर, टीएलएस संपीड़न, ओपनएसएसएल#एसएसएल, टीएलएस और डीटीएलएस प्लेनटेक्स्ट रिकवरी अटैक, एसएसएल v2 और एसएसएल v3.

बाद के संस्करणों ने अधिक सुविधाओं को अक्षम कर दिया:
 * 2.1.1: लीगेसी एसएसएल 3.0 प्रोटोकॉल में पूडल भेद्यता की खोज के बाद, लिबरएसएसएल अब डिफ़ॉल्ट रूप से एसएसएल 3.0 के उपयोग को अक्षम कर देता है।
 * 2.1.3: GOST|GOST R 34.10-94 हस्ताक्षर प्रमाणीकरण। * 2.2.1: डायनेमिक इंजन और MDC-2DES समर्थन को हटाना * 2.2.2: एसएसएल 3.0 को ओपनएसएल बाइनरी से हटाना, इंटरनेट एक्सप्लोरर 6 वर्कअराउंड, आरएसएक्स इंजन को हटाना। * 2.3.0: एसएसएल 3.0, एसएचए-1#एसएचए-0|एसएचए-0 और डेटाग्राम ट्रांसपोर्ट लेयर सुरक्षा को पूरी तरह से हटाना।

कोड हटाना
लिब्रेएसएसएल की प्रारंभिक रिलीज ने कई विशेषताओं को हटा दिया है जिन्हें ओपनबीएसडी 5.6 के हिस्से के रूप में असुरक्षित, अनावश्यक या बहिष्कृत माना गया था।
 * हार्टब्लीड के जवाब में, दिल की धड़कन की कार्यक्षमता हटाए जाने वाली पहली सुविधाओं में से एक थी।
 * अप्रचलित प्लेटफार्मों (क्लासिक मैक ओएस, नेटवेयर, ओएस/2, 16-बिट विंडोज़) के लिए समर्थन हटा दिया गया था।
 * कुछ पुराने प्लेटफॉर्म्स (OpenVMS) के लिए समर्थन हटा दिया गया था।
 * प्लेटफॉर्म के लिए समर्थन जो मौजूद नहीं है, जैसे कि बड़े एंडियन i386 और amd64।
 * पुराने कंपाइलर्स के लिए समर्थन।
 * IBM 4758, ब्रॉडकॉम ubsec, Sureware, Nuron, GOST, GMP, CSwift, CHIL, CAPI, Atalla और AEP इंजनों को हार्डवेयर की अप्रासंगिकता या गैर-मुक्त सॉफ़्टवेयर पर निर्भरता के कारण हटा दिया गया था। गैर-मुक्त पुस्तकालय।
 * ओपनएसएसएल छद्म यादृच्छिक संख्या जनरेटर को हटा दिया गया था (और आर्क4रैंडम के चाचा20-आधारित कार्यान्वयन के साथ बदल दिया गया था)।
 * सी प्रीप्रोसेसर जिसे अनावश्यक या असुरक्षित माना गया है या ओपनएसएसएल में पहले से ही लंबे समय से हटा दिया गया है (उदाहरण के लिए des_old.h)।
 * सभा की भाषा, C (प्रोग्रामिंग लैंग्वेज), और पर्ल (जैसे /dev/random#EGD एक विकल्प के रूप में) के लिए पुरानी अनावश्यक फाइलें।
 * MD2 (क्रिप्टोग्राफी), SEED कार्यक्षमता।
 * एसएसएल 3.0, एसएचए-0, डीटीएलएस1_बीएडी_वर

दोहरी ईसी DRBG एल्गोरिद्म, जिसके पिछले दरवाजे (कंप्यूटिंग)  होने का संदेह है, आवश्यक FIPS 140-2 मानक के समर्थन के साथ कटौती की गई थी यह। अप्रयुक्त प्रोटोकॉल और असुरक्षित एल्गोरिदम को भी हटा दिया गया है, जिसमें FIPS 140-2 के लिए समर्थन शामिल है, एमडी4/एमडी5 Juggling|J-PAKE, द्वारा पासवर्ड प्रमाणित कुंजी एक्सचेंज और सुरक्षित रिमोट पासवर्ड प्रोटोकॉल।

बग बैकलॉग
ओपनएसएसएल की शिकायतों में से एक बग ट्रैकर में रिपोर्ट किए गए ओपन सॉफ्टवेयर बग की संख्या थी जो वर्षों से अनफिक्स हो गई थी। पुराने बग्स को अब LibreSSL में ठीक किया जा रहा है।

यह भी देखें

 * टीएलएस कार्यान्वयन की तुलना
 * क्रिप्टोग्राफी पुस्तकालयों की तुलना
 * ओपनएसएसएच
 * वुल्फएसएसएच

बाहरी संबंध

 * LibreSSL and libtls source code (OpenGrok)
 * LibreSSL and libtls source code (OpenGrok)