क्षमता-आधारित सुरक्षा: Difference between revisions

From Vigyanwiki
No edit summary
Line 9: Line 9:
किसी क्षमता को विशेष रूप से [[ विशेषाधिकार (कंप्यूटर विज्ञान) |विशेषाधिकार (कंप्यूटर विज्ञान)]] [[ डेटा संरचना |डेटा संरचना]] के रूप में लागू किया जाता है जिसमें एक खंड होता है जो एक्सेस अधिकारों को निर्दिष्ट करता है, और एक अनुभाग जो विशिष्ट रूप से एक्सेस की जाने वाली वस्तु की पहचान करता है। उपयोगकर्ता डेटा संरचना या ऑब्जेक्ट को सीधे एक्सेस नहीं करता है, बल्कि एक [[ हैंडल (कंप्यूटिंग) |हैंडल (कंप्यूटिंग)]] के माध्यम से करता है। व्यवहारिक रूप से, इसका उपयोग पारंपरिक ऑपरेटिंग सिस्टम (पारंपरिक हैंडल) में [[ फाइल डिस्क्रिप्टर |फाइल डिस्क्रिप्टर]] की तरह किया जाता है, लेकिन इस प्रणाली पर हर वस्तु तक पहुंचने के लिए विशेषकर क्षमताओं को सामान्यतः एक सूची में ऑपरेटिंग सिस्टम द्वारा संग्रहीत किया जाता है, प्रोग्राम को क्षमता की सामग्री को सीधे संशोधित करने से रोकने के लिए कुछ तंत्र के साथ (जिससे कि पहुंच अधिकारों को बनाने या उस वस्तु को बदलने के लिए जो इसे इंगित करता है)। कुछ प्रणालियाँ क्षमता-आधारित एड्रेसिंग (क्षमताओं के लिए हार्डवेयर समर्थन) पर भी आधारित हैं, जैसे कि [[ प्लेसी सिस्टम 250 |प्लेसी सिस्टम 250]] ।
किसी क्षमता को विशेष रूप से [[ विशेषाधिकार (कंप्यूटर विज्ञान) |विशेषाधिकार (कंप्यूटर विज्ञान)]] [[ डेटा संरचना |डेटा संरचना]] के रूप में लागू किया जाता है जिसमें एक खंड होता है जो एक्सेस अधिकारों को निर्दिष्ट करता है, और एक अनुभाग जो विशिष्ट रूप से एक्सेस की जाने वाली वस्तु की पहचान करता है। उपयोगकर्ता डेटा संरचना या ऑब्जेक्ट को सीधे एक्सेस नहीं करता है, बल्कि एक [[ हैंडल (कंप्यूटिंग) |हैंडल (कंप्यूटिंग)]] के माध्यम से करता है। व्यवहारिक रूप से, इसका उपयोग पारंपरिक ऑपरेटिंग सिस्टम (पारंपरिक हैंडल) में [[ फाइल डिस्क्रिप्टर |फाइल डिस्क्रिप्टर]] की तरह किया जाता है, लेकिन इस प्रणाली पर हर वस्तु तक पहुंचने के लिए विशेषकर क्षमताओं को सामान्यतः एक सूची में ऑपरेटिंग सिस्टम द्वारा संग्रहीत किया जाता है, प्रोग्राम को क्षमता की सामग्री को सीधे संशोधित करने से रोकने के लिए कुछ तंत्र के साथ (जिससे कि पहुंच अधिकारों को बनाने या उस वस्तु को बदलने के लिए जो इसे इंगित करता है)। कुछ प्रणालियाँ क्षमता-आधारित एड्रेसिंग (क्षमताओं के लिए हार्डवेयर समर्थन) पर भी आधारित हैं, जैसे कि [[ प्लेसी सिस्टम 250 |प्लेसी सिस्टम 250]] ।


'''क्षमता रखने वाले कार्यक्रम''' उन पर कार्य कर सकते हैं, जैसे उन्हें अन्य कार्यक्रमों में भेजना, उन्हें कम-विशेषाधिकार प्राप्त संस्करण में परिवर्तित करना, या उन्हें हटाना। ऑपरेटिंग सिस्टम को यह सुनिश्चित करना चाहिए कि सुरक्षा नीति की अखंडता को बनाए रखने के लिए सिस्टम में क्षमताओं के लिए केवल विशिष्ट संचालन ही हो सकते हैं।
क्षमता रखने वाले कार्यक्रम उन कार्यों को कर सकते हैं जिसमें उन्हें अन्य कार्यक्रमों में भेजना होता है, उन्हें कम-विशेषाधिकार प्राप्त संस्करण में परिवर्तित करना या उन्हें हटाना भी होता है। ऑपरेटिंग सिस्टम को यह सुनिश्चित करना होता है कि सुरक्षा नीति की अखंडता को बनाए रखने के लिए इस प्रणाली में क्षमताओं के लिए केवल विशिष्ट संचालन ही हो सकते हैं।


इस आलेख में चर्चा की गई क्षमताओं को पोर्टेबल ऑपरेटिंग सिस्टम इंटरफ़ेस ([[ POSIX ]]) 1e/2c #POSIX क्षमताओं के साथ भ्रमित नहीं होना चाहिए। बाद वाले मोटे अनाज वाले विशेषाधिकार हैं जिन्हें प्रक्रियाओं के बीच स्थानांतरित नहीं किया जा सकता है।
इस आलेख में चर्चा की गई क्षमताओं को पोर्टेबल ऑपरेटिंग सिस्टम इंटरफ़ेस ([[ POSIX ]]) 1e/2c POSIX क्षमताओं के साथ भ्रमित नहीं होना चाहिए। इस प्रकार बाद वाले मोटे अनाज के लिए विशेषाधिकार होता हैं जिन्हें प्रक्रियाओं के बीच स्थानांतरित नहीं किया जा सकता है।


== उदाहरण ==
== उदाहरण ==
एक क्षमता को एक संरक्षित वस्तु (कंप्यूटर विज्ञान) संदर्भ के रूप में परिभाषित किया गया है, जो एक उपयोगकर्ता प्रक्रिया द्वारा अपने कब्जे के आधार पर अनुदान देता है जो किसी वस्तु के साथ कुछ तरीकों से बातचीत करने की क्षमता (इसलिए नाम) को संसाधित करता है। उन तरीकों में ऑब्जेक्ट से जुड़े डेटा को पढ़ना, ऑब्जेक्ट को संशोधित करना, ऑब्जेक्ट में डेटा को एक प्रक्रिया के रूप में निष्पादित करना और अन्य बोधगम्य एक्सेस अधिकार सम्मलित हो सकते हैं। क्षमता में तार्किक रूप से एक संदर्भ होता है जो विशिष्ट रूप से किसी विशेष वस्तु की पहचान करता है और इनमें से एक या अधिक अधिकारों का एक सेट होता है।
'''एक क्षमता को एक संरक्षित व'''स्तु (कंप्यूटर विज्ञान) संदर्भ के रूप में परिभाषित किया गया है, जो एक उपयोगकर्ता प्रक्रिया द्वारा अपने कब्जे के आधार पर अनुदान देता है जो किसी वस्तु के साथ कुछ तरीकों से बातचीत करने की क्षमता (इसलिए नाम) को संसाधित करता है। उन तरीकों में ऑब्जेक्ट से जुड़े डेटा को पढ़ना, ऑब्जेक्ट को संशोधित करना, ऑब्जेक्ट में डेटा को एक प्रक्रिया के रूप में निष्पादित करना और अन्य बोधगम्य एक्सेस अधिकार सम्मलित हो सकते हैं। क्षमता में तार्किक रूप से एक संदर्भ होता है जो विशिष्ट रूप से किसी विशेष वस्तु की पहचान करता है और इनमें से एक या अधिक अधिकारों का एक सेट होता है।


मान लीजिए कि, उपयोगकर्ता प्रक्रिया की मेमोरी स्पेस में, निम्न स्ट्रिंग सम्मलित है:
मान लीजिए कि, उपयोगकर्ता प्रक्रिया की मेमोरी स्पेस में, निम्न स्ट्रिंग सम्मलित है:

Revision as of 21:00, 2 December 2022

क्षमता-आधारित सुरक्षा कंप्यूटर सुरक्षा प्रणालियों की डिजाइन में ऐसी अवधारणा है, जो सम्मलित कंप्यूटर सुरक्षा मॉडल में से मुख्य है। एक क्षमता (कुछ प्रणालियों में एक कुंजी के रूप में जानी जाती है) प्राधिकरण एक संचारी, अक्षम्य एक्सेस टोकन है। यह किसी मान को इस प्रकार संदर्भित करता है जैसे अभिगम नियंत्रण के संबद्ध प्रणाली के साथ किसी वस्तु (कंप्यूटर विज्ञान) को संदर्भित करता है। क्षमता-आधारित ऑपरेटिंग सिस्टम पर उपयोगकर्ता (कंप्यूटिंग) कंप्यूटर प्रोग्राम को किसी वस्तु तक पहुँचने के लिए क्षमता का उपयोग करता है। क्षमता-आधारित सुरक्षा उपयोगकर्ता कार्यक्रमों को डिजाइन करने के सिद्धांत को संदर्भित करती है जैसे कि कम से कम विशेषाधिकार के सिद्धांत के अनुसार एक दूसरे के साथ क्षमताओं को सीधे साझा करते हैं, और ऐसे लेनदेन को कुशल और सुरक्षित बनाने के लिए आवश्यक ऑपरेटिंग सिस्टम के बुनियादी ढांचे के लिए इसका उपयोग करते हैं। क्षमता-आधारित सुरक्षा को यूनिक्स अनुमतियों और अभिगम नियंत्रण सूचियों का उपयोग करने वाले दृष्टिकोण से अलग किया जाता है।

चूंकि अधिकांश ऑपरेटिंग सिस्टम ऐसी सुविधा को लागू करते हैं जो क्षमताओं से मिलती-जुलती है, वे सामान्यतः पर्याप्त समर्थन प्रदान नहीं करते हैं जिससे कि संभवतः मौलिक रूप से अविश्वसनीय संस्थाओं के बीच क्षमताओं के आदान-प्रदान की अनुमति दी जा सके और पूरी प्रणाली में अभिगम अधिकार वितरित करने का प्राथमिक साधन प्रदान कर सकें। किसी क्षमता-पर आधारित प्रणाली, इसके विपरीत उस लक्ष्य को ध्यान में रखकर बनाई गई है।

परिचय

ये क्षमताएं क्षम्य संदर्भ (कंप्यूटर साइंस) के स्थान पर इसका उपयोग करके प्रणाली की सुरक्षा में सुधार करने के अपने उद्देश्य को प्राप्त करती हैं। किसी क्षम्य संदर्भ (उदाहरण के लिए, पथ (कंप्यूटिंग) ) एक वस्तु की पहचान करता है, लेकिन यह निर्दिष्ट नहीं करता है कि उस वस्तु के लिए कौन से एक्सेस अधिकार उपयुक्त हैं और उपयोगकर्ता प्रोग्राम जो उस संदर्भ को अपने साथ रखता है। परिणाम स्वरुप, संदर्भित ऑब्जेक्ट तक पहुंचने के किसी भी प्रयास को ऑपरेटिंग सिस्टम द्वारा मान्य किया जाना आवश्यक होता है, इस प्रकार अनुरोध करने वाले प्रोग्राम के परिवेश प्राधिकरण के आधार पर, सामान्यतः कंट्रोल सूची को खोलो (एसीएल) के उपयोग के माध्यम से उपयोग किया जाता है। इसके अतिरिक्त, क्षमताओं के साथ किसी प्रणाली में, मात्र तथ्य यह है कि उपयोगकर्ता प्रोग्राम के पास वह क्षमता रखता है जो उस क्षमता द्वारा निर्दिष्ट अधिकारों के अनुसार संदर्भित वस्तु का उपयोग करने का अधिकार देता है। सैद्धांतिक रूप में, विशेष क्षमताओं वाली किसी प्रणाली के सभी संस्थानों को सभी को केवल ये क्षमताएँ देकर किसी भी अभिगम नियंत्रण सूची या समान तंत्र की आवश्यकता को हटा देती है जिसकी उन्हें वास्तव में आवश्यकता होगी।

किसी क्षमता को विशेष रूप से विशेषाधिकार (कंप्यूटर विज्ञान) डेटा संरचना के रूप में लागू किया जाता है जिसमें एक खंड होता है जो एक्सेस अधिकारों को निर्दिष्ट करता है, और एक अनुभाग जो विशिष्ट रूप से एक्सेस की जाने वाली वस्तु की पहचान करता है। उपयोगकर्ता डेटा संरचना या ऑब्जेक्ट को सीधे एक्सेस नहीं करता है, बल्कि एक हैंडल (कंप्यूटिंग) के माध्यम से करता है। व्यवहारिक रूप से, इसका उपयोग पारंपरिक ऑपरेटिंग सिस्टम (पारंपरिक हैंडल) में फाइल डिस्क्रिप्टर की तरह किया जाता है, लेकिन इस प्रणाली पर हर वस्तु तक पहुंचने के लिए विशेषकर क्षमताओं को सामान्यतः एक सूची में ऑपरेटिंग सिस्टम द्वारा संग्रहीत किया जाता है, प्रोग्राम को क्षमता की सामग्री को सीधे संशोधित करने से रोकने के लिए कुछ तंत्र के साथ (जिससे कि पहुंच अधिकारों को बनाने या उस वस्तु को बदलने के लिए जो इसे इंगित करता है)। कुछ प्रणालियाँ क्षमता-आधारित एड्रेसिंग (क्षमताओं के लिए हार्डवेयर समर्थन) पर भी आधारित हैं, जैसे कि प्लेसी सिस्टम 250

क्षमता रखने वाले कार्यक्रम उन कार्यों को कर सकते हैं जिसमें उन्हें अन्य कार्यक्रमों में भेजना होता है, उन्हें कम-विशेषाधिकार प्राप्त संस्करण में परिवर्तित करना या उन्हें हटाना भी होता है। ऑपरेटिंग सिस्टम को यह सुनिश्चित करना होता है कि सुरक्षा नीति की अखंडता को बनाए रखने के लिए इस प्रणाली में क्षमताओं के लिए केवल विशिष्ट संचालन ही हो सकते हैं।

इस आलेख में चर्चा की गई क्षमताओं को पोर्टेबल ऑपरेटिंग सिस्टम इंटरफ़ेस (POSIX ) 1e/2c POSIX क्षमताओं के साथ भ्रमित नहीं होना चाहिए। इस प्रकार बाद वाले मोटे अनाज के लिए विशेषाधिकार होता हैं जिन्हें प्रक्रियाओं के बीच स्थानांतरित नहीं किया जा सकता है।

उदाहरण

एक क्षमता को एक संरक्षित वस्तु (कंप्यूटर विज्ञान) संदर्भ के रूप में परिभाषित किया गया है, जो एक उपयोगकर्ता प्रक्रिया द्वारा अपने कब्जे के आधार पर अनुदान देता है जो किसी वस्तु के साथ कुछ तरीकों से बातचीत करने की क्षमता (इसलिए नाम) को संसाधित करता है। उन तरीकों में ऑब्जेक्ट से जुड़े डेटा को पढ़ना, ऑब्जेक्ट को संशोधित करना, ऑब्जेक्ट में डेटा को एक प्रक्रिया के रूप में निष्पादित करना और अन्य बोधगम्य एक्सेस अधिकार सम्मलित हो सकते हैं। क्षमता में तार्किक रूप से एक संदर्भ होता है जो विशिष्ट रूप से किसी विशेष वस्तु की पहचान करता है और इनमें से एक या अधिक अधिकारों का एक सेट होता है।

मान लीजिए कि, उपयोगकर्ता प्रक्रिया की मेमोरी स्पेस में, निम्न स्ट्रिंग सम्मलित है:

/etc/passwd

चूंकि यह सिस्टम पर एक अनूठी वस्तु की पहचान करता है, यह एक्सेस अधिकारों को निर्दिष्ट नहीं करता है और इसलिए यह क्षमता नहीं है। मान लीजिए कि इसके अतिरिक्त मानों की निम्नलिखित जोड़ी है:

/etc/passwd/
O_RDWR

यह जोड़ी पहुँच अधिकारों के एक सेट के साथ एक वस्तु की पहचान करती है। जोड़ी, चूंकि, अभी भी एक क्षमता नहीं है क्योंकि इन मानों पर उपयोगकर्ता प्रक्रिया का कब्ज़ा इस बारे में कुछ नहीं कहता है कि क्या वह पहुंच वास्तव में वैध होगी।

अब मान लीजिए कि उपयोगकर्ता प्रोग्राम निम्नलिखित कथन को सफलतापूर्वक निष्पादित करता है:

int fd = open( /etc/passwd , O_RDWR);

चर fd अब प्रक्रिया की फ़ाइल डिस्क्रिप्टर तालिका में फ़ाइल डिस्क्रिप्टर की अनुक्रमणिका सम्मलित है। यह फाइल डिस्क्रिप्टर एक क्षमता है। प्रक्रिया की फाइल डिस्क्रिप्टर तालिका में इसका अस्तित्व यह दिखाने के लिए पर्याप्त है कि प्रक्रिया वास्तव में वस्तु तक वैध पहुंच रखती है। इस व्यवस्था की एक प्रमुख विशेषता यह है कि फाइल डिस्क्रिप्टर टेबल कर्नेल (कंप्यूटर साइंस) में है और उपयोगकर्ता प्रोग्राम द्वारा सीधे हेरफेर नहीं किया जा सकता है।

प्रक्रियाओं के बीच साझा करना

पारंपरिक ऑपरेटिंग सिस्टम में, प्रोग्राम अधिकांशतः पहले दो उदाहरणों की तरह संदर्भों का उपयोग करके एक दूसरे के साथ और भंडारण के साथ संवाद करते हैं। पथ नाम अधिकांशतः कमांड-लाइन पैरामीटर के रूप में पास किए जाते हैं, सॉकेट के माध्यम से भेजे जाते हैं, और डिस्क पर संग्रहीत होते हैं। ये संदर्भ क्षमताएं नहीं हैं, और इनका उपयोग करने से पहले इन्हें सत्यापित किया जाना चाहिए। इन प्रणालियों में, एक केंद्रीय प्रश्न यह है कि किसके अधिकार का मानांकन किया जाना है? यह विशेष रूप से उन प्रक्रियाओं के लिए एक महत्वपूर्ण मुद्दा बन जाता है जिन्हें दो अलग-अलग प्राधिकरण-धारक संस्थाओं की ओर से कार्य करना चाहिए। वे एक प्रोग्रामिंग त्रुटि के लिए अतिसंवेदनशील हो जाते हैं जिसे भ्रमित उप समस्या के रूप में जाना जाता है, जिसके परिणामस्वरूप अधिकांशतः सुरक्षा छेद होता है।

एक क्षमता-आधारित प्रणाली में, क्षमताओं को एक तंत्र का उपयोग करके प्रक्रियाओं और भंडारण के बीच पारित किया जाता है जो ऑपरेटिंग सिस्टम द्वारा उन क्षमताओं की अखंडता को बनाए रखने के लिए जाना जाता है।

इस समस्या को हल करने के लिए एक उपन्यास दृष्टिकोण में ऑर्थोगोनल दृढ़ता ऑपरेटिंग सिस्टम का उपयोग सम्मलित है। ऐसी प्रणाली में, संस्थाओं को खारिज करने और उनकी क्षमताओं को अमान्य करने की कोई आवश्यकता नहीं है, और इसलिए बाद में उन क्षमताओं को बहाल करने के लिए एसीएल जैसी तंत्र की आवश्यकता होती है। ऑपरेटिंग सिस्टम हर समय अस्थिर और गैर-वाष्पशील दोनों तरह के सभी भंडारण के भीतर निहित क्षमताओं की अखंडता और सुरक्षा को बनाए रखता है; उपयोगकर्ता प्रोग्राम को ऐसा करने की आवश्यकता के अतिरिक्त, जैसा कि अधिकांश ऑपरेटिंग सिस्टम में होता है, सभी क्रमांकन कार्यों को स्वयं निष्पादित करके। चूंकि उपयोगकर्ता कार्यक्रम इस जिम्मेदारी से मुक्त हो गए हैं, केवल कानूनी क्षमताओं को पुन: उत्पन्न करने के लिए उन पर भरोसा करने की कोई आवश्यकता नहीं है, न ही अभिगम नियंत्रण तंत्र का उपयोग करके पहुंच के अनुरोधों को मान्य करने के लिए। 1980 के दशक की शुरुआत से एक उदाहरण कार्यान्वयन फ्लेक्स मशीन है।

पॉज़िक्स क्षमताएं

पोर्टेबल ऑपरेटिंग सिस्टम इंटरफ़ेस (POSIX) ड्राफ्ट 1003.1e क्षमताओं नामक अनुमतियों की अवधारणा को निर्दिष्ट करता है। चूंकि, POSIX क्षमताएँ इस आलेख की क्षमताओं से भिन्न हैं। POSIX क्षमता किसी वस्तु से संबद्ध नहीं है; CAP_NET_BIND_SERVICE क्षमता वाली एक प्रक्रिया 1024 के अनुसार किसी भी TCP पोर्ट पर सुन सकती है। यह सिस्टम Linux में पाया जाता है।[1] इसके विपरीत, शिमला मिर्च (यूनिक्स) यूनिक्स यूनिक्स डिजाइन और पॉज़िक्स एपीआई के साथ एक वास्तविक क्षमता-प्रणाली मॉडल को संकरणित करता है। कैप्सिकम क्षमताएं फाइल डिस्क्रिप्टर का एक परिष्कृत रूप है, प्रक्रियाओं के बीच एक प्रत्यायोजित अधिकार और क्लासिक POSIX से परे अतिरिक्त वस्तु प्रकार, जैसे प्रक्रियाओं, को क्षमताओं के माध्यम से संदर्भित किया जा सकता है। कैप्सिकम क्षमता मोड में, प्रक्रियाएं ऑब्जेक्ट्स को देखने के लिए ग्लोबल नेमस्पेस (जैसे फाइल सिस्टम नेमस्पेस) का उपयोग करने में असमर्थ हैं, और इसके अतिरिक्त उन्हें इनहेरिट या प्रत्यायोजित किया जाना चाहिए। यह सिस्टम FreeBSD में मूल रूप से पाया जाता है, लेकिन अन्य सिस्टम के लिए पैच उपलब्ध हैं।[2]

कार्यान्वयन

क्षमता-आधारित सुरक्षा को नियोजित करने वाले उल्लेखनीय अनुसंधान और वाणिज्यिक प्रणालियों में निम्नलिखित सम्मलित हैं:

संदर्भ

  1. capabilities(7) – Linux Programmer's Manual – Overview, Conventions and Miscellanea
  2. capsicum(4) – FreeBSD Kernel Interfaces Manual
  3. "जेनोड ओएस: ऑपरेटिंग सिस्टम और सॉफ्टवेयर सुरक्षा में ताजा हवा की सांस".
  4. "Google का Fuchsia ऑपरेटिंग सिस्टम वस्तुतः किसी भी चीज़ पर चलता है".


अग्रिम पठन

POSIX "capabilities" in Linux:


इस पेज में लापता आंतरिक लिंक की सूची

  • कम से कम विशेषाधिकार का सिद्धांत
  • क्षमता आधारित ऑपरेटिंग सिस्टम
  • यूनिक्स अनुमतियाँ
  • संदर्भ (कंप्यूटर विज्ञान)
  • अभिगम नियंत्रण सूची
  • पहुँच नियंत्रण
  • क्षमता-आधारित संबोधन
  • कर्नेल (कंप्यूटर विज्ञान)
  • भ्रमित डिप्टी समस्या
  • क्रमबद्धता
  • तेहो-एलएएफएस

बाहरी संबंध