कार्यक्रम, डेटा और उनके मालिक (अंत)

लेख के पहले और दूसरे भाग में, हमने एक बड़े बहु-उपयोगकर्ता वातावरण में कंप्यूटर वायरस के मूल कारण की जांच की - ऑटो-प्रोग्रामेबिलिटी (खुद को बदलने के लिए एक एल्गोरिथ्म की क्षमता)।

वायरस लगभग अनिवार्य रूप से एक कंप्यूटर में उत्पन्न होते हैं जिसके लिए 2 शर्तें पूरी होती हैं:
1) हार्डवेयर स्तर पर निष्पादन योग्य कोड निष्पादन योग्य कोड के क्षेत्र में लिखने से निषिद्ध है;
2) कंप्यूटर में कई होस्ट हैं जो स्वतंत्र रूप से सिस्टम इनपुट / आउटपुट इंटरफेस को नियंत्रित करते हैं।

हम कंप्यूटर को एक मनमाना कंप्यूटिंग सिस्टम कहते हैं। हमने पहले ही दिखाया है कि इंटरनेट केवल एक ऐसी प्रणाली है जिसके लिए ये दोनों स्थितियां सत्य हैं। वे इंटरनेट सबसिस्टम के विशाल बहुमत के लिए किए जाते हैं, अर्थात्। सिस्टम इकाइयां इससे जुड़ी हैं - घरेलू स्मार्टफोन और लैपटॉप से ​​लेकर कॉर्पोरेट सर्वर तक। नाममात्र के मालिकों ने नेटवर्क से जुड़ने के क्षण से उन्हें विशेष रूप से नियंत्रित करने की क्षमता खो दी है, इस विशेषाधिकार को उन लाखों अजनबियों के साथ साझा कर रहे हैं जिनके कार्य निष्पादन योग्य कोड को प्रभावित कर सकते हैं।


वायरस प्रतिरोध के संबंध में कंप्यूटर की विश्वसनीयता का आकलन।

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

यदि लोग त्रुटियों के बिना कार्यक्रम लिख सकते हैं तो स्थिति पूरी तरह से अलग होगी। लेकिन अभी तक पृथ्वी पर ऐसी कोई तकनीक नहीं है - कम से कम व्यावसायिक कार्यक्रमों के लिए। हम तकनीकी और सामाजिक कारणों के एक जटिल के बारे में बात करेंगे जो सॉफ़्टवेयर त्रुटियों को एक और बार अपरिहार्य बनाते हैं, लेकिन अब, आइए एक ऐसी दुनिया का वर्णन करने वाली तालिका देखें जहां कार्यक्रमों में त्रुटियां नहीं हैं।


सभी सॉफ्टवेयरों में त्रुटियों की पूर्ण अनुपस्थिति के एक काल्पनिक मामले के लिए वायरस प्रतिरोध के संबंध में एक कंप्यूटर की विश्वसनीयता का आकलन, बशर्ते कि विकास स्तर पर वायरस प्रतिरोध को इसमें शामिल किया गया है :)

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

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

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

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

सॉफ्टवेयर के नियंत्रण वाले व्यक्ति के प्रोसेसर और चिपसेट में उपस्थिति! - स्मृति के कुछ क्षेत्रों के "हार्डवेयर" सुरक्षा के तंत्र पूरी तरह से समस्या का समाधान नहीं करते हैं। उदाहरण के लिए, x86 प्रोसेसर प्रोग्रामेटिक रूप से संरक्षित मोड, सिस्टम मैनेजमेंट और हार्डवेयर वर्चुअलाइजेशन मोड को नियंत्रित करते हैं। लेकिन ऐसे प्रोसेसर के साथ कंप्यूटर को लैस करने का मतलब यह नहीं है कि यह वायरस के लिए अजेय होगा: सॉफ्टवेयर ( BIOS , OS, और अन्य सिस्टम-स्तरीय सॉफ़्टवेयर) के साथ "हार्डवेयर" सुरक्षा के सक्षम प्रबंधन की पूरी जिम्मेदारी। ऐसे कंप्यूटर में कोड की अखंडता पूरी तरह से इस बात पर निर्भर करती है कि यह कैसे प्रोग्राम किया जाता है। दूसरे शब्दों में, यदि दो अलग-अलग ऑपरेटिंग सिस्टम (और एक ही ऑपरेटिंग सिस्टम की दो अलग-अलग सेटिंग्स के साथ भी) कोड प्रोटेक्शन का स्तर एक ही हार्डवेयर पर अलग-अलग होता है, तो इसका मतलब है कि हमारे पास एक विशिष्ट ऑटोप्रोग्राम्ड सिस्टम है जिसमें हार्डवेयर में सुरक्षा लागू नहीं है। लेकिन प्रोग्रामेटिक रूप से।

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

वैसे, लेख के पहले भाग पर कुछ पाठक टिप्पणियों के संबंध में, हम इस तथ्य पर ध्यान आकर्षित करते हैं कि कम से कम एक बिट को इसमें एक मनमाना कार्यक्रम में बदल दिया जाता है। औपचारिक दृष्टिकोण से, दो मनमाने कार्यक्रमों को अलग-अलग मानने के लिए 1 बिट का अंतर पर्याप्त है। "प्रोग्राम रिप्लेसमेंट" शब्द का अर्थ यह नहीं है कि कार्यक्षमता में आमूल-चूल परिवर्तन के साथ शुरू से अंत तक पूरे कोड को बदल दिया जाए :)

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

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


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


तार्किक मॉड्यूल के स्तर पर एंटीवायरस सुरक्षा। यह अच्छी तरह से कार्यक्रमों और डेटा के पृथक्करण के प्रमुख सिद्धांत को दर्शाता है - इसके कार्यान्वयन के लिए विशिष्ट तंत्र की परवाह किए बिना।


स्मृति क्षेत्रों के स्तर पर एंटीवायरस सुरक्षा। भौतिक मेमोरी डिवाइस कोई फर्क नहीं पड़ता: यह यादृच्छिक अभिगम स्मृति, और फ्लैश मेमोरी, और डिस्क मेमोरी (भंडारण), और किसी भी अन्य हो सकता है।


फ़ाइल-स्तरीय एंटीवायरस सुरक्षा। यह स्तर बहुत दृश्य है, इसे नियंत्रित करना सुविधाजनक है।


कार्यात्मक रूप से पूर्ण सॉफ्टवेयर की वस्तुओं के स्तर पर एंटीवायरस सुरक्षा। इस स्तर पर नियंत्रण संगठन के कंप्यूटर बुनियादी ढांचे की दीर्घकालिक विश्वसनीयता की कुंजी है।

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

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

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

तीसरा तरीका त्रुटियों के बिना सॉफ़्टवेयर बनाने के लिए व्यावसायिक रूप से प्रभावी तकनीक विकसित करना है। इस तकनीक की वास्तविकता बेहद संदिग्ध है।

यदि हमारे पाठक संकट को हल करने के अन्य तरीकों को देखते हैं या घटनाओं को संकट के रूप में नहीं मानते हैं, तो हमें उनकी राय जानकर खुशी होगी। हम आपको एक चर्चा के लिए आमंत्रित करते हैं।

* * *

अगले अंक में पढ़ें:
कंप्यूटर वायरस क्या है?

Source: https://habr.com/ru/post/In122586/


All Articles