रिचर्ड स्नोडेन के लिए धन्यवाद, अधिक से अधिक लोग अब जानते हैं कि
एनएसए क्या
है और यह क्या करता है। जिन आंतरिक प्रस्तुतियों का खुलासा किया गया है, उनके आधार पर, यह स्पष्ट है कि एनएसए न केवल यातायात एकत्र करने और इंटरनेट प्रदाताओं और सॉफ्टवेयर दिग्गजों के नेटवर्क पर "सही" कार्यक्रमों को शुरू करने पर, बल्कि क्रिप्टोग्राफिक एल्गोरिदम का विश्लेषण करने पर भी बहुत प्रयास करता है। 2013 के राष्ट्रीय सुरक्षा बजट के साथ
178 पन्नों का दस्तावेज सार्वजनिक रूप से उपलब्ध कराया गया था। यह इस प्रकार है कि समेकित क्रिप्टोकरेंसी कार्यक्रम परियोजना पर $ 11 बिलियन का खर्च किया गया था। उस तरह के पैसे के लिए क्या किया जा सकता है? निश्चित रूप से लाभ के साथ खर्च करें। उदाहरण के लिए, यूटा में $ 2 बिलियन के विशालकाय कंप्यूटिंग केंद्र का निर्माण, मॉर्मन की मांद में सही। केंद्र में 2300 एम 2 सर्वर स्थान है, जिसमें 65 मेगावॉट का अपना पावर प्लांट है और सभी को ठंडा करने के लिए 60 हजार टन के प्रशीतन उपकरण हैं। 2012 में, यह आधिकारिक होठों से हटा दिया गया था कि एनएसए ने हाल ही में क्रिप्टोनालिसिस और हैकिंग कॉम्प्लेक्स सिस्टम में सफलता प्राप्त की थी। क्या इसीलिए उन्हें एक नए डेटा सेंटर की आवश्यकता थी? क्रिप्टोग्राफी गुरु ब्रूस श्नेयर ने इन बयानों पर टिप्पणी की और सुझाव दिया कि एनएसए निकट भविष्य में किसी भी आधुनिक, मजबूत सिफर जैसे एईएस को क्रैक करने में सक्षम होने की संभावना नहीं है। और फिर उन्होंने यह धारणा बनाई कि एनएसए अपने प्रयासों को एल्गोरिदम के "ईमानदार" हैकिंग पर नहीं, बल्कि इन एल्गोरिदम के कार्यान्वयन में कमजोरियों को खोजने पर ध्यान केंद्रित करेगा। ब्रूस ने कई क्षेत्रों की पहचान की, जहां सफलता प्राप्त की जा सकती है:
- एक महत्वपूर्ण पीढ़ी की प्रक्रिया पर हमला जहां हैकिंग यादृच्छिक संख्या सेंसर का उपयोग किया जाता है
- डेटा ट्रांसमिशन में कमजोर लिंक पर हमला (उदाहरण के लिए, एक चैनल अच्छी तरह से संरक्षित है, और एक नेटवर्क स्विच खराब है)
- कमजोर कुंजी के साथ सिफर पर हमला, जो सिस्टम प्रशासकों की निगरानी के कारण कुछ स्थानों पर अभी भी बना हुआ है (एक अच्छा उम्मीदवार RSA 1024-बिट कुंजी के साथ है)
- साइड इफेक्ट का हमला
आइए जानने की कोशिश करते हैं कि साइड इफेक्ट्स पर क्या हमले होते हैं।
एक महान कई कार्य और अध्ययन विभिन्न क्रिप्टोकरंसी की सुरक्षा के विश्लेषण के लिए समर्पित हैं। उसी समय, "क्रिप्टोसिस्टम" को यहां बहुत व्यापक रूप से माना जाता है - यह एक निश्चित एन्क्रिप्शन प्रोटोकॉल, एक हार्डवेयर डिवाइस, या सर्वर, सब्सक्राइबर आदि के साथ एक संपूर्ण सॉफ़्टवेयर और हार्डवेयर सिस्टम हो सकता है। सबसे पहले, सिस्टम की एक निश्चित प्रकार के हमले का सामना करने की क्षमता का विश्लेषण किया जाता है: क्रैकर (क्रिप्टोग्राफी पर साहित्य में उन्हें आम तौर पर ईव या मैलोरी नाम दिया जाता है), जिनके पास ज्ञान और उपकरणों के एक निश्चित सेट तक पहुंच है। वह सिस्टम में हैक करने के लिए उनका उपयोग करता है: वह कुंजी की गणना करने, एन्क्रिप्ट किए गए संदेशों को पढ़ने और डेटा या डिजिटल हस्ताक्षर को बदलने का प्रयास करता है। यदि एक संभावित हमलावर उचित समय के लिए प्रशंसनीय कंप्यूटर शक्ति का उपयोग करके इस प्रणाली की गुप्त जानकारी तक पहुंच प्राप्त नहीं कर सकता है, तो सिस्टम को प्रतिरोधी माना जाता है। क्रिप्टोग्राफी में एक अच्छा रूप अपने स्वयं के एल्गोरिथ्म का आविष्कार नहीं है, लेकिन उन तरीकों का उपयोग जो लगातार और समय-परीक्षण किए जाते हैं, क्योंकि वे अच्छी तरह से अध्ययन किए जाते हैं और उनकी ताकत आमतौर पर गणित द्वारा समर्थित होती है। प्रश्न उठता है: यदि मेरे डिवाइस में मैं एक एल्गोरिथ्म आधारित का उपयोग करता हूं, उदाहरण के लिए, कुछ सिद्ध प्रमेय पर, क्या मैं शांत हो सकता हूं (कम से कम क्वांटम कंप्यूटर के आविष्कार तक)? यह पता चला, नहीं।
सुरक्षा विश्लेषण के पारंपरिक मॉडल "प्रयोगात्मक" वस्तु को एक प्रकार का ब्लैक बॉक्स मानते हैं जो एक निश्चित ऑपरेशन करता है, उदाहरण के लिए, एन्क्रिप्शन: सादा पाठ इनपुट पर भेजा जाता है, आउटपुट पर एन्क्रिप्टेड दिखाई देता है। इस बॉक्स के अंदर एक कुंजी भी जमा होने दें (एक विकल्प के रूप में, इसे बाहर से सेट किया जा सकता है, स्थिर हो सकता है, या प्रत्येक सत्र के लिए उत्पन्न किया जा सकता है - इससे कोई फर्क नहीं पड़ता)। मुख्य बात यह है कि कुंजी बाहरी दुनिया के लिए सुलभ नहीं है, और ईवा हैकर के मानक शस्त्रागार के साथ सामग्री है: इनपुट और आउटपुट पर डेटा को इंटरसेप्ट करना, बड़ी मात्रा में मनमाना डेटा की आपूर्ति करने की क्षमता, एल्गोरिथ्म का सही ज्ञान और इसके मापदंडों, आदि।
विकिरण, बिजली की खपत, साथ ही किसी अन्य रिकॉर्ड किए गए अभिव्यक्तियों, इलेक्ट्रॉनिक उपकरणों या इन उपकरणों पर कंप्यूटर प्रोग्राम के माध्यम से बाहरी दुनिया के साथ बातचीत करना हमलावर को बहुत उपयोगी जानकारी दे सकता है। इन अभिव्यक्तियों को साइड इफेक्ट्स कहा जाता है, कभी-कभी साइड इफेक्ट्स, और अंग्रेजी में। साहित्य का एक स्थापित शब्द है - साइड चैनल। एक हैकर के लिए, यह जानकारी "सोने में अपने वजन के लायक" हो सकती है, क्योंकि यह उसे संपूर्ण खोज की अप्रिय संभावना से बचा सकता है। दरवाजा लॉक खोलने के साथ सादृश्य द्वारा: एक चोर-घर-धारक को मास्टर कीज़ चुनने में लंबा समय लगेगा यदि यह बोल्ट को अनसुना करने के लिए पर्याप्त है जिस पर दरवाजा लगाया गया है?
मूल
साइड इफेक्ट्स के "लाभों" का पहला गंभीर उल्लेख ब्रिटिश एमआई -5 एजेंट, पीटर राइट की आत्मकथा में पाया जा सकता है, जो 60 के दशक में लंदन में मिस्र के दूतावास में खड़ी एक रोटरी क्रिप्टोग्राफिक मशीन के सिफर को दरार करने के प्रयास का वर्णन करता है। उन दिनों में स्पष्ट रूप से कंप्यूटिंग शक्ति की कमी थी, और फिर लेखक ने मशीन द्वारा उत्सर्जित माइक्रोफोन और रिकॉर्डिंग क्लिक स्थापित करने का सुझाव दिया, जबकि हर सुबह इसे एक तकनीशियन द्वारा क्रम में रखा गया था। इस प्रकार, तीन पहियों में से दो की स्थिति की गणना करना संभव था, ताकि अंत में कोड को खोलने में मदद मिले।
पॉल कोचर द्वारा अध्ययनों के प्रकाशन के बाद, 1995 में व्यापक दुष्प्रभाव पर विचार किया जाना शुरू हुआ, जिसमें उन्होंने गुप्त कुंजी के मूल्य और क्रिप्टो डिवाइस के घातांक संचालन की गणना के समय के बीच एक सांख्यिकीय संबंध की उपस्थिति को साबित किया। तब से, यह स्पष्ट हो गया है कि एक निश्चित हार्डवेयर डिवाइस पर क्रिप्टोग्राफी का कार्यान्वयन अब "प्रबलित कंक्रीट" नहीं दिखता है। विभिन्न प्रणालियों की सुरक्षा सुनिश्चित करने में एक महत्वपूर्ण स्थान क्रिप्टोप्रोसेसर द्वारा कब्जा कर लिया गया है। वे क्रिप्टो संचालन के लिए अनुकूलित हैं, अपने स्वयं के पृथक कोड को निष्पादित करते हैं जो किसी भी तरह से शत्रुतापूर्ण वातावरण के साथ बातचीत नहीं करता है, और गुप्त कुंजी को अपनी स्मृति में संग्रहीत करता है, जिसमें अक्सर सुरक्षा होती है - यदि अनधिकृत रीड का पता लगाया जाता है, तो महत्वपूर्ण सामग्री नष्ट हो जाती है। साइड-इफेक्ट्स विश्लेषण के विकास के साथ, क्रिप्टोप्रोसेसर अब कम से कम दो कारणों से स्थिर नहीं लगते हैं:
- वे उपलब्ध हैं (एक चिप के साथ बैंक कार्ड, सिम कार्ड, टैबलेट और लैपटॉप में डीआरएम चिप्स, टोकन - हम हर दिन यह मुठभेड़ करते हैं)
- साइड इफेक्ट्स पर एक हमले को तैनात करने के लिए किसी भी विशाल कंप्यूटिंग शक्ति और अल्ट्रा-महंगे उपकरण की आवश्यकता नहीं होती है। उदाहरण के लिए, 100 मेगाहर्ट्ज के रिज़ॉल्यूशन वाले एक डिजिटल आस्टसीलस्कप की कीमत लगभग 2000 डॉलर है
हमला वर्गीकरण
साहित्य में दुष्प्रभावों पर हमलों को आमतौर पर कई स्वतंत्र मानदंडों के अनुसार वर्गीकृत किया जाता है।
1. हस्तक्षेप के तथ्य पर
- निष्क्रिय हमला : हमलावर डिवाइस के संचालन में हस्तक्षेप नहीं करता है और केवल एक पर्यवेक्षक द्वारा एकत्रित जानकारी है। इस मामले में, "प्रायोगिक" उपकरण ठीक उसी तरह काम करता है जैसे कि हमला नहीं हुआ
- सक्रिय हमला : हमलावर बाहरी और आंतरिक दोनों इंटरफेस पर कार्य करके डिवाइस के संचालन में हस्तक्षेप करता है, या कम से कम यह डिवाइस को चालू करता है और अपना काम शुरू करता है
2. हस्तक्षेप की डिग्री द्वारा
- घुसपैठ का हमला : डिवाइस के अंदर पर सीधा प्रभाव। यह या तो कंडक्टरों में सरल विद्युत माप हो सकता है, या काफी कट्टर तरीके हैं, उदाहरण के लिए, आयन विकिरण द्वारा प्रवाहकीय संरचनाएं बनाना, क्रिस्टल की लेजर कटिंग, निर्देशों के निष्पादन को प्रभावित करने के उद्देश्य से जानबूझकर हस्तक्षेप करना, आदि।
- घुसपैठ के बिना बंद हमला : हमलावर हर उस चीज को मापते हैं, जिसे मापा जाता है, लेकिन डिवाइस के सामान्य संचालन में हस्तक्षेप नहीं करते हैं। आमतौर पर बिजली की खपत और रनटाइम को मापते हैं, और सुलभ कंडक्टर में संकेतों को भी पढ़ते हैं
- दूरी से हमला : घुसपैठ के बिना एक हमले के समान, लेकिन इस मामले में डिवाइस तक कोई भौतिक पहुंच नहीं है, जिसका अर्थ है कि मापा मापदंडों का सेट बहुत संकुचित है। दूसरी ओर, इस तरह के हमले का लक्ष्य न केवल एक पृथक डिवाइस हो सकता है, बल्कि एक नेटवर्क सेवा या सिर्फ एक कार्यक्रम भी हो सकता है
3. डेटा विश्लेषण की विधि द्वारा
- सरल विश्लेषण : माप की एक छोटी संख्या की एक श्रृंखला की जाती है और प्रत्येक माप का अलग-अलग विश्लेषण किया जाता है - वे निष्पादन योग्य निर्देशों और "लीक" जानकारी के बीच संबंधों की पहचान करने का प्रयास करते हैं। अलग-अलग, इसका मतलब है कि वे विभिन्न मापों के बीच सहसंबंधों को प्रकट करने की कोशिश नहीं कर रहे हैं, साथ ही साथ स्रोत डेटा में परिवर्तन मनाया डेटा में परिवर्तन को कैसे प्रभावित करता है। इस पद्धति के साथ मुख्य समस्या बेकार जानकारी को वर्गीकृत जानकारी की वास्तविक अभिव्यक्तियों को अलग करना है।
- विभेदक विश्लेषण : स्रोत डेटा और देखे गए डेटा के बीच संबंधों की पहचान करने की कोशिश कर रहा है। यह बड़ी संख्या में माप और परिणामों के बाद के सांख्यिकीय विश्लेषण के द्वारा प्राप्त किया जाता है। विश्लेषण शोर के प्रभाव को बाहर करने में मदद करता है - यह "कटलेट से मक्खियों को अलग करने" की अनुमति देता है। इस मामले में, हमलावर को उसके हित के उपकरण के एक सरलीकृत मॉडल से हटा दिया जाता है:
अभ्यास - आरएसए एन्क्रिप्शन पर समय हमला
हम आरएसए एन्क्रिप्शन पर साहित्य समय के हमले में लोकप्रिय और अच्छी तरह से अध्ययन का वर्णन करते हैं। हमले का आधार क्रिप्टो ऑपरेशंस करने में बिताए गए समय का सटीक माप है। यहां यह माना जाता है कि हैकर के पास उपकरण ही होता है, इनपुट के लिए डेटा की आपूर्ति और समय टिकटों को मापने के लिए आवश्यक उपकरण, और वह भी मज़बूती से जानता है कि यह आरएसए है जो डिवाइस में उपयोग किया जाता है।
समय के हमले, सिद्धांत रूप में, इस तथ्य के कारण संभव हैं कि हमला किया गया डिवाइस क्रिप्टो ऑपरेशन पर अलग-अलग समय खर्च करता है, इनपुट डेटा (चाहे वह साइफर या प्लेनटेक्स्ट हो) पर निर्भर करता है, या कुंजी पर। इस अंतर को अनुकूलन द्वारा प्रवर्धित किया जाता है: प्रोसेसर "अधिकतम" का अनुकूलन करने के लिए और, परिणामस्वरूप, कुछ ऑपरेशनों को सैद्धांतिक रूप से उम्मीद की तुलना में बहुत तेजी से किया जा सकता है।
जैसा कि आप जानते हैं, आरएसए एल्गोरिदम (और डिफी-हेलमैन एक ही है) का आधार एक पावर मोडो को बढ़ाने का संचालन है। मैं निम्नलिखित संकेतन का उपयोग करने का सुझाव देता हूं:
मीटर - सादा (
संदेश से )
सी - सिफर (
सिफर से )
{e, n} - सार्वजनिक कुंजी (
एन्क्रिप्शन से - एन्क्रिप्शन से ली गई)
{d, n} - निजी कुंजी (
डिक्रिप्शन से - डिक्रिप्शन के दौरान लिया गया)
डब्ल्यू - कुंजी
चौड़ाई (
चौड़ाई से )
d [i] - कुंजी का i-th बिट
तब डिक्रिप्शन प्रक्रिया इस तरह दिखाई देगी:
m = c^d mod n
यहाँ n सार्वजनिक रूप से उपलब्ध है, क्योंकि यह सार्वजनिक कुंजी का हिस्सा है, और डेटा चैनल को सुनकर c प्राप्त किया जा सकता है। हमारा लक्ष्य डी को खोजना है।
इस सूत्र की गणना के लिए विभिन्न एल्गोरिदम हैं, क्योंकि इसकी गणना "माथे" बहुत महंगी है। मान लीजिए कि हमारे क्रिप्टो डिवाइस सरलतम तेजी से घातांक एल्गोरिथ्म का उपयोग करते हैं, जिसे अक्सर बाइनरी एक्सपोज़र एल्गोरिथ्म कहा जाता है, या, जैसा कि विदेशी स्रोतों में, वर्ग और गुणा या स्क्वेरियोनमेंट द्वारा स्क्वेरिंग। यहाँ उसका छद्म कोड है:
int squareAndMultiply(c, d, n) { R = array(0..w-1) S = array(0..w-1) s(0) = 1 for (k = 0, k < w, k++) { if (d[k] == 1) R(k) = (s(k) * y) mod n else R(k) = s(k) s(k+1) = (R(k) ^ 2) mod n } return R(w–1) }
जाहिर है, कुंजी के शून्य बिट्स के लिए पुनरावृत्तियों में सिंगल बिट्स की तुलना में कम समय लगेगा, क्योंकि पहले मामले में प्रोसेसर गुणा करता है, और दूसरे में केवल असाइनमेंट। हम बताते हैं कि squareAndMultiply फ़ंक्शन के निष्पादन समय को मापकर संपूर्ण कुंजी की गणना कैसे करें। कोई सटीक सूत्र नहीं होगा, हम सामान्य अर्थ का वर्णन करते हैं।
कोषेर द्वारा प्रस्तावित विधि में मुख्य बिट्स की गणना करना शामिल है: पहला, बिट 0, फिर बिट 1, और इसी तरह, ऐसे प्रत्येक पुनरावृत्ति में निम्नलिखित गुण होते हैं:
- कुछ बिट्स की गणना पहले ही की जा चुकी है (या यदि यह 1 पुनरावृत्ति है तो कोई नहीं)
- शेष बिट्स अज्ञात हैं, जिनमें वर्तमान बिट की जांच की जा रही है, लेकिन उनके मान समान रूप से वितरित किए गए हैं (यदि ऐसा नहीं है, तो कुंजी उत्पन्न करने के लिए उपयोग किए जाने वाले यादृच्छिक संख्या सेंसर को कॉपी किया जाना चाहिए)
प्रत्येक पुनरावृत्ति पर, हैकर बड़ी संख्या में माप लेता है, जिनमें से प्रत्येक का उद्देश्य 3 मान प्राप्त करना है:
- कुल कार्य निष्पादन समय
- सिस्टम द्वारा पहले से ज्ञात कुंजी बिट्स को संसाधित करने में लगने वाला समय
- हमारे एल्गोरिथ्म में समय प्रति ऑपरेशन (एस (के) * y) मॉड एन
पैरामीटर 1 मापना सबसे आसान है, इनपुट में कुछ सिफरटेक्स को खिलाना, 2 और 3 अधिक कठिन हैं, लेकिन यह भी वास्तविक है, यदि आप डिवाइस के भौतिक कार्यान्वयन की विशेषताओं को जानते हैं या इसे थोड़ा "विच्छेदित" करते हैं। फिर टेस्ट बिट के बाद सभी अज्ञात बिट्स को संसाधित करने में लगने वाला समय बराबर होगा:
- टी = टी 1 - टी 2 , यदि अध्ययन बिट = 0
- टी = टी 1 - टी 2 - टी 3 , यदि अध्ययन बिट = 1
अध्ययन के तहत इस बिट के लिए कई माप किए गए हैं और टी मानों के पूरे "हीप" को संचित किया है, हम उन संभावनाओं की गणना कर सकते हैं कि यह बिट क्रमशः 1 और 0 है, सशर्त संभाव्यता सूत्रों का उपयोग करते हुए।
हमने केवल समय के हमले के लिए सबसे सरल घातांक एल्गोरिदम को देखा। आधुनिक क्रिप्टोकरंसी में, इसका उपयोग शायद ही कभी किया जाता है, और इसके बजाय, अधिक इष्टतम तरीकों का उपयोग किया जाता है। यह आमतौर पर चीनी शेष प्रमेय, एक मोंटगोमरी एल्गोरिथ्म, या करत्सुबा एल्गोरिथ्म पर आधारित एक एल्गोरिथ्म है। लेकिन यहां तक कि ये "उन्नत" एल्गोरिदम, जब उनके शुद्ध रूप में लागू होते हैं, तो अस्थायी हमलों का खतरा होता है, जो ओपनएसएसएल सर्वर पर एक सफल हमले से साबित हुआ था।
ओपनएसएसएल सर्वर पर हमला
प्रारंभ में, यह माना जाता था कि अस्थायी हमलों का भाग्य विशेष रूप से हार्डवेयर डिवाइस थे: एक हैकर लेता है, उदाहरण के लिए, एक स्मार्ट कार्ड, इसे सेंसर और उपकरणों के साथ लटका देता है, और फिर गुप्त कुंजी निकालता है। लेकिन जैसा कि स्टैनफोर्ड विश्वविद्यालय के डेविड ब्रमली और डैन बोनी ने दिखाया, सॉफ्टवेयर एक अस्थायी हमले के अधीन है, विशेष रूप से, एक वेब सर्वर जो ओपनएसएसएल संस्करण 0.9.7 के "स्टॉक" लाइब्रेरी का उपयोग करके एक एसएसएल कनेक्शन को स्वीकार करता है। और यह इस तथ्य के बावजूद है कि एक विशिष्ट सर्वर कई समानांतर प्रक्रियाओं को करता है, और सर्वर तक पहुंच का चैनल भी योगदान देता है। हालांकि, तीन सफल हमले विकल्प किए गए थे:
- स्थानीय नेटवर्क पर पहुंच योग्य अपाचे वेब सर्वर पर क्लाइंट का हमला। अधिक विश्वास के लिए, क्लाइंट और सर्वर के बीच के चैनल में कई राउटर और स्विच शामिल थे
- एक प्रक्रिया का दूसरे पर हमला, जबकि दोनों एक ही मशीन के भीतर चल रहे हैं
- एक वितरित कुंजी भंडारण प्रणाली पर हमला जिसमें एक निजी कुंजी एक पृथक वर्चुअल मशीन पर संग्रहीत होती है। यहां, वेब सर्वर स्वयं डेटा को डिक्रिप्ट नहीं करता है, लेकिन कुंजी मशीन से अनुरोध करता है
SSL / TLS का विस्तार से वर्णन RFC 6101 (SSL v3.0), 2246 (TLS v1.0), 4346 (TLS v1.1), 5246 (TLS v1.2) और 6176 (TLS v3.0) में किया गया है, इसलिए हम उस हिस्से पर ध्यान केंद्रित करते हैं जो हमले का लक्ष्य है। इसलिए, एक सामान्य हैंडशेक में निम्नलिखित चरण शामिल हैं:
- क्लाइंट एक क्लाइंटहेल्लो संदेश भेजता है जिसमें यह एक 28-बाइट यादृच्छिक संख्या और समर्थित सिफर की एक सूची प्रसारित करता है
- सर्वर क्लाइंट के समान एक सर्वरहेलो संदेश भेजता है
- सर्वर अपने प्रमाणपत्र के साथ एक प्रमाणपत्र संदेश भेजता है
- क्लाइंट, जो सर्वर सर्टिफिकेट प्राप्त करता है, सर्वर की सार्वजनिक कुंजी को उसमें से निकालता है, उसे 48-बाइट रैंडम नंबर के साथ एनक्रिप्ट करता है, और क्लाइंट के लिए क्लाइंटकेवचेंज संदेश में इसे पास करता है।
- सर्वर अपनी निजी कुंजी के साथ क्लाइंट की यादृच्छिक संख्या को डिक्रिप्ट करता है, जिसके बाद पारस्परिक मास्टर कुंजी की गणना की जाती है
ध्यान दें कि खंड 4 में, ब्लॉक
PKCS # 1 मानक (टाइप 2) के अनुसार स्वरूपित है:
[0x00] [0x02] [पैडिंग स्ट्रिंग] [डाटा]
जिसके बाद इसे एन्क्रिप्ट किया जाता है।
हमले की पुनरावृति में सर्वर को एक एन्क्रिप्टेड ब्लॉक के रूप में परीक्षण डेटा भेजने में शामिल है। डिक्रिप्शन के बाद, सर्वर स्वाभाविक रूप से पता चलता है कि डेटा PKCS # 1 के अनुसार स्वरूपित नहीं है। इस स्तर पर एक हैंडशेक के एक पल रुकावट एक भेद्यता (एक हमला जिसके खिलाफ बेल लेबोरेटरीज के डैनियल ब्लेचेंबचेर द्वारा दिखाया गया था) खुल जाएगा, इसलिए आधुनिक एसएसएल / टीएलएस कार्यान्वयन "दिखावा" करते हैं कि कोई त्रुटि नहीं है और हैंडशेक जारी रखें। नतीजतन, क्लाइंट और सर्वर एक अलग मास्टर कुंजी की गणना करेंगे जो निम्नलिखित संदेशों के साथ पॉप अप होगा - वैसे भी, क्लाइंट को अलर्ट संदेश प्राप्त होगा और कनेक्शन बाधित हो जाएगा, लेकिन यह हमारे लिए बहुत कम रुचि है। मुख्य बात यह है कि
क्लाइंट से प्रतिक्रिया की प्राप्ति के समय से सर्वर से प्रतिक्रिया प्राप्त करने के समय को मापा जाता है। यहाँ हम याद करते हैं कि
N = p·q
एक आरएसए-मॉड्यूल है, और गुप्त और खुले प्रतिपादक संबंध
d·e = 1 mod (p-1)(q-1)
। इसलिए, माप की एक श्रृंखला के बाद, आप बिट द्वारा q बिट को पुनर्स्थापित कर सकते हैं, और इसलिए निजी कुंजी ढूंढें। ऐसे चमत्कार कहाँ से आए? सटीक प्रमाण के लिए, मुझे गणितीय सूत्रों का एक पूरा गुच्छा देना होगा, जो इस लेख के दायरे से परे है, लेकिन इसके बजाय मैं उन सामान्य सिद्धांतों का वर्णन करूंगा जो विश्लेषण को रेखांकित करते हैं। उनमें से दो हैं।
शुरुआत करने के लिए, हम ध्यान दें कि एक्सपोज़र मोडुलो के लिए ओपनएसएसएल पहले वर्णित बाइनरी एल्गोरिदम का उपयोग करता है, लेकिन कई अनुकूलन के साथ। सबसे पहले,
चीनी अवशेष प्रमेय को लागू करते हुए, समस्या
m = c^d mod N
को दो उपप्रकारों में विभाजित किया गया है
m1 = c1^d1 mod p
और
m2 = c2^d2 mod q
, उसके बाद, दो संख्याओं
m1
और
m2
, हम एक विशेष सूत्र द्वारा प्राप्त करते हैं।
m
। दूसरे, एल्गोरिथ्म में उपयोग किए जाने वाले मोडुलो गुणन
को मोंटगोमरी विधि द्वारा अनुकूलित
किया जाता है । विधि का सार मूल मॉड्यूल की गणना से दूर हो जाना है और डिग्री 2 के बराबर मॉड्यूल की गणना करना है, जो प्रोसेसर के लिए बहुत तेज है। सबसे पहले, दोनों कारकों को एक विशेष मोंटगोमरी रूप में परिवर्तित किया जाता है, फिर एक त्वरित गुणन किया जाता है, जिसके बाद परिणाम एक नियमित रूप में परिवर्तित हो जाता है। सब ठीक होगा, लेकिन 2000 में, जर्मन प्रोफेसर वर्नर शिंडलर ने पाया कि जितना अधिक
g
q
की एक बहु के करीब
g
, उतना ही अधिक समय पूरे एल्गोरिथ्म में लगता है। यहां
पहला सिद्धांत है : मोंटगोमरी विधि के समय को मापकर, हम यह निष्कर्ष निकाल सकते हैं कि
g
q
,
2q
,
3q
, आदि के करीब कैसे
g
।
आगे बढ़ो। सरलतम गुणा (बिना
मोडुलो के ) ओपनएसएसएल में दो तरीकों से लागू किया जाता है: पारंपरिक और
करतसुबा विधि । सामान्य विधि की जटिलता
O(n·m)
में अनुमानित है, जहां एम और एन कई गुना के आकार हैं। सोवियत वैज्ञानिक ए। ए। करातसुबा ने पहली बार जटिलता
O(n^1,58)
साथ तेज गुणा की विधि का आविष्कार किया। मल्टीप्लायरों का आकार समान होने पर OpenSSL का उपयोग होता है।
दूसरा सिद्धांत इस प्रकार है: यदि जी कई q से थोड़ा कम है, तो तेज़ विधि का उपयोग किया जाएगा, और यदि थोड़ा अधिक है, तो अधिक समय व्यतीत होगा।
ओपनएसएसएल पर इस हमले के लेखक यह प्रदर्शित करने में कामयाब रहे कि एक 1024-बिट कुंजी खोजने के लिए लगभग एक लाख अनुरोध पर्याप्त थे, जिसमें लगभग 2 घंटे लगे। लेकिन घबराने की जल्दी मत करो। संस्करण 0.9.7b के साथ शुरू, OpenSSL में अस्थायी हमलों से सुरक्षा होती है। डिक्रिप्शन ऑपरेशन से पहले
x = r^e · · mod N
की बेकार गणना में रक्षा निहित होती है, जहाँ r एक यादृच्छिक संख्या है, e एक गुप्त प्रतिपादक है, c एन्क्रिप्टेड पाठ है। यह ऑपरेशन एक यादृच्छिक देरी का परिचय देता है और साइड इफेक्ट्स में महत्वपूर्ण जानकारी को "लीक" करने की अनुमति नहीं देता है। संरक्षण की लागत 2% से 10% प्रदर्शन हानि है।
पॉवर अटैक
चलो साइड इफेक्ट्स पर हमलों के एक और वर्ग पर चलते हैं - ऊर्जा की खपत पर हमले। इन हमलों को वास्तव में केवल हार्डवेयर क्रिप्टोग्राफिक मॉड्यूल पर लागू किया जा सकता है, और मॉड्यूल जितना अधिक पृथक और संकीर्ण होता है, उतना ही अधिक सफल होता है। जाहिर है, प्रोसेसर द्वारा निष्पादित विभिन्न निर्देश ऊर्जा की एक अलग मात्रा का उपभोग करते हैं, जो अंततः स्विचिंग ट्रांजिस्टर की संख्या से निर्धारित होता है। (भौतिकी के पाठ्यक्रम से, हम सभी जानते हैं कि MOS ट्रांजिस्टर स्विचिंग के समय करंट का उपभोग करते हैं, और बाकी के समय में इनका प्रवाह नगण्य होता है, जिसे TTL ट्रांजिस्टर के बारे में नहीं कहा जा सकता है)। इसलिए, खपत चार्ट पर निर्देशों के निर्देशों या समूहों को पहचाना जा सकता है। लेकिन उसी कोषेर ने दिखाया कि स्मार्ट कार्ड की खपत के ग्राफ का विश्लेषण करके, आप गुप्त कुंजी निकाल सकते हैं।
यहाँ एक ब्लॉक के डेस एन्क्रिप्शन के लिए खपत ग्राफ है: प्रारंभिक क्रमचय, 16 एन्क्रिप्शन राउंड और अंतिम क्रमांकन दिखाई दे रहे हैं:
और यहाँ 2 और 3 दौर का विस्तृत कार्यक्रम है:
उपभोग के हमलों को आम तौर पर
सरल और
अंतर में वर्गीकृत किया जाता है (संक्षिप्त रूप में एसपीए, सिंगल पावर एनालिसिस और डीपीए, डिफरेंशियल पावर एनालिसिस)। चार्ट, ऊपर दिए गए, जैसे कि एसपीए हमलों में विश्लेषण किया जाता है, जहां मुख्य लक्ष्य चार्ट के कुछ हिस्सों को निष्पादित निर्देशों या कार्यों को मैप करना है और किसी तरह डिवाइस रजिस्टरों में दिखाई देने वाले मूल्यों को निर्धारित करना है। एसपीए हमले मानता है कि डिवाइस के आंतरिक कार्यान्वयन के बारे में विस्तृत जानकारी है। दूसरी ओर, डीपीए का हमला कई मापों के परिणामों के सांख्यिकीय विश्लेषण पर आधारित है। उदाहरण के लिए, कोषेर द्वारा वर्णित डेस स्मार्ट कार्ड पर क्लासिक हमला इस तरह दिखता है:
- पिछले कुछ राउंड की ऊर्जा खपत 1000 DES एन्क्रिप्शन के लिए दर्ज की गई है, और प्रत्येक दौर के लिए, एन्क्रिप्शन परिणाम भी दर्ज किया गया है
- ऐसे प्रत्येक एन्क्रिप्शन के लिए शेड्यूल को 100,000 बराबर खंडों में विभाजित किया गया है, और प्रत्येक सेगमेंट को इसकी बिजली की खपत सौंपी गई है
- परिणामी मैट्रिक्स 1000 x 100000 का सांख्यिकीय विधियों द्वारा विश्लेषण किया जाता है और कुंजी को खोजते हैं, जो पूरे माप अवधि में अपरिवर्तित था। (सटीक एल्गोरिथ्म के लिए, पाठक को मूल स्रोत को संदर्भित करने के लिए आमंत्रित किया जाता है, क्योंकि मल्टी-स्टोरी फॉर्मूला बिछाने के लिए हब्बर लेख का प्रारूप बहुत सुविधाजनक नहीं है)
विपक्ष
हमने दुष्प्रभावों पर हमलों के लिए कई विकल्पों की जांच की। पूरी दुनिया ने महसूस किया कि क्रिप्टोकरंसी को डिजाइन करते समय, विकास के स्तर पर भी ऐसे हमलों को ध्यान में रखा जाना चाहिए। यहाँ वे कई दिशाओं में कार्य करते हैं:
- पढ़ने की जानकारी को बाधित करना। एक बहुत ही सीमित उपाय, जब तक आप डिवाइस तक भौतिक पहुंच को नहीं रोकते। अन्य मामलों में, हैकिंग आमतौर पर डेटा संग्रह के लिए अधिक महंगे उपकरण के लिए नीचे आता है, और यदि इसका मूल्य हैकिंग के मूल्य से अधिक है, तो लक्ष्य प्राप्त किया जाता है
- लीक संकेतों में यादृच्छिक हस्तक्षेप का परिचय। यह पहले से ही एक अधिक प्रभावी उपाय है, लेकिन इसके नुकसान भी हैं। सबसे पहले, कंप्यूटर सिस्टम में यादृच्छिक डेटा प्राप्त करना अपने आप में एक समस्या है: इसे कहां और सही मात्रा में प्राप्त करना है। यदि हस्तक्षेप "पूरी तरह से नहीं" यादृच्छिक है, तो पैटर्न की गणना की जा सकती है और शोर को उपयोगी सिग्नल से अलग किया जा सकता है। दूसरे, यहां तक कि "अच्छा" यादृच्छिक शोर के लिए, एक हैकर एक एल्गोरिथ्म को कम कर सकता है, और वह जितना अधिक डेटा एकत्र करेगा, सफलता की संभावना उतनी ही अधिक होगी।
- व्यवस्था को निर्धारक बनाने का प्रयास। उदाहरण के लिए, ताकि सभी ऑपरेशनों में समान समय लगे - फिर समय के खिलाफ हमला बेकार हो जाएगा। यह भी हासिल करना आसान नहीं है, क्योंकि प्रोसेसर और कंपाइलर अनुकूलन, अखाड़े में प्रवेश कर रहे हैं, कैश मेमोरी के कई स्तरों की उपस्थिति अलग-अलग समय के साथ - यह सब पटाखा के हाथों में खेलता है
- डिजाइनिंग क्रिप्टोग्राफिक एल्गोरिदम और प्रोटोकॉल जो शुरुआत में साइड चैनलों के माध्यम से लीक के लिए प्रतिरोधी हैं, सबसे विश्वसनीय काउंटरएक्शन है। उदाहरण के लिए, एक निश्चित सूत्र की गणना करने के लिए इस तरह के एल्गोरिदम को लागू करें, जिसका निष्पादन समय या तो इनपुट डेटा की थोड़ी गहराई पर, या उनमें शून्य या उन लोगों की संख्या पर या तर्कों के किसी अन्य गुण पर निर्भर नहीं करेगा।
साइड इफेक्ट के हमलों का डिजाइन कई वैज्ञानिक पत्रों का विषय रहा है। और किसी भी स्थिति में आपको यह नहीं सोचना चाहिए कि केवल पुराने क्रिप्टो एल्गोरिदम इन हमलों के अधीन हैं: आरएसए, डीईएस, डिफी-हेलमैन। पहले से ही एईएस से "लीक" का सबूत है, और अण्डाकार घटता पर एल्गोरिदम से। यह सब एक लेख में कवर करना अवास्तविक है। मेरा काम केवल पाठकों को इस आकर्षक विषय में तल्लीन करना है।
उन लोगों के लिए जो गहराई में जाना चाहते हैं