इस खंड में, मैं व्यवहार में उपयोग किए जाने वाले स्ट्रीम 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 फाइनल। विशेष रूप से आप साल्सा की तरह कुछ का उपयोग कर सकते।