2009-01-31 5 views
6

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

क्या कोई स्पष्टीकरण प्रदान कर सकता है कि पर्याप्त यादृच्छिकता नहीं होने पर सुरक्षा को कैसे समझौता किया जा सकता है?

उत्तर

13

यादृच्छिकता का मतलब असहनीय इनपुट है। यदि इनपुट अनुमानित है, तो आउटपुट आसानी से गणना की जा सकती है। वह बुरा है।

उदाहरण के लिए, डेबियन के एसएसएल कार्यान्वयन में एक लंबी स्थायी बग थी जो कुंजी बनाते समय पर्याप्त यादृच्छिकता को इकट्ठा करने में असफल रही। इसके परिणामस्वरूप सॉफ़्टवेयर केवल 32k संभावित कुंजी में से एक उत्पन्न करता है। इस तरह की कोशिश करके सभी 32k संभावनाओं को आजमाकर ऐसी कुंजी से एन्क्रिप्टेड कुछ भी डिक्रिप्ट करना संभव है, जो आज की प्रोसेसर की गति को बहुत तेज है।

2

संदेश को डिक्रिप्ट करने के लिए, आपको सही कुंजी जाननी होगी।

जितनी अधिक संभावित कुंजी आपको कोशिश करनी है, संदेश को डिक्रिप्ट करना कठिन है।

एक चरम उदाहरण लेते हुए, मान लीजिए कि इसमें कोई यादृच्छिकता नहीं है। जब मैं अपने संदेशों को एन्क्रिप्ट करने में उपयोग करने के लिए एक कुंजी उत्पन्न करता हूं, तो मैं हमेशा सटीक उसी कुंजी के साथ समाप्त हो जाऊंगा। कोई फर्क नहीं पड़ता कि मैं keygen प्रोग्राम कहां या कब चलाता हूं, यह हमेशा मुझे एक ही कुंजी देगा।

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

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

दूसरी ओर, यदि कुंजी पीढ़ी में पर्याप्त यादृच्छिकता थी, तो कुछ भी कुंजी के बारे में अनुमान लगाना असंभव है। आपको हर संभव बिट पैटर्न का प्रयास करना होगा। (और 128-बिट कुंजी के लिए, यह बहुत सारे संयोजन हैं।)

4

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

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

दूसरी ओर, यदि आपके पास कुंजी के संभावित मूल्यों पर कोई जानकारी है, तो कुंजीपटल की आपकी संपूर्ण खोज बहुत आसान है (या आपके क्रिप्टैनालिसिस के लिए आवश्यक नमूनों की संख्या बहुत कम है)। उदाहरण के लिए, यह वास्तव में 128-बिट कुंजी क्या है यह जानने के लिए 2^128 परीक्षण डिक्रिप्शन करने के लिए अक्षम (वर्तमान में) अक्षम है। यदि आप जानते हैं कि मुख्य सामग्री एक समय मूल्य से बाहर आई है जिसे आप एक बिलियन टिक के भीतर जानते हैं, तो आपकी खोज सिर्फ 340282366920938463463374607431 बार आसान हो गई।

1

यह क्रिप्टोग्राफी के लिए बुनियादी कारणों में से कुछ के साथ क्या करना है:

  • सुनिश्चित करें कि संदेश पारगमन (अपरिवर्तनीय)
  • यकीन संदेश पारगमन में पढ़ा नहीं किया गया है का बदलाव नहीं किया गया है (सुरक्षित)
  • यकीन है कि संदेश यह कौन कहता है यह सुनिश्चित करें कि संदेश (कोई रिप्ले)
  • आदि के रूप में एक पूर्व में भेजे गए एक ही नहीं है से (प्रामाणिक)
  • है से है

कुछ ऐसी चीजें हैं जिन्हें आपको शामिल करने की आवश्यकता है, फिर यह सुनिश्चित करने के लिए कि उपर्युक्त सत्य है। महत्वपूर्ण चीजों में से एक यादृच्छिक मूल्य है।

उदाहरण के लिए, अगर मैं एन्क्रिप्ट एक प्रमुख के साथ "बहुत सारे रहस्य", यह "dWua3hTOeVzO2d9w" के साथ बाहर आ सकते हैं

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

यदि मैं इसे प्रत्येक बार एन्क्रिप्ट करता हूं तो स्ट्रिंग में कुछ यादृच्छिक कचरा जोड़ता हूं, न केवल यह क्रैक करना कठिन बनाता है, लेकिन प्रत्येक बार एन्क्रिप्टेड संदेश अलग होता है।

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

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

Take plaintext p 
Generate random k 
Encrypt p with k using symmetric encryption, producing crypttext c 
Encrypt k with bob's private key, using asymmetric encryption, producing x 
Send c+x to bob 
Bob reverses the processes, decrypting x using his private key to obtain k 

इस पैटर्न के लिए कारण यह है कि सममित एन्क्रिप्शन असममित एन्क्रिप्शन की तुलना में बहुत तेजी से होता है है:

-Adam

1

क्रिप्टोग्राफी में एक आम पैटर्न निम्नलिखित (भेजने पाठ ऐलिस से बॉब के लिए) है। बेशक, यह के उत्पादन के लिए एक अच्छा यादृच्छिक संख्या जनरेटर पर निर्भर करता है, अन्यथा बुरे लोग इसे अनुमान लगा सकते हैं।

0

प्रोजेक्ट यूलर से this समस्या का समाधान करें, और यह वास्तव में घर चलाएगा कि "बहुत यादृच्छिकता" आपके लिए क्या करेगी। जब मैंने यह सवाल देखा, तो यह पहली बात थी जो मेरे दिमाग में चली गई।

जिस विधि के बारे में वह बात करता है उसका उपयोग करके, आप आसानी से देख सकते हैं कि "अधिक यादृच्छिकता" आपको क्या प्राप्त करेगी।

0

एक बहुत अच्छी कागज कि रूपरेखा क्यों अनियमितता के साथ सावधान नहीं किया जा रहा असुरक्षा का कारण बन सकता:

यह बताता है कि कैसे वापस 1995 में नेटस्केप ब्राउज़र की कुंजी एसएसएल कार्यान्वयन अनुमान लगा की चपेट में था पीआरएनजी बीजिंग की समस्या के कारण एसएसएल कुंजी।

1

यहां एक "कार्ड गेम" समानता है: मान लीजिए कि हम कार्ड के उसी डेक के साथ गेम के कई राउंड खेलते हैं। राउंड के बीच डेक की शफलता यादृच्छिकता का प्राथमिक स्रोत है। अगर हम ठीक से घुसपैठ नहीं करते हैं, तो आप कार्ड की भविष्यवाणी करके खेल को हरा सकते हैं।

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

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