2010-11-08 17 views
5

मैं एक विनिमेय सिफर रहा हूँ - जो हैएक कम्यूटिव सिफर?

E(K₁,E(K₂,P)) = E(K₂,E(K₁,P)) 

लेकिन साहचर्य नहीं है - कि

E(K,P) ≠ E(P,K) 

XOR, जो अन्यथा ठीक हो गया होता बाहर होने वाले नियम है।

एक सममित सिफर बेहतर होगा, लेकिन एक असममित सिफर भी काम करेगा।

बुनियादी प्रोटोकॉल मैं लागू करना चाहते है:

  1. ऐलिस टोकन (32-बिट पूर्णांक) की एक सूची है और वह एक ही कुंजी के साथ एक टोकन (K0)
  2. ऐलिस सूची भेजता एन्क्रिप्ट करता है बॉब
  3. बॉब सूची को यादृच्छिक करता है, प्रत्येक टोकन को एक अलग कुंजी (के 1 - एन) के साथ एन्क्रिप्ट करता है, प्रत्येक टोकन लेबल करता है और एलिस को सूची देता है।
  4. ऐलिस K0 के साथ प्रत्येक टोकन decrypts, उसे एक टोकन के लिए, प्रत्येक एक अलग कुंजी के साथ एन्क्रिप्टेड सूची छोड़ने (K1 - Kn)
  5. कुछ समय बाद, बॉब किसी विशिष्ट लेबल (Kx)
  6. ऐलिस के लिए एक महत्वपूर्ण भेजता ऐलिस केएक्स के साथ टोकन को डिक्रिप्ट करता है जो उसे x
  7. बॉब सादे टेक्स्ट देख सकता है, इसलिए वह उस जानकारी को दिए गए जानकारी को दिए बिना उसे प्राप्त करने में सक्षम नहीं होना चाहिए।

किसी एक सिफर रहा उपयोग कर सकते हैं और यह भी कि सिफर के एक कार्यान्वयन करने के लिए मुझसे बात का सुझाव कर सकते हैं?

मुझे क्रिप्टोग्राफिक प्रोटोकॉल और अनुप्रयोगों की समझ है लेकिन मैं वास्तव में वहां अधिकांश सिफर के गणित को नहीं समझता हूं। हालांकि चरण-दर-चरण गणितीय गाइड ठीक होंगे।

मैं क्लोजर में इसे लागू करने की योजना बना रहा हूं ताकि किसी भी जावा पुस्तकालय भी अच्छे हों। हालांकि, कोई कोड अच्छा है क्योंकि मैं कोड समझता हूं।

+0

क्या कोई गंभीर कारण है कि ऐलिस सिर्फ K0 पर नहीं पकड़ सकता है और केवल बॉब से प्राप्त कुंजी के साथ डिक्रिप्ट करने के बाद के0 के साथ टोकन डिक्रिप्ट कर सकता है? –

+0

@ लुनैटिक प्रायोगिकतावादी: हां। यह केवल एक सरलीकृत प्रोटोकॉल विवरण है। वास्तव में क्या होता है यह है कि ऐलिस कुंजी का एक गुच्छा उत्पन्न करता है और प्रत्येक टोकन को स्वयं एन्क्रिप्ट करता है। प्रत्येक टोकन अब दोगुना एन्क्रिप्टेड है। यदि बॉब टोकन एक्स को ऐलिस को प्रकट करना चाहता है, तो वह अपने केएक्स को भेजता है। यदि ऐलिस टोकन एक्स को बॉब को प्रकट करना चाहता है, तो वह उसे अपने केएक्स भेजती है। – camh

उत्तर

3

ऐसा लगता है कि आप "मानसिक पोकर" लागू करने के लिए कोशिश कर रहे हैं (या नहीं अगर, आप अनुसंधान इस पर गौर करना चाहिए, क्योंकि यह आपकी समस्या का analagous है)।

एसआरए एल्गोरिदम में आपके इच्छित गुण हैं। यह बारे में जानकारी प्राप्त करने के लिए एक सा कठिन है, लेकिन यह अनिवार्य रूप से है कि दोनोंe और d एक्स्पोनेंट्स गुप्त रखा जाता है को छोड़कर सिर्फ आरएसए है। तुच्छता:

(पी E1) e2 == (पी e2) E1

+0

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

0

नीचे सी # में अपने ही सिफर प्रोग्राम का उपयोग मेरी hobbiest समाधान को दर्शाता है। कार्यक्रम और स्रोत मुफ्त और उपलब्ध हैं।

के लॉक किए गए बॉक्स पहेली 'याद है एक सुरक्षा पर याद करते हुए अब पॉडकास्ट?

यहाँ प्रकरण है ... प्रकरण # 33 | 30 मार्च 2006 | 43 मिनट सममित ब्लॉक सिफर

https://www.grc.com/sn/sn-033.txt

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

स्टीव और लियो पर सहमत हुए कि एक छिपकर बातें सुनेवाला ऐलिस सिफर पाठ को देखने पहले और बाद में एन्क्रिप्शन सकता है XOR और निकाले जाते हैं उसकी गुप्त कुंजी हालांकि, यदि एक जटिल, कम्यूटिव सिफर जो एन्क्रिप्ट करने के लिए सरल XORING का उपयोग नहीं करता है तो मैं सोचता हूं कि कुंजी एक्सचेंज सुरक्षित होगा और कुंजी एक्सचेंज काम करेगा।

उदाहरण के लिए ... बीओबी अपनी कुंजी के साथ संदेश को एन्क्रिप्ट करता है। एलआईसीई ने अपनी कुंजी के साथ बीओबी के एन्क्रिप्टेड उपरोक्त संदेश को एन्क्रिप्ट किया। एलआईसीई एन्क्रिप्टेड संदेश को वापस बीओबी पर भेजता है। बीओबी अपनी कुंजी के साथ एलआईसीई के उपरोक्त संदेश को डिक्रिप्ट करता है। बीओबी ऊपर एलआईसी भेजता है। एलआईसीई उसकी कुंजी के साथ उपरोक्त करता है। एलआईसीई अब बीओबी के मूल डिक्रिप्टेड सिफर टेक्स्ट को पढ़ सकता है और उन्हें एक्सचेंज करने के लिए की आवश्यकता नहीं थी। एल्गोरिदम सरल 'सादा पाठ और कुंजी का xor'ing नहीं है, तो एक छिपकली हमला काम नहीं करेगा।

यह सिफर एक कम्यूटिव, जटिल एल्गोरिदम है।

नोटपैड टेक्स्ट फ़ाइल से शुरू होता है जिसमें एक वर्ण, एक 'एम' होता है। मीटर हेक्स 6 डी 01101101 है। हेक्स सी 2 11000010 है 'बी' बॉब द्वारा एन्क्रिप्टेड है और फिर ऐलिस को भेजा गया है। ø हेक्स डी 8 11011000 ऐलिस का 'ए' का एन्क्रिप्शन है जो बॉब '£' को डिक्रिप्ट करता है और एलिस भेजता है। £ हेक्स ए 3 10100011 है जो एलिस उसकी कुंजी के साथ 'एम' करने का फैसला करता है। मीटर एलिस डिक्रिप्ट परिणाम एक सहेजने वाला ऐपर एन्क्रिप्शन से पहले एलिस के संदेश को देखता है। ईव्सड्रॉपर एन्क्रिप्शन के बाद एलिस के संदेश को देखता है। eavesdropper xors और ø। 11000010 ' 11011000' ø ' 00011010 हेक्स में eavesdropper का xor परिणाम = 1a। यदि कोई छिपकली हमला किया गया तो उसे 'ई' हेक्स 45 01001001 मिलेगा जो

एलिस की कुंजी का पहला अक्षर है।

इस लगता है पीजीपी की तुलना में एक सरल कुंजी विनिमय आदि सब आवश्यक है कि दोनों दलों के एक ही क्रिप्टो कार्यक्रम का उपयोग करें और एक प्रमाणक पर सहमत है।

मैं एक सबसे कठिन होने के लिए कबूल करता हूं। अगर कोई भी विन्डोज़ सी # .NET प्रोग्राम और/या सिफर के लिए स्रोत कोड चाहता है तो वे हो सकते हैं।

नीचे उदाहरण के साथ, यादृच्छिक कुंजी के साथ उदाहरण है।

प्लेन टेक्स्ट यह एक परीक्षण है।

बॉब के प्रमुख kZtOfS0kKqcRLjTNPh7OjcJKZZFLjmm5OVm02YlrBQN0zI9SxOD1zJjQcpetUbX

BOB'S CIPHER ऐलिस के पाठ। 1IÎ.8Ío # "ëìAùJ '

ऐलिस कुंजी O1yfuV7MpX3n4wtefUhr6YctRaeCcrrzH7LqLNRUQCMVZuL5Mr0Bw3qMeIT92hg

ऐलिस CIPHER BOB μRÖ³ # IOO के लिए पाठ, fzkÆaå

BOB डीकोड ऐलिस ऊपर जो नीचे =। øqqøð < ª> p & @ <, और एलिस के ऊपर वापस भेजता है जो एलिस का उपयोग कर रहा है ... यह एक परीक्षण है।

+0

प्रमाणीकरण के लिए बस संदेश के अंदर सादा पाठ में पासवर्ड पर सहमत होना जोड़ें, लेकिन संदेश के सिफरटेक्स्ट का हिस्सा नहीं है। केवल पिछले 2 एक्सचेंजों के लिए जरूरी है। उदाहरण के लिए, "μRÖ³ # ïÓO, fzkÆaå apassword" – user1477194

0

मैं कुछ ऐसा कर रहा हूं और मैं ओएफबी (आउटपुट फीडबैक) मोड में एईएस का उपयोग कर रहा हूं। इस मोड में, एक चतुर्थ (सार्वजनिक रूप से ज्ञात यादृच्छिक मान) कुछ कुंजी का उपयोग कर एईएस के साथ एन्क्रिप्ट किया जाता है। इसके बाद आपके डेटा के साथ एक्सओआरड किया जाता है। आउटपुट (डेटा के साथ एक्सओआरड होने से पहले) को फिर डेटा को अधिक डेटा के साथ एक्सओआर में एक और आउटपुट प्राप्त करने के लिए एन्क्रिप्ट किया जाता है। यह न केवल कम्यूटिव है बल्कि इस अर्थ में पारस्परिक है कि एन्क्रिप्शन और डिक्रिप्शन एल्गोरिदम समान हैं। http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Output_Feedback_.28OFB.29

संबंधित मुद्दे