क्षमता-आधारित सुरक्षा

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

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

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

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

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

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

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

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

/आदि/पासवर्ड

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

/आदि/पासवर्ड O_RDWR

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

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

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

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

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

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

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

कार्यान्वयन
क्षमता-आधारित सुरक्षा को नियोजित करने वाले उल्लेखनीय अनुसंधान और वाणिज्यिक प्रणालियों में निम्नलिखित शामिल हैं:
 * ताहो-एलएएफएस, एक ओपन-सोर्स क्षमता-आधारित फाइल सिस्टम
 * GNOSIS, Tymshare  में विकसित एक ऑपरेटिंग सिस्टम
 * कीकोस, ज्ञान की  का उत्तराधिकारी
 * EROS, अत्यधिक विश्वसनीय ऑपरेटिंग सिस्टम, KeyKOS का उत्तराधिकारी
 * CapROS, व्यावसायिक उपयोग के लिए EROS कोड बेस को और विकसित करने की परियोजना
 * कैम्ब्रिज सीएपी कंप्यूटर
 * हाइड्रा (ऑपरेटिंग सिस्टम), करनेगी मेलों विश्वविद्याल  में C.mmp प्रोजेक्ट का हिस्सा है
 * स्टारओएस, कार्नेगी मेलॉन यूनिवर्सिटी में सीएम* प्रोजेक्ट का हिस्सा है
 * आईबीएम सिस्टम/38 और एएस/400
 * इंटेल आईएपीएक्स 432
 * प्लेसी 250
 * फ्लेक्स मशीन
 * L4 माइक्रोकर्नेल परिवार :
 * ओकेएल4 ओपन कर्नेल लैब्स से
 * निक्टा से SEL4
 * टीयू ड्रेसडेन से Fiasco.OC और NOVA
 * अमीबा (ऑपरेटिंग सिस्टम) वितरित ऑपरेटिंग सिस्टम
 * FreeBSD शिमला मिर्च (यूनिक्स)
 * जीनोड
 * गूगल फुकिया
 * Webविधानसभा सिस्टम इंटरफेस (डब्ल्यूएएसआई)

संदर्भ

 * Levy, Henry M., *Capability-Based Computer Systems, Digital Equipment Corporation 1984. ISBN 0-932376-22-3. An electronic version is available here.
 * The EROS Project
 * E, a programming language based around capability security (ERights.org)
 * Mark S. Miller, Ka-Ping Yee, Jonathan Shapiro. Capability Myths Demolished, Technical Report SRL2003-02, Systems Research Laboratory, Johns Hopkins University. Available online.
 * The Cambridge CAP Computer, Levy, 1988

अग्रिम पठन
POSIX "capabilities" in Linux:
 * Capability-based addressing:
 * Li Gong, A Secure Identity-Based Capability System, sp, p. 56, 1989 IEEE Symposium on Security and Privacy, 1989
 * Capability-based addressing
 * A hardware implementation of capability-based addressing
 * An implementation of capabilities on the PDP-11/45
 * IBM System/38 support for capability-based addressing
 * EROS: a fast capability system
 * POSIX Capabilities & Files
 * POSIX file capabilities: Parceling the power of root
 * Making Root Unprivileged
 * Security issues and new risks linked to POSIX file capabilities
 * Linux manual page for "capabilities(7)"
 * Working with Linux capabilities

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

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

बाहरी संबंध

 * "What is a Capability?"
 * Reviews of 'Capability Myths Demolished'
 * Capability Theory by Sound Bytes