1 00:00:00,000 --> 00:00:04,010 इस खंड में, मैं व्यवहार में उपयोग किए जाने वाले स्ट्रीम ciphers के कुछ उदाहरण देना चाहता हूँ। 2 00:00:04,010 --> 00:00:07,072 मैं दो पुराने उदाहरण कि वास्तव में नहीं कर रहे हैं के साथ शुरू कर रहा हूँ वाला 3 00:00:07,072 --> 00:00:11,017 नई प्रणालियों में इस्तेमाल किया जा माना जाता। लेकिन फिर भी, वे अभी भी काफी रहे हैं 4 00:00:11,017 --> 00:00:14,164 व्यापक रूप से प्रयोग किया जाता है, और इसलिए मैं सिर्फ इतना है कि आप के साथ परिचित हैं नाम का उल्लेख करना चाहते हैं 5 00:00:14,164 --> 00:00:19,087 इन अवधारणाओं। पहली धारा सांकेतिक शब्दों मैं बारे में बात करना चाहता हूँ RC4 डिज़ाइन किया, कहा जाता है 6 00:00:19,087 --> 00:00:23,429 वापस 1987 में। और मैं हूँ केवल देने वाला आप इसे, उच्च स्तरीय वर्णन और फिर 7 00:00:23,429 --> 00:00:27,818 हम RC4 के कुछ कमजोरियों के बारे में बात करेंगे और इसे उस पर छोड़ दें। तो RC4 लेता है एक 8 00:00:27,818 --> 00:00:32,702 चर आकार बीज, यहाँ मैं बस एक उदाहरण के रूप में जहां यह 128 करेगी दिया 9 00:00:32,702 --> 00:00:36,980 बिट्स बीज आकार है, जो तब स्ट्रीम सिफर के लिए महत्वपूर्ण के रूप में इस्तेमाल किया जाएगा के रूप में। 10 00:00:36,980 --> 00:00:41,738 पहली बात यह है, यह 2048 टुकड़ों में, 128-बिट गुप्त कुंजी फैलता है जो 11 00:00:41,738 --> 00:00:46,382 कर रहे हैं के रूप में आंतरिक राज्य जनरेटर के लिए इस्तेमाल किया जा करने वाले। और फिर, एक बार यह किया जाता है 12 00:00:46,382 --> 00:00:51,197 इस विस्तार, यह मूल रूप से एक बहुत ही सरल पाश कार्यान्वित जहां के हर चलना 13 00:00:51,197 --> 00:00:55,898 इस लूप उत्पादन का एक बाइट outputs. इसलिए, अनिवार्य रूप से, आप के लिए चलाने के जनक कर सकते हैं 14 00:00:55,898 --> 00:01:00,653 जब तक आप चाहते हैं, और एक ही समय में एक बाइट उत्पन्न। अब RC4 वास्तव में, है जैसा कि मैंने कहा, 15 00:01:00,653 --> 00:01:05,205 काफी लोकप्रिय। यह HTTPS प्रोटोकॉल में काफी आमतौर पर वास्तव में किया है। 16 00:01:05,205 --> 00:01:11,888 इन दिनों, उदाहरण के लिए, गूगल में इसकी HTTPS RC4 उपयोग। यह भी रूप में हम WEP में प्रयुक्त है 17 00:01:11,888 --> 00:01:15,686 अंतिम खंड में, लेकिन ज़ाहिर है WEP में चर्चा की, यह ग़लत तरीके से प्रयोग किया जाता है और 18 00:01:15,686 --> 00:01:18,861 यह जिस तरह से यह WEP के अंदर इस्तेमाल किया है पूरी तरह से असुरक्षित है। इतना पिछले कुछ वर्षों में, 19 00:01:18,861 --> 00:01:23,886 कुछ कमजोरियों RC4 में पाया गया है, और एक परिणाम के रूप में, यह अनुशंसित है कि नई परियोजनाओं 20 00:01:23,886 --> 00:01:28,793 वास्तव में RC4 का उपयोग नहीं, लेकिन बजाय एक और अधिक आधुनिक pseudo-random जनरेटर के रूप में हम करेंगे का उपयोग करें 21 00:01:28,793 --> 00:01:34,059 खंड के अंत की ओर चर्चा। तो मुझे सिर्फ दो कमजोरियों का उल्लेख। 22 00:01:34,059 --> 00:01:39,561 तो पहले से एक है, यदि आप पर दूसरी बाइट देखो यह मूल रूप से, की तरह अजीब है 23 00:01:39,561 --> 00:01:44,630 RC4 के उत्पादन की। यह दूसरा बाहर मुड़ता है बाइट थोड़ा पक्षपाती है। यदि RC4 था 24 00:01:44,630 --> 00:01:49,780 पूरी तरह से यादृच्छिक, संभावना है कि दूसरी बाइट शून्य के बराबर होना होता है 25 00:01:49,780 --> 00:01:54,744 ठीक से एक से अधिक 256 होगा। 256 संभव बाइट्स, संभावना है कि 26 00:01:54,744 --> 00:01:59,646 यह शून्य के एक से अधिक 256 होना चाहिए। यह इसलिए होता है कि के लिए RC4 संभाव्यता 27 00:01:59,646 --> 00:02:04,486 असल में दो 256, जिसका अर्थ है कि यदि आप RC4 आउटपुट को एन्क्रिप्ट करने के लिए उपयोग पर एक 28 00:02:04,486 --> 00:02:09,574 संदेश दूसरी बाइट बिल्कुल एन्क्रिप्ट नहीं किए जाने की संभावना है। दूसरे शब्दों में यह हूँ 29 00:02:09,574 --> 00:02:14,575 XOR-एड दो बार संभावना है कि यह माना जाता है के साथ शून्य के साथ हो। 30 00:02:14,575 --> 00:02:19,436 तो दो 256, 256 से अधिक एक के स्थान पर। और जिस तरह से मुझे कहना चाहिए कि है 31 00:02:19,436 --> 00:02:22,849 दूसरी बाइट के बारे में विशेष कुछ नहीं है। यह पहली और तीसरी बाइट्स बाहर हो जाता है 32 00:02:22,849 --> 00:02:27,818 भी उपलब्ध हैं। और यदि आप कर रहे हैं यह अब कि अनुशंसित है वास्तव में RC4 का उपयोग करने वाले, 33 00:02:27,818 --> 00:02:32,800 तुम क्या करना चाहिए है मूल रूप से पहले 256 बाइट्स और सिर्फ उत्पादन पर ध्यान न दें 34 00:02:32,800 --> 00:02:37,246 उत्पादन के जनक बाइट 257 से शुरू करने का उपयोग शुरू करते हैं। पहली जोड़ी 35 00:02:37,246 --> 00:02:41,241 हो पक्षपातपूर्ण से बाहर कर दिया बाइट्स की, तो आप सिर्फ उन्हें अनदेखा। दूसरा कि हमला 36 00:02:41,241 --> 00:02:48,482 कि यदि आप एक बहुत ही लंबी पर देखो वास्तव में यह इतना होता RC4 के आउटपुट है की खोज की थी 37 00:02:48,482 --> 00:02:53,863 आप अनुक्रम 00 मिलने की अधिक संभावना हो कि। दूसरे शब्दों में, आप और अधिक कर रहे हैं 38 00:02:53,863 --> 00:02:58,970 सोलह बिट्स, हो जाने की संभावना दो बाइट्स शून्य, शून्य, से तुम चाहिए। फिर से, यदि RC4 39 00:02:58,970 --> 00:03:03,948 पूरी तरह से यादृच्छिक था संभावना शून्य देखने का, शून्य बिल्कुल 1/256 होगा 40 00:03:03,948 --> 00:03:08,556 चुकता। यह पता चला है RC4 थोड़ा पक्षपाती है और 1/256 cubed पूर्वाग्रह है। यह 41 00:03:08,556 --> 00:03:13,718 डेटा के कई गीगाबाइट द्वारा उत्पादित कर रहे हैं के बाद इस पूर्वाग्रह बाहर हो जाता है वास्तव में शुरू होता है 42 00:03:13,718 --> 00:03:18,634 RC4. लेकिन फिर भी, यह कुछ ऐसा है जो जनरेटर की भविष्यवाणी के लिए इस्तेमाल किया जा सकता है 43 00:03:18,634 --> 00:03:23,120 और निश्चित रूप से यह जनरेटर के उत्पादन में अंतर करने के लिए इस्तेमाल किया जा सकता 44 00:03:23,120 --> 00:03:28,097 एक सच में यादृच्छिक अनुक्रम से। मूल रूप से तथ्य यह है, कि शून्य शून्य अधिक बार प्रकट 45 00:03:28,097 --> 00:03:32,414 यह होना चाहिए की तुलना distinguisher है। और फिर पिछले खंड में हम के बारे में बात 46 00:03:32,414 --> 00:03:36,313 कि मूल रूप से कहना है कि कि WEP, पर हमला करने के लिए इस्तेमाल किया गया से संबंधित कुंजी हमलों 47 00:03:36,313 --> 00:03:41,078 यदि एक कुंजी है कि एक-दूसरे के निकट से संबंधित हैं का उपयोग करता है तो यह वास्तव में संभव है 48 00:03:41,078 --> 00:03:45,732 रूट कुंजी को पुनर्प्राप्त करने के लिए। तो इन कमजोरियों कि RC4 के और, के रूप में जाना जाता है एक 49 00:03:45,732 --> 00:03:50,217 नई प्रणाली वास्तव में नहीं RC4 का उपयोग करें और इसके बजाय का उपयोग करें कि परिणाम, यह सिफारिश की है एक 50 00:03:50,217 --> 00:03:54,421 आधुनिक pseudo-random जनरेटर। ठीक है, दूसरा उदाहरण मैं तुम्हें देने के लिए चाहता है एक 51 00:03:54,421 --> 00:03:59,131 बुरी तरह से टूटे हुए स्ट्रीम सिफर डीवीडी फिल्मों को एन्क्रिप्ट करने के लिए उपयोग किया जाता है। जब आप एक डीवीडी खरीदें 52 00:03:59,131 --> 00:04:03,504 की दुकान में, वास्तविक फिल्म एक स्ट्रीम सिफर बुलाया का उपयोग कर एन्क्रिप्टेड है 53 00:04:03,504 --> 00:04:07,933 सामग्री प्रणाली, सीएसएस पांव मार। सीएसएस एक बुरी तरह से टूटे हुए स्ट्रीम सिफर निकला, 54 00:04:07,933 --> 00:04:12,523 और हम बहुत आसानी से इसे तोड़ कर सकते हैं, और मैं तुम्हें दिखाता कैसे करना चाहते हैं का दौरा एल्गोरिथ्म 55 00:04:12,523 --> 00:04:16,894 काम करता है। हम यह कर रहे हैं ताकि आप एक उदाहरण के एक हमले कलन विधि है, लेकिन में देख सकते हैं 56 00:04:16,894 --> 00:04:21,435 वास्तव में, वहाँ कई प्रणालियों कि मूल रूप से इस हमले decrypt करने के लिए उपयोग कर रहे हैं 57 00:04:21,435 --> 00:04:25,749 एन्क्रिप्टेड डीवीडी। तो सीएसएस स्ट्रीम सिफर है पर कुछ उस हार्डवेयर आधारित 58 00:04:25,749 --> 00:04:30,291 डिजाइनरों की तरह। यह एक हार्डवेयर स्ट्रीम सिफर है कि करने के लिए माना जाता है होना करने के लिए डिज़ाइन किया गया है 59 00:04:30,291 --> 00:04:34,491 हार्डवेयर में लागू करना आसान हो, और एक तंत्र एक रैखिक फोन किया पर आधारित है 60 00:04:34,491 --> 00:04:38,749 आपके सुझाव बदलाव रजिस्टर। तो एक रैखिक प्रतिक्रिया बदलाव रजिस्टर मूल रूप से एक रजिस्टर है 61 00:04:38,749 --> 00:04:43,801 कि जहां प्रत्येक कोशिका एक बिट शामिल कक्षों के होते हैं। तो मूल रूप से 62 00:04:43,801 --> 00:04:49,046 क्या होता है वहाँ कुछ कोशिकाओं, नहीं सभी कोशिकाओं में इन नल कर रहे हैं कुछ 63 00:04:49,046 --> 00:04:54,134 पदों के नल कहा जाता है। और फिर इन नल एक XOR में और फिर पर फ़ीड 64 00:04:54,134 --> 00:04:59,053 हर घड़ी चक्र बदलाव रजिस्टर बाईं ओर पाली। अंतिम बिट से फ़ॉल्स 65 00:04:59,053 --> 00:05:04,345 और फिर पहले थोड़ा इस XOR का परिणाम हो जाता है। तो आप देख सकते हैं कि 66 00:05:04,345 --> 00:05:08,703 इस को लागू करने के लिए, एक बहुत ही सरल तंत्र है और हार्डवेयर में बहुत कम लेता है 67 00:05:08,703 --> 00:05:13,622 ट्रांजिस्टर। बस बदलाव सही, बस बंद पिछले बिट falls और पहले थोड़ा 68 00:05:13,622 --> 00:05:18,541 पिछले बिट्स XOR बन जाता है। तो इस LFSR के लिए बीज 69 00:05:18,541 --> 00:05:23,460 असल में, LFSR की प्रारंभिक अवस्था है। 70 00:05:23,650 --> 00:05:28,538 और यह स्ट्रीम ciphers का एक संख्या के आधार है। तो यहाँ कुछ उदाहरण हैं। तो, के रूप में 71 00:05:28,538 --> 00:05:33,362 मैं ने कहा कि, दो LFSRs डीवीडी एन्क्रिप्शन का उपयोग करता है। मैं तुम्हें दिखाता हूँ कैसे कि बस काम करता है एक 72 00:05:33,362 --> 00:05:38,060 दूसरा। जीएसएम एन्क्रिप्शन, इन एल्गोरिदम A51 और A52 कहा जाता है। और है कि 73 00:05:38,060 --> 00:05:43,456 का उपयोग करता है तीन LFSRs. ब्लूटूथ एन्क्रिप्शन एक कलन विधि कहा जाता है, ई शून्य है। ये सब कर रहे हैं 74 00:05:43,456 --> 00:05:48,534 धारा ciphers, और चला का उपयोग करता है चार LFSRs. है कि इन सब बाहर बुरी तरह से टूट रहे हैं, 75 00:05:48,534 --> 00:05:53,245 और वास्तव में वास्तव में विश्वसनीय यातायात को एन्क्रिप्ट करने के लिए नहीं किया जाना चाहिए, लेकिन वे सभी कर रहे हैं 76 00:05:53,245 --> 00:05:56,705 अब क्या हार्डवेयर परिवर्तन के लिए थोड़ा मुश्किल है, तो यह हार्डवेयर में कार्यान्वित 77 00:05:56,705 --> 00:06:01,047 करता है। लेकिन इन, सीएसएस, सरलतम वास्तव में एक प्यारा पर हमला, तो चलो है 78 00:06:01,047 --> 00:06:05,459 मुझे तुम्हें दिखाता कैसे हमले काम करता है। तो, चलो का वर्णन कैसे सीएसएस वास्तव में काम करता है। तो, 79 00:06:05,459 --> 00:06:11,073 सीएसएस के लिए कुंजी पांच बाइट्स, अर्थात् 40 बिट्स है, पांच बार आठ 40 बिट्स है। इस 80 00:06:11,073 --> 00:06:15,587 डीवीडी एन्क्रिप्शन था कि वे खुद को केवल 40 बिट्स को सीमित करने के लिए था कारण है 81 00:06:15,587 --> 00:06:19,941 एक समय जहां अमेरिकी निर्यात विनियमावली केवल निर्यात के लिए अनुमति में बनाया गया 82 00:06:19,941 --> 00:06:25,086 crpyto एल्गोरिदम जहां केवल 40 बिट्स के लिए महत्वपूर्ण था। तो सीएसएस के डिजाइनर थे 83 00:06:25,086 --> 00:06:30,206 पहले से ही बहुत, बहुत कम की चाबियाँ तक ही सीमित। सिर्फ 40 बिट कुंजी। तो, अपने डिजाइन काम करता है 84 00:06:30,206 --> 00:06:35,398 इस प्रकार। असल में, सीएसएस दो LFSR का उपयोग करता है। एक एक 17-सा LFSR है। दूसरे शब्दों में, 85 00:06:35,398 --> 00:06:40,806 इस रजिस्टर 17 बिट्स होती हैं। और एक अन्य एक 25-बिट LFSR है, 86 00:06:40,806 --> 00:06:46,647 यह थोड़ी देर, 25-सा LFSR है। और जिस तरह से इन LFSRs वरीयता प्राप्त कर रहे हैं 87 00:06:46,647 --> 00:06:51,870 इस प्रकार है। तो कुंजी एन्क्रिप्शन के लिए मूल रूप से दिखता निम्नानुसार। 88 00:06:51,870 --> 00:06:57,669 तुम एक साथ एक शुरुआत है, और आप इसे करने के लिए पहले दो बाइट्स के जोड़ना 89 00:06:57,669 --> 00:07:02,947 कुंजी। और कि LFSR की प्रारंभिक अवस्था है। 90 00:07:02,947 --> 00:07:08,256 और फिर दूसरा LFSR मूल रूप से उसी तरह intitialized है। 91 00:07:08,256 --> 00:07:14,012 एक कुंजी के पिछले तीन बाइट्स concatenated. और है कि 92 00:07:14,012 --> 00:07:19,889 LFSR की प्रारंभिक अवस्था में भरा हुआ है। आप देख सकते हैं कि पहले दो बाइट्स हैं 93 00:07:19,889 --> 00:07:25,411 सोलह बिट्स, प्लस अग्रणी एक, कि सत्रह बिट्स है कुल मिलाकर, जबकि दूसरा 94 00:07:25,411 --> 00:07:31,217 LFSR 24 बिट्स प्लस जो 25 बिट्स है एक है। और तुम नोटिस हम सभी पांच बिट्स का इस्तेमाल किया 95 00:07:31,217 --> 00:07:36,881 कुंजी। तो फिर ये LFSRs मूल रूप से कर रहे हैं आठ चक्र के लिए चला तो वे उत्पन्न 96 00:07:36,881 --> 00:07:42,333 आउटपुट के आठ बिट्स। और फिर वे मूल रूप से करता है इस एडर के माध्यम से जाना 97 00:07:42,333 --> 00:07:48,197 modulo 256 इसके अतिरिक्त है। तो हाँ, यह एक अतिरिक्त बॉक्स, modulo 256 है। वहाँ एक और है 98 00:07:48,197 --> 00:07:54,325 तकनीकी बात है कि होता है। हम वास्तव में वास्तव में-भी जोड़ा से ले जाना है 99 00:07:54,325 --> 00:07:59,723 पिछले ब्लॉक। लेकिन यह इतना महत्वपूर्ण नहीं है। है कि नहीं है एक विस्तार तो 100 00:07:59,723 --> 00:08:04,761 प्रासंगिक। ठीक है, तो हर ब्लॉक, तुम नोटिस हम modulo 256 के अलावा क्या कर रहे हैं और 101 00:08:04,761 --> 00:08:09,982 हम कैर्री की अनदेखी कर रहे हैं, लेकिन कैर्री मूल रूप से एक शून्य या एक से एक के रूप में जोड़ा गया है 102 00:08:09,982 --> 00:08:15,147 अगली ब्लॉक के अलावा। ठीक? और फिर मूल रूप से इस दौर प्रति एक बाइट आउटपुट। 103 00:08:15,147 --> 00:08:20,411 ठीक है, और तब इस बाइट तो है बेशक इस्तेमाल किया, XOR-ed उपयुक्त के साथ 104 00:08:20,411 --> 00:08:25,167 एन्क्रिप्टेड किया जा रहा है फिल्म की बाइट। ठीक है, तो यह एक बहुत ही सरल स्ट्रीम 105 00:08:25,167 --> 00:08:29,986 सिफ़र, यह बहुत कम हार्डवेयर को लागू करने के लिए लेता है। यह चलेगा फास्ट, पर भी बहुत 106 00:08:29,986 --> 00:08:35,830 सस्ते हार्डवेयर और यह सिनेमा एन्क्रिप्ट जाएगा। तोड़ने के लिए आसान है, तो यह यह पता चला है 107 00:08:35,830 --> 00:08:41,222 में मोटे तौर पर दो सत्रह के लिए समय। अब मुझे बताएंगे कि कैसे। 108 00:08:41,222 --> 00:08:45,734 मान लीजिए कि आप फिल्मों को रोकना, हम तो यहाँ है, तो एक 109 00:08:45,734 --> 00:08:50,647 एन्क्रिप्टेड फिल्म decrypt करने के लिए इच्छित। तो चलो कहना है कि यह सब तो एन्क्रिप्टेड 110 00:08:50,647 --> 00:08:55,279 तुम क्या यहाँ से अंदर है पता नहीं है। तथापि, यह इतना कि सिर्फ इसलिए होता 111 00:08:55,279 --> 00:08:59,970 डीवीडी एन्क्रिप्शन एमपीईजी फ़ाइलें उपयोग कर रहा है, यह इतना होता है अगर आप के उपसर्ग का पता 112 00:08:59,970 --> 00:09:04,250 plaintext, चलो बस कहना है शायद यह बीस बाइट्स है। ठीक है, हम जानते हैं यदि आप 113 00:09:04,250 --> 00:09:08,589 XOR इन दोनों चीजें एक साथ हैं, तो दूसरे शब्दों में, आप यहाँ XOR करते हैं, 114 00:09:08,589 --> 00:09:13,523 क्या आप प्राप्त करेंगे PRG के प्रारंभिक खंड है। तो, आप मिल जाएगा 115 00:09:13,523 --> 00:09:18,472 सीएसएस, इस PRG के उत्पादन के उत्पादन की पहली बीस बाइट्स। ठीक है, तो अब 116 00:09:18,472 --> 00:09:23,986 यहाँ है क्या हम जा रहे हैं करने के लिए। तो हम पहली बीस बाइट्स के उत्पादन की है। अब 117 00:09:23,986 --> 00:09:31,405 हम तो निम्न कार्य करें। हम सब दो पहले की सत्रह संभव मूल्यों के लिए प्रयास करें 118 00:09:31,405 --> 00:09:37,088 LFSR. ठीक? तो दो सत्रह संभव मूल्यों के लिए। प्रत्येक मान के लिए इतना तो के लिए 119 00:09:37,088 --> 00:09:42,622 प्रत्येक इन दो की LFSR की सत्रह प्रारंभिक मानों के लिए, हम कर रहे हैं करने वाले चलाने 120 00:09:42,622 --> 00:09:47,953 LFSR के लिए बीस बाइट्स, ठीक है? तो हम इस से outputs के बीस बाइट्स जेनरेट करेंगे 121 00:09:47,953 --> 00:09:53,284 पहली LFSR, संभालने-सत्रह संभव सेटिंग्स को दोनों में से हर एक के लिए। 122 00:09:53,284 --> 00:09:58,615 अब, याद है हम सीएसएस प्रणाली के पूर्ण उत्पादन है। हम तो है हम क्या कर सकते हैं 123 00:09:58,615 --> 00:10:03,814 इस उत्पादन है कि हम ले जा सकते हैं। और यह बीस के काटने से घटाना कि हम 124 00:10:03,814 --> 00:10:08,928 पहली LFSR है, और यदि वास्तव में से पहले की प्रारंभिक राज्य के लिए हमारा अनुमान मिल गया 125 00:10:08,928 --> 00:10:14,042 की पहली बीस-बाइट आउटपुट है क्या हम मिलना चाहिए LFSR सही है, है 126 00:10:14,042 --> 00:10:19,222 दूसरी LFSR. है ना? कारण है कि क्या के उत्पादन में सीएसएस परिभाषा द्वारा 127 00:10:19,222 --> 00:10:24,501 प्रणाली है। अब, यह एक 20-बाइट क्रम में खोज, यह बहुत आसान है कि बाहर जाता है 128 00:10:24,501 --> 00:10:29,763 बताने के लिए कि क्या इस 20-बाइट अनुक्रम से एक 25-बिट LFSR या नहीं आया। यदि यह 129 00:10:29,763 --> 00:10:33,561 नहीं था, तो हम जानते हैं कि हमारा अनुमान है कि 17-बिट LFSR के लिए था 130 00:10:33,561 --> 00:10:37,416 ग़लत और फिर हम अगले अनुमान के लिए 17-बिट LFSR करने के लिए आगे बढ़ने और 131 00:10:37,416 --> 00:10:41,904 अगले और इतने पर लगता है और आगे। अंततः जब तक हम सही प्रारंभिक मारा 132 00:10:41,904 --> 00:10:46,937 राज्य के लिए 17-बिट LFSR, और फिर हम वास्तव में मिल जाएगा है, हम देखेंगे कि 133 00:10:46,937 --> 00:10:51,969 25-बिट LFSR के लिए उत्पादन 20 बाइट्स कि हम उम्मीदवार के रूप में मिलता है 134 00:10:51,969 --> 00:10:56,936 वास्तव में एक संभव के लिए एक 25-बिट LFSR आउटपुट। और फिर, न केवल हम है जाएगा 135 00:10:56,936 --> 00:11:02,164 सही प्रारंभिक राज्य सीखा 17-बिट LFSR के लिए, हम भी करना होगा 136 00:11:02,164 --> 00:11:07,523 सही प्रारंभिक राज्य के 25-बिट LFSR के सीखा है। और फिर हम भविष्यवाणी कर सकते हैं 137 00:11:07,523 --> 00:11:12,796 शेष सीएसएस की, और जाहिर है, कि, हम फिर से बाकी डीक्रिप्ट करें कर सकते हैं का उपयोग करके outputs 138 00:11:12,796 --> 00:11:17,565 फिल्म। हम वास्तव में शेष plaintext पुनर्प्राप्त कर सकते हैं। ठीक. यह है 139 00:11:17,565 --> 00:11:22,335 चीजें हैं जो हम से पहले के बारे में बात की थी। तो, मैं इस ने कहा कि एक छोटे जल्दी, लेकिन उम्मीद है कि, 140 00:11:22,335 --> 00:11:27,331 यह स्पष्ट था। हम भी स्ट्रीम का इस प्रकार पर एक होमवर्क अभ्यास कर रहे हो जा रहे हैं 141 00:11:27,331 --> 00:11:31,444 ciphers और आप की तरह कैसे इन हमले एल्गोरिदम के बिंदु मिल जाएगा 142 00:11:31,444 --> 00:11:36,018 काम करते हैं। और मैं उल्लेख करना चाहिए कि वहाँ कई ओपन सोर्स प्रणालियों रहे हैं अब जब कि वास्तव में 143 00:11:36,018 --> 00:11:41,453 सीएसएस-एन्क्रिप्टेड डेटा decrypt करने के लिए इस विधि का उपयोग करें। ठीक है, तो अब हम है कि दो देखा 144 00:11:41,453 --> 00:11:45,888 कमजोर उदाहरण, बेहतर उदाहरण के लिए, और विशेष रूप से बेहतर पर चलो 145 00:11:45,888 --> 00:11:49,370 pseudo-random जनरेटर जो परियोजना eStream कहा जाता है से आते हैं। यह है एक 146 00:11:49,370 --> 00:11:55,556 कि 2008 में संपन्न हुआ परियोजना है, और वे मूल रूप से पाँच अलग अलग स्ट्रीम अर्हता प्राप्त 147 00:11:55,556 --> 00:12:00,207 ciphers, लेकिन यहां मैं सिर्फ एक ही पेश करना चाहता हूँ। तो के लिए सभी मापदंडों का पहली बार 148 00:12:00,207 --> 00:12:04,029 इन स्ट्रीम ciphers क्या हम करने के लिए इस्तेमाल कर रहे हैं से थोड़ा अलग हैं। तो इन 149 00:12:04,029 --> 00:12:08,340 स्ट्रीम सामान्य रूप में वे एक बीज है ciphers. लेकिन इसके साथ ही वे भी है, क्या है 150 00:12:08,340 --> 00:12:12,821 नामक एक अस्थायी रूप से है और हम देखेंगे क्या के लिए एक अस्थायी रूप से प्रयोग किया जाता है बस एक मिनट में। तो 151 00:12:12,821 --> 00:12:17,487 वे एक बीज और एक अस्थायी रूप से दो जानकारी ले लो। हम देखेंगे क्या अस्थायी रूप से लिए में इस्तेमाल किया है 152 00:12:17,487 --> 00:12:21,274 बस एक दूसरा। और बेशक वे एक बहुत बड़े उत्पादन, यहाँ है तो एन का उत्पादन 153 00:12:21,274 --> 00:12:26,603 बहुत, बहुत, बहुत से बड़ा एस। जब मैं अस्थायी रूप से कहते हैं, अब, मैं क्या मतलब है एक मूल्य है कि 154 00:12:26,603 --> 00:12:31,218 कभी नहीं के रूप में लंबे समय के रूप में कुंजी तय हो गई है दोहराने जा रहा। और मैं कि अधिक में समझाता हूँ 155 00:12:31,218 --> 00:12:35,400 बस एक दूसरे में विस्तार। लेकिन जैसा कि एक अद्वितीय कभी मूल्य अभी के लिए, बस के बारे में सोच 156 00:12:35,400 --> 00:12:40,527 के रूप में लंबे समय के रूप में एक ही चाबी है को दोहराता है। और तो जाहिर है एक बार आप इस PRG है, 157 00:12:40,527 --> 00:12:45,357 तुम एन्क्रिप्ट जाएगा, जैसा कि आप देख, तुम एक स्ट्रीम सिफर सिर्फ पहले के रूप में, अभी के अलावा 158 00:12:45,357 --> 00:12:49,955 PRG लेता है के रूप में इनपुट दोनों कुंजी और अस्थायी रूप से। और अस्थायी रूप से की संपत्ति है 159 00:12:49,955 --> 00:12:56,350 कि जोड़ी, k अल्पविराम r, प्रमुख अल्पविराम का उपनाम, कभी नहीं है, तो-कभी नहीं दोहराता है। यह है 160 00:12:56,350 --> 00:13:03,096 कभी नहीं एक बार से अधिक उपयोग किया। तो लब्बोलुआब यह है कि आप महत्वपूर्ण, पुनः प्रयोग पुनः प्रयोग कर सकते हैं 161 00:13:03,096 --> 00:13:09,710 कुंजी है, क्योंकि कश्मीर और आर केवल अस्थायी रूप से जोड़ी अद्वितीय है, क्योंकि बनाता है 162 00:13:09,710 --> 00:13:16,135 एक बार इस्तेमाल किया है। मैं कहता हूँ वे अद्वितीय हैं। ठीक है, तो यह अस्थायी रूप से गया है की तरह एक प्यारा छल कि 163 00:13:16,135 --> 00:13:21,541 हमें हर बार एक नया कुंजी को हिलाने की परेशानी बचाता है। ठीक है, तो विशेष रूप से 164 00:13:21,541 --> 00:13:26,000 उदाहरण के eStream कि मैं तुम्हें दिखाने के लिए चाहता हूँ से साल्सा बीस कहा जाता है। यह है एक 165 00:13:26,000 --> 00:13:30,292 स्ट्रीम सिफर दोनों implementations के सॉफ्टवेयर और हार्डवेयर के लिए डिज़ाइन की गई है 166 00:13:30,292 --> 00:13:33,385 implementations. यह दिलचस्प की तरह है। तुम्हें पता है कि कुछ स्ट्रीम ciphers कर रहे हैं 167 00:13:33,385 --> 00:13:38,763 RC4 जैसे सॉफ्टवेयर के लिए डिज़ाइन किया गया। सब कुछ वह करता है बनाने के लिए डिज़ाइन किया गया है 168 00:13:38,763 --> 00:13:42,689 जबकि अन्य धारा ciphers के लिए तैयार कर रहे हैं तेजी से, चलाने के सॉफ्टवेयर कार्यान्वयन 169 00:13:42,689 --> 00:13:48,143 हार्डवेयर, सीएसएस, विशेष रूप से हार्डवेयर बनाने के लिए डिज़ाइन किया गया है एक LFSR का उपयोग कर की तरह 170 00:13:48,143 --> 00:13:50,963 implementations बहुत सस्ते। यह भी है, यह है कि इस बारे में अच्छी बात है 171 00:13:50,963 --> 00:13:55,008 इतना है कि यह दोनों यह हार्डवेयर और अपने सॉफ्टवेयर में लागू करने के लिए आसान है डिज़ाइन किया गया 172 00:13:55,008 --> 00:13:59,747 कार्यान्वयन भी बहुत तेज है। तो मुझे समझाने की कैसे साल्सा काम करता है। खैर, साल्सा 173 00:13:59,747 --> 00:14:05,130 या तो 128 या 256 बिट कुंजी हो जाता है। मैं केवल साल्सा के 128-बिट संस्करण समझाता हूँ। 174 00:14:05,130 --> 00:14:11,244 तो यह बीज है। और फिर यह भी एक अस्थायी रूप से, बस से पहले, जो के रूप में लगते हैं 175 00:14:11,244 --> 00:14:15,425 64 बिट्स होना होता है। और फिर इसे एक बड़े आउटपुट उत्पन्न करेंगे। अब, यह कैसे होता है 176 00:14:15,425 --> 00:14:21,060 वास्तव में काम करते हो? खैर, समारोह ही इस प्रकार परिभाषित किया गया है। असल में, को देखते हुए 177 00:14:21,060 --> 00:14:26,378 कुंजी और अस्थायी रूप से, यह एक बहुत लंबा है, ठीक है, एक लंबे समय कूट-यादृच्छिक उत्पन्न करेगा 178 00:14:26,378 --> 00:14:31,222 , आवश्यक के रूप में लंबे समय अनुक्रम। और यह कि मैं द्वारा निरूपित हूँ इस समारोह का उपयोग करके करता हूँ 179 00:14:31,222 --> 00:14:35,653 एच. एच इस फ़ंक्शन तीन आदानों लेता है। मूल रूप से कुंजी। ठीक है, बीज k, 180 00:14:35,653 --> 00:14:40,498 nonce r, और उसके बाद कदम से कदम करने के लिए वेतन वृद्धि एक काउंटर। तो यह हो जाता है 181 00:14:40,498 --> 00:14:45,263 शून्य से एक, दो, तीन, चार के रूप में लंबे समय के रूप में हम [सुनाई] किया जा करने के लिए। ठीक? तो बुनियादी तौर पर, 182 00:14:45,263 --> 00:14:49,956 इस k आर पर इस h का मूल्यांकन द्वारा, लेकिन इस incrementing काउंटर का उपयोग करना, हम प्राप्त कर सकते हैं एक 183 00:14:49,956 --> 00:14:54,882 अनुक्रम कि जैसे हम चाहते हैं लंबी है। तो मैं सभी को यह करना है का वर्णन कैसे यह फ़ंक्शन 184 00:14:54,882 --> 00:14:59,460 एच काम करता है। अब, मुझे कि यहाँ आप के लिए करते हैं। जिस तरह से यह काम करता है इस प्रकार है। खैर, हम 185 00:14:59,460 --> 00:15:04,693 कुछ काफी बड़ी है जो 64 बाइट्स में अमेरिका के विस्तार के द्वारा बंद शुरू 186 00:15:04,693 --> 00:15:10,156 लंबे समय है, और हम कि निम्नानुसार है। मूल रूप से हम एक निरंतर की शुरुआत में इतनी छड़ी 187 00:15:10,156 --> 00:15:15,552 ताओ शून्य है, इन चार बाइट्स कर रहे हैं, यह तो एक चार बाइट स्थिरांक है युक्ति के लिए 188 00:15:15,552 --> 00:15:20,611 साल्सा मूल रूप से आप ताओ शून्य के लिए मान देता। फिर हम कश्मीर डाल जिसमें है 189 00:15:20,611 --> 00:15:25,467 सोलह बाइट्स। तो फिर हम एक और लगातार डाल दिया। फिर, यह चार बाइट्स है। और 190 00:15:25,467 --> 00:15:30,795 निर्दिष्ट करता है जैसा कि मैंने कहा, कल्पना मूलतः क्या लगातार यह तय है जो। फिर हम डाल 191 00:15:30,795 --> 00:15:37,435 अस्थायी रूप से जो आठ बाइट्स है गया। तो हम सूचकांक में डाल दिया। इस काउंटर शून्य है, 192 00:15:37,435 --> 00:15:43,063 एक, दो, तीन, चार, जो एक और आठ बाइट्स है। तो फिर हम एक और लगातार डाल 193 00:15:43,063 --> 00:15:49,056 जो एक और चार बाइट्स है ताऊ दो। हम प्रमुख डाल तो फिर, यह एक और है 194 00:15:49,056 --> 00:15:54,714 सोलह बाइट्स। और फिर अंत में हम तीसरे निरंतर, ताऊ तीन, जो है डाल 195 00:15:54,714 --> 00:15:59,948 एक और चार बाइट्स। ठीक है तो मैं ने कहा, यदि आप इन तक राशि के रूप में, आप देखते हैं कि आप 64 मिल 196 00:15:59,948 --> 00:16:05,249 बाइट्स। तो बुनियादी तौर पर हम कुंजी और अस्थायी रूप से और काउंटर में 64 विस्तार है 197 00:16:05,249 --> 00:16:10,886 बाइट्स। मूल रूप से प्रमुख दोहराया जाता है दो बार मुझे लगता है। और फिर हम क्या हम पर लागू है एक 198 00:16:10,886 --> 00:16:16,321 ताकि हम इस समारोह में, छोटे h लागू समारोह में, मैं इस कार्यात्मक थोड़ा एच. ठीक है, फोन करता हूँ। 199 00:16:16,321 --> 00:16:21,659 और यह एक समारोह है कि एक के लिए एक है तो यह 64 बाइट्स के लिए 64 बाइट्स नक्शे है। यह है एक 200 00:16:21,659 --> 00:16:26,005 पूरी तरह से invertible समारोह, ठीक है? इसलिए इस समारोह एच है, के रूप में मैं कहता हूँ, यह है एक 201 00:16:26,005 --> 00:16:30,260 invertable समारोह। तो इनपुट दिया तुम उत्पादन प्राप्त कर सकते हैं और देखते हुए 202 00:16:30,260 --> 00:16:34,906 आउटपुट तुम वापस इनपुट के लिए जा सकते हैं। और इसे बनाया है विशेष रूप से यह किया है, तो एक - आराम से 203 00:16:34,906 --> 00:16:39,553 हार्डवेयर और बी-किसी x86 पर में लागू करने के लिए, यह बेहद क्योंकि लागू करना आसान है 204 00:16:39,553 --> 00:16:44,199 आप की जरूरत है ऐसा करने के लिए सेट करें जो सभी आपरेशनों का समर्थन करता है इस SSE2 अनुदेश x 86 है 205 00:16:44,199 --> 00:16:48,622 इस समारोह के लिए। यह बहुत, बहुत तेज है। एक परिणाम के रूप में, साल्सा एक बहुत तेजी से धारा है 206 00:16:48,622 --> 00:16:52,764 सायफर। और फिर यह मूल रूप से फिर से है। तो यह इस पर लागू होता है 207 00:16:52,764 --> 00:16:57,744 फ़ंक्शन एच फिर से है और यह एक और 64 बाइट्स हो जाता है। और तो और आगे, मूल रूप से पर 208 00:16:57,744 --> 00:17:05,318 यह इस दस बार करता है। पूरी बात यहाँ, तो कह दोहराता है दस बार, तो ठीक है 209 00:17:05,318 --> 00:17:17,961 मूल रूप से ज दस बार लागू होते हैं। और तब से ही, यह वास्तव में नहीं काफी यादृच्छिक है। 210 00:17:17,961 --> 00:17:22,144 यह है नहीं करने वाले देखो यादृच्छिक क्योंकि एच पूरी तरह से invertable है, जैसे हम ने कहा। तो दी 211 00:17:22,144 --> 00:17:25,521 इस अंतिम उत्पादन, यह बहुत आसान है बस एच पलटना और फिर मूल के लिए वापस जाने के लिए है 212 00:17:25,521 --> 00:17:31,831 आदानों और फिर परीक्षण है कि इनपुट सही संरचना है। तो तुम एक और क्या 213 00:17:31,831 --> 00:17:36,979 बात है, जो मूल रूप से XOR करने के लिए जानकारी और अंतिम outputs है। वास्तव में, 214 00:17:36,979 --> 00:17:42,405 क्षमा करें. यह एक XOR नहीं है। यह वास्तव में एक अतिरिक्त है। तो तुम एक अतिरिक्त शब्द क्या किया 215 00:17:42,405 --> 00:17:47,762 शब्द। ताकि आप चार बाइट्स में एक शब्द शब्द से इसके अलावा वहाँ रहे हैं अगर 64 बाइट्स, एक 216 00:17:47,762 --> 00:17:52,980 समय, और अंत में आप 64-बाइट आउटपुट मिल, और यह बात है। कि पूरे है 217 00:17:52,980 --> 00:17:57,175 pseudo-random जनरेटर। कि इतना, कि पूरे समारोह, थोड़ा h है। और मैं के रूप में 218 00:17:57,175 --> 00:18:01,758 समझाया, इस पूरे निर्माण यहाँ समारोह है बड़ी एच. और तब आप का मूल्यांकन 219 00:18:01,758 --> 00:18:06,009 काउंटर incrementing द्वारा बड़ी एच मैं शून्य, एक, दो, तीन से बाद। और है कि 220 00:18:06,009 --> 00:18:10,408 तुम एक pseudo-random दृश्य है कि लंबे समय के रूप के रूप में आप इसे होने की जरूरत है दे देंगे। और 221 00:18:10,408 --> 00:18:15,325 असल में, वहाँ इस पर कोई signifigant हमले कर रहे हैं। यह सुरक्षा है कि 222 00:18:15,325 --> 00:18:20,371 बहुत करीब दो 128 के लिए। हम देखेंगे क्या इसका मतलब है कि और अधिक ठीक पर बाद में। 223 00:18:20,371 --> 00:18:25,417 यह एक बहुत तेजी से स्ट्रीम बीजलेख, दोनों हार्डवेयर और सॉफ्टवेयर में है। और, के रूप में दूर के रूप में 224 00:18:25,417 --> 00:18:30,431 हम बता सकते हैं, यह एक स्ट्रीम सिफर के लिए आवश्यक के रूप में अप्रत्याशित हो सकता है लगता है। तो मैं 225 00:18:30,431 --> 00:18:34,797 है कि eStream परियोजना वास्तव में पांच धारा ciphers की तरह कहना चाहिए 226 00:18:34,797 --> 00:18:39,395 यह। क्योंकि मुझे लगता है कि यह सबसे अधिक सुरुचिपूर्ण है मैं केवल साल्सा का फैसला किया। लेकिन मैं तुम्हें दे सकते हैं 227 00:18:39,395 --> 00:18:44,053 कुछ प्रदर्शन यहाँ संख्या। तो आप देख सकते हैं, ये प्रदर्शन नंबर पर हैं एक 228 00:18:44,053 --> 00:18:48,768 2.2 gigahertz, तुम्हें पता है, x 86 मशीन लिखें। और आप देख सकते हैं कि RC4 वास्तव में है 229 00:18:48,768 --> 00:18:53,017 सबसे धीमी। क्योंकि अनिवार्य रूप से, अच्छी तरह से यह सचमुच का लाभ ले करता है 230 00:18:53,017 --> 00:18:57,475 हार्डवेयर। यह केवल बाइट संचालन करता है। और तो बर्बाद चक्र का एक बहुत वहाँ है कि 231 00:18:57,475 --> 00:19:01,182 इस्तेमाल किया जा रहा नहीं कर रहे हैं। E-स्ट्रीम उम्मीदवारों, दोनों साल्सा और अन्य लेकिन 232 00:19:01,182 --> 00:19:05,202 उम्मीदवार Sosemanuk बुलाया। मैं कहना है कि इन eStream फाइनल कर रहे हैं चाहिए। इन कर रहे हैं 233 00:19:05,202 --> 00:19:09,588 वास्तव में धारा ciphers कि eStream परियोजना द्वारा अनुमोदित कर रहे हैं। आप देख सकते हैं कि 234 00:19:09,588 --> 00:19:13,712 वे एक महत्वपूर्ण दर हासिल किया है। इस 643 मेगाबाइट प्रति सेकंड इस पर है 235 00:19:13,712 --> 00:19:18,150 वास्तुकला, एक फिल्म और इन के लिए पर्याप्त से अधिक वास्तव में काफी प्रभावशाली हैं 236 00:19:18,150 --> 00:19:22,432 दरों। और तुम तो अब दो पुराने स्ट्रीम ciphers कि नहीं होना चाहिए के उदाहरण देखा है 237 00:19:22,432 --> 00:19:26,661 , उन स्ट्रीम ciphers पर हमले सहित करते थे। तुम्हें देखा है क्या आधुनिक स्ट्रीम ciphers 238 00:19:26,661 --> 00:19:30,480 की तरह के साथ इस अस्थायी रूप से देखो। और आप के लिए इन प्रदर्शन संख्या देखना 239 00:19:30,480 --> 00:19:34,546 तो तुम एक के इस्तेमाल कर सकते हैं अगर आप की जरूरत है एक स्ट्रीम सिफर आधुनिक स्ट्रीम ciphers 240 00:19:34,546 --> 00:19:37,991 eStream फाइनल। विशेष रूप से आप साल्सा की तरह कुछ का उपयोग कर सकते।