WEBVTT 00:00:00.000 --> 00:00:04.010 इस खंड में, मैं व्यवहार में उपयोग किए जाने वाले स्ट्रीम ciphers के कुछ उदाहरण देना चाहता हूँ। 00:00:04.010 --> 00:00:07.072 मैं दो पुराने उदाहरण कि वास्तव में नहीं कर रहे हैं के साथ शुरू कर रहा हूँ वाला 00:00:07.072 --> 00:00:11.017 नई प्रणालियों में इस्तेमाल किया जा माना जाता। लेकिन फिर भी, वे अभी भी काफी रहे हैं 00:00:11.017 --> 00:00:14.164 व्यापक रूप से प्रयोग किया जाता है, और इसलिए मैं सिर्फ इतना है कि आप के साथ परिचित हैं नाम का उल्लेख करना चाहते हैं 00:00:14.164 --> 00:00:19.087 इन अवधारणाओं। पहली धारा सांकेतिक शब्दों मैं बारे में बात करना चाहता हूँ RC4 डिज़ाइन किया, कहा जाता है 00:00:19.087 --> 00:00:23.429 वापस 1987 में। और मैं हूँ केवल देने वाला आप इसे, उच्च स्तरीय वर्णन और फिर 00:00:23.429 --> 00:00:27.818 हम RC4 के कुछ कमजोरियों के बारे में बात करेंगे और इसे उस पर छोड़ दें। तो RC4 लेता है एक 00:00:27.818 --> 00:00:32.702 चर आकार बीज, यहाँ मैं बस एक उदाहरण के रूप में जहां यह 128 करेगी दिया 00:00:32.702 --> 00:00:36.980 बिट्स बीज आकार है, जो तब स्ट्रीम सिफर के लिए महत्वपूर्ण के रूप में इस्तेमाल किया जाएगा के रूप में। 00:00:36.980 --> 00:00:41.738 पहली बात यह है, यह 2048 टुकड़ों में, 128-बिट गुप्त कुंजी फैलता है जो 00:00:41.738 --> 00:00:46.382 कर रहे हैं के रूप में आंतरिक राज्य जनरेटर के लिए इस्तेमाल किया जा करने वाले। और फिर, एक बार यह किया जाता है 00:00:46.382 --> 00:00:51.197 इस विस्तार, यह मूल रूप से एक बहुत ही सरल पाश कार्यान्वित जहां के हर चलना 00:00:51.197 --> 00:00:55.898 इस लूप उत्पादन का एक बाइट outputs. इसलिए, अनिवार्य रूप से, आप के लिए चलाने के जनक कर सकते हैं 00:00:55.898 --> 00:01:00.653 जब तक आप चाहते हैं, और एक ही समय में एक बाइट उत्पन्न। अब RC4 वास्तव में, है जैसा कि मैंने कहा, 00:01:00.653 --> 00:01:05.205 काफी लोकप्रिय। यह HTTPS प्रोटोकॉल में काफी आमतौर पर वास्तव में किया है। 00:01:05.205 --> 00:01:11.888 इन दिनों, उदाहरण के लिए, गूगल में इसकी HTTPS RC4 उपयोग। यह भी रूप में हम WEP में प्रयुक्त है 00:01:11.888 --> 00:01:15.686 अंतिम खंड में, लेकिन ज़ाहिर है WEP में चर्चा की, यह ग़लत तरीके से प्रयोग किया जाता है और 00:01:15.686 --> 00:01:18.861 यह जिस तरह से यह WEP के अंदर इस्तेमाल किया है पूरी तरह से असुरक्षित है। इतना पिछले कुछ वर्षों में, 00:01:18.861 --> 00:01:23.886 कुछ कमजोरियों RC4 में पाया गया है, और एक परिणाम के रूप में, यह अनुशंसित है कि नई परियोजनाओं 00:01:23.886 --> 00:01:28.793 वास्तव में RC4 का उपयोग नहीं, लेकिन बजाय एक और अधिक आधुनिक pseudo-random जनरेटर के रूप में हम करेंगे का उपयोग करें 00:01:28.793 --> 00:01:34.059 खंड के अंत की ओर चर्चा। तो मुझे सिर्फ दो कमजोरियों का उल्लेख। 00:01:34.059 --> 00:01:39.561 तो पहले से एक है, यदि आप पर दूसरी बाइट देखो यह मूल रूप से, की तरह अजीब है 00:01:39.561 --> 00:01:44.630 RC4 के उत्पादन की। यह दूसरा बाहर मुड़ता है बाइट थोड़ा पक्षपाती है। यदि RC4 था 00:01:44.630 --> 00:01:49.780 पूरी तरह से यादृच्छिक, संभावना है कि दूसरी बाइट शून्य के बराबर होना होता है 00:01:49.780 --> 00:01:54.744 ठीक से एक से अधिक 256 होगा। 256 संभव बाइट्स, संभावना है कि 00:01:54.744 --> 00:01:59.646 यह शून्य के एक से अधिक 256 होना चाहिए। यह इसलिए होता है कि के लिए RC4 संभाव्यता 00:01:59.646 --> 00:02:04.486 असल में दो 256, जिसका अर्थ है कि यदि आप RC4 आउटपुट को एन्क्रिप्ट करने के लिए उपयोग पर एक 00:02:04.486 --> 00:02:09.574 संदेश दूसरी बाइट बिल्कुल एन्क्रिप्ट नहीं किए जाने की संभावना है। दूसरे शब्दों में यह हूँ 00:02:09.574 --> 00:02:14.575 XOR-एड दो बार संभावना है कि यह माना जाता है के साथ शून्य के साथ हो। 00:02:14.575 --> 00:02:19.436 तो दो 256, 256 से अधिक एक के स्थान पर। और जिस तरह से मुझे कहना चाहिए कि है 00:02:19.436 --> 00:02:22.849 दूसरी बाइट के बारे में विशेष कुछ नहीं है। यह पहली और तीसरी बाइट्स बाहर हो जाता है 00:02:22.849 --> 00:02:27.818 भी उपलब्ध हैं। और यदि आप कर रहे हैं यह अब कि अनुशंसित है वास्तव में RC4 का उपयोग करने वाले, 00:02:27.818 --> 00:02:32.800 तुम क्या करना चाहिए है मूल रूप से पहले 256 बाइट्स और सिर्फ उत्पादन पर ध्यान न दें 00:02:32.800 --> 00:02:37.246 उत्पादन के जनक बाइट 257 से शुरू करने का उपयोग शुरू करते हैं। पहली जोड़ी 00:02:37.246 --> 00:02:41.241 हो पक्षपातपूर्ण से बाहर कर दिया बाइट्स की, तो आप सिर्फ उन्हें अनदेखा। दूसरा कि हमला 00:02:41.241 --> 00:02:48.482 कि यदि आप एक बहुत ही लंबी पर देखो वास्तव में यह इतना होता RC4 के आउटपुट है की खोज की थी 00:02:48.482 --> 00:02:53.863 आप अनुक्रम 00 मिलने की अधिक संभावना हो कि। दूसरे शब्दों में, आप और अधिक कर रहे हैं 00:02:53.863 --> 00:02:58.970 सोलह बिट्स, हो जाने की संभावना दो बाइट्स शून्य, शून्य, से तुम चाहिए। फिर से, यदि RC4 00:02:58.970 --> 00:03:03.948 पूरी तरह से यादृच्छिक था संभावना शून्य देखने का, शून्य बिल्कुल 1/256 होगा 00:03:03.948 --> 00:03:08.556 चुकता। यह पता चला है RC4 थोड़ा पक्षपाती है और 1/256 cubed पूर्वाग्रह है। यह 00:03:08.556 --> 00:03:13.718 डेटा के कई गीगाबाइट द्वारा उत्पादित कर रहे हैं के बाद इस पूर्वाग्रह बाहर हो जाता है वास्तव में शुरू होता है 00:03:13.718 --> 00:03:18.634 RC4. लेकिन फिर भी, यह कुछ ऐसा है जो जनरेटर की भविष्यवाणी के लिए इस्तेमाल किया जा सकता है 00:03:18.634 --> 00:03:23.120 और निश्चित रूप से यह जनरेटर के उत्पादन में अंतर करने के लिए इस्तेमाल किया जा सकता 00:03:23.120 --> 00:03:28.097 एक सच में यादृच्छिक अनुक्रम से। मूल रूप से तथ्य यह है, कि शून्य शून्य अधिक बार प्रकट 00:03:28.097 --> 00:03:32.414 यह होना चाहिए की तुलना distinguisher है। और फिर पिछले खंड में हम के बारे में बात 00:03:32.414 --> 00:03:36.313 कि मूल रूप से कहना है कि कि WEP, पर हमला करने के लिए इस्तेमाल किया गया से संबंधित कुंजी हमलों 00:03:36.313 --> 00:03:41.078 यदि एक कुंजी है कि एक-दूसरे के निकट से संबंधित हैं का उपयोग करता है तो यह वास्तव में संभव है 00:03:41.078 --> 00:03:45.732 रूट कुंजी को पुनर्प्राप्त करने के लिए। तो इन कमजोरियों कि RC4 के और, के रूप में जाना जाता है एक 00:03:45.732 --> 00:03:50.217 नई प्रणाली वास्तव में नहीं RC4 का उपयोग करें और इसके बजाय का उपयोग करें कि परिणाम, यह सिफारिश की है एक 00:03:50.217 --> 00:03:54.421 आधुनिक pseudo-random जनरेटर। ठीक है, दूसरा उदाहरण मैं तुम्हें देने के लिए चाहता है एक 00:03:54.421 --> 00:03:59.131 बुरी तरह से टूटे हुए स्ट्रीम सिफर डीवीडी फिल्मों को एन्क्रिप्ट करने के लिए उपयोग किया जाता है। जब आप एक डीवीडी खरीदें 00:03:59.131 --> 00:04:03.504 की दुकान में, वास्तविक फिल्म एक स्ट्रीम सिफर बुलाया का उपयोग कर एन्क्रिप्टेड है 00:04:03.504 --> 00:04:07.933 सामग्री प्रणाली, सीएसएस पांव मार। सीएसएस एक बुरी तरह से टूटे हुए स्ट्रीम सिफर निकला, 00:04:07.933 --> 00:04:12.523 और हम बहुत आसानी से इसे तोड़ कर सकते हैं, और मैं तुम्हें दिखाता कैसे करना चाहते हैं का दौरा एल्गोरिथ्म 00:04:12.523 --> 00:04:16.894 काम करता है। हम यह कर रहे हैं ताकि आप एक उदाहरण के एक हमले कलन विधि है, लेकिन में देख सकते हैं 00:04:16.894 --> 00:04:21.435 वास्तव में, वहाँ कई प्रणालियों कि मूल रूप से इस हमले decrypt करने के लिए उपयोग कर रहे हैं 00:04:21.435 --> 00:04:25.749 एन्क्रिप्टेड डीवीडी। तो सीएसएस स्ट्रीम सिफर है पर कुछ उस हार्डवेयर आधारित 00:04:25.749 --> 00:04:30.291 डिजाइनरों की तरह। यह एक हार्डवेयर स्ट्रीम सिफर है कि करने के लिए माना जाता है होना करने के लिए डिज़ाइन किया गया है 00:04:30.291 --> 00:04:34.491 हार्डवेयर में लागू करना आसान हो, और एक तंत्र एक रैखिक फोन किया पर आधारित है 00:04:34.491 --> 00:04:38.749 आपके सुझाव बदलाव रजिस्टर। तो एक रैखिक प्रतिक्रिया बदलाव रजिस्टर मूल रूप से एक रजिस्टर है 00:04:38.749 --> 00:04:43.801 कि जहां प्रत्येक कोशिका एक बिट शामिल कक्षों के होते हैं। तो मूल रूप से 00:04:43.801 --> 00:04:49.046 क्या होता है वहाँ कुछ कोशिकाओं, नहीं सभी कोशिकाओं में इन नल कर रहे हैं कुछ 00:04:49.046 --> 00:04:54.134 पदों के नल कहा जाता है। और फिर इन नल एक XOR में और फिर पर फ़ीड 00:04:54.134 --> 00:04:59.053 हर घड़ी चक्र बदलाव रजिस्टर बाईं ओर पाली। अंतिम बिट से फ़ॉल्स 00:04:59.053 --> 00:05:04.345 और फिर पहले थोड़ा इस XOR का परिणाम हो जाता है। तो आप देख सकते हैं कि 00:05:04.345 --> 00:05:08.703 इस को लागू करने के लिए, एक बहुत ही सरल तंत्र है और हार्डवेयर में बहुत कम लेता है 00:05:08.703 --> 00:05:13.622 ट्रांजिस्टर। बस बदलाव सही, बस बंद पिछले बिट falls और पहले थोड़ा 00:05:13.622 --> 00:05:18.541 पिछले बिट्स XOR बन जाता है। तो इस LFSR के लिए बीज 00:05:18.541 --> 00:05:23.460 असल में, LFSR की प्रारंभिक अवस्था है। 00:05:23.650 --> 00:05:28.538 और यह स्ट्रीम ciphers का एक संख्या के आधार है। तो यहाँ कुछ उदाहरण हैं। तो, के रूप में 00:05:28.538 --> 00:05:33.362 मैं ने कहा कि, दो LFSRs डीवीडी एन्क्रिप्शन का उपयोग करता है। मैं तुम्हें दिखाता हूँ कैसे कि बस काम करता है एक 00:05:33.362 --> 00:05:38.060 दूसरा। जीएसएम एन्क्रिप्शन, इन एल्गोरिदम A51 और A52 कहा जाता है। और है कि 00:05:38.060 --> 00:05:43.456 का उपयोग करता है तीन LFSRs. ब्लूटूथ एन्क्रिप्शन एक कलन विधि कहा जाता है, ई शून्य है। ये सब कर रहे हैं 00:05:43.456 --> 00:05:48.534 धारा ciphers, और चला का उपयोग करता है चार LFSRs. है कि इन सब बाहर बुरी तरह से टूट रहे हैं, 00:05:48.534 --> 00:05:53.245 और वास्तव में वास्तव में विश्वसनीय यातायात को एन्क्रिप्ट करने के लिए नहीं किया जाना चाहिए, लेकिन वे सभी कर रहे हैं 00:05:53.245 --> 00:05:56.705 अब क्या हार्डवेयर परिवर्तन के लिए थोड़ा मुश्किल है, तो यह हार्डवेयर में कार्यान्वित 00:05:56.705 --> 00:06:01.047 करता है। लेकिन इन, सीएसएस, सरलतम वास्तव में एक प्यारा पर हमला, तो चलो है 00:06:01.047 --> 00:06:05.459 मुझे तुम्हें दिखाता कैसे हमले काम करता है। तो, चलो का वर्णन कैसे सीएसएस वास्तव में काम करता है। तो, 00:06:05.459 --> 00:06:11.073 सीएसएस के लिए कुंजी पांच बाइट्स, अर्थात् 40 बिट्स है, पांच बार आठ 40 बिट्स है। इस 00:06:11.073 --> 00:06:15.587 डीवीडी एन्क्रिप्शन था कि वे खुद को केवल 40 बिट्स को सीमित करने के लिए था कारण है 00:06:15.587 --> 00:06:19.941 एक समय जहां अमेरिकी निर्यात विनियमावली केवल निर्यात के लिए अनुमति में बनाया गया 00:06:19.941 --> 00:06:25.086 crpyto एल्गोरिदम जहां केवल 40 बिट्स के लिए महत्वपूर्ण था। तो सीएसएस के डिजाइनर थे 00:06:25.086 --> 00:06:30.206 पहले से ही बहुत, बहुत कम की चाबियाँ तक ही सीमित। सिर्फ 40 बिट कुंजी। तो, अपने डिजाइन काम करता है 00:06:30.206 --> 00:06:35.398 इस प्रकार। असल में, सीएसएस दो LFSR का उपयोग करता है। एक एक 17-सा LFSR है। दूसरे शब्दों में, 00:06:35.398 --> 00:06:40.806 इस रजिस्टर 17 बिट्स होती हैं। और एक अन्य एक 25-बिट LFSR है, 00:06:40.806 --> 00:06:46.647 यह थोड़ी देर, 25-सा LFSR है। और जिस तरह से इन LFSRs वरीयता प्राप्त कर रहे हैं 00:06:46.647 --> 00:06:51.870 इस प्रकार है। तो कुंजी एन्क्रिप्शन के लिए मूल रूप से दिखता निम्नानुसार। 00:06:51.870 --> 00:06:57.669 तुम एक साथ एक शुरुआत है, और आप इसे करने के लिए पहले दो बाइट्स के जोड़ना 00:06:57.669 --> 00:07:02.947 कुंजी। और कि LFSR की प्रारंभिक अवस्था है। 00:07:02.947 --> 00:07:08.256 और फिर दूसरा LFSR मूल रूप से उसी तरह intitialized है। 00:07:08.256 --> 00:07:14.012 एक कुंजी के पिछले तीन बाइट्स concatenated. और है कि 00:07:14.012 --> 00:07:19.889 LFSR की प्रारंभिक अवस्था में भरा हुआ है। आप देख सकते हैं कि पहले दो बाइट्स हैं 00:07:19.889 --> 00:07:25.411 सोलह बिट्स, प्लस अग्रणी एक, कि सत्रह बिट्स है कुल मिलाकर, जबकि दूसरा 00:07:25.411 --> 00:07:31.217 LFSR 24 बिट्स प्लस जो 25 बिट्स है एक है। और तुम नोटिस हम सभी पांच बिट्स का इस्तेमाल किया 00:07:31.217 --> 00:07:36.881 कुंजी। तो फिर ये LFSRs मूल रूप से कर रहे हैं आठ चक्र के लिए चला तो वे उत्पन्न 00:07:36.881 --> 00:07:42.333 आउटपुट के आठ बिट्स। और फिर वे मूल रूप से करता है इस एडर के माध्यम से जाना 00:07:42.333 --> 00:07:48.197 modulo 256 इसके अतिरिक्त है। तो हाँ, यह एक अतिरिक्त बॉक्स, modulo 256 है। वहाँ एक और है 00:07:48.197 --> 00:07:54.325 तकनीकी बात है कि होता है। हम वास्तव में वास्तव में-भी जोड़ा से ले जाना है 00:07:54.325 --> 00:07:59.723 पिछले ब्लॉक। लेकिन यह इतना महत्वपूर्ण नहीं है। है कि नहीं है एक विस्तार तो 00:07:59.723 --> 00:08:04.761 प्रासंगिक। ठीक है, तो हर ब्लॉक, तुम नोटिस हम modulo 256 के अलावा क्या कर रहे हैं और 00:08:04.761 --> 00:08:09.982 हम कैर्री की अनदेखी कर रहे हैं, लेकिन कैर्री मूल रूप से एक शून्य या एक से एक के रूप में जोड़ा गया है 00:08:09.982 --> 00:08:15.147 अगली ब्लॉक के अलावा। ठीक? और फिर मूल रूप से इस दौर प्रति एक बाइट आउटपुट। 00:08:15.147 --> 00:08:20.411 ठीक है, और तब इस बाइट तो है बेशक इस्तेमाल किया, XOR-ed उपयुक्त के साथ 00:08:20.411 --> 00:08:25.167 एन्क्रिप्टेड किया जा रहा है फिल्म की बाइट। ठीक है, तो यह एक बहुत ही सरल स्ट्रीम 00:08:25.167 --> 00:08:29.986 सिफ़र, यह बहुत कम हार्डवेयर को लागू करने के लिए लेता है। यह चलेगा फास्ट, पर भी बहुत 00:08:29.986 --> 00:08:35.830 सस्ते हार्डवेयर और यह सिनेमा एन्क्रिप्ट जाएगा। तोड़ने के लिए आसान है, तो यह यह पता चला है 00:08:35.830 --> 00:08:41.222 में मोटे तौर पर दो सत्रह के लिए समय। अब मुझे बताएंगे कि कैसे। 00:08:41.222 --> 00:08:45.734 मान लीजिए कि आप फिल्मों को रोकना, हम तो यहाँ है, तो एक 00:08:45.734 --> 00:08:50.647 एन्क्रिप्टेड फिल्म decrypt करने के लिए इच्छित। तो चलो कहना है कि यह सब तो एन्क्रिप्टेड 00:08:50.647 --> 00:08:55.279 तुम क्या यहाँ से अंदर है पता नहीं है। तथापि, यह इतना कि सिर्फ इसलिए होता 00:08:55.279 --> 00:08:59.970 डीवीडी एन्क्रिप्शन एमपीईजी फ़ाइलें उपयोग कर रहा है, यह इतना होता है अगर आप के उपसर्ग का पता 00:08:59.970 --> 00:09:04.250 plaintext, चलो बस कहना है शायद यह बीस बाइट्स है। ठीक है, हम जानते हैं यदि आप 00:09:04.250 --> 00:09:08.589 XOR इन दोनों चीजें एक साथ हैं, तो दूसरे शब्दों में, आप यहाँ XOR करते हैं, 00:09:08.589 --> 00:09:13.523 क्या आप प्राप्त करेंगे PRG के प्रारंभिक खंड है। तो, आप मिल जाएगा 00:09:13.523 --> 00:09:18.472 सीएसएस, इस PRG के उत्पादन के उत्पादन की पहली बीस बाइट्स। ठीक है, तो अब 00:09:18.472 --> 00:09:23.986 यहाँ है क्या हम जा रहे हैं करने के लिए। तो हम पहली बीस बाइट्स के उत्पादन की है। अब 00:09:23.986 --> 00:09:31.405 हम तो निम्न कार्य करें। हम सब दो पहले की सत्रह संभव मूल्यों के लिए प्रयास करें 00:09:31.405 --> 00:09:37.088 LFSR. ठीक? तो दो सत्रह संभव मूल्यों के लिए। प्रत्येक मान के लिए इतना तो के लिए 00:09:37.088 --> 00:09:42.622 प्रत्येक इन दो की LFSR की सत्रह प्रारंभिक मानों के लिए, हम कर रहे हैं करने वाले चलाने 00:09:42.622 --> 00:09:47.953 LFSR के लिए बीस बाइट्स, ठीक है? तो हम इस से outputs के बीस बाइट्स जेनरेट करेंगे 00:09:47.953 --> 00:09:53.284 पहली LFSR, संभालने-सत्रह संभव सेटिंग्स को दोनों में से हर एक के लिए। 00:09:53.284 --> 00:09:58.615 अब, याद है हम सीएसएस प्रणाली के पूर्ण उत्पादन है। हम तो है हम क्या कर सकते हैं 00:09:58.615 --> 00:10:03.814 इस उत्पादन है कि हम ले जा सकते हैं। और यह बीस के काटने से घटाना कि हम 00:10:03.814 --> 00:10:08.928 पहली LFSR है, और यदि वास्तव में से पहले की प्रारंभिक राज्य के लिए हमारा अनुमान मिल गया 00:10:08.928 --> 00:10:14.042 की पहली बीस-बाइट आउटपुट है क्या हम मिलना चाहिए LFSR सही है, है 00:10:14.042 --> 00:10:19.222 दूसरी LFSR. है ना? कारण है कि क्या के उत्पादन में सीएसएस परिभाषा द्वारा 00:10:19.222 --> 00:10:24.501 प्रणाली है। अब, यह एक 20-बाइट क्रम में खोज, यह बहुत आसान है कि बाहर जाता है 00:10:24.501 --> 00:10:29.763 बताने के लिए कि क्या इस 20-बाइट अनुक्रम से एक 25-बिट LFSR या नहीं आया। यदि यह 00:10:29.763 --> 00:10:33.561 नहीं था, तो हम जानते हैं कि हमारा अनुमान है कि 17-बिट LFSR के लिए था 00:10:33.561 --> 00:10:37.416 ग़लत और फिर हम अगले अनुमान के लिए 17-बिट LFSR करने के लिए आगे बढ़ने और 00:10:37.416 --> 00:10:41.904 अगले और इतने पर लगता है और आगे। अंततः जब तक हम सही प्रारंभिक मारा 00:10:41.904 --> 00:10:46.937 राज्य के लिए 17-बिट LFSR, और फिर हम वास्तव में मिल जाएगा है, हम देखेंगे कि 00:10:46.937 --> 00:10:51.969 25-बिट LFSR के लिए उत्पादन 20 बाइट्स कि हम उम्मीदवार के रूप में मिलता है 00:10:51.969 --> 00:10:56.936 वास्तव में एक संभव के लिए एक 25-बिट LFSR आउटपुट। और फिर, न केवल हम है जाएगा 00:10:56.936 --> 00:11:02.164 सही प्रारंभिक राज्य सीखा 17-बिट LFSR के लिए, हम भी करना होगा 00:11:02.164 --> 00:11:07.523 सही प्रारंभिक राज्य के 25-बिट LFSR के सीखा है। और फिर हम भविष्यवाणी कर सकते हैं 00:11:07.523 --> 00:11:12.796 शेष सीएसएस की, और जाहिर है, कि, हम फिर से बाकी डीक्रिप्ट करें कर सकते हैं का उपयोग करके outputs 00:11:12.796 --> 00:11:17.565 फिल्म। हम वास्तव में शेष plaintext पुनर्प्राप्त कर सकते हैं। ठीक. यह है 00:11:17.565 --> 00:11:22.335 चीजें हैं जो हम से पहले के बारे में बात की थी। तो, मैं इस ने कहा कि एक छोटे जल्दी, लेकिन उम्मीद है कि, 00:11:22.335 --> 00:11:27.331 यह स्पष्ट था। हम भी स्ट्रीम का इस प्रकार पर एक होमवर्क अभ्यास कर रहे हो जा रहे हैं 00:11:27.331 --> 00:11:31.444 ciphers और आप की तरह कैसे इन हमले एल्गोरिदम के बिंदु मिल जाएगा 00:11:31.444 --> 00:11:36.018 काम करते हैं। और मैं उल्लेख करना चाहिए कि वहाँ कई ओपन सोर्स प्रणालियों रहे हैं अब जब कि वास्तव में 00:11:36.018 --> 00:11:41.453 सीएसएस-एन्क्रिप्टेड डेटा decrypt करने के लिए इस विधि का उपयोग करें। ठीक है, तो अब हम है कि दो देखा 00:11:41.453 --> 00:11:45.888 कमजोर उदाहरण, बेहतर उदाहरण के लिए, और विशेष रूप से बेहतर पर चलो 00:11:45.888 --> 00:11:49.370 pseudo-random जनरेटर जो परियोजना eStream कहा जाता है से आते हैं। यह है एक 00:11:49.370 --> 00:11:55.556 कि 2008 में संपन्न हुआ परियोजना है, और वे मूल रूप से पाँच अलग अलग स्ट्रीम अर्हता प्राप्त 00:11:55.556 --> 00:12:00.207 ciphers, लेकिन यहां मैं सिर्फ एक ही पेश करना चाहता हूँ। तो के लिए सभी मापदंडों का पहली बार 00:12:00.207 --> 00:12:04.029 इन स्ट्रीम ciphers क्या हम करने के लिए इस्तेमाल कर रहे हैं से थोड़ा अलग हैं। तो इन 00:12:04.029 --> 00:12:08.340 स्ट्रीम सामान्य रूप में वे एक बीज है ciphers. लेकिन इसके साथ ही वे भी है, क्या है 00:12:08.340 --> 00:12:12.821 नामक एक अस्थायी रूप से है और हम देखेंगे क्या के लिए एक अस्थायी रूप से प्रयोग किया जाता है बस एक मिनट में। तो 00:12:12.821 --> 00:12:17.487 वे एक बीज और एक अस्थायी रूप से दो जानकारी ले लो। हम देखेंगे क्या अस्थायी रूप से लिए में इस्तेमाल किया है 00:12:17.487 --> 00:12:21.274 बस एक दूसरा। और बेशक वे एक बहुत बड़े उत्पादन, यहाँ है तो एन का उत्पादन 00:12:21.274 --> 00:12:26.603 बहुत, बहुत, बहुत से बड़ा एस। जब मैं अस्थायी रूप से कहते हैं, अब, मैं क्या मतलब है एक मूल्य है कि 00:12:26.603 --> 00:12:31.218 कभी नहीं के रूप में लंबे समय के रूप में कुंजी तय हो गई है दोहराने जा रहा। और मैं कि अधिक में समझाता हूँ 00:12:31.218 --> 00:12:35.400 बस एक दूसरे में विस्तार। लेकिन जैसा कि एक अद्वितीय कभी मूल्य अभी के लिए, बस के बारे में सोच 00:12:35.400 --> 00:12:40.527 के रूप में लंबे समय के रूप में एक ही चाबी है को दोहराता है। और तो जाहिर है एक बार आप इस PRG है, 00:12:40.527 --> 00:12:45.357 तुम एन्क्रिप्ट जाएगा, जैसा कि आप देख, तुम एक स्ट्रीम सिफर सिर्फ पहले के रूप में, अभी के अलावा 00:12:45.357 --> 00:12:49.955 PRG लेता है के रूप में इनपुट दोनों कुंजी और अस्थायी रूप से। और अस्थायी रूप से की संपत्ति है 00:12:49.955 --> 00:12:56.350 कि जोड़ी, k अल्पविराम r, प्रमुख अल्पविराम का उपनाम, कभी नहीं है, तो-कभी नहीं दोहराता है। यह है 00:12:56.350 --> 00:13:03.096 कभी नहीं एक बार से अधिक उपयोग किया। तो लब्बोलुआब यह है कि आप महत्वपूर्ण, पुनः प्रयोग पुनः प्रयोग कर सकते हैं 00:13:03.096 --> 00:13:09.710 कुंजी है, क्योंकि कश्मीर और आर केवल अस्थायी रूप से जोड़ी अद्वितीय है, क्योंकि बनाता है 00:13:09.710 --> 00:13:16.135 एक बार इस्तेमाल किया है। मैं कहता हूँ वे अद्वितीय हैं। ठीक है, तो यह अस्थायी रूप से गया है की तरह एक प्यारा छल कि 00:13:16.135 --> 00:13:21.541 हमें हर बार एक नया कुंजी को हिलाने की परेशानी बचाता है। ठीक है, तो विशेष रूप से 00:13:21.541 --> 00:13:26.000 उदाहरण के eStream कि मैं तुम्हें दिखाने के लिए चाहता हूँ से साल्सा बीस कहा जाता है। यह है एक 00:13:26.000 --> 00:13:30.292 स्ट्रीम सिफर दोनों implementations के सॉफ्टवेयर और हार्डवेयर के लिए डिज़ाइन की गई है 00:13:30.292 --> 00:13:33.385 implementations. यह दिलचस्प की तरह है। तुम्हें पता है कि कुछ स्ट्रीम ciphers कर रहे हैं 00:13:33.385 --> 00:13:38.763 RC4 जैसे सॉफ्टवेयर के लिए डिज़ाइन किया गया। सब कुछ वह करता है बनाने के लिए डिज़ाइन किया गया है 00:13:38.763 --> 00:13:42.689 जबकि अन्य धारा ciphers के लिए तैयार कर रहे हैं तेजी से, चलाने के सॉफ्टवेयर कार्यान्वयन 00:13:42.689 --> 00:13:48.143 हार्डवेयर, सीएसएस, विशेष रूप से हार्डवेयर बनाने के लिए डिज़ाइन किया गया है एक LFSR का उपयोग कर की तरह 00:13:48.143 --> 00:13:50.963 implementations बहुत सस्ते। यह भी है, यह है कि इस बारे में अच्छी बात है 00:13:50.963 --> 00:13:55.008 इतना है कि यह दोनों यह हार्डवेयर और अपने सॉफ्टवेयर में लागू करने के लिए आसान है डिज़ाइन किया गया 00:13:55.008 --> 00:13:59.747 कार्यान्वयन भी बहुत तेज है। तो मुझे समझाने की कैसे साल्सा काम करता है। खैर, साल्सा 00:13:59.747 --> 00:14:05.130 या तो 128 या 256 बिट कुंजी हो जाता है। मैं केवल साल्सा के 128-बिट संस्करण समझाता हूँ। 00:14:05.130 --> 00:14:11.244 तो यह बीज है। और फिर यह भी एक अस्थायी रूप से, बस से पहले, जो के रूप में लगते हैं 00:14:11.244 --> 00:14:15.425 64 बिट्स होना होता है। और फिर इसे एक बड़े आउटपुट उत्पन्न करेंगे। अब, यह कैसे होता है 00:14:15.425 --> 00:14:21.060 वास्तव में काम करते हो? खैर, समारोह ही इस प्रकार परिभाषित किया गया है। असल में, को देखते हुए 00:14:21.060 --> 00:14:26.378 कुंजी और अस्थायी रूप से, यह एक बहुत लंबा है, ठीक है, एक लंबे समय कूट-यादृच्छिक उत्पन्न करेगा 00:14:26.378 --> 00:14:31.222 , आवश्यक के रूप में लंबे समय अनुक्रम। और यह कि मैं द्वारा निरूपित हूँ इस समारोह का उपयोग करके करता हूँ 00:14:31.222 --> 00:14:35.653 एच. एच इस फ़ंक्शन तीन आदानों लेता है। मूल रूप से कुंजी। ठीक है, बीज k, 00:14:35.653 --> 00:14:40.498 nonce r, और उसके बाद कदम से कदम करने के लिए वेतन वृद्धि एक काउंटर। तो यह हो जाता है 00:14:40.498 --> 00:14:45.263 शून्य से एक, दो, तीन, चार के रूप में लंबे समय के रूप में हम [सुनाई] किया जा करने के लिए। ठीक? तो बुनियादी तौर पर, 00:14:45.263 --> 00:14:49.956 इस k आर पर इस h का मूल्यांकन द्वारा, लेकिन इस incrementing काउंटर का उपयोग करना, हम प्राप्त कर सकते हैं एक 00:14:49.956 --> 00:14:54.882 अनुक्रम कि जैसे हम चाहते हैं लंबी है। तो मैं सभी को यह करना है का वर्णन कैसे यह फ़ंक्शन 00:14:54.882 --> 00:14:59.460 एच काम करता है। अब, मुझे कि यहाँ आप के लिए करते हैं। जिस तरह से यह काम करता है इस प्रकार है। खैर, हम 00:14:59.460 --> 00:15:04.693 कुछ काफी बड़ी है जो 64 बाइट्स में अमेरिका के विस्तार के द्वारा बंद शुरू 00:15:04.693 --> 00:15:10.156 लंबे समय है, और हम कि निम्नानुसार है। मूल रूप से हम एक निरंतर की शुरुआत में इतनी छड़ी 00:15:10.156 --> 00:15:15.552 ताओ शून्य है, इन चार बाइट्स कर रहे हैं, यह तो एक चार बाइट स्थिरांक है युक्ति के लिए 00:15:15.552 --> 00:15:20.611 साल्सा मूल रूप से आप ताओ शून्य के लिए मान देता। फिर हम कश्मीर डाल जिसमें है 00:15:20.611 --> 00:15:25.467 सोलह बाइट्स। तो फिर हम एक और लगातार डाल दिया। फिर, यह चार बाइट्स है। और 00:15:25.467 --> 00:15:30.795 निर्दिष्ट करता है जैसा कि मैंने कहा, कल्पना मूलतः क्या लगातार यह तय है जो। फिर हम डाल 00:15:30.795 --> 00:15:37.435 अस्थायी रूप से जो आठ बाइट्स है गया। तो हम सूचकांक में डाल दिया। इस काउंटर शून्य है, 00:15:37.435 --> 00:15:43.063 एक, दो, तीन, चार, जो एक और आठ बाइट्स है। तो फिर हम एक और लगातार डाल 00:15:43.063 --> 00:15:49.056 जो एक और चार बाइट्स है ताऊ दो। हम प्रमुख डाल तो फिर, यह एक और है 00:15:49.056 --> 00:15:54.714 सोलह बाइट्स। और फिर अंत में हम तीसरे निरंतर, ताऊ तीन, जो है डाल 00:15:54.714 --> 00:15:59.948 एक और चार बाइट्स। ठीक है तो मैं ने कहा, यदि आप इन तक राशि के रूप में, आप देखते हैं कि आप 64 मिल 00:15:59.948 --> 00:16:05.249 बाइट्स। तो बुनियादी तौर पर हम कुंजी और अस्थायी रूप से और काउंटर में 64 विस्तार है 00:16:05.249 --> 00:16:10.886 बाइट्स। मूल रूप से प्रमुख दोहराया जाता है दो बार मुझे लगता है। और फिर हम क्या हम पर लागू है एक 00:16:10.886 --> 00:16:16.321 ताकि हम इस समारोह में, छोटे h लागू समारोह में, मैं इस कार्यात्मक थोड़ा एच. ठीक है, फोन करता हूँ। 00:16:16.321 --> 00:16:21.659 और यह एक समारोह है कि एक के लिए एक है तो यह 64 बाइट्स के लिए 64 बाइट्स नक्शे है। यह है एक 00:16:21.659 --> 00:16:26.005 पूरी तरह से invertible समारोह, ठीक है? इसलिए इस समारोह एच है, के रूप में मैं कहता हूँ, यह है एक 00:16:26.005 --> 00:16:30.260 invertable समारोह। तो इनपुट दिया तुम उत्पादन प्राप्त कर सकते हैं और देखते हुए 00:16:30.260 --> 00:16:34.906 आउटपुट तुम वापस इनपुट के लिए जा सकते हैं। और इसे बनाया है विशेष रूप से यह किया है, तो एक - आराम से 00:16:34.906 --> 00:16:39.553 हार्डवेयर और बी-किसी x86 पर में लागू करने के लिए, यह बेहद क्योंकि लागू करना आसान है 00:16:39.553 --> 00:16:44.199 आप की जरूरत है ऐसा करने के लिए सेट करें जो सभी आपरेशनों का समर्थन करता है इस SSE2 अनुदेश x 86 है 00:16:44.199 --> 00:16:48.622 इस समारोह के लिए। यह बहुत, बहुत तेज है। एक परिणाम के रूप में, साल्सा एक बहुत तेजी से धारा है 00:16:48.622 --> 00:16:52.764 सायफर। और फिर यह मूल रूप से फिर से है। तो यह इस पर लागू होता है 00:16:52.764 --> 00:16:57.744 फ़ंक्शन एच फिर से है और यह एक और 64 बाइट्स हो जाता है। और तो और आगे, मूल रूप से पर 00:16:57.744 --> 00:17:05.318 यह इस दस बार करता है। पूरी बात यहाँ, तो कह दोहराता है दस बार, तो ठीक है 00:17:05.318 --> 00:17:17.961 मूल रूप से ज दस बार लागू होते हैं। और तब से ही, यह वास्तव में नहीं काफी यादृच्छिक है। 00:17:17.961 --> 00:17:22.144 यह है नहीं करने वाले देखो यादृच्छिक क्योंकि एच पूरी तरह से invertable है, जैसे हम ने कहा। तो दी 00:17:22.144 --> 00:17:25.521 इस अंतिम उत्पादन, यह बहुत आसान है बस एच पलटना और फिर मूल के लिए वापस जाने के लिए है 00:17:25.521 --> 00:17:31.831 आदानों और फिर परीक्षण है कि इनपुट सही संरचना है। तो तुम एक और क्या 00:17:31.831 --> 00:17:36.979 बात है, जो मूल रूप से XOR करने के लिए जानकारी और अंतिम outputs है। वास्तव में, 00:17:36.979 --> 00:17:42.405 क्षमा करें. यह एक XOR नहीं है। यह वास्तव में एक अतिरिक्त है। तो तुम एक अतिरिक्त शब्द क्या किया 00:17:42.405 --> 00:17:47.762 शब्द। ताकि आप चार बाइट्स में एक शब्द शब्द से इसके अलावा वहाँ रहे हैं अगर 64 बाइट्स, एक 00:17:47.762 --> 00:17:52.980 समय, और अंत में आप 64-बाइट आउटपुट मिल, और यह बात है। कि पूरे है 00:17:52.980 --> 00:17:57.175 pseudo-random जनरेटर। कि इतना, कि पूरे समारोह, थोड़ा h है। और मैं के रूप में 00:17:57.175 --> 00:18:01.758 समझाया, इस पूरे निर्माण यहाँ समारोह है बड़ी एच. और तब आप का मूल्यांकन 00:18:01.758 --> 00:18:06.009 काउंटर incrementing द्वारा बड़ी एच मैं शून्य, एक, दो, तीन से बाद। और है कि 00:18:06.009 --> 00:18:10.408 तुम एक pseudo-random दृश्य है कि लंबे समय के रूप के रूप में आप इसे होने की जरूरत है दे देंगे। और 00:18:10.408 --> 00:18:15.325 असल में, वहाँ इस पर कोई signifigant हमले कर रहे हैं। यह सुरक्षा है कि 00:18:15.325 --> 00:18:20.371 बहुत करीब दो 128 के लिए। हम देखेंगे क्या इसका मतलब है कि और अधिक ठीक पर बाद में। 00:18:20.371 --> 00:18:25.417 यह एक बहुत तेजी से स्ट्रीम बीजलेख, दोनों हार्डवेयर और सॉफ्टवेयर में है। और, के रूप में दूर के रूप में 00:18:25.417 --> 00:18:30.431 हम बता सकते हैं, यह एक स्ट्रीम सिफर के लिए आवश्यक के रूप में अप्रत्याशित हो सकता है लगता है। तो मैं 00:18:30.431 --> 00:18:34.797 है कि eStream परियोजना वास्तव में पांच धारा ciphers की तरह कहना चाहिए 00:18:34.797 --> 00:18:39.395 यह। क्योंकि मुझे लगता है कि यह सबसे अधिक सुरुचिपूर्ण है मैं केवल साल्सा का फैसला किया। लेकिन मैं तुम्हें दे सकते हैं 00:18:39.395 --> 00:18:44.053 कुछ प्रदर्शन यहाँ संख्या। तो आप देख सकते हैं, ये प्रदर्शन नंबर पर हैं एक 00:18:44.053 --> 00:18:48.768 2.2 gigahertz, तुम्हें पता है, x 86 मशीन लिखें। और आप देख सकते हैं कि RC4 वास्तव में है 00:18:48.768 --> 00:18:53.017 सबसे धीमी। क्योंकि अनिवार्य रूप से, अच्छी तरह से यह सचमुच का लाभ ले करता है 00:18:53.017 --> 00:18:57.475 हार्डवेयर। यह केवल बाइट संचालन करता है। और तो बर्बाद चक्र का एक बहुत वहाँ है कि 00:18:57.475 --> 00:19:01.182 इस्तेमाल किया जा रहा नहीं कर रहे हैं। E-स्ट्रीम उम्मीदवारों, दोनों साल्सा और अन्य लेकिन 00:19:01.182 --> 00:19:05.202 उम्मीदवार Sosemanuk बुलाया। मैं कहना है कि इन eStream फाइनल कर रहे हैं चाहिए। इन कर रहे हैं 00:19:05.202 --> 00:19:09.588 वास्तव में धारा ciphers कि eStream परियोजना द्वारा अनुमोदित कर रहे हैं। आप देख सकते हैं कि 00:19:09.588 --> 00:19:13.712 वे एक महत्वपूर्ण दर हासिल किया है। इस 643 मेगाबाइट प्रति सेकंड इस पर है 00:19:13.712 --> 00:19:18.150 वास्तुकला, एक फिल्म और इन के लिए पर्याप्त से अधिक वास्तव में काफी प्रभावशाली हैं 00:19:18.150 --> 00:19:22.432 दरों। और तुम तो अब दो पुराने स्ट्रीम ciphers कि नहीं होना चाहिए के उदाहरण देखा है 00:19:22.432 --> 00:19:26.661 , उन स्ट्रीम ciphers पर हमले सहित करते थे। तुम्हें देखा है क्या आधुनिक स्ट्रीम ciphers 00:19:26.661 --> 00:19:30.480 की तरह के साथ इस अस्थायी रूप से देखो। और आप के लिए इन प्रदर्शन संख्या देखना 00:19:30.480 --> 00:19:34.546 तो तुम एक के इस्तेमाल कर सकते हैं अगर आप की जरूरत है एक स्ट्रीम सिफर आधुनिक स्ट्रीम ciphers 00:19:34.546 --> 00:19:37.991 eStream फाइनल। विशेष रूप से आप साल्सा की तरह कुछ का उपयोग कर सकते।