पहले हमें यह मान लेना चाहिए कि ईव केवल निष्क्रिय है। इसके द्वारा, मेरा मतलब है कि वह सच्चाई से बॉब को कार्ड भेजती है, और वह जो भी ऐलिस वापस लाती है वह वास्तव में बॉब की प्रतिक्रिया है। यदि ईव डेटा को या तो दोनों दिशाओं में बदल सकता है (और उसकी कार्रवाई पूर्ववत रहती है) तो कुछ भी हो जाता है।
(लंबे समय से चली आ रही परंपराओं का सम्मान करने के लिए, बातचीत में शामिल दो ईमानदार पक्षों को एलिस और बॉब कहा जाता है। आपके पाठ में, आपने "आपको" कहा। मेरा असली नाम "ऐलिस" नहीं है, लेकिन मैं वैसा ही जवाब दूंगा जैसे आपने लिखा था। कि ऐलिस बॉब का फ़ोन नंबर सत्यापित करना चाहता है।)
हैश फ़ंक्शन का उपयोग करने के लिए सरल (लेकिन कमजोर) उत्तर है। ऐलिस कार्ड पर लिखता है: "अपने फोन नंबर के SHA-256 हैश मेरे पास लौटें"। SHA-256 एक क्रिप्टोग्राफिक हैश फ़ंक्शन है जिसे माना जाता है कि यह सुरक्षित है, जहाँ तक हैश फ़ंक्शन चलते हैं। हाथ से इसकी गणना करना थकाऊ होगा, लेकिन फिर भी यह उल्लेखनीय है (यह लगभग 2500 32-बिट संचालन है, जहां प्रत्येक ऑपरेशन एक जोड़ है, एक शब्द शिफ्ट या घूमता है, या बिट्स का एक बिटवाइज़ संयोजन; बॉब एक दिन में करने में सक्षम होना चाहिए या; इसलिए)।
अब इसमें कमजोर क्या है? SHA-256, क्रिप्टोग्राफिक हैश फ़ंक्शन होने के नाते, "प्रीइमेज" के लिए प्रतिरोधी है: इसका मतलब है कि हैश आउटपुट दिया गया है, इसी इनपुट को पुनर्प्राप्त करना बहुत मुश्किल है (यह समस्या है कि ईव चेहरे)। हालांकि, "बहुत कठिन" का अर्थ है "सबसे आसान तरीका जानवर बल है: एक मैच मिलने तक संभावित इनपुट की कोशिश करना"। परेशानी यह है कि ब्रूट बल यहां आसान है: इतने सारे संभावित फोन नंबर नहीं हैं (उत्तरी अमेरिका में, यह 10 अंक है, यानी मात्र 10 बिलियन)। बॉब चीजों को हाथ से करना चाहता है, लेकिन हम यह नहीं मान सकते कि ईव इतना सीमित है। एक बुनियादी पीसी कुछ लाखों SHA-256 हैश प्रति सेकंड की कोशिश कर सकता है इसलिए ईव एक घंटे से भी कम समय में किया जाएगा (यदि वह GPU का उपयोग करता है तो 5 मिनट से कम)।
यह एक सामान्य मुद्दा है: यदि बॉब नियतात्मक है (यानी एलिस से दिए गए संदेश के लिए, वह हमेशा उसी प्रतिक्रिया को लौटाएगा), तो ईव उसे अनुकरण कर सकता है। अर्थात्, ईव फोन नंबर को छोड़कर बॉब के बारे में सब कुछ जानता है, इसलिए वह लगभग 10 अरब बोब चलाता है, जो केवल उनके मान्य फोन नंबर से भिन्न होता है; और वह वास्तविक बोब के वास्तव में वापस आने के लिए आभासी बोब्स में से एक का इंतजार करती है। यह दोष कई प्रकार के "स्मार्ट" समाधानों को प्रभावित करता है जिसमें यादृच्छिक नॉन और सममित एन्क्रिप्शन और व्हाट्सनॉट शामिल हैं। यह एक मजबूत दोष है, और इसकी जड़ ईव और बॉब के बीच कंप्यूटिंग शक्ति में भारी अंतर में है (अब, अगर बॉब के पास भी ईव के रूप में बड़ा कंप्यूटर था, तो वह धीमी गति से उपयोग कर सकता हैकई पुनरावृत्तियों के उपयोग के माध्यम से हैश फ़ंक्शन; पासवर्ड के एवज में फोन नंबर के साथ कम या ज्यादा पासवर्ड हैशिंग के बारे में है; देखें bcrypt और यह भी उत्तर )।
इसलिए, एक गैर-कमजोर समाधान में बॉब के हिस्से में कुछ यादृच्छिकता शामिल होनी चाहिए : बॉब को एक सिक्का फ्लिप करना चाहिए या बार-बार पासा फेंकना चाहिए, और उसकी गणनाओं में मूल्यों को इंजेक्ट करना चाहिए। इसके अलावा, ईव को बॉब ने क्या किया, यह जानने में सक्षम नहीं होना चाहिए, लेकिन ऐलिस के लिए सक्षम होना चाहिए, इसलिए कुछ जानकारी बॉब से ऐलिस को बताई गई गोपनीय है । इसे असममित एन्क्रिप्शन या कम से कम, असममित कुंजी समझौता कहा जाता है । गणना करने के लिए उस वर्ग का सबसे सरल एल्गोरिथ्म, लेकिन फिर भी यथोचित रूप से सुरक्षित है, फिर PKCS # 1 v1.5 पैडिंग के साथ RSA है । RSA उपयोग सार्वजनिक घातांक के रूप में कर सकता है । इसलिए प्रोटोकॉल इस प्रकार है:ई = ३
ऐलिस एक बड़ा पूर्णांक उत्पन्न करता है जहां और समान आकार के प्रधान पूर्णांक हैं, जैसे कि का आकार सुरक्षा सुनिश्चित करने के लिए पर्याप्त है (अर्थात कम से कम 1024 बिट्स, 2012 के अनुसार)। इसके अलावा, ऐलिस को और को 3 के गुणक नहीं होने की व्यवस्था करनी चाहिए ।p q n n p - 1 q - 1n = p क्षपीक्षnपी - 1क्ष- 1
ऐलिस कार्ड पर लिखता है ।n
बॉब पहले अपना फोन नंबर बाइट अनुक्रम में रूप में लंबे समय तक पैड करता है , जैसा कि PKCS # 1 द्वारा वर्णित है (इसका मतलब है: 00 02 xx xx ... xx 00 bb bb .. bb, जहां 'bb' दस बाइट्स हैं जो सांकेतिक शब्दों में बदलना फोन नंबर, और 'xx' यादृच्छिक गैर-शून्य बाइट मान हैं, जिसकी कुल लंबाई 128 बाइट्स के लिए है यदि 1024-बिट पूर्णांक है)।nnn
बॉब अपने बाइट अनुक्रम को एक बड़े पूर्णांक मान (बिग-एंडियन एन्कोडिंग) के रूप में व्याख्या करता है और गणना करता है (ताकि यह बहुत बड़े पूर्णांकों के साथ कई गुणा हो, फिर एक विभाजन, परिणाम हो रहा है शेष भाग)। यह अभी भी हाथ से करने योग्य है (लेकिन, फिर से, यह शायद एक दिन का बेहतर हिस्सा लेगा)। परिणाम यह है कि बॉब ऐलिस को वापस भेजता है।m 3 m o d nमम3 m o d n
ऐलिस के उसके ज्ञान का उपयोग करता है और ठीक करने के लिए से बॉब द्वारा भेजे गए। आरएसए पर विकिपीडिया पृष्ठ में उस प्रक्रिया पर स्पष्ट रूप से स्पष्ट व्याख्याएं हैं। एक बार जब ऐलिस है , वह गद्दी से हटा सकते हैं ( 'xx' गैर शून्य हैं, इसलिए पहले 'bb' बाइट स्पष्ट रूप से स्थित हो सकता है) और वह तो वह फ़ोन नंबर है, जो वह एक वह था के साथ तुलना कर सकते हैं है।q m m 3 m o d n n mपीक्षमम3 m o d nम
ऐलिस की गणना के लिए एक कंप्यूटर की आवश्यकता होगी (एक कंप्यूटर जो हमेशा हाथ से प्राथमिक और करने योग्य होता है , लेकिन एक कंप्यूटर उस पर तेजी से विकसित होता है, इसलिए "doable" को अभ्यास करने में बहुत अधिक समय लग सकता है; हाथ से RSA डिक्रिप्शन कई ले जाएगा ; सप्ताह)।
(वास्तव में हम मैकलेयर एन्क्रिप्शन का उपयोग करके तेजी से हाथ से गणना कर सकते थे , लेकिन फिर सार्वजनिक कुंजी - ऐलिस कार्ड पर क्या लिखता है - बहुत बड़ा होगा, और एक कार्ड बस नहीं करेगा; ईव को एक पूरी पुस्तक का परिवहन करना होगा; अंकों का।)