इस दस्तावेज़ में, ओपनएसएसएल प्रबंधन समिति ओपनएसएसएल रणनीतिक वास्तुकला के बुनियादी सिद्धांतों की रूपरेखा देती है। 3.0.0 से शुरू होकर, वर्तमान आर्किटेक्चर (संस्करण 1.1.1) से भविष्य में जाने के लिए कई संस्करणों की आवश्यकता होगी।वास्तुकला में कई बदलाव अपेक्षित हैं। हम एक संभावित प्रवास पथ प्रदान करते हैं। ओपनएसएसएल 3.0.0 की रिहाई न्यूनतम रूप से मौजूदा अनुप्रयोगों के विशाल बहुमत को प्रभावित करती है, लगभग सभी साक्षर अनुप्रयोगों को बस फिर से तैयार करने की आवश्यकता होगी।
इंजन इंटरफ़ेस द्वारा प्रदान की गई मौजूदा कार्यक्षमता को समय के साथ सॉफ्टवेयर इंटरफ़ेस द्वारा बदल दिया जाएगा। ओपनएसएसएल 3.0.0 इंजन समर्थन को बनाए रखेगा। भविष्य की वास्तुकला को पूरी तरह से ओपनएसएसएल 4.0.0 से पहले लागू नहीं किया जा सकता है।
वर्तमान वास्तुकला
ओपनएसएसएल में वर्तमान में चार मुख्य घटक हैं:
- libcrypto। कई क्रिप्टोग्राफिक प्रिमिटिव के कार्यान्वयन प्रदान करने के लिए मुख्य पुस्तकालय। इसके अलावा, यह libssl और libcrypto के लिए सहायक सेवाओं का एक सेट प्रदान करता है, साथ ही साथ CMS और OCSP जैसे प्रोटोकॉल कार्यान्वयन भी प्रदान करता है।
- इंजन। इंजन एपीआई के माध्यम से libcrypto की कार्यक्षमता को बढ़ाया जा सकता है।
आमतौर पर, इंजन डायनामिक रूप से लोड किए गए मॉड्यूल में लिबक्रेप्टो में पंजीकृत होते हैं और क्रिप्टोग्राफ़िक एल्गोरिदम को लागू करने के लिए उपलब्ध हुक का उपयोग करते हैं, अक्सर एल्गोरिदम के वैकल्पिक कार्यान्वयन जो कि पहले से ही लिबर क्रिप्टो (उदाहरण के लिए, हार्डवेयर त्वरण समर्थन) द्वारा प्रदान किए जाते हैं, लेकिन वे एल्गोरिदम भी शामिल कर सकते हैं जो ओपनएसएसएल द्वारा लागू नहीं किए जाते हैं। डिफ़ॉल्ट रूप से (उदाहरण के लिए, GOST तंत्र एल्गोरिदम के रूसी GOST परिवार को लागू करता है)। कुछ इंजन ओपनएसएसएल वितरण के साथ आते हैं, जबकि अन्य तीसरे पक्ष (फिर से, GOST) के साथ आते हैं।
- libssl। एक पुस्तकालय जो libcrypto पर निर्भर करता है और TLS और DTLS प्रोटोकॉल को लागू करता है।
- आवेदन। क्रिप्टोग्राफिक और अन्य कार्यों का एक सेट प्रदान करने के लिए कमांड लाइन टूल का एक सेट, जो लिबासल और लिबक्रेप्टो के बुनियादी घटकों का उपयोग करता है:
- चाबियाँ और मापदंडों का सृजन और सत्यापन
- प्रमाणपत्र पीढ़ी और सत्यापन
- एसएसएल / टीएलएस परीक्षण उपकरण
- ASN.1 सत्यापन
- और अन्य
ओपनएसएसएल में वर्तमान में निम्नलिखित विशेषताएं हैं:
- EVP। ईवीपी परत (लिफाफा) एपीआई क्रिप्टोग्राफिक कार्यक्षमता के लिए एक उच्च-स्तरीय अमूर्त इंटरफ़ेस प्रदान करता है, बिना किसी विशिष्ट कार्यान्वयन के बंधा हुआ। ईवीपी इंटरफेस को दरकिनार करके क्रिप्टोग्राफिक एल्गोरिदम के विशिष्ट कार्यान्वयन का प्रत्यक्ष उपयोग करने की अनुशंसा नहीं की जाती है। यह हस्ताक्षर और सत्यापन जैसे यौगिक संचालन भी प्रदान करता है। कुछ कंपाउंड ऑपरेशन्स को EVP लेवल ऑपरेशन (उदाहरण के लिए, HMAC-SHA256) के रूप में भी प्रदान किया जाता है। EVP एक एल्गोरिथम-अज्ञेयवादी तरीके से क्रिप्टोग्राफ़िक एल्गोरिदम के उपयोग की अनुमति देता है (उदाहरण के लिए, RSP और ECDSA एल्गोरिदम दोनों के लिए EVP_DigestSign काम करता है)।
- FIPS140 समर्थित नहीं है, यह केवल ओपनएसएसएल-1.0.2 में उपलब्ध है, जो वर्तमान वास्तुकला से पहले है और एपीआई या एबीआई के साथ संगत नहीं है।
घटक संकल्पना
मौजूदा वास्तुकला एक सरल चार-स्तरीय संरचना है, जिसके तल में एक क्रिप्टो परत है। टीएलएस परत क्रिप्टोग्राफिक परत पर निर्भर करती है, और अनुप्रयोग टीएलएस परत और क्रिप्टोग्राफिक परत दोनों पर निर्भर करते हैं।
नोट: आरेख में एक घटक की उपस्थिति का मतलब यह नहीं है कि घटक एक सार्वजनिक एपीआई है या अंतिम उपयोगकर्ता द्वारा सीधे पहुंच / उपयोग के लिए है।

पैकेज आरेख
ऊपर वर्णित घटक पुस्तकालयों (libcrypto और libssl) और संबंधित कर्नेल इंटरफेस, साथ ही साथ विभिन्न अनुप्रयोगों को लॉन्च करने के लिए कमांड लाइन निष्पादन योग्य (ओपनसेल) में पैक किए गए हैं। यह नीचे दिए गए चित्र में दिखाया गया है।

भविष्य की वास्तुकला
भविष्य की वास्तुकला की विशेषताएं:
- कर्नेल सेवाएँ अनुप्रयोगों और प्रदाताओं (उदाहरण के लिए, BIO, X509, SECMEM, ASN1, आदि) द्वारा उपयोग किए जाने वाले बिल्डिंग ब्लॉक्स का निर्माण करती हैं।
- आपूर्तिकर्ता क्रिप्टोग्राफ़िक एल्गोरिदम और समर्थन सेवाओं का उपयोग करते हैं। एक प्रदाता निम्नलिखित कार्यों में से एक या अधिक को लागू करता है:
- एल्गोरिथ्म के लिए क्रिप्टोग्राफ़िक प्राइमरीवेट्स: एन्क्रिप्शन, डिक्रिप्शन, हस्ताक्षर, हैशिंग, आदि।
- एल्गोरिथ्म के लिए सरलीकरण, उदाहरण के लिए, निजी कुंजी को पीईएम फ़ाइल में परिवर्तित करने का कार्य। सीरियलाइज़ेशन स्वरूपों में या उन स्वरूपों से हो सकता है जो वर्तमान में समर्थित नहीं हैं।
- स्टोर लोडर बैकएंड। ओपनएसएसएल वर्तमान में फाइल से कुंजियों, मापदंडों और अन्य तत्वों को पढ़ने के लिए एक बूटलोडर के साथ जहाज करता है। विक्रेता अन्य स्थानों से डेटा पढ़ने के लिए डाउनलोडर को लागू कर सकते हैं (उदाहरण के लिए, LDAP निर्देशिका से)।
प्रदाता पूरी तरह से स्वायत्त हो सकता है या विभिन्न प्रदाताओं या कर्नेल सेवाओं द्वारा प्रदान की जाने वाली सेवाओं का उपयोग कर सकता है। उदाहरण के लिए, एक एप्लिकेशन एक हार्डवेयर त्वरक विक्रेता द्वारा कार्यान्वित एल्गोरिथ्म के लिए क्रिप्टोग्राफिक प्राइमेटिव का उपयोग कर सकता है, लेकिन PKCS # 12 प्रारूप में कुंजी निर्यात करने के लिए किसी अन्य विक्रेता की क्रमांकन सेवाओं का उपयोग करता है।
डिफ़ॉल्ट प्रदाता (जिसमें ओपनएसएसएल क्रिप्टोग्राफिक एल्गोरिदम के वर्तमान कार्यान्वयन का मूल है) "अंतर्निहित" होगा, लेकिन अन्य प्रदाता रन समय पर गतिशील रूप से लोड करने में सक्षम होंगे।
विरासत प्रदाताओं के मॉड्यूल पुराने एल्गोरिदम के लिए क्रिप्टोग्राफिक कार्यान्वयन प्रदान करेंगे (जैसे डीईएस, एमडीसी 2, एमडी 2, ब्लोफिश, सीएएसटी)। हम एक डिफ़ॉल्ट प्रदाता से एक पुराने प्रदाता तक कैसे और कब एल्गोरिदम जाते हैं, इस पर नियम पोस्ट करेंगे।
दान प्रदाता, जो ओपनएसएसएल क्रिप्टोग्राफिक मॉड्यूल को लागू करता है, गतिशील रूप से रन समय पर लोड कर सकता है।
- कर्नेल एप्लिकेशन प्रदाताओं (और अन्य) द्वारा दी जाने वाली सेवाओं तक पहुंच प्रदान करता है। विक्रेता कर्नेल के तरीकों की पहुँच देते हैं। एक कर्नेल एक तंत्र है जिसके द्वारा एल्गोरिदम जैसी चीजों के विशिष्ट कार्यान्वयन की खोज की जाती है।
कर्नेल एल्गोरिदम को खोजने के लिए एक संपत्ति-आधारित खोज फ़ंक्शन को लागू करता है। उदाहरण के लिए, यह एक एल्गोरिथ्म मिलेगा जहां "fips = true" या "keyize = 128, constant_time = true"। विवरण बाद के परियोजना दस्तावेजों में प्रकाशित किया जाएगा।
- प्रोटोकॉल कार्यान्वयन जैसे टीएलएस, डीटीएलएस।
भविष्य की वास्तुकला में निम्नलिखित विशेषताएं हैं:
- ईवीपी परत आपूर्तिकर्ताओं के माध्यम से कार्यान्वित सेवाओं के लिए एक पतली आवरण बन जाती है। अधिकांश कॉल न्यूनतम प्री-प्रोसेसिंग, पोस्ट-प्रोसेसिंग या किसी भी प्रोसेसिंग से नहीं गुजरती हैं।
- नए ईवीपी एपीआई किसी ईवीपी कॉल के लिए उपयोग किए जाने वाले एल्गोरिदम के कार्यान्वयन के लिए कर्नेल की खोज करते दिखाई देंगे।
- सूचना को उनके कार्यान्वयन की परवाह किए बिना मुख्य पुस्तकालय और आपूर्तिकर्ताओं के बीच स्थानांतरित किया जाएगा।
- पदावनत एपीआई (जैसे निम्न-स्तरीय क्रिप्टोग्राफिक एपीआई जो ईवीपी परत से नहीं गुजरते हैं) को बाहर रखा जाएगा। ध्यान दें कि एल्गोरिदम के लिए पुराने API हैं जो पुराने नहीं हैं (उदाहरण के लिए, AES एक पुराना एल्गोरिथ्म नहीं है, लेकिन AES_encrypt एक पुराना API है)।
- OpenSSL FIPS क्रिप्टोग्राफ़िक मॉड्यूल को गतिशील रूप से लोड प्रदाता के रूप में लागू किया जाएगा। यह स्वायत्त होगा (यानी, यह केवल सिस्टम रनटाइम लाइब्रेरी और कर्नेल द्वारा प्रदान की गई सेवाओं पर निर्भर हो सकता है)।
- समय के साथ कर्नेल का उपयोग करके अन्य इंटरफेस भी परिवर्तित किए जा सकते हैं (उदाहरण के लिए, OSSL_STORE)।
- इंजन का उपयोग करने से आपूर्तिकर्ताओं को जाता है। "बाय-बाय, इंजीनियर, हैलो, आपूर्तिकर्ता । "
घटक संकल्पना
नीचे दिए गए आरेख भविष्य के ओपनएसएसएल वास्तुकला के घटकों का अवलोकन प्रदान करते हैं।
नोट: आरेख में एक घटक की उपस्थिति का मतलब यह नहीं है कि घटक एक सार्वजनिक एपीआई है या अंतिम उपयोगकर्ता द्वारा सीधे पहुंच / उपयोग के लिए है।

निम्नलिखित घटक यहां दिखाए गए हैं:
- अनुप्रयोग: कमांड लाइन उपयोगिताओं: सीए, सिफर, सेमी, डीजीएसटी, आदि।
- प्रोटोकॉल: घटक मानक प्रोटोकॉल का उपयोग करके समापन बिंदुओं के बीच संवाद करने की क्षमता प्रदान करता है:
- टीएलएस प्रोटोकॉल: सभी समर्थित टीएलएस / डीटीएलएस प्रोटोकॉल के कार्यान्वयन और बुनियादी ढांचे की सेवा:
- SSL BIO: TLS संचार के लिए BIO
- Statem: TLS राज्य मशीन
- रिकॉर्ड: टीएलएस रिकॉर्ड लेयर
- अन्य प्रोटोकॉल
- CMS: क्रिप्टोग्राफिक संदेश सिंटैक्स मानक को लागू करना
- OCSP: ऑनलाइन प्रमाणपत्र स्थिति प्रोटोकॉल का कार्यान्वयन
- टीएस: टाइमस्टैम्प प्रोटोकॉल कार्यान्वयन
- समर्थन सेवाएँ: विशेष रूप से प्रोटोकॉल कोड कार्यान्वयन का समर्थन करने के लिए डिज़ाइन किए गए घटक
- पैकेट: प्रोटोकॉल संदेशों को पढ़ने के लिए आंतरिक घटक
- Wpacket: प्रोटोकॉल संदेशों को रिकॉर्ड करने के लिए एक आंतरिक घटक
- कर्नेल: यह मूलभूत घटक है जो सेवा प्रदाता से सेवा अनुरोध (जैसे, एन्क्रिप्शन) को जोड़ता है। यह आपूर्तिकर्ताओं को अपनी संपत्तियों के साथ अपनी सेवाओं को पंजीकृत करने में सक्षम बनाता है। कर्नेल उन संपत्तियों के सेट के साथ सेवा खोजने की क्षमता भी प्रदान करता है जिन्हें सेवा को निष्पादित करना चाहिए। उदाहरण के लिए, एन्क्रिप्शन सेवा के गुणों में "aead", "aes-gcm", "fips", "सुरक्षा-बिट्स = 128", आदि शामिल हो सकते हैं।
- डिफ़ॉल्ट प्रदाता: कर्नेल में पंजीकृत डिफ़ॉल्ट सेवाओं का एक सेट लागू करता है।
- समर्थन सेवाएँ
- निम्न-स्तरीय कार्यान्वयन: यह उन घटकों का एक समूह है जो वास्तव में क्रिप्टोग्राफ़िक प्राइमेटिव को लागू करते हैं।
- FIPS प्रदाता: उन सेवाओं का एक सेट लागू करता है जो सत्यापित हैं और FIPS कोर के लिए उपलब्ध हैं। निम्नलिखित समर्थन सेवाएं शामिल हैं:
- POST: पावर ऑन सेल्फ टेस्ट
- KAT: ज्ञात उत्तर टेस्ट
- अखंडता की जाँच
- निम्न-स्तरीय कार्यान्वयन: यह उन घटकों का एक समूह है जो वास्तव में क्रिप्टोग्राफ़िक प्राइमेटिव्स को लागू करते हैं (स्टैंड-अलोन डेनिश आवश्यकता को पूरा करने के लिए)।
- लीगेसी एल्गोरिथम प्रदाता: विरासत एल्गोरिदम के कार्यान्वयन को प्रदान करता है जो कि ईवीपी एपीआई के माध्यम से प्रदान किया जाएगा।
- तृतीय-पक्ष प्रदाता: OpenSSL वितरण का हिस्सा नहीं है। तृतीय पक्ष अपने स्वयं के आपूर्तिकर्ता बेच सकते हैं।
- सामान्य सेवाएं: अनुप्रयोगों और आपूर्तिकर्ताओं (उदाहरण के लिए, BIO, X509, SECMEM, ASN1, आदि) द्वारा उपयोग किए जाने वाले बिल्डिंग ब्लॉक्स का निर्माण करें।
- पदावनत एपीआई। "निम्न-स्तरीय" एपीआई: यहां "अप्रचलित" शब्द विशेष रूप से एपीआई को संदर्भित करता है, और एल्गोरिथ्म को ही नहीं। उदाहरण के लिए, AES एक पुराना एल्गोरिथ्म नहीं है, लेकिन इसके लिए पुराने API हैं (उदाहरण के लिए, AES_encrypt)।
पैकेज आरेख
घटकों के वैचारिक आरेख में ऊपर वर्णित विभिन्न घटकों को शारीरिक रूप से पैक किया गया है:
- उपयोगकर्ताओं के लिए निष्पादन योग्य अनुप्रयोग
- अनुप्रयोगों के लिए पुस्तकालय
- कर्नेल के लिए डायनामिक रूप से लोड करने योग्य मॉड्यूल।

निम्नलिखित वास्तविक पैकेज यहां दिखाए गए हैं:
- निष्पादन योग्य फ़ाइल OpenSSL है। कमांड लाइन आवेदन।
- Libssl। इसमें वह सब कुछ शामिल है जो सीधे TLS और DTLS से संबंधित है। इसकी सामग्री वर्तमान लिबासल के समान ही है। ध्यान दें कि कुछ समर्थन सेवाओं को libcrypto में ले जाया जाएगा।
- Libcrypto। इस लाइब्रेरी में निम्नलिखित घटक हैं:
- मुख्य सेवाओं का कार्यान्वयन: X509, ASN1, EVP, OSSL_STORE, आदि।
- कोर
- गैर-टीएलएस या डीटीएलएस प्रोटोकॉल
- प्रोटोकॉल सपोर्ट सर्विसेज (उदा। पैकेट और पैकेट)
- सभी डिफ़ॉल्ट एल्गोरिदम के कार्यान्वयन वाले डिफ़ॉल्ट प्रदाता
- Libcrypto-विरासत। विरासत को निम्न स्तर के एपीआई प्रदान करता है। इन एपीआई के लिए एल्गोरिदम का कार्यान्वयन किसी भी प्रदाता से आ सकता है।
- डेनिश मॉड्यूल। एक FIPS प्रदाता शामिल है जो कि FIPS द्वारा सत्यापित और कर्नेल में पंजीकृत सेवाओं का एक सेट लागू करता है।
- विरासत मॉड्यूल। एक पुराना प्रदाता होता है।