स्मृति सुरक्षा

From alpha
Jump to navigation Jump to search

मेमोरी सुरक्षा कंप्यूटर पर मेमोरी एक्सेस अधिकारों को नियंत्रित करने का एक तरीका है, और यह अधिकांश आधुनिक निर्देश सेट वास्तुकला और ऑपरेटिंग सिस्टम का एक हिस्सा है। मेमोरी सुरक्षा का मुख्य उद्देश्य एक प्रक्रिया (कंप्यूटिंग) को उस मेमोरी तक पहुँचने से रोकना है जो इसे आवंटित नहीं की गई है। यह एक प्रक्रिया के भीतर एक बग या मैलवेयर को अन्य प्रक्रियाओं या स्वयं ऑपरेटिंग सिस्टम को प्रभावित करने से रोकता है। सुरक्षा में मेमोरी के निर्दिष्ट क्षेत्र तक सभी पहुंच शामिल हो सकती है, एक्सेस लिख सकते हैं, या क्षेत्र की सामग्री को निष्पादित करने का प्रयास कर सकते हैं। अनधिकृत पहुंच का प्रयास[lower-alpha 1] मेमोरी का परिणाम हार्डवेयर ट्रैप (कंप्यूटिंग) में होता है, उदाहरण के लिए, एक विभाजन दोष, भंडारण उल्लंघन अपवाद, आम तौर पर आपत्तिजनक प्रक्रिया की असामान्य समाप्ति का कारण बनता है। कंप्यूटर सुरक्षा के लिए मेमोरी सुरक्षा में अतिरिक्त तकनीकें शामिल हैं जैसे एड्रेस स्पेस लेआउट रैंडमाइजेशन और निष्पादन योग्य अंतरिक्ष सुरक्षा

तरीके

विभाजन

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

x86 आर्किटेक्चर में कई सेगमेंटेशन फीचर हैं, जो इस आर्किटेक्चर पर संरक्षित मेमोरी का उपयोग करने में मददगार हैं।[1] x86 आर्किटेक्चर पर, ग्लोबल डिस्क्रिप्टर टेबल और स्थानीय वर्णनकर्ता तालिका का उपयोग कंप्यूटर की मेमोरी में सेगमेंट को संदर्भित करने के लिए किया जा सकता है। x86 प्रोसेसर पर मेमोरी सेगमेंट के पॉइंटर्स को प्रोसेसर के सेगमेंट रजिस्टरों में भी स्टोर किया जा सकता है। प्रारंभ में x86 प्रोसेसर में 4 सेगमेंट रजिस्टर थे, सीएस (कोड सेगमेंट), एसएस (स्टैक सेगमेंट), डीएस (डेटा सेगमेंट) और ईएस (अतिरिक्त सेगमेंट); बाद में दो और खंड रजिस्टर जोड़े गए - FS और GS।[1]


पेजेड वर्चुअल मेमोरी

पेजिंग में मेमोरी एड्रेस स्पेस या सेगमेंट को समान आकार के ब्लॉक में विभाजित किया जाता है[lower-alpha 2] पृष्ठ (कंप्यूटिंग) कहा जाता है। आभासी मेमोरी हार्डवेयर का उपयोग करते हुए, प्रत्येक पृष्ठ कंप्यूटर की भौतिक मेमोरी की उपयुक्त सीमा पर किसी भी स्थान पर रह सकता है, या संरक्षित होने के रूप में फ़्लैग किया जा सकता है। वर्चुअल मेमोरी एक रेखीय आभासी पता स्थान होना और भौतिक मेमोरी एड्रेस स्पेस पर खंडित ब्लॉकों तक पहुंचने के लिए इसका उपयोग करना संभव बनाती है।

पेजिंग का समर्थन करने वाले अधिकांश कंप्यूटर आर्किटेक्चर स्मृति सुरक्षा के आधार के रूप में पृष्ठों का उपयोग करते हैं।

पृष्ठ तालिका वर्चुअल मेमोरी को भौतिक मेमोरी में मैप करती है। आर्किटेक्चर और ओएस के आधार पर, प्रत्येक प्रक्रिया के लिए एक पृष्ठ तालिका, प्रत्येक खंड के लिए एक पृष्ठ तालिका, या पृष्ठ तालिकाओं का पदानुक्रम हो सकता है। पेज टेबल आमतौर पर प्रक्रिया के लिए अदृश्य होते हैं। पेज टेबल अतिरिक्त मेमोरी आवंटित करना आसान बनाता है, क्योंकि प्रत्येक नए पेज को भौतिक स्मृति में कहीं से भी आवंटित किया जा सकता है। कुछ प्रणालियों पर एक पृष्ठ तालिका प्रविष्टि भी एक पृष्ठ को केवल-पढ़ने के लिए निर्दिष्ट कर सकती है।

कुछ ऑपरेटिंग सिस्टम प्रत्येक प्रक्रिया के लिए एक अलग एड्रेस स्पेस सेट करते हैं, जो हार्ड मेमोरी सुरक्षा सीमाएँ प्रदान करता है।[2] एक वंचित के लिए यह असंभव है[lower-alpha 3] एप्लिकेशन को उस पृष्ठ तक पहुंचने के लिए जो स्पष्ट रूप से इसे आवंटित नहीं किया गया है, क्योंकि प्रत्येक स्मृति पता या तो उस एप्लिकेशन को आवंटित पृष्ठ को इंगित करता है, या एक बाधा उत्पन्न करता है जिसे पृष्ठ गलती कहा जाता है। अनाबंटित पृष्ठ, और किसी अन्य अनुप्रयोग को आवंटित पृष्ठ, अनुप्रयोग के दृष्टिकोण से कोई पता नहीं रखते हैं।

जरूरी नहीं कि एक पेज फॉल्ट एक एरर का संकेत दे। पृष्ठ दोष न केवल स्मृति सुरक्षा के लिए उपयोग किए जाते हैं। ऑपरेटिंग सिस्टम पेज टेबल को इस तरह से प्रबंधित कर सकता है कि एक पेज का संदर्भ जो पहले मेमोरी पेजिंग टू सेकेंडरी स्टोरेज रहा हो[lower-alpha 4] पेज फॉल्ट का कारण बनता है। ऑपरेटिंग सिस्टम पेज फॉल्ट को इंटरसेप्ट करता है, आवश्यक मेमोरी पेज को लोड करता है, और एप्लिकेशन जारी रहता है जैसे कि कोई गलती नहीं हुई थी। यह योजना, एक प्रकार की वर्चुअल मेमोरी, इन-मेमोरी डेटा को अनुमति देती है जो वर्तमान में सेकेंडरी स्टोरेज में ले जाने के लिए उपयोग में नहीं है और एक तरह से जो अनुप्रयोगों के लिए पारदर्शी है, समग्र मेमोरी क्षमता को बढ़ाने के लिए।

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

कुछ प्रणालियों पर, पेज फॉल्ट मैकेनिज्म का उपयोग निष्पादन योग्य स्थान सुरक्षा जैसे W^X के लिए भी किया जाता है।

सुरक्षा कुंजी

मेमोरी सुरक्षा कुंजी (MPK)[3] मैकेनिज्म भौतिक मेमोरी को एक विशेष आकार (जैसे, 4 KiB) के ब्लॉक में विभाजित करता है, जिनमें से प्रत्येक में एक संबद्ध संख्यात्मक मान होता है जिसे एक सुरक्षा कुंजी कहा जाता है। प्रत्येक प्रक्रिया में इसके साथ जुड़ा एक सुरक्षा कुंजी मूल्य भी होता है। मेमोरी एक्सेस पर हार्डवेयर जांच करता है कि वर्तमान प्रक्रिया की सुरक्षा कुंजी एक्सेस किए जा रहे मेमोरी ब्लॉक से जुड़े मान से मेल खाती है; यदि नहीं, तो एक अपवाद होता है। यह तंत्र सिस्टम/360 आर्किटेक्चर में पेश किया गया था। यह आज के System z मेनफ्रेम पर उपलब्ध है और System z ऑपरेटिंग सिस्टम और उनके सबसिस्टम द्वारा अत्यधिक उपयोग किया जाता है।

ऊपर वर्णित सिस्टम/360 सुरक्षा कुंजी भौतिक पतों से संबद्ध हैं। यह हेवलेट पैकर्ड/इंटेल आईए-64 और हेवलेट-पैकर्ड पीए-आरआईएससी जैसे आर्किटेक्चर द्वारा उपयोग किए जाने वाले सुरक्षा कुंजी तंत्र से अलग है, जो वर्चुअल पतों से जुड़े हैं, और जो प्रति प्रक्रिया कई कुंजियों की अनुमति देते हैं।

इटेनियम और PA-RISC आर्किटेक्चर में, ट्रांसलेशन (अनुवाद लुकसाइड बफर एंट्री) में कुंजियाँ (इटेनियम) या एक्सेस आईडी (PA-RISC) जुड़ी होती हैं। एक चालू प्रक्रिया में कई सुरक्षा कुंजी रजिस्टर होते हैं (इटेनियम के लिए 16,[4] पीए-आरआईएससी के लिए 4[5]). वर्चुअल एड्रेस द्वारा चुने गए अनुवाद में प्रत्येक सुरक्षा कुंजी रजिस्टर की तुलना में इसकी कुंजी होती है। यदि उनमें से कोई भी मेल खाता है (साथ ही अन्य संभावित जांच), तो एक्सेस की अनुमति है। यदि कोई मेल नहीं खाता है, तो एक दोष या अपवाद उत्पन्न होता है। सॉफ़्टवेयर फॉल्ट हैंडलर, यदि वांछित हो, तो सॉफ़्टवेयर द्वारा अनुरक्षित कुंजियों की एक बड़ी सूची के विरुद्ध लापता कुंजी की जाँच कर सकता है; इस प्रकार, प्रोसेसर के अंदर सुरक्षा कुंजी रजिस्टरों को एक प्रक्रिया से जुड़ी चाबियों की एक बड़ी सूची के सॉफ़्टवेयर-प्रबंधित कैश के रूप में माना जा सकता है।

PA-RISC में 15-18 बिट्स की होती हैं; इटेनियम कम से कम 18 को अनिवार्य करता है। कुंजी आमतौर पर सुरक्षा डोमेन से जुड़ी होती हैं, जैसे कि पुस्तकालय, मॉड्यूल आदि।

X86 में, सुरक्षा कुंजियाँ[6] आर्किटेक्चर 16 सुरक्षा कुंजियों में से किसी के साथ उपयोगकर्ता पृष्ठों के लिए आभासी पतों को टैग करने की अनुमति देता है। एक ही सुरक्षा कुंजी से टैग किए गए सभी पृष्ठ एक सुरक्षा डोमेन बनाते हैं। एक नए रजिस्टर में प्रत्येक सुरक्षा डोमेन से जुड़ी अनुमतियाँ होती हैं। पृष्ठ तालिका अनुमतियों और वर्चुअल एड्रेस के सुरक्षा डोमेन से जुड़ी सुरक्षा कुंजी अनुमतियों दोनों के विरुद्ध लोड और स्टोर संचालन की जाँच की जाती है, और केवल तभी अनुमति दी जाती है जब दोनों अनुमतियाँ पहुँच की अनुमति देती हैं। सुरक्षा कुंजी अनुमतियों को उपयोगकर्ता स्थान से सेट किया जा सकता है, जिससे एप्लिकेशन ओएस हस्तक्षेप के बिना एप्लिकेशन डेटा तक पहुंच को सीधे प्रतिबंधित कर सकते हैं। चूँकि सुरक्षा कुंजियाँ एक आभासी पते से जुड़ी होती हैं, सुरक्षा डोमेन प्रति पता स्थान होते हैं, इसलिए अलग-अलग पता स्थानों में चलने वाली प्रक्रियाएँ सभी 16 डोमेन का उपयोग कर सकती हैं।

सुरक्षा के छल्ले

मॉलटिक्स और इससे प्राप्त प्रणालियों में, प्रत्येक खंड में पढ़ने, लिखने और निष्पादन के लिए एक सुरक्षा घेरा होता है; सेगमेंट के लिए रिंग नंबर की तुलना में उच्च रिंग नंबर वाली प्रक्रिया द्वारा प्रयास करने से गलती होती है। सुरक्षित रूप से कॉलिंग प्रक्रियाओं के लिए एक तंत्र है जो निचली रिंग में चलती है और उच्च रिंग में वापस आती है। अपनी खुद की रिंग और कॉलर की रिंग के बड़े वाले पैरामीटर तक पहुंचने के लिए कम रिंग नंबर के साथ चलने वाले रूटीन के लिए तंत्र हैं।

नकली विभाजन

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

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

क्षमता-आधारित एड्रेसिंग

क्षमता-आधारित एड्रेसिंग मेमोरी सुरक्षा का एक तरीका है जो आधुनिक व्यावसायिक कंप्यूटरों में अप्रयुक्त है। इस पद्धति में, सूचक (कंप्यूटर प्रोग्रामिंग) को संरक्षित वस्तुओं (क्षमताओं कहा जाता है) द्वारा प्रतिस्थापित किया जाता है जिसे केवल विशेषाधिकार (कंप्यूटिंग) निर्देशों का उपयोग करके बनाया जा सकता है जिसे केवल कर्नेल या ऐसा करने के लिए अधिकृत किसी अन्य प्रक्रिया द्वारा निष्पादित किया जा सकता है।[citation needed] यह प्रभावी रूप से कर्नेल को नियंत्रित करने देता है कि कौन सी प्रक्रिया मेमोरी में किन वस्तुओं तक पहुँच सकती है, अलग पता स्थान या संदर्भ स्विच का उपयोग करने की कोई आवश्यकता नहीं है। केवल कुछ वाणिज्यिक उत्पादों ने क्षमता आधारित सुरक्षा का उपयोग किया: प्लेसी सिस्टम 250, आईबीएम सिस्टम/38, इंटेल आईएपीएक्स 432 निर्देश समुच्चय और कीकोसअत्यधिक विश्वसनीय ऑपरेटिंग सिस्टम और Combex DARPA ब्राउज़र जैसी अनुसंधान प्रणालियों में क्षमता दृष्टिकोण का व्यापक रूप से उपयोग किया जाता है। वे अवधारणात्मक रूप से कुछ आभासी मशीनों के आधार के रूप में उपयोग किए जाते हैं, विशेष रूप से स्मॉलटाक और जावा (सॉफ्टवेयर प्लेटफॉर्म)। वर्तमान में, कैम्ब्रिज विश्वविद्यालय में DARPA द्वारा वित्तपोषित CHERI परियोजना एक आधुनिक क्षमता वाली मशीन बनाने के लिए काम कर रही है जो लीगेसी सॉफ़्टवेयर का भी समर्थन करती है।

डायनेमिक टैंटिंग

डायनेमिक टैंटिंग प्रोग्राम को अवैध मेमोरी एक्सेस से बचाने की एक तकनीक है। जब स्मृति आवंटित की जाती है, रनटाइम पर, यह तकनीक एक ही दागी चिह्न का उपयोग करके स्मृति और संबंधित सूचक दोनों को दूषित करती है। प्रोग्राम के निष्पादन के दौरान टेंट के निशान उपयुक्त रूप से प्रचारित किए जाते हैं और हर बार एक मेमोरी एड्रेस एम को पॉइंटर पी के माध्यम से एक्सेस किया जाता है; यदि m और p से जुड़े कलंक के निशान अलग-अलग हैं, तो निष्पादन रोक दिया जाता है और अवैध पहुँच की सूचना दी जाती है।[7][8] SPARC M7 प्रोसेसर (और उच्चतर) हार्डवेयर में डायनेमिक टैनिंग लागू करते हैं। Oracle इस सुविधा को सिलिकॉन सुरक्षित मेमोरी (SSM) (पहले एप्लिकेशन डेटा इंटीग्रिटी (ADI) के रूप में ब्रांडेड) के रूप में बाजार में उतारता है।[9] LowRISC CPU डिज़ाइन में टैग की गई मेमोरी के नाम से डायनेमिक टैंटिंग शामिल है।[10]


उपाय

किसी विशेष कार्यान्वयन के सुरक्षा स्तर को इस बात से मापा जा सकता है कि वह न्यूनतम विशेषाधिकार के सिद्धांत का कितनी बारीकी से पालन करता है।[11]


विभिन्न ऑपरेटिंग सिस्टम में मेमोरी सुरक्षा

विभिन्न ऑपरेटिंग सिस्टम मेमोरी सुरक्षा या पृथक्करण के विभिन्न रूपों का उपयोग करते हैं। हालांकि 1960 के दशक से अधिकांश मेनफ़्रेम कंप्यूटर और कई मिनी कंप्यूटर सिस्टम पर मेमोरी सुरक्षा आम थी, गृह कम्प्यूटर ऑपरेटिंग सिस्टम में OS/2 (और जोखिम ) 1987 में जारी किया गया था। पूर्व प्रणालियों पर, प्रक्रियाओं के बीच एक सूचक (कंप्यूटर प्रोग्रामिंग) भेजकर, सुरक्षा की कमी को इंटरप्रोसेस संचार के रूप में भी इस्तेमाल किया गया था। ऑपरेटिंग सिस्टम के विंडोज 9x परिवार में सिस्टम मेमोरी तक पहुंचना प्रक्रियाओं के लिए संभव है।[12] मेमोरी सुरक्षा को लागू करने वाले कुछ ऑपरेटिंग सिस्टम में शामिल हैं:

यूनिक्स जैसी प्रणालियों पर, mprotect मेमोरी सुरक्षा को नियंत्रित करने के लिए सिस्टम कॉल का उपयोग किया जाता है।[14]


यह भी देखें

संदर्भ

  1. 1.0 1.1 {{cite book | author = Intel | title = Intel 64 and IA-32 Architectures Software Developer's Manuals: Volume 3A: System Programming Guide, Part 1 | publisher = Intel | date = July 2008 | url = https://www.intel.com/design/processor/manuals/253668.pdf | access-date = 2008-08-21 }
  2. Jeffrey S. Chase; Henry M. Levy; Michael J. Feeley; and Edward D. Lazowska. "Sharing and Protection in a Single Address Space Operating System". doi:10.1145/195792.195795 1993. p. 2.
  3. Memory protection keys, Jonathan Corbet, May 13, 2015, LWN.net
  4. "इटेनियम में कुंजी" (PDF). Archived from the original (PDF) on 2007-11-28.
  5. "Memory protection in HP PA-RISC" (PDF). February 1994. Archived from the original (PDF) on 2015-09-05. Retrieved 2018-10-29.
  6. "इंटेल सॉफ्टवेयर डेवलपर मैनुअल" (PDF). March 2012. Archived from the original (PDF) on 2012-06-01. Retrieved 2018-10-29.
  7. Clause, James; Doudalis, Ioannis; Orso, Alessandro; Prvulovic, Milos (2007). प्रभावी स्मृति संरक्षण गतिशील दागी का उपयोग कर (PDF). Proceedings of the Twenty-Second IEEE/ACM International Conference on Automated Software Engineering. p. 284. doi:10.1145/1321631.1321673. ISBN 9781595938824. S2CID 6334541.
  8. Doudalis, Ioannis; Clause, James; Venkataramani, Guru; Prvulovic, Milos; Orso, Alessandro (2012). "डायनेमिक टैनिंग का उपयोग करके प्रभावी और कुशल मेमोरी प्रोटेक्शन" (PDF). IEEE Transactions on Computers. 61 (1): 87–100. doi:10.1109/TC.2010.215. ISSN 0018-9340. S2CID 15913190.
  9. Jenkins, Michelle. "Oracle Announces Breakthrough Processor and Systems Design with SPARC M7". www.oracle.com. Retrieved 2016-11-18.
  10. "टैग की गई स्मृति समर्थन". www.lowrisc.org. Retrieved 2018-05-24.
  11. Cook, D.J. Measuring memory protection, accepted for 3rd International Conference on Software Engineering, Atlanta, Georgia, May 1978.
  12. "Windows 9x does not have true memory protection". Everything2. 2000-06-24. Retrieved 2009-04-29.
  13. "Pharos".
  14. "mprotect". The Open Group Base Specifications Issue 6. The Open Group.


टिप्पणियाँ

  1. Depending on the architecture, that may include, e.g., unallocated pages and segments, pages in a different protection domain, pages requiring a higher privilege level.
  2. Some systems, e.g., z/OS, support more than one page size.
  3. On some systems there are privileged instructions for storage access by real address.
  4. In the early days of time sharing paging was normally to a magnetic drum; in contemporary systems, paging is normally to a hard disk or solid state device.


बाहरी संबंध