क्या यह सरल XOR एन्क्रिप्टेड संचार बिल्कुल सुरक्षित है?


23

ऐलिस और पीटर कहें कि प्रत्येक में 4GB USB फ्लैश मेमोरी स्टिक है। वे दोनों alice_to_peter.key(2GB) और peter_to_alice.key(2GB) नाम की दो स्टिक्स पर मिलते हैं और सहेजते हैं जिनमें बेतरतीब ढंग से उत्पन्न बिट्स होते हैं। वे फिर कभी नहीं मिलते हैं, लेकिन इलेक्ट्रॉनिक रूप से संवाद करते हैं। ऐलिस नामक एक चर को alice_pointerबनाए रखता है और पीटर नामक चर को बनाए रखता है peter_pointer, दोनों शुरू में शून्य पर सेट होते हैं।

जब ऐलिस को पीटर को एक संदेश भेजने की आवश्यकता होती है, तो वह करती है ( nसंदेश का दूसरा बाइट कहां है):

encrypted_message_to_peter[n] = message_to_peter[n] XOR alice_to_peter.key[alice_pointer + n]
encrypted_payload_to_peter = alice_pointer + encrypted_message_to_peter
alice_pointer += length(encrypted_message_to_peter)

(और अधिकतम सुरक्षा के लिए, कुंजी का उपयोग किया गया भाग मिटाया जा सकता है)

पीटर ने संदेश की शुरुआत में संग्रहित किया encrypted_payload_to_peter, पढ़ता है alice_pointerऔर करता है:

message_to_peter[n] = encrypted_message_to_peter[n] XOR alice_to_peter.key[alice_pointer + n]

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

जब पीटर को ऐलिस को एक संदेश भेजने की आवश्यकता होती है, तो वे इस बार के साथ peter_to_alice.keyऔर उल्टा करते हैं peter_pointer

इस तुच्छ स्कीमा के साथ वे प्रत्येक दिन अगले 50 वर्षों के लिए 2GB / (50 * 365) = ~ 115kB दोनों दिशाओं में एन्क्रिप्टेड डेटा भेज सकते हैं। यदि उन्हें भेजने के लिए अधिक डेटा की आवश्यकता होती है, तो वे बड़ी कुंजी का उपयोग कर सकते हैं, उदाहरण के लिए आज के 2TB HD (1TB कुंजी) के साथ अगले 50 वर्षों के लिए 60MB / दिन का आदान-प्रदान करना संभव होगा! यह व्यवहार में बहुत अधिक डेटा है; उदाहरण के लिए, संपीड़न का उपयोग करके यह उच्च गुणवत्ता वाले आवाज संचार के घंटे से अधिक है।

मुझे ऐसा लगता है कि एक हमलावर के पास बिना चाबी के एन्क्रिप्टेड संदेशों को पढ़ने का कोई तरीका नहीं है, क्योंकि भले ही उनके पास असीम रूप से तेज कंप्यूटर हो, लेकिन क्रूरता के बल पर वे सीमा के तहत हर संभव संदेश प्राप्त कर सकते हैं, लेकिन यह एक खगोलीय संख्या है संदेशों और हमलावर को पता नहीं है कि उनमें से कौन सा वास्तविक संदेश है।

क्या मैं सही हू? क्या यह संचार योजना वास्तव में बिल्कुल सुरक्षित है? और अगर यह सुरक्षित है, तो क्या इसका अपना नाम है? XOR एन्क्रिप्शन अच्छी तरह से जाना जाता है, लेकिन मैं इस ठोस व्यावहारिक अनुप्रयोग के नाम की तलाश कर रहा हूं, जिसमें दोनों तरफ बड़ी चाबियां हों? मैं विनम्रतापूर्वक उम्मीद कर रहा हूं कि इस एप्लिकेशन का आविष्कार मुझसे पहले किसी ने किया है। :-)

नोट: यदि यह पूरी तरह से सुरक्षित है, तो यह आश्चर्यजनक है, क्योंकि आज की कम लागत वाले बड़े भंडारण उपकरणों के साथ, यह महंगा क्वांटम क्रिप्टोग्राफी की तुलना में सुरक्षित संचार करने के लिए बहुत सस्ता होगा, और इसके बराबर सुरक्षा है!

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


4
कुंजी के किस भाग का उपयोग करने के लिए विशिष्ट योजना के अलावा, यह सिर्फ एक बार का पैड है । लेकिन करीब निरीक्षण के तहत यह पता चलता है कि वास्तव में उपयोग के 99% मामलों के लिए उपयोगी नहीं है।

10
जैसा कि यह सवाल एक विशेष क्रिप्टो एल्गोरिथ्म की ताकत के बारे में है, यह crypto.stackexchange.com के लिए अधिक अनुकूल हो सकता है । अपने प्रश्न को वहां ले जाने के लिए, आप मॉडरेटर का ध्यान आकर्षित करने और प्रवास के लिए पूछ सकते हैं।
बार्ट वैन इनगेन शेनौ

12
OTP का आविष्कार एक सदी पहले किया गया था, और दोनों विश्व युद्धों में, कागज के वास्तविक भौतिक पैड के रूप में उपयोग किए गए थे। ( en.wikipedia.org/wiki/One-time_pad ) क्रिप्टोग्राफी में समस्या तब है जब मुख्य कुंजी है।
रोबोट

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

1
@keshlam। ट्रू क्वांटम-रैंडम संख्या उत्पन्न करना बहुत सस्ता होता जा रहा है। ArXiv पर दिलचस्प लेख: एक मोबाइल फोन पर क्वांटम यादृच्छिक संख्या पीढ़ी: arxiv.org/abs/1405.0435
user3123061

जवाबों:


50

हां, यह एक बार का पैड है । यदि प्रमुख सामग्री का फिर से उपयोग नहीं किया जाता है, तो यह सैद्धांतिक रूप से सुरक्षित है।

डाउनसाइड्स यह है कि आपको प्रिंसिपल की जोड़ी के प्रति एक कुंजी की आवश्यकता होगी और आपको संचार करने से पहले प्रमुख सामग्री के आदान-प्रदान के सुरक्षित तरीके की आवश्यकता होगी।


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

1
@MichaelBorgwardt वहाँ विशाल बिंदु। इस मामले में "सैद्धांतिक रूप से सुरक्षित" वास्तव में "व्यावहारिक रूप से सुरक्षित" से बेहतर है।
मार्क

2
मामले में: मैं एक 2GB यादृच्छिक कुंजी है जो 16 के अनुक्रमिक बाइट्स होता है 0.
माइकल

@ मिचेल ऐसा होने की संभावना 10 ^ 27 में लगभग 1 है।
यह

1
@Floris मेरा "गणना": एक बाइट में 256 संभावित मान हैं। यह 256 में से एक है जो सभी शून्य होगा। 256 ^ 16 16 बाइट्स के लिए मौका पाने के लिए। और फिर उस संयोग से 2GB में बाइट्स की संख्या को विभाजित करें। मुझे लगता है कि मैं 16 तक विभाजन से चूक गया, वैसे भी यहाँ (1024 * 1024 * 1024 * 1024 * 2 * (1/16)) / (256 ^ 16) आपका अंतिम बिंदु इस गणना को वैसे भी अप्रासंगिक बना देता है।
यह

32

जैसा कि वैटाइन का उत्तर इंगित करता है, आपका एल्गोरिथ्म मूल रूप से एक-बार-पैड है।

हालाँकि, आपके एक नोट पर टिप्पणी करने के लिए:

नोट: यदि यह पूरी तरह से सुरक्षित है, तो इसका कमाल है क्योंकि आज कम लागत वाली बड़ी यादों के साथ यह महंगा क्वांटम क्रिप्टोग्राफी की तुलना में और समान सुरक्षा के साथ सुरक्षित संचार का व्यावहारिक तरीका है!

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

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


13
एक OTP के बारे में दूसरी बात यह है कि कुंजी एन्क्रिप्ट करने के लिए संदेश के रूप में लंबे समय (कम से कम) है, और एक बहुत ही उच्च गुणवत्ता वाले यादृच्छिक स्रोत की आवश्यकता है।
डोनाल्ड फैलो

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

21

जबकि एक बार के पैड में एक हमलावर के खिलाफ बिना शर्त (गणितीय रूप से सिद्ध) गोपनीयता की गारंटी होती है जो केवल संदेशों को पढ़ सकता है, इसमें कुछ कमजोरियां हैं।

  • एक अवरोधन करने वाला हमलावर, जो यह अनुमान लगाता है कि सादा पाठ सही ढंग से सिफरटेक्स्ट को हेरफेर कर सकता है, जो भी वह चाहता है (एक ही लंबाई के साथ)।

  • यदि कोई हमलावर कुछ संदेश (या उसके कुछ भाग) सम्मिलित करता है या हटाता है, तो ऐलिस और बॉब के संकेत आउट-ऑफ-सिंक हो जाते हैं और भविष्य का हर संचार टूट जाता है।

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

उन दोनों समस्याओं के कारण अखंडता और प्रमाणीकरण सुरक्षा गायब है - आपके पास एक सही सिफर है, लेकिन कोई मैक नहीं है।

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

एक सामान्य मैक एल्गोरिथ्म यहां होता है, लेकिन मुझे लगता है कि आप अपने एक-समय के पैड से मिलान करने के लिए कुछ एक-समय के बहुपद मैक का उपयोग करना चाह सकते हैं। (अपने एन्क्रिप्शन कुंजी से पहले या बाद में बिट्स से मैक कुंजी लें, यानी दोनों लक्ष्यों के लिए एक कुंजी का पुन: उपयोग न करें।)


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

लेकिन, आप सही हैं। प्रस्तुत सरल एलगॉरिटम अखंडता और प्रमाणीकरण याद आती है। व्यावहारिक कार्यान्वयन को और अधिक मजबूत बनाने की आवश्यकता होगी।
user3123061

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

2
अनुकूली चुने हुए साइपरटेक्स्ट हमले मानव जाँच OTP के खिलाफ हमले का एक बहुत गरीब विकल्प है। OOS पर ध्यान दिया जा रहा है और आपका हमलावर बहुत तेजी से पक गया है केवल अगर रिसीवर मशीन-संसाधित है और प्रतिक्रिया देने में सक्षम है, तो यह किसी भी हमले पर अच्छा है।
जोशुआ

@Zack OTP के साथ कई समस्याएं हैं, लेकिन कोई भी गोपनीयता की धमकी नहीं देता है। ध्यान दें कि भले ही आप पिछले संदेश के plantext + कुंजी का पूरी तरह से अनुमान लगाते हैं, अगला संदेश पूरी तरह से नया, स्वतंत्र कुंजी (काफी आकार का) के साथ एन्क्रिप्ट किया गया है। कई इंटरैक्शन के अनुकूल होने के लिए कुछ भी नहीं है।

4

वास्तव में यह पूरी तरह से सुरक्षित नहीं है। क्या आपके प्रोटोकॉल लीक संचार संदेश का LENGTH है।

उदाहरण के लिए, यदि जासूस जानता है कि आप "हां" या "नहीं" के साथ उत्तर देंगे और लंबाई = 2 को देखते हैं तो वह इसे "नहीं" काट सकता है।

यह वास्तव में आश्चर्यजनक है कि केवल ज्ञात लंबाई से कितना घटाया जा सकता है यदि कोई संदर्भ का अनुमान लगा सकता है।


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

वास्तव में - चूंकि आप अगले 50 वर्षों के लिए हर दिन ~ 115kB भेज सकते हैं, आप उम्मीद कर सकते हैं कि प्रत्येक ब्लॉक कम से कम 20kb होगा, जिसका अर्थ है कि लंबाई उतनी महत्वपूर्ण नहीं है।
एपीर्टन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.