-
इस खंड में, मैं व्यवहार में उपयोग किए जाने वाले स्ट्रीम ciphers के कुछ उदाहरण देना चाहता हूँ।
-
मैं दो पुराने उदाहरण कि वास्तव में नहीं कर रहे हैं के साथ शुरू कर रहा हूँ वाला
-
नई प्रणालियों में इस्तेमाल किया जा माना जाता।
लेकिन फिर भी, वे अभी भी काफी रहे हैं
-
व्यापक रूप से प्रयोग किया जाता है, और इसलिए मैं सिर्फ इतना है कि आप के साथ परिचित हैं नाम का उल्लेख करना चाहते हैं
-
इन अवधारणाओं। पहली धारा सांकेतिक शब्दों मैं बारे में बात करना चाहता हूँ RC4 डिज़ाइन किया, कहा जाता है
-
वापस 1987 में। और मैं हूँ केवल देने वाला आप इसे, उच्च स्तरीय वर्णन और फिर
-
हम RC4 के कुछ कमजोरियों के बारे में बात करेंगे और इसे उस पर छोड़ दें। तो RC4 लेता है एक
-
चर आकार बीज, यहाँ मैं बस एक उदाहरण के रूप में जहां यह 128 करेगी दिया
-
बिट्स बीज आकार है, जो तब स्ट्रीम सिफर के लिए महत्वपूर्ण के रूप में इस्तेमाल किया जाएगा के रूप में।
-
पहली बात यह है, यह 2048 टुकड़ों में, 128-बिट गुप्त कुंजी फैलता है जो
-
कर रहे हैं के रूप में आंतरिक राज्य जनरेटर के लिए इस्तेमाल किया जा करने वाले। और फिर, एक बार यह किया जाता है
-
इस विस्तार, यह मूल रूप से एक बहुत ही सरल पाश कार्यान्वित जहां के हर चलना
-
इस लूप उत्पादन का एक बाइट outputs. इसलिए, अनिवार्य रूप से, आप के लिए चलाने के जनक कर सकते हैं
-
जब तक आप चाहते हैं, और एक ही समय में एक बाइट उत्पन्न। अब RC4 वास्तव में, है जैसा कि मैंने कहा,
-
काफी लोकप्रिय। यह HTTPS प्रोटोकॉल में काफी आमतौर पर वास्तव में किया है।
-
इन दिनों, उदाहरण के लिए, गूगल में इसकी HTTPS RC4 उपयोग। यह भी रूप में हम WEP में प्रयुक्त है
-
अंतिम खंड में, लेकिन ज़ाहिर है WEP में चर्चा की, यह ग़लत तरीके से प्रयोग किया जाता है और
-
यह जिस तरह से यह WEP के अंदर इस्तेमाल किया है पूरी तरह से असुरक्षित है। इतना पिछले कुछ वर्षों में,
-
कुछ कमजोरियों RC4 में पाया गया है, और एक परिणाम के रूप में, यह अनुशंसित है कि नई परियोजनाओं
-
वास्तव में RC4 का उपयोग नहीं, लेकिन बजाय एक और अधिक आधुनिक pseudo-random जनरेटर के रूप में हम करेंगे का उपयोग करें
-
खंड के अंत की ओर चर्चा। तो मुझे सिर्फ दो कमजोरियों का उल्लेख।
-
तो पहले से एक है, यदि आप पर दूसरी बाइट देखो यह मूल रूप से, की तरह अजीब है
-
RC4 के उत्पादन की। यह दूसरा बाहर मुड़ता है बाइट थोड़ा पक्षपाती है। यदि RC4 था
-
पूरी तरह से यादृच्छिक, संभावना है कि दूसरी बाइट शून्य के बराबर होना होता है
-
ठीक से एक से अधिक 256 होगा। 256 संभव बाइट्स, संभावना है कि
-
यह शून्य के एक से अधिक 256 होना चाहिए। यह इसलिए होता है कि के लिए RC4 संभाव्यता
-
असल में दो 256, जिसका अर्थ है कि यदि आप RC4 आउटपुट को एन्क्रिप्ट करने के लिए उपयोग पर एक
-
संदेश दूसरी बाइट बिल्कुल एन्क्रिप्ट नहीं किए जाने की संभावना है। दूसरे शब्दों में यह हूँ
-
XOR-एड दो बार संभावना है कि यह माना जाता है के साथ शून्य के साथ हो।
-
तो दो 256, 256 से अधिक एक के स्थान पर।
और जिस तरह से मुझे कहना चाहिए कि है
-
दूसरी बाइट के बारे में विशेष कुछ नहीं है। यह पहली और तीसरी बाइट्स बाहर हो जाता है
-
भी उपलब्ध हैं। और यदि आप कर रहे हैं यह अब कि अनुशंसित है वास्तव में RC4 का उपयोग करने वाले,
-
तुम क्या करना चाहिए है मूल रूप से पहले 256 बाइट्स और सिर्फ उत्पादन पर ध्यान न दें
-
उत्पादन के जनक बाइट 257 से शुरू करने का उपयोग शुरू करते हैं। पहली जोड़ी
-
हो पक्षपातपूर्ण से बाहर कर दिया बाइट्स की, तो आप सिर्फ उन्हें अनदेखा। दूसरा कि हमला
-
कि यदि आप एक बहुत ही लंबी पर देखो वास्तव में यह इतना होता RC4 के आउटपुट है की खोज की थी
-
आप अनुक्रम 00 मिलने की अधिक संभावना हो कि। दूसरे शब्दों में, आप और अधिक कर रहे हैं
-
सोलह बिट्स, हो जाने की संभावना दो बाइट्स शून्य, शून्य, से तुम चाहिए। फिर से, यदि RC4
-
पूरी तरह से यादृच्छिक था संभावना शून्य देखने का, शून्य बिल्कुल 1/256 होगा
-
चुकता। यह पता चला है RC4 थोड़ा पक्षपाती है और 1/256 cubed पूर्वाग्रह है। यह
-
डेटा के कई गीगाबाइट द्वारा उत्पादित कर रहे हैं के बाद इस पूर्वाग्रह बाहर हो जाता है वास्तव में शुरू होता है
-
RC4. लेकिन फिर भी, यह कुछ ऐसा है जो जनरेटर की भविष्यवाणी के लिए इस्तेमाल किया जा सकता है
-
और निश्चित रूप से यह जनरेटर के उत्पादन में अंतर करने के लिए इस्तेमाल किया जा सकता
-
एक सच में यादृच्छिक अनुक्रम से। मूल रूप से तथ्य यह है, कि शून्य शून्य अधिक बार प्रकट
-
यह होना चाहिए की तुलना distinguisher है। और फिर पिछले खंड में हम के बारे में बात
-
कि मूल रूप से कहना है कि कि WEP, पर हमला करने के लिए इस्तेमाल किया गया से संबंधित कुंजी हमलों
-
यदि एक कुंजी है कि एक-दूसरे के निकट से संबंधित हैं का उपयोग करता है तो यह वास्तव में संभव है
-
रूट कुंजी को पुनर्प्राप्त करने के लिए। तो इन कमजोरियों कि RC4 के और, के रूप में जाना जाता है एक
-
नई प्रणाली वास्तव में नहीं RC4 का उपयोग करें और इसके बजाय का उपयोग करें कि परिणाम, यह सिफारिश की है एक
-
आधुनिक pseudo-random जनरेटर। ठीक है, दूसरा उदाहरण मैं तुम्हें देने के लिए चाहता है एक
-
बुरी तरह से टूटे हुए स्ट्रीम सिफर डीवीडी फिल्मों को एन्क्रिप्ट करने के लिए उपयोग किया जाता है। जब आप एक डीवीडी खरीदें
-
की दुकान में, वास्तविक फिल्म एक स्ट्रीम सिफर बुलाया का उपयोग कर एन्क्रिप्टेड है
-
सामग्री प्रणाली, सीएसएस पांव मार। सीएसएस एक बुरी तरह से टूटे हुए स्ट्रीम सिफर निकला,
-
और हम बहुत आसानी से इसे तोड़ कर सकते हैं, और मैं तुम्हें दिखाता कैसे करना चाहते हैं का दौरा एल्गोरिथ्म
-
काम करता है। हम यह कर रहे हैं ताकि आप एक उदाहरण के एक हमले कलन विधि है, लेकिन में देख सकते हैं
-
वास्तव में, वहाँ कई प्रणालियों कि मूल रूप से इस हमले decrypt करने के लिए उपयोग कर रहे हैं
-
एन्क्रिप्टेड डीवीडी। तो सीएसएस स्ट्रीम सिफर है पर कुछ उस हार्डवेयर आधारित
-
डिजाइनरों की तरह। यह एक हार्डवेयर स्ट्रीम सिफर है कि करने के लिए माना जाता है होना करने के लिए डिज़ाइन किया गया है
-
हार्डवेयर में लागू करना आसान हो, और एक तंत्र एक रैखिक फोन किया पर आधारित है
-
आपके सुझाव बदलाव रजिस्टर। तो एक रैखिक प्रतिक्रिया बदलाव रजिस्टर मूल रूप से एक रजिस्टर है
-
कि जहां प्रत्येक कोशिका एक बिट शामिल कक्षों के होते हैं। तो मूल रूप से
-
क्या होता है वहाँ कुछ कोशिकाओं, नहीं सभी कोशिकाओं में इन नल कर रहे हैं कुछ
-
पदों के नल कहा जाता है। और फिर इन नल एक XOR में और फिर पर फ़ीड
-
हर घड़ी चक्र बदलाव रजिस्टर बाईं ओर पाली। अंतिम बिट से फ़ॉल्स
-
और फिर पहले थोड़ा इस XOR का परिणाम हो जाता है। तो आप देख सकते हैं कि
-
इस को लागू करने के लिए, एक बहुत ही सरल तंत्र है और हार्डवेयर में बहुत कम लेता है
-
ट्रांजिस्टर। बस बदलाव सही, बस बंद पिछले बिट falls और पहले थोड़ा
-
पिछले बिट्स XOR बन जाता है। तो इस LFSR के लिए बीज
-
असल में, LFSR की प्रारंभिक अवस्था है।
-
और यह स्ट्रीम ciphers का एक संख्या के आधार है। तो यहाँ कुछ उदाहरण हैं। तो, के रूप में
-
मैं ने कहा कि, दो LFSRs डीवीडी एन्क्रिप्शन का उपयोग करता है।
मैं तुम्हें दिखाता हूँ कैसे कि बस काम करता है एक
-
दूसरा। जीएसएम एन्क्रिप्शन, इन एल्गोरिदम A51 और A52 कहा जाता है। और है कि
-
का उपयोग करता है तीन LFSRs. ब्लूटूथ एन्क्रिप्शन एक कलन विधि कहा जाता है, ई शून्य है। ये सब कर रहे हैं
-
धारा ciphers, और चला का उपयोग करता है चार LFSRs. है कि इन सब बाहर बुरी तरह से टूट रहे हैं,
-
और वास्तव में वास्तव में विश्वसनीय यातायात को एन्क्रिप्ट करने के लिए नहीं किया जाना चाहिए, लेकिन वे सभी कर रहे हैं
-
अब क्या हार्डवेयर परिवर्तन के लिए थोड़ा मुश्किल है, तो यह हार्डवेयर में कार्यान्वित
-
करता है। लेकिन इन, सीएसएस, सरलतम वास्तव में एक प्यारा पर हमला, तो चलो है
-
मुझे तुम्हें दिखाता कैसे हमले काम करता है। तो, चलो का वर्णन कैसे सीएसएस वास्तव में काम करता है। तो,
-
सीएसएस के लिए कुंजी पांच बाइट्स, अर्थात् 40 बिट्स है, पांच बार आठ 40 बिट्स है। इस
-
डीवीडी एन्क्रिप्शन था कि वे खुद को केवल 40 बिट्स को सीमित करने के लिए था कारण है
-
एक समय जहां अमेरिकी निर्यात विनियमावली केवल निर्यात के लिए अनुमति में बनाया गया
-
crpyto एल्गोरिदम जहां केवल 40 बिट्स के लिए महत्वपूर्ण था। तो सीएसएस के डिजाइनर थे
-
पहले से ही बहुत, बहुत कम की चाबियाँ तक ही सीमित।
सिर्फ 40 बिट कुंजी। तो, अपने डिजाइन काम करता है
-
इस प्रकार। असल में, सीएसएस दो LFSR का उपयोग करता है। एक एक 17-सा LFSR है। दूसरे शब्दों में,
-
इस रजिस्टर 17 बिट्स होती हैं। और एक अन्य एक 25-बिट LFSR है,
-
यह थोड़ी देर, 25-सा LFSR है। और जिस तरह से इन LFSRs वरीयता प्राप्त कर रहे हैं
-
इस प्रकार है। तो कुंजी एन्क्रिप्शन के लिए मूल रूप से दिखता निम्नानुसार।
-
तुम एक साथ एक शुरुआत है, और आप इसे करने के लिए पहले दो बाइट्स के जोड़ना
-
कुंजी। और कि LFSR की प्रारंभिक अवस्था है।
-
और फिर दूसरा LFSR मूल रूप से उसी तरह intitialized है।
-
एक कुंजी के पिछले तीन बाइट्स concatenated. और है कि
-
LFSR की प्रारंभिक अवस्था में भरा हुआ है।
आप देख सकते हैं कि पहले दो बाइट्स हैं
-
सोलह बिट्स, प्लस अग्रणी एक, कि सत्रह बिट्स है कुल मिलाकर, जबकि दूसरा
-
LFSR 24 बिट्स प्लस जो 25 बिट्स है एक है।
और तुम नोटिस हम सभी पांच बिट्स का इस्तेमाल किया
-
कुंजी। तो फिर ये LFSRs मूल रूप से कर रहे हैं आठ चक्र के लिए चला तो वे उत्पन्न
-
आउटपुट के आठ बिट्स। और फिर वे मूल रूप से करता है इस एडर के माध्यम से जाना
-
modulo 256 इसके अतिरिक्त है। तो हाँ, यह एक अतिरिक्त बॉक्स, modulo 256 है। वहाँ एक और है
-
तकनीकी बात है कि होता है। हम वास्तव में वास्तव में-भी जोड़ा से ले जाना है
-
पिछले ब्लॉक। लेकिन यह इतना महत्वपूर्ण नहीं है। है कि नहीं है एक विस्तार तो
-
प्रासंगिक। ठीक है, तो हर ब्लॉक, तुम नोटिस हम modulo 256 के अलावा क्या कर रहे हैं और
-
हम कैर्री की अनदेखी कर रहे हैं, लेकिन कैर्री मूल रूप से एक शून्य या एक से एक के रूप में जोड़ा गया है
-
अगली ब्लॉक के अलावा। ठीक? और फिर मूल रूप से इस दौर प्रति एक बाइट आउटपुट।
-
ठीक है, और तब इस बाइट तो है बेशक इस्तेमाल किया, XOR-ed उपयुक्त के साथ
-
एन्क्रिप्टेड किया जा रहा है फिल्म की बाइट।
ठीक है, तो यह एक बहुत ही सरल स्ट्रीम
-
सिफ़र, यह बहुत कम हार्डवेयर को लागू करने के लिए लेता है। यह चलेगा फास्ट, पर भी बहुत
-
सस्ते हार्डवेयर और यह सिनेमा एन्क्रिप्ट जाएगा।
तोड़ने के लिए आसान है, तो यह यह पता चला है
-
में मोटे तौर पर दो सत्रह के लिए समय। अब मुझे बताएंगे कि कैसे।
-
मान लीजिए कि आप फिल्मों को रोकना, हम तो यहाँ है, तो एक
-
एन्क्रिप्टेड फिल्म decrypt करने के लिए इच्छित।
तो चलो कहना है कि यह सब तो एन्क्रिप्टेड
-
तुम क्या यहाँ से अंदर है पता नहीं है।
तथापि, यह इतना कि सिर्फ इसलिए होता
-
डीवीडी एन्क्रिप्शन एमपीईजी फ़ाइलें उपयोग कर रहा है, यह इतना होता है अगर आप के उपसर्ग का पता
-
plaintext, चलो बस कहना है शायद यह बीस बाइट्स है। ठीक है, हम जानते हैं यदि आप
-
XOR इन दोनों चीजें एक साथ हैं, तो दूसरे शब्दों में, आप यहाँ XOR करते हैं,
-
क्या आप प्राप्त करेंगे PRG के प्रारंभिक खंड है। तो, आप मिल जाएगा
-
सीएसएस, इस PRG के उत्पादन के उत्पादन की पहली बीस बाइट्स। ठीक है, तो अब
-
यहाँ है क्या हम जा रहे हैं करने के लिए। तो हम पहली बीस बाइट्स के उत्पादन की है। अब
-
हम तो निम्न कार्य करें। हम सब दो पहले की सत्रह संभव मूल्यों के लिए प्रयास करें
-
LFSR. ठीक? तो दो सत्रह संभव मूल्यों के लिए। प्रत्येक मान के लिए इतना तो के लिए
-
प्रत्येक इन दो की LFSR की सत्रह प्रारंभिक मानों के लिए, हम कर रहे हैं करने वाले चलाने
-
LFSR के लिए बीस बाइट्स, ठीक है? तो हम इस से outputs के बीस बाइट्स जेनरेट करेंगे
-
पहली LFSR, संभालने-सत्रह संभव सेटिंग्स को दोनों में से हर एक के लिए।
-
अब, याद है हम सीएसएस प्रणाली के पूर्ण उत्पादन है। हम तो है हम क्या कर सकते हैं
-
इस उत्पादन है कि हम ले जा सकते हैं। और यह बीस के काटने से घटाना कि हम
-
पहली LFSR है, और यदि वास्तव में से पहले की प्रारंभिक राज्य के लिए हमारा अनुमान मिल गया
-
की पहली बीस-बाइट आउटपुट है क्या हम मिलना चाहिए LFSR सही है, है
-
दूसरी LFSR. है ना? कारण है कि क्या के उत्पादन में सीएसएस परिभाषा द्वारा
-
प्रणाली है। अब, यह एक 20-बाइट क्रम में खोज, यह बहुत आसान है कि बाहर जाता है
-
बताने के लिए कि क्या इस 20-बाइट अनुक्रम से एक 25-बिट LFSR या नहीं आया। यदि यह
-
नहीं था, तो हम जानते हैं कि हमारा अनुमान है कि 17-बिट LFSR के लिए था
-
ग़लत और फिर हम अगले अनुमान के लिए 17-बिट LFSR करने के लिए आगे बढ़ने और
-
अगले और इतने पर लगता है और आगे।
अंततः जब तक हम सही प्रारंभिक मारा
-
राज्य के लिए 17-बिट LFSR, और फिर हम वास्तव में मिल जाएगा है, हम देखेंगे कि
-
25-बिट LFSR के लिए उत्पादन 20 बाइट्स कि हम उम्मीदवार के रूप में मिलता है
-
वास्तव में एक संभव के लिए एक 25-बिट LFSR आउटपुट। और फिर, न केवल हम है जाएगा
-
सही प्रारंभिक राज्य सीखा 17-बिट LFSR के लिए, हम भी करना होगा
-
सही प्रारंभिक राज्य के 25-बिट LFSR के सीखा है। और फिर हम भविष्यवाणी कर सकते हैं
-
शेष सीएसएस की, और जाहिर है, कि, हम फिर से बाकी डीक्रिप्ट करें कर सकते हैं का उपयोग करके outputs
-
फिल्म। हम वास्तव में शेष plaintext पुनर्प्राप्त कर सकते हैं। ठीक. यह है
-
चीजें हैं जो हम से पहले के बारे में बात की थी। तो, मैं इस ने कहा कि एक छोटे जल्दी, लेकिन उम्मीद है कि,
-
यह स्पष्ट था। हम भी स्ट्रीम का इस प्रकार पर एक होमवर्क अभ्यास कर रहे हो जा रहे हैं
-
ciphers और आप की तरह कैसे इन हमले एल्गोरिदम के बिंदु मिल जाएगा
-
काम करते हैं। और मैं उल्लेख करना चाहिए कि वहाँ कई ओपन सोर्स प्रणालियों रहे हैं अब जब कि वास्तव में
-
सीएसएस-एन्क्रिप्टेड डेटा decrypt करने के लिए इस विधि का उपयोग करें। ठीक है, तो अब हम है कि दो देखा
-
कमजोर उदाहरण, बेहतर उदाहरण के लिए, और विशेष रूप से बेहतर पर चलो
-
pseudo-random जनरेटर जो परियोजना eStream कहा जाता है से आते हैं। यह है एक
-
कि 2008 में संपन्न हुआ परियोजना है, और वे मूल रूप से पाँच अलग अलग स्ट्रीम अर्हता प्राप्त
-
ciphers, लेकिन यहां मैं सिर्फ एक ही पेश करना चाहता हूँ। तो के लिए सभी मापदंडों का पहली बार
-
इन स्ट्रीम ciphers क्या हम करने के लिए इस्तेमाल कर रहे हैं से थोड़ा अलग हैं। तो इन
-
स्ट्रीम सामान्य रूप में वे एक बीज है ciphers.
लेकिन इसके साथ ही वे भी है, क्या है
-
नामक एक अस्थायी रूप से है और हम देखेंगे क्या के लिए एक अस्थायी रूप से प्रयोग किया जाता है बस एक मिनट में। तो
-
वे एक बीज और एक अस्थायी रूप से दो जानकारी ले लो।
हम देखेंगे क्या अस्थायी रूप से लिए में इस्तेमाल किया है
-
बस एक दूसरा। और बेशक वे एक बहुत बड़े उत्पादन, यहाँ है तो एन का उत्पादन
-
बहुत, बहुत, बहुत से बड़ा एस। जब मैं अस्थायी रूप से कहते हैं, अब, मैं क्या मतलब है एक मूल्य है कि
-
कभी नहीं के रूप में लंबे समय के रूप में कुंजी तय हो गई है दोहराने जा रहा। और मैं कि अधिक में समझाता हूँ
-
बस एक दूसरे में विस्तार। लेकिन जैसा कि एक अद्वितीय कभी मूल्य अभी के लिए, बस के बारे में सोच
-
के रूप में लंबे समय के रूप में एक ही चाबी है को दोहराता है।
और तो जाहिर है एक बार आप इस PRG है,
-
तुम एन्क्रिप्ट जाएगा, जैसा कि आप देख, तुम एक स्ट्रीम सिफर सिर्फ पहले के रूप में, अभी के अलावा
-
PRG लेता है के रूप में इनपुट दोनों कुंजी और अस्थायी रूप से। और अस्थायी रूप से की संपत्ति है
-
कि जोड़ी, k अल्पविराम r, प्रमुख अल्पविराम का उपनाम, कभी नहीं है, तो-कभी नहीं दोहराता है। यह है
-
कभी नहीं एक बार से अधिक उपयोग किया। तो लब्बोलुआब यह है कि आप महत्वपूर्ण, पुनः प्रयोग पुनः प्रयोग कर सकते हैं
-
कुंजी है, क्योंकि कश्मीर और आर केवल अस्थायी रूप से जोड़ी अद्वितीय है, क्योंकि बनाता है
-
एक बार इस्तेमाल किया है। मैं कहता हूँ वे अद्वितीय हैं। ठीक है, तो यह अस्थायी रूप से गया है की तरह एक प्यारा छल कि
-
हमें हर बार एक नया कुंजी को हिलाने की परेशानी बचाता है। ठीक है, तो विशेष रूप से
-
उदाहरण के eStream कि मैं तुम्हें दिखाने के लिए चाहता हूँ से साल्सा बीस कहा जाता है। यह है एक
-
स्ट्रीम सिफर दोनों implementations के सॉफ्टवेयर और हार्डवेयर के लिए डिज़ाइन की गई है
-
implementations. यह दिलचस्प की तरह है।
तुम्हें पता है कि कुछ स्ट्रीम ciphers कर रहे हैं
-
RC4 जैसे सॉफ्टवेयर के लिए डिज़ाइन किया गया।
सब कुछ वह करता है बनाने के लिए डिज़ाइन किया गया है
-
जबकि अन्य धारा ciphers के लिए तैयार कर रहे हैं तेजी से, चलाने के सॉफ्टवेयर कार्यान्वयन
-
हार्डवेयर, सीएसएस, विशेष रूप से हार्डवेयर बनाने के लिए डिज़ाइन किया गया है एक LFSR का उपयोग कर की तरह
-
implementations बहुत सस्ते। यह भी है, यह है कि इस बारे में अच्छी बात है
-
इतना है कि यह दोनों यह हार्डवेयर और अपने सॉफ्टवेयर में लागू करने के लिए आसान है डिज़ाइन किया गया
-
कार्यान्वयन भी बहुत तेज है। तो मुझे समझाने की कैसे साल्सा काम करता है। खैर, साल्सा
-
या तो 128 या 256 बिट कुंजी हो जाता है। मैं केवल साल्सा के 128-बिट संस्करण समझाता हूँ।
-
तो यह बीज है। और फिर यह भी एक अस्थायी रूप से, बस से पहले, जो के रूप में लगते हैं
-
64 बिट्स होना होता है। और फिर इसे एक बड़े आउटपुट उत्पन्न करेंगे। अब, यह कैसे होता है
-
वास्तव में काम करते हो? खैर, समारोह ही इस प्रकार परिभाषित किया गया है। असल में, को देखते हुए
-
कुंजी और अस्थायी रूप से, यह एक बहुत लंबा है, ठीक है, एक लंबे समय कूट-यादृच्छिक उत्पन्न करेगा
-
, आवश्यक के रूप में लंबे समय अनुक्रम। और यह कि मैं द्वारा निरूपित हूँ इस समारोह का उपयोग करके करता हूँ
-
एच. एच इस फ़ंक्शन तीन आदानों लेता है।
मूल रूप से कुंजी। ठीक है, बीज k,
-
nonce r, और उसके बाद कदम से कदम करने के लिए वेतन वृद्धि एक काउंटर। तो यह हो जाता है
-
शून्य से एक, दो, तीन, चार के रूप में लंबे समय के रूप में हम [सुनाई] किया जा करने के लिए। ठीक? तो बुनियादी तौर पर,
-
इस k आर पर इस h का मूल्यांकन द्वारा, लेकिन इस incrementing काउंटर का उपयोग करना, हम प्राप्त कर सकते हैं एक
-
अनुक्रम कि जैसे हम चाहते हैं लंबी है। तो मैं सभी को यह करना है का वर्णन कैसे यह फ़ंक्शन
-
एच काम करता है। अब, मुझे कि यहाँ आप के लिए करते हैं।
जिस तरह से यह काम करता है इस प्रकार है। खैर, हम
-
कुछ काफी बड़ी है जो 64 बाइट्स में अमेरिका के विस्तार के द्वारा बंद शुरू
-
लंबे समय है, और हम कि निम्नानुसार है। मूल रूप से हम एक निरंतर की शुरुआत में इतनी छड़ी
-
ताओ शून्य है, इन चार बाइट्स कर रहे हैं, यह तो एक चार बाइट स्थिरांक है युक्ति के लिए
-
साल्सा मूल रूप से आप ताओ शून्य के लिए मान देता। फिर हम कश्मीर डाल जिसमें है
-
सोलह बाइट्स। तो फिर हम एक और लगातार डाल दिया। फिर, यह चार बाइट्स है। और
-
निर्दिष्ट करता है जैसा कि मैंने कहा, कल्पना मूलतः क्या लगातार यह तय है जो। फिर हम डाल
-
अस्थायी रूप से जो आठ बाइट्स है गया। तो हम सूचकांक में डाल दिया। इस काउंटर शून्य है,
-
एक, दो, तीन, चार, जो एक और आठ बाइट्स है। तो फिर हम एक और लगातार डाल
-
जो एक और चार बाइट्स है ताऊ दो।
हम प्रमुख डाल तो फिर, यह एक और है
-
सोलह बाइट्स। और फिर अंत में हम तीसरे निरंतर, ताऊ तीन, जो है डाल
-
एक और चार बाइट्स। ठीक है तो मैं ने कहा, यदि आप इन तक राशि के रूप में, आप देखते हैं कि आप 64 मिल
-
बाइट्स। तो बुनियादी तौर पर हम कुंजी और अस्थायी रूप से और काउंटर में 64 विस्तार है
-
बाइट्स। मूल रूप से प्रमुख दोहराया जाता है दो बार मुझे लगता है। और फिर हम क्या हम पर लागू है एक
-
ताकि हम इस समारोह में, छोटे h लागू समारोह में, मैं इस कार्यात्मक थोड़ा एच. ठीक है, फोन करता हूँ।
-
और यह एक समारोह है कि एक के लिए एक है तो यह 64 बाइट्स के लिए 64 बाइट्स नक्शे है। यह है एक
-
पूरी तरह से invertible समारोह, ठीक है? इसलिए इस समारोह एच है, के रूप में मैं कहता हूँ, यह है एक
-
invertable समारोह। तो इनपुट दिया तुम उत्पादन प्राप्त कर सकते हैं और देखते हुए
-
आउटपुट तुम वापस इनपुट के लिए जा सकते हैं। और इसे बनाया है विशेष रूप से यह किया है, तो एक - आराम से
-
हार्डवेयर और बी-किसी x86 पर में लागू करने के लिए, यह बेहद क्योंकि लागू करना आसान है
-
आप की जरूरत है ऐसा करने के लिए सेट करें जो सभी आपरेशनों का समर्थन करता है इस SSE2 अनुदेश x 86 है
-
इस समारोह के लिए। यह बहुत, बहुत तेज है।
एक परिणाम के रूप में, साल्सा एक बहुत तेजी से धारा है
-
सायफर। और फिर यह मूल रूप से फिर से है। तो यह इस पर लागू होता है
-
फ़ंक्शन एच फिर से है और यह एक और 64 बाइट्स हो जाता है। और तो और आगे, मूल रूप से पर
-
यह इस दस बार करता है। पूरी बात यहाँ, तो कह दोहराता है दस बार, तो ठीक है
-
मूल रूप से ज दस बार लागू होते हैं। और तब से ही, यह वास्तव में नहीं काफी यादृच्छिक है।
-
यह है नहीं करने वाले देखो यादृच्छिक क्योंकि एच पूरी तरह से invertable है, जैसे हम ने कहा। तो दी
-
इस अंतिम उत्पादन, यह बहुत आसान है बस एच पलटना और फिर मूल के लिए वापस जाने के लिए है
-
आदानों और फिर परीक्षण है कि इनपुट सही संरचना है। तो तुम एक और क्या
-
बात है, जो मूल रूप से XOR करने के लिए जानकारी और अंतिम outputs है। वास्तव में,
-
क्षमा करें. यह एक XOR नहीं है। यह वास्तव में एक अतिरिक्त है। तो तुम एक अतिरिक्त शब्द क्या किया
-
शब्द। ताकि आप चार बाइट्स में एक शब्द शब्द से इसके अलावा वहाँ रहे हैं अगर 64 बाइट्स, एक
-
समय, और अंत में आप 64-बाइट आउटपुट मिल, और यह बात है। कि पूरे है
-
pseudo-random जनरेटर। कि इतना, कि पूरे समारोह, थोड़ा h है। और मैं के रूप में
-
समझाया, इस पूरे निर्माण यहाँ समारोह है बड़ी एच. और तब आप का मूल्यांकन
-
काउंटर incrementing द्वारा बड़ी एच मैं शून्य, एक, दो, तीन से बाद। और है कि
-
तुम एक pseudo-random दृश्य है कि लंबे समय के रूप के रूप में आप इसे होने की जरूरत है दे देंगे। और
-
असल में, वहाँ इस पर कोई signifigant हमले कर रहे हैं। यह सुरक्षा है कि
-
बहुत करीब दो 128 के लिए। हम देखेंगे क्या इसका मतलब है कि और अधिक ठीक पर बाद में।
-
यह एक बहुत तेजी से स्ट्रीम बीजलेख, दोनों हार्डवेयर और सॉफ्टवेयर में है। और, के रूप में दूर के रूप में
-
हम बता सकते हैं, यह एक स्ट्रीम सिफर के लिए आवश्यक के रूप में अप्रत्याशित हो सकता है लगता है। तो मैं
-
है कि eStream परियोजना वास्तव में पांच धारा ciphers की तरह कहना चाहिए
-
यह। क्योंकि मुझे लगता है कि यह सबसे अधिक सुरुचिपूर्ण है मैं केवल साल्सा का फैसला किया। लेकिन मैं तुम्हें दे सकते हैं
-
कुछ प्रदर्शन यहाँ संख्या। तो आप देख सकते हैं, ये प्रदर्शन नंबर पर हैं एक
-
2.2 gigahertz, तुम्हें पता है, x 86 मशीन लिखें।
और आप देख सकते हैं कि RC4 वास्तव में है
-
सबसे धीमी। क्योंकि अनिवार्य रूप से, अच्छी तरह से यह सचमुच का लाभ ले करता है
-
हार्डवेयर। यह केवल बाइट संचालन करता है।
और तो बर्बाद चक्र का एक बहुत वहाँ है कि
-
इस्तेमाल किया जा रहा नहीं कर रहे हैं। E-स्ट्रीम उम्मीदवारों, दोनों साल्सा और अन्य लेकिन
-
उम्मीदवार Sosemanuk बुलाया। मैं कहना है कि इन eStream फाइनल कर रहे हैं चाहिए। इन कर रहे हैं
-
वास्तव में धारा ciphers कि eStream परियोजना द्वारा अनुमोदित कर रहे हैं। आप देख सकते हैं कि
-
वे एक महत्वपूर्ण दर हासिल किया है।
इस 643 मेगाबाइट प्रति सेकंड इस पर है
-
वास्तुकला, एक फिल्म और इन के लिए पर्याप्त से अधिक वास्तव में काफी प्रभावशाली हैं
-
दरों। और तुम तो अब दो पुराने स्ट्रीम ciphers कि नहीं होना चाहिए के उदाहरण देखा है
-
, उन स्ट्रीम ciphers पर हमले सहित करते थे।
तुम्हें देखा है क्या आधुनिक स्ट्रीम ciphers
-
की तरह के साथ इस अस्थायी रूप से देखो। और आप के लिए इन प्रदर्शन संख्या देखना
-
तो तुम एक के इस्तेमाल कर सकते हैं अगर आप की जरूरत है एक स्ट्रीम सिफर आधुनिक स्ट्रीम ciphers
-
eStream फाइनल। विशेष रूप से आप साल्सा की तरह कुछ का उपयोग कर सकते।