सुरक्षा रिंग
कंप्यूटर विज्ञान में, श्रेणीबद्ध सुरक्षा डोमेन,[1][2] जिन्हें प्रायः सुरक्षा रिंग कहा जाता है, डेटा और कार्यक्षमता को दोषों (फॉल्ट टॉलरेंस में संशोधन करके) और विद्वेषी (कंप्यूटर सुरक्षा प्रदान करके) से सुरक्षित रखने के लिए क्रियाविधि है।
कंप्यूटर ऑपरेटिंग सिस्टम संसाधनों पर एक्सेस के विभिन्न स्तर प्रदान करते हैं। कंप्यूटर प्रणाली के आर्किटेक्चर के भीतर दो या दो से अधिक पदानुक्रमित स्तरों या प्रिविलेज (कंप्यूटिंग) की परतों में सुरक्षा रिंग है। यह सामान्यतः कुछ सेंट्रल प्रोसेसिंग यूनिट कंप्यूटर आर्किटेक्चर द्वारा हार्डवेयर-प्रवर्तित होता है जो हार्डवेयर या माइक्रोकोड लेयर पर विभिन्न सीपीयू मोड प्रदान करता है। रिंगों को पदानुक्रम में अधिक प्रिविलेज प्राप्त (सबसे विश्वसनीय, सामान्यतः शून्य संख्या) से कम प्रिविलेज प्राप्त (कम से कम विश्वसनीय, सामान्यतः उच्चतम रिंग संख्या के साथ) करने के लिए व्यवस्थित किया जाता है। रिंग 0 अधिक प्रिविलेज का स्तर है और भौतिक हार्डवेयर जैसे कुछ सीपीयू कार्यक्षमता और मदरबोर्ड पर चिप्स के साथ संपर्क की अनुमति प्रदान करता है।
स्वेच्छाचारी उपयोग के विपरीत, पूर्वनिर्धारित विधि से बाह्य रिंग को आंतरिक रिंग के संसाधनों पर एक्सेस की अनुमति देने के लिए रिंगों के मध्य विशेष कॉल गेट प्रदान किए जाते हैं। रिंगों के मध्य उचित गेटिंग एक्सेस रिंग या प्रिविलेज स्तर के प्रोग्राम को दूसरे रिंग में प्रोग्राम के लिए अभिप्रेत संसाधनों के दुरुपयोग को अवरोधित करके सुरक्षा में संशोधन किया जा सकता है। उदाहरण के लिए, रिंग 3 में यूजर प्रोग्राम के रूप में चल रहे स्पाइवेयर को यूजर को सूचित किए बिना वेब कैमरे के उपयोग से अवरोधित करना चाहिए, क्योंकि हार्डवेयर एक्सेस डिवाइस ड्राइवर के लिए आरक्षित रिंग 1 फ़ंक्शन होना चाहिए। उच्च क्रमांकित रिंगों में चलने वाले वेब ब्राउज़र जैसे प्रोग्रामों को कम संख्या वाले रिंगों तक सीमित संसाधन को नेटवर्क एक्सेस अनुरोध करना चाहिए।
कार्यान्वयन
मॉलटिक्स ऑपरेटिंग सिस्टम द्वारा प्रारम्भ की गई क्रांतिकारी अवधारणाओं में विभिन्न सुरक्षा रिंग थे, जो वर्तमान में यूनिक्स ऑपरेटिंग सिस्टम के सदस्य के सुरक्षित पूर्ववर्ती हैं। जीई 645 मेनफ्रेम कंप्यूटर में हार्डवेयर एक्सेस कण्ट्रोल था, किन्तु यह हार्डवेयर में रिंगों के लिए पूर्ण समर्थन प्रदान करने के लिए पर्याप्त नहीं था, इसलिए मल्टिक्स ने सॉफ्टवेयर में रिंग ट्रांज़िशन को पाशबद कर उनका समर्थन किया।[3] इसके उत्तराधिकारी, हनीवेल 6180 ने उन्हें आठ रिंगों के समर्थन के साथ हार्डवेयर में प्रस्तावित किया।[4] चूँकि, अधिकांश सामान्य-प्रयोजन प्रणालियाँ मात्र दो रिंगों का उपयोग करती हैं, भले ही वे जिस हार्डवेयर पर रन करते हैं वह उससे अधिक सीपीयू मोड प्रदान करता हो। उदाहरण के लिए, विंडोज 7 और विंडोज सर्वर 2008 (और उनके पूर्ववर्ती) मात्र दो रिंगों का उपयोग करते हैं, जिसमें रिंग 0 कर्नेल मोड और रिंग 3 यूजर मोड के अनुरूप है,[5]क्योंकि विंडोज के प्राचीन संस्करण ऐसे प्रोसेसर पर रन करते थे जो मात्र दो सुरक्षा स्तरों का समर्थन करते थे।[6]
विभिन्न आधुनिक सीपीयू आर्किटेक्चर (लोकप्रिय इंटेल x86 आर्किटेक्चर सहित) में विभिन्न प्रकार की रिंग सुरक्षा सम्मिलित है, चूँकि यूनिक्स की भाँति विंडोज एनटी ऑपरेटिंग सिस्टम इस सुविधा का पूर्ण रूप से उपयोग नहीं करता है। ओएस/2 तीन रिंगों का उपयोग करता है-[7] कर्नेल कोड और डिवाइस ड्राइवरों के लिए 0 रिंग, प्रिविलेज प्राप्त कोड के लिए 2 रिंग (I/O एक्सेस अनुमतियों के साथ यूजर प्रोग्राम) और अनपेक्षित कोड (प्रायः सभी यूजर प्रोग्राम) के लिए रिंग 3 का उपयोग करता है। Dओएस के अंतर्गत, कर्नेल, ड्राइवर और एप्लिकेशन सामान्यतः रिंग 3 पर रन करते हैं (चूँकि, यह उस स्तिथि के लिए विशिष्ट है जहां संरक्षित-मोड ड्राइवर या डॉस एक्सटेंडर का वास्तविक-मोड ओएस के रूप में उपयोग किया जाता है, जिससे सिस्टम प्रभावी रूप से बिना किसी सुरक्षा के कार्य करता है।), जबकि 386 मेमोरी मैनेजर जैसे ईएमएम 386 रिंग 0 पर रन करते हैं। इसके अतिरिक्त, डीआर-डॉस ईएमएम 386 3.xx वैकल्पिक रूप से रिंग 1 पर कुछ मॉड्यूल (जैसे डॉस संरक्षित मोड सेवाएं) संचालित कर सकते हैं। ओपन VMS कर्नेल, कार्यकारी, सुपरवाइजर और यूजर नामक चार मोड का उपयोग करता है (अवरोही प्रिविलेजों के क्रम में)।
इस संरचना में एक्सईएन वीएमएम सॉफ्टवेयर के प्रसार, मोनोलिथिक के प्रति माइक्रोकर्नेल (विशेष रूप से यूज़नेट न्यूज़ग्रुप और इंटरनेट मंच में) पर विचार-विमर्श, माइक्रोसॉफ्ट की रिंग -1 डिजाइन संरचना के रूप में उनके नेक्स्ट-जेनरेशन सिक्योर कंप्यूटिंग बेस पहल के अंश के रूप में, और इंटेल वीटी-एक्स जैसे x86 वर्चुअलाइजेशन पर आधारित हाइपरवाइजर के साथ पुनः रुचि उत्पन्न हुई थी।
मूल मल्टिक्स प्रणाली में आठ रिंग थे, किन्तु विभिन्न आधुनिक प्रणालियों में कम रिंग होते हैं। हार्डवेयर विशेष मशीन रजिस्टर की सहायता से निष्पादन निर्देश थ्रेड (कंप्यूटिंग) की वर्तमान रिंग से सदैव अवगत रहता है। कुछ प्रणालियों में, आभासी मेमोरी के क्षेत्रों को इसके अतिरिक्त हार्डवेयर में रिंग संख्याएँ प्रदान की जाती हैं। उदाहरण डेटा जनरल एक्लिप्स एमवी / 8000 है, जिसमें प्रोग्राम काउंटर (पीसी) के शीर्ष तीन बिट्स रिंग रजिस्टर के रूप में कार्य करते हैं। इस प्रकार 0xE200000 पर वर्चुअल पीसी सेट के साथ कोड निष्पादन स्वचालित रूप से रिंग 7 में होता है और मेमोरी सेक्शन में सबरूटीन को कॉल करने से स्वचालित रूप से रिंग ट्रांसफर हो जाता है।
हार्डवेयर उन विधियों को गंभीर रूप से प्रतिबंधित करता है जिसमें नियंत्रण एक रिंग से दूसरे रिंग में पारित किया जा सकता है और मेमोरी एक्सेस के प्रकारों पर भी प्रतिबंध लगाता है। उदाहरण के रूप में x86 का उपयोग करते हैं जो विशेष गेट संरचना है जिसे कॉल निर्देश द्वारा संदर्भित किया जाता है जो निचले-स्तर के रिंगों में पूर्वनिर्धारित प्रवेश बिंदुओं की ओर नियंत्रण को सुरक्षित रूप से स्थानांतरित करता है यह रिंग आर्किटेक्चर का उपयोग करने वाले विभिन्न ऑपरेटिंग सिस्टम में सुपरवाइजर कॉल के रूप में कार्य करता है। हार्डवेयर प्रतिबंध सुरक्षा के आकस्मिक या विद्वेषी उल्लंघनों के अवसरों को सीमित करने के लिए डिज़ाइन किए गए हैं। इसके अतिरिक्त, अधिक प्रिविलेज प्राप्त रिंग को विशेष क्षमताएं प्रदान की जा सकती हैं (जैसे वास्तविक मेमोरी एड्रेसिंग जो वर्चुअल मेमोरी हार्डवेयर को बायपास करती है)।
एआरएम वास्तुकला संस्करण 7 आर्किटेक्चर तीन प्रिविलेज स्तरों एप्लिकेशन (पीएल0), ऑपरेटिंग सिस्टम (पीएल1), और हाइपरविजर (पीएल2) को प्रस्तावित करता है। असामान्य रूप से, स्तर 0 (पीएल0) न्यूनतम प्रिविलेज प्राप्त स्तर है, जबकि स्तर 2 अधिक प्रिविलेज प्राप्त स्तर है।[8] AArch64 के लिए एआरएम संस्करण 8 चार अपवाद स्तरों एप्लिकेशन (ईएल0), ऑपरेटिंग सिस्टम (ईएल1), हाइपरविजर (ईएल2) और सुरक्षित मॉनिटर/फर्मवेयर (ईएल3)[9]: D1-2454 और AArch32[9]: G1-6013 को प्रस्तावित करता है|
कुछ प्रणालियों में रिंग सुरक्षा को प्रोसेसर मोड (मास्टर/कर्नेल/प्रिविलेज/सुपरवाइज़र-मोड के प्रति स्लेव/अनविशेष/यूजर मोड) के साथ जोड़ा जा सकता है। दोनों का समर्थन करने वाले हार्डवेयर पर रनकरने वाले ऑपरेटिंग सिस्टम सुरक्षा के दोनों रूपों का उपयोग कर सकते हैं।
रिंग आर्किटेक्चर के प्रभावी उपयोग के लिए हार्डवेयर और ऑपरेटिंग सिस्टम के मध्य घनिष्ठ सहयोग की आवश्यकता होती है|[why?] कई हार्डवेयर प्लेटफॉर्म पर काम करने के लिए डिज़ाइन किए गए ऑपरेटिंग सिस्टम रिंग्स का केवल सीमित उपयोग कर सकते हैं यदि वे प्रत्येक समर्थित प्लेटफॉर्म पर उपस्थित नहीं हैं। अधिकांशतः सुरक्षा मॉडल को कर्नेल और यूजर के लिए सरलीकृत किया जाता है, भले ही हार्डवेयर रिंगों के माध्यम से श्रेष्ठ ग्रैन्युलैरिटी प्रदान करता हो।
मोड
सुपरवाइजर मोड
कंप्यूटर शब्दों में, सुपरवाइजर मोड हार्डवेयर-मध्यस्थ फ़्लैग है जिसे सिस्टम-स्तरीय सॉफ़्टवेयर में चल रहे कोड द्वारा परिवर्तित किया जा सकता है। सिस्टम-स्तरीय कार्यों या थ्रेड्स में यह फ़्लैग कार्य के समय सेट हो सकते हैं,[lower-alpha 1] जबकि यूजर-स्तर के अनुप्रयोग में यह नहीं हो सकते हैं। यह फ़्लैग निर्धारित करता है कि मशीन कोड संचालन को निष्पादित करना संभव होगा जैसे विभिन्न डिस्क्रिप्टर टेबल के लिए रजिस्टरों को संशोधित करना या इंटरप्ट्स को अक्षम करने जैसे संचालन करना। संचालन हेतु दो भिन्न-भिन्न मोड का विचार अधिक शक्ति और उत्तरदायित्व से आता है- सुपरवाइजर मोड में प्रोग्राम विफल न हो ऐसा विश्वास किया जाता है क्योंकि विफलता पूर्ण कंप्यूटर सिस्टम को क्रैश कर सकती है|
सुपरवाइजर मोड कुछ प्रोसेसरों पर निष्पादन मोड है जो प्रिविलेज प्राप्त निर्देशों सहित सभी निर्देशों के निष्पादन को सक्षम बनाता है। यह स्मृति प्रबंधन हार्डवेयर और अन्य बाह्य उपकरणों के लिए विभिन्न एड्रेस स्पेस एक्सेस प्रदान कर सकता है। यह वह मोड है जिसमें ऑपरेटिंग सिस्टम सामान्यतः कार्य करता है।[10]
मोनोलिथिक कर्नेल (ऑपरेटिंग सिस्टम) में, ऑपरेटिंग सिस्टम सुपरवाइजर मोड में कार्य करता है और एप्लिकेशन यूजर मोड में कार्य करता है। अन्य प्रकार के ऑपरेटिंग सिस्टम, जैसे एक्सोकर्नेल या माइक्रोकर्नेल वाले ऑपरेटिंग सिस्टम आवश्यक रूप से इस व्यवहार को साझा नहीं करते हैं।
पीसी जगत से कुछ उदाहरण हैं-
- लिनक्स कर्नेल, मैकोज़ और माइक्रोसॉफ़्ट विंडोज़ तीन ऑपरेटिंग सिस्टम हैं जो सुपरवाइजर/यूजर मोड का उपयोग करते हैं। विशिष्ट कार्यों को करने के लिए, यूजर मोड कोड को सुपरवाइजर मोड में सिस्टम कॉल करना चाहिए या कर्नेल स्पेस पर जहाँ ऑपरेटिंग सिस्टम का विश्वसनीय कोड आवश्यक कार्य करेगा और निष्पादन को यूजर स्पेस पर रिटर्न करेगा। लोडेबल कर्नेल मॉड्यूल के उपयोग के माध्यम से अतिरिक्त कोड को कर्नेल स्पेस में आवश्यक अनुमति वाले यूजर द्वारा जोड़ा जा सकता है, क्योंकि यह कोड यूजर मोड के अभिगम नियंत्रण और सुरक्षा सीमाओं के अधीन नहीं है।
- Dओएस (जब तक कोई 386 मेमोरी मैनेजर जैसे EMM386 लोड नहीं होता है), साथ ही साथ अन्य सरल ऑपरेटिंग सिस्टम और कई एम्बेडेड डिवाइस सुपरवाइज़र मोड में स्थायी रूप से कार्य करते हैं, जिसका अर्थ है कि ड्राइवरों को सीधे यूजर प्रोग्राम के रूप में लिखा जा सकता है।
अधिकांश प्रोसेसर में दो भिन्न-भिन्न मोड होते हैं। X86-प्रोसेसर के चार भिन्न-भिन्न मोड हैं जो चार भिन्न-भिन्न रिंगों में विभाजित हैं। रिंग 0 में कार्य करने वाले प्रोग्राम सिस्टम के साथ कुछ भी कर सकते हैं, और रिंग 3 में कार्य करने वाले कोड को किसी भी समय अन्य कंप्यूटर सिस्टम को प्रभावित किए बिना विफल होने में सक्षम होना चाहिए। रिंग 1 और रिंग 2 का कदाचित ही कभी उपयोग किया जाता है, किन्तु इसे एक्सेस के विभिन्न स्तरों के साथ कॉन्फ़िगर किया जा सकता है।
अधिकांश उपस्तिथ प्रणालियों में, यूजर मोड से कर्नेल मोड में स्विच करने से प्रदर्शन में उच्च कॉस्ट आती है। इसे मूल अनुरोध getpid
पर अधिकांश मशीनों पर 1000-1500 चक्र व्यय के लिए मापा गया है। इनमें से लगभग 100 वास्तविक स्विच के लिए हैं, शेष कर्नेल ओवरहेड है।[11][12] L3 माइक्रोकर्नेल में, इस ओवरहेड को कम करने से कुल व्यय लगभग 150 चक्र तक कम हो गया है।[11]
मौरिस विल्क्स ने अंकित किया है-[13]
अंततः यह स्पष्ट हो गया कि रिंग प्रदान करने वाली पदानुक्रमित सुरक्षा सिस्टम प्रोग्रामर की आवश्यकताओं से निकटता से समान नहीं थी और केवल दो मोड होने की सरल प्रणाली पर कोई संशोधन प्रदान नहीं करती थी।
प्रदर्शन और नियतत्ववाद प्राप्त करने के लिए, कुछ प्रणालियां ऐसे कार्य करती हैं जिन्हें कर्नेल मोड में डिवाइस ड्राइवर के अतिरिक्त एप्लिकेशन लॉजिक के रूप में देखा जा सकता है जिसमें सुरक्षा अनुप्रयोग ( एक्सेस कण्ट्रोल , फ़ायरवॉल (कंप्यूटिंग), आदि) और ऑपरेटिंग सिस्टम मॉनिटर को उदाहरण के रूप में उद्धृत किया गया है। एम्बेडेड डेटाबेस प्रबंधन प्रणाली, एक्सट्रीमडीबी को विशेष रूप से कर्नेल मोड परिनियोजन के लिए कर्नेल-आधारित एप्लिकेशन फ़ंक्शंस को स्थानीय डेटाबेस प्रदान करने और संदर्भ स्विच को समाप्त करने के लिए विकसित किया गया है जो अन्यथा तब होता है जब कर्नेल फ़ंक्शन यूजर मोड में कार्य कर रहे डेटाबेस सिस्टम के साथ इंटरैक्ट करता है।[14]
फंक्शंस को कभी-कभी दूसरी दिशा में रिंगों में भी ले जाया जाता है। उदाहरण के लिए, लिनक्स कर्नेल वीडीएसओ अनुभाग को प्रक्रियाओं में प्रवेश करता है जिसमें ऐसे कार्य होते हैं जिन्हें सामान्य रूप से सिस्टम कॉल अर्थात रिंग ट्रांज़िशन की आवश्यकता होती है। सिस्कल करने के अतिरिक्त ये कार्य कर्नेल द्वारा प्रदान किए गए स्थिर डेटा का उपयोग करते हैं। यह रिंग ट्रांज़िशन की आवश्यकता से बचाता है और इसलिए यह सिस्कल से अधिक सरल है। फंक्शन gettimeofday इस प्रकार प्रदान किया जा सकता है।
हाइपरवाइजर मोड
इंटेल और एएमडी के सीपीयू रिंग 0 हार्डवेयर एक्सेस को नियंत्रित करने के लिए हाइपरविजर के लिए x86 वर्चुअलाइजेशन निर्देश प्रदान करते हैं। चूँकि वे पारस्परिक रूप से असंगत हैं, इंटेल वीटी-एक्स (कोडनेम वेंडरपूल) और एएमडी-वी (कोडनेम पसिफ़िका) दोनों नया रिंग-1 बनाते हैं जिससे कि गेस्ट ऑपरेटिंग सिस्टम, अन्य होस्ट ऑपरेटिंग सिस्टम को प्रभावित किए बिना मूल रूप से रिंग 0 संचालन कार्य कर सकता है। <ब्लॉककोट> वर्चुअलाइजेशन की सहायता के लिए, वीटी-एक्स और सुरक्षित वर्चुअल मशीन रिंग 0 के नीचे नया प्रिविलेज स्तर स्थापित करते हैं। दोनों, नौ नए मशीन कोड निर्देश जोड़ते हैं जो मात्र रिंग −1 पर काम करते हैं, जिसका उद्देश्य हाइपरविजर द्वारा उपयोग किया जाना है।
प्रिविलेज स्तर
X86 निर्देश सेट में प्रिविलेज स्तर, वर्तमान में प्रोसेसर पर चल रहे प्रोग्राम के एक्सेस को मेमोरी क्षेत्रों, I/O पोर्ट और विशेष निर्देश जैसे संसाधनों तक नियंत्रित करता है। 4 प्रिविलेज स्तर होते हैं| अधिकांश आधुनिक ऑपरेटिंग सिस्टम कर्नेल के लिए स्तर 0 का उपयोग करते हैं और एप्लिकेशन प्रोग्राम के लिए स्तर 3 का उपयोग करते हैं। स्तर n के लिए उपलब्ध कोई भी संसाधन 0 से n स्तरों के लिए भी उपलब्ध होता है, इसलिए प्रिविलेज स्तर, रिंग होते हैं। जब कम प्रिविलेज प्राप्त प्रक्रिया उच्च प्रिविलेज प्राप्त प्रक्रिया पर एक्सेस का प्रयास करती है, तो ओएस को सामान्य सुरक्षा दोष अपवाद की सूचना दी जाती है।
सभी प्रिविलेज स्तरों का उपयोग करना आवश्यक नहीं है। माइक्रोसॉफ्ट विंडोज, मैकओएस, लिनक्स, आईओएस और एंड्रॉयड (ऑपरेटिंग सिस्टम) सहित वर्तमान ऑपरेटिंग सिस्टम अत्यधिक प्रिविलेज स्तर को सुपरवाइजर या यूजर (U/S बिट) के रूप में निर्दिष्ट करने के लिए मात्रएक बिट के साथ पेजिंग तंत्र का उपयोग करते हैं। विंडोज एनटी दो-स्तरीय सिस्टम का उपयोग करता है।[15]
8086 में रियल मोड प्रोग्राम 0 स्तर (उच्चतम प्रिविलेज स्तर) पर निष्पादित होते हैं जबकि 8086 में वर्चुअल मोड 3 स्तर पर सभी प्रोग्राम निष्पादित करता है।[16]
x86 ISA सदस्य द्वारा समर्थित एकाधिक प्रिविलेज स्तरों के संभावित भावी उपयोगों में कंटेनर (आभासी बनाएं) और वर्चुअल मशीन सम्मिलित हैं। होस्ट ऑपरेटिंग सिस्टम कर्नेल पूर्ण प्रिविलेज एक्सेस (कर्नेल मोड) के साथ निर्देशों का उपयोग कर सकता है, जबकि वर्चुअल मशीन या कंटेनर में गेस्ट ओएस पर रनकरने वाले एप्लिकेशन यूजर मोड में निम्नतम स्तर के प्रिविलेजों का उपयोग कर सकते हैं। वर्चुअल मशीन और गेस्ट ओएस कर्नेल स्वयं गेस्ट ऑपरेटिंग सिस्टम के दृष्टिकोण से सिस्टम कॉल जैसे कर्नेल-मोड संचालन को प्रस्तावित करने और वर्चुअलाइज़ करने के लिए मध्यवर्ती स्तर के निर्देश प्रिविलेज का उपयोग कर सकते हैं।[17]
आईओपीएल
आईओपीएल (I/O प्रिविलेज स्तर) फ्लैग सभी IA-32 संगत x86 आर्किटेक्चर पर पाया जाने वाला फ्लैग है। यह फ्लैग रजिस्टर में 12 और 13 बिट्स पर होता है। संरक्षित मोड और लॉन्ग मोड में, यह वर्तमान प्रोग्राम या कार्य के I/O प्रिविलेज स्तर को दर्शाता है। कार्य या प्रोग्राम का वर्तमान प्रिविलेज स्तर (CPL) (CPL0, CPL1, CPL2, CPL3) I/O पोर्ट एक्सेस के लिए कार्य या प्रोग्राम के क्रम में IOPL से कम या समान होना चाहिए।
जब वर्तमान प्रिविलेज स्तर रिंग 0 हो, तब POPF(D)
और IRET(D)
का उपयोग करके आईओपीएल को परिवर्तित किया जा सकता है।
आईओपीएल के अतिरिक्त, TSS में I/O पोर्ट अनुमतियाँ भी I/O पोर्ट एक्सेस के लिए किसी कार्य की क्षमता निर्धारित करने में सम्मिलित होते हैं।
विविध
x86 सिस्टम में, x86 हार्डवेयर वर्चुअलाइजेशन (वीटी-एक्स और सिक्योर वर्चुअल मशीन) को रिंग -1 कहा जाता है, सिस्टम प्रबंधन मोड को रिंग -2 कहा जाता है, इंटेल प्रबंधन इंजन और एएमडी प्लेटफार्म सुरक्षा प्रोसेसर को कभी-कभी रिंग−3 कहा जाता है।[18]
हार्डवेयर सुविधाओं का उपयोग
विभिन्न सीपीयू हार्डवेयर आर्किटेक्चर अधिक फ्लेक्सिबिलिटी प्रदान करते हैं। जटिल सीपीयू मोड के उचित उपयोग के लिए ऑपरेटिंग सिस्टम और सीपीयू के मध्य सहयोग की आवश्यकता होती है और इस प्रकार यह ओएस को सीपीयू आर्किटेक्चर से जोड़ता है। जब ओएस और सीपीयू को विशेष रूप से एक दूसरे के लिए डिज़ाइन किया जाता है तब यह कोई समस्या नहीं है (चूँकि कुछ हार्डवेयर सुविधाएँ अभी भी अप्रयुक्त रह सकती हैं), किन्तु जब ओएस को विभिन्न एमआईपीएस आर्किटेक्चर के साथ संगत होने के लिए डिज़ाइन किया जाता है तब इसका बड़ा भाग सीपीयू मोड सुविधाओं को ओएस द्वारा अप्रत्यक्ष किया जा सकता है। उदाहरण के लिए, विंडोज मात्र दो स्तरों (रिंग 0 और रिंग 3) का उपयोग करता है जिसका कारण यह है कि कुछ हार्डवेयर आर्किटेक्चर जो अतीत में समर्थित थे (जैसे कि पावरपीसी या एमआईपीएस आर्किटेक्चर) उनमें मात्र दो प्रिविलेज स्तर प्रस्तावित किये गए थे।[5]
मल्टिक्स ऑपरेटिंग सिस्टम, जिसे विशेष रूप से विशेष सीपीयू आर्किटेक्चर के लिए डिजाइन किया गया और इसने उपलब्ध सीपीयू मोड का पूर्ण लाभ प्राप्त किया था। चूँकि, यह नियम का अपवाद था। वर्तमान में, सुरक्षा और स्थिरता के संभावित लाभों के अतिरिक्त, ओएस और हार्डवेयर के मध्य यह उच्च स्तर का इंटरऑपरेशन अधिकांशतः व्यय प्रभावी नहीं होता है।
अंततः, सीपीयू के लिए भिन्न-भिन्न ऑपरेटिंग मोड का उद्देश्य सॉफ्टवेयर द्वारा सिस्टम (और सिस्टम सुरक्षा के इसी उल्लंघन) के आकस्मिक करप्शन के विरुद्ध हार्डवेयर सुरक्षा प्रदान करना है। सिस्टम सॉफ़्टवेयर के केवल विश्वसनीय भागों को कर्नेल मोड के अप्रतिबंधित वातावरण में निष्पादित करने की अनुमति दी जाती है। अन्य सभी सॉफ़्टवेयर एक अथवा अधिक यूजर मोड में निष्पादित होते हैं। यदि कोई प्रोसेसर यूजर मोड में अपवाद की स्थिति उत्पन्न करता है, तो अत्यधिक स्तिथियों में सिस्टम स्थिरता अप्रभावित रहती है; यदि कोई प्रोसेसर कर्नेल मोड में दोष या अपवाद की स्थिति उत्पन्न करता है, तो अधिकांश ऑपरेटिंग सिस्टम, प्रणाली को अपरिवर्तनीय त्रुटि के साथ स्थगित कर देते हैं। जब मोड का पदानुक्रम उपस्थित होता है (रिंग-आधारित सुरक्षा), प्रिविलेज स्तर पर दोष और अपवाद केवल उच्च संख्या वाले प्रिविलेज स्तरों को अस्थिर कर सकते हैं। इस प्रकार, रिंग 0 (उच्चतम प्रिविलेज वाला कर्नेल मोड) में दोष सिस्टम को क्रैश कर देगा, किन्तु रिंग 2 में दोष केवल रिंग 3 और रिंग 2 को ही प्रभावित करेगा।
मोड के मध्य ट्रांजीशन निष्पादन थ्रेड (कंप्यूटिंग) के निर्णय पर होता है जब ट्रांजीशन उच्च प्रिविलेज के स्तर से निम्न प्रिविलेज (कर्नेल से यूजर मोड तक) में होता है, किन्तु निम्न से उच्च स्तर के प्रिविलेज में ट्रांजीशन सुरक्षित हार्डवेयर-नियंत्रित गेट के माध्यम से हो सकता है जो विशेष निर्देशों को निष्पादित करके पार किए जाते हैं।
माइक्रोकर्नेल ऑपरेटिंग सिस्टम कंप्यूटर सुरक्षा और सौष्ठव के प्रयोजनों के लिए प्रिविलेज प्राप्त मोड में चल रहे कोड को कम करने का प्रयास करते हैं।
यह भी देखें
- कॉल गेट (इंटेल)
- स्मृति विभाजन
- सुरक्षित प्रकार – x86-संगत 80286 सीपीयू पर उपलब्ध है
- IOPL (CONFIG.SYS निर्देश) - रिंग 3 के अतिरिक्त रिंग 2 पर DLL कोड चलाने के लिए ओएस/2 निर्देश
- सेगमेंट डिस्क्रिप्टर
- सुपरवाइजर कॉल निर्देश
- सिस्टम प्रबंधन मोड (एसएमएम)
- प्रिविलेज का सिद्धांत
टिप्पणियाँ
संदर्भ
- ↑ Karger, Paul A.; Herbert, Andrew J. (1984). जाली सुरक्षा और पहुंच की पता लगाने की क्षमता का समर्थन करने के लिए एक संवर्धित क्षमता वास्तुकला. 1984 IEEE Symposium on Security and Privacy. p. 2. doi:10.1109/SP.1984.10001. ISBN 0-8186-0532-4. S2CID 14788823.
- ↑ Binder, W. (2001). "Design and implementation of the J-SEAL2 mobile agent kernel". Proceedings 2001 Symposium on Applications and the Internet. pp. 35–42. doi:10.1109/SAINT.2001.905166. ISBN 0-7695-0942-8. S2CID 11066378.
- ↑ "प्रोटेक्शन रिंग्स को लागू करने के लिए एक हार्डवेयर आर्किटेक्चर". Communications of the ACM. 15 (3). March 1972. Retrieved 27 September 2012.
- ↑ "मल्टिक्स ग्लोसरी - रिंग". Retrieved 27 September 2012.
- ↑ 5.0 5.1 Russinovich, Mark E.; David A. Solomon (2005). माइक्रोसॉफ्ट विंडोज आंतरिक (4 ed.). Microsoft Press. pp. 16. ISBN 978-0-7356-1917-3.
- ↑ Russinovich, Mark (2012). Windows Internals Part 1. 6th Ed. Redmond, Washington: Microsoft Press. p. 17. ISBN 978-0-7356-4873-9.
The reason Windows uses only two levels is that some hardware architectures that were supported in the past (such as Compaq Alpha and Silicon Graphics MIPS) implemented only two privilege levels.
- ↑ "Presentation Device Driver Reference for OS/2 - 5. Introduction to OS/2 Presentation Drivers". Archived from the original on 15 June 2015. Retrieved 13 June 2015.
- ↑ ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition. Arm Ltd. p. B1-1136.
- ↑ 9.0 9.1 Arm Architecture Reference Manual Armv8, for A-profile architecture. Arm Ltd.
- ↑ "पर्यवेक्षक मोड". FOLDOC. 15 February 1995.
- ↑ 11.0 11.1 Jochen Liedtke (December 1995). "On µ-Kernel Construction". Proc. 15th ACM Symposium on Operating System Principles (SOSP).
- ↑ Ousterhout, J. K. (1990). Why aren't operating systems getting faster as fast as hardware?. Usenix Summer Conference A. naheim, CA. pp. 247–256.
- ↑ Maurice Wilkes (April 1994). "बदलती दुनिया में ऑपरेटिंग सिस्टम". ACM SIGOPS Operating Systems Review. 28 (2): 9–21. doi:10.1145/198153.198154. ISSN 0163-5980. S2CID 254134.
- ↑ Gorine, Andrei; Krivolapov, Alexander (May 2008). "Kernel Mode Databases: A DBMS Technology For High-Performance Applications". Dr. Dobb's Journal.
- ↑ Russinovich, Mark E.; Solomon, David A. (2005). माइक्रोसॉफ्ट विंडोज आंतरिक (4th ed.). Microsoft Press. p. 16. ISBN 978-0-7356-1917-3.
- ↑ Sunil Mathur. Microprocessor 8086: Architecture, Programming and Interfacing (Eastern Economy ed.). PHI Learning.
- ↑ Anderson, Thomas; Dahlin, Michael (21 August 2014). "2.2". Operating Systems: Principles and Practice (2nd ed.). Recursive Books. ISBN 978-0985673529.
- ↑ Gelas, Johan De. "Hardware Virtualization: the Nuts and Bolts". www.anandtech.com. Retrieved 13 March 2021.
- Intel 80386 Programmer's Reference
अग्रिम पठन
- David T. Rogers (June 2003). A framework for dynamic subversion (PDF) (MSc). Naval Postgraduate School. hdl:10945/919.
- William J. Caelli (2002). "Relearning "Trusted Systems" in an Age of NIIP: Lessons from the Past for the Future". Archived from the original (PDF) on 20 April 2015.
- Haruna R. Isa; William R. Shockley; Cynthia E. Irvine (May 1999). "A Multi-threading Architecture for Multilevel Secure Transaction Processing" (PDF). Proceedings of the 1999 IEEE Symposium on Security and Privacy. Oakland, CA. pp. 166–179. hdl:10945/7198.
- Ivan Kelly (8 May 2006). "Porting MINIX to Xen" (PDF). Archived from the original (PDF) on 27 August 2006.
- Paul Barham; Boris Dragovic; Keir Fraser; Steven Hand; Tim Harris; Alex Ho; Rolf Neugebauer; Ian Pratt; Andrew Warfield (2003). "Xen and the Art of Virtualization" (PDF).
- Marcus Peinado; Yuqun Chen; Paul England; John Manferdelli. "NGSCB: A Trusted Open System" (PDF). Archived from the original (PDF) on 4 March 2005.
- Michael D. Schroeder; Jerome H. Saltzer (1972). "A Hardware Architecture for Implementing Protection Rings".
- "Intel Architecture Software Developer's Manual Volume 3: System Programming (Order Number 243192)" (PDF). Chapter 4 "Protection"; section 4.5 "Privilege levels". Archived from the original (PDF) on 19 February 2009.
- Tzi-cker Chiueh; Ganesh Venkitachalam; Prashant Pradhan (December 1999). "Integrating segmentation and paging protection for safe, efficient and transparent software extensions". Proceedings of the seventeenth ACM symposium on Operating systems principles. Section 3: Protection hardware features in Intel X86 architecture; subsection 3.1 Protection checks. doi:10.1145/319151.319161. ISBN 1581131402. S2CID 9456119.
- Takahiro Shinagawa; Kenji Kono; Takashi Masuda (17 May 2000). "Exploiting Segmentation Mechanism for Protecting Against Malicious Mobile Code" (PDF). Chapter 3 Implementation; section 3.2.1 Ring Protection. Archived from the original (PDF) on 10 August 2017. Retrieved 2 April 2018.
- Boebert, William Earl; R. Kain (1985). A Practical Alternative to Hierarchical Integrity Policies. 8th National Computer Security Conference.
- Gorine, Andrei; Krivolapov, Alexander (May 2008). "Kernel Mode Databases: A DBMS technology for high-performance applications". Dr. Dobb's Journal.