1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [RSA] 2 00:00:02,000 --> 00:00:04,000 [Rob Bowden] [Tommy MacWilliam] [ჰარვარდის უნივერსიტეტის] 3 00:00:04,000 --> 00:00:07,000 [ეს არის CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:11,000 მოდით შევხედოთ RSA, ფართოდ გამოიყენება ალგორითმი encrypting მონაცემები. 5 00:00:11,000 --> 00:00:16,000 შიფრირების ალგორითმები, როგორიცაა კეისრის და Vigenère ciphers არ არის ძალიან უსაფრთხო. 6 00:00:16,000 --> 00:00:20,000 With კეისრის კოდი, თავდამსხმელი მხოლოდ სჭირდება ცდილობენ 25 სხვადასხვა გასაღებები 7 00:00:20,000 --> 00:00:22,000 მისაღებად გაგზავნა ს ძირითადი ტექსტი. 8 00:00:22,000 --> 00:00:25,000 მიუხედავად იმისა, რომ Vigenère cipher არის უფრო უსაფრთხო, ვიდრე კეისრის კოდი 9 00:00:25,000 --> 00:00:28,000 გამო უფრო დიდი ძებნის ფართი გასაღებები, ერთხელ თავდამსხმელი 10 00:00:28,000 --> 00:00:30,000 იცის სიგრძეზე გასაღები Vigenère cipher, 11 00:00:30,000 --> 00:00:34,000 რომელიც შეიძლება განისაზღვროს საშუალებით ანალიზი თარგების წელს დაშიფრული ტექსტი, 12 00:00:34,000 --> 00:00:38,000 Vigenère cipher არ არის, რომ გაცილებით უფრო უსაფრთხო, ვიდრე კეისრის კოდი. 13 00:00:38,000 --> 00:00:42,000 RSA, მეორეს მხრივ, არ არის დაუცველი თავდასხმების მოსწონს ეს. 14 00:00:42,000 --> 00:00:45,000 კეისრის კოდი და Vigenère cipher გამოიყენოთ იგივე გასაღები 15 00:00:45,000 --> 00:00:47,000 ორივე დაშიფვრა და გაშიფვრა გაგზავნა. 16 00:00:47,000 --> 00:00:51,000 ეს უძრავი ხდის ამ ciphers სიმეტრიული გასაღები ალგორითმები. 17 00:00:51,000 --> 00:00:54,000 ფუნდამენტური პრობლემა სიმეტრიული გასაღები ალგორითმები 18 00:00:54,000 --> 00:00:57,000 ის არის, რომ იმედი აქვთ ერთი encrypting და გაგზავნის გაგზავნა 19 00:00:57,000 --> 00:00:59,000 და ერთი მიმღები და გაშიფვრის დროს მოხდენილი გაგზავნა 20 00:00:59,000 --> 00:01:03,000 to უკვე შევთანხმდით upfront on გასაღები ორივე იყენებს. 21 00:01:03,000 --> 00:01:06,000 მაგრამ ჩვენ გვაქვს ცოტა ჩატვირთვის პრობლემა აქ. 22 00:01:06,000 --> 00:01:10,000 როგორ 2 კომპიუტერი რომ სურთ კომუნიკაცია დაამყაროს საიდუმლო გასაღები მათ შორის? 23 00:01:10,000 --> 00:01:16,000 თუ გასაღები უნდა იყოს საიდუმლო, მაშინ ჩვენ გვჭირდება გზა დაშიფვრა და გაშიფვრა გასაღები. 24 00:01:16,000 --> 00:01:18,000 თუ ყველა ჩვენ გვაქვს არის სიმეტრიული გასაღები კრიპტოგრაფიის 25 00:01:18,000 --> 00:01:21,000 მაშინ ჩვენ უბრალოდ დაბრუნებას იგივე პრობლემა. 26 00:01:21,000 --> 00:01:25,000 RSA, მეორეს მხრივ, იყენებს წყვილი გასაღებები, 27 00:01:25,000 --> 00:01:28,000 ერთი დაშიფვრისათვის და მეორე დეშიფრაციის. 28 00:01:28,000 --> 00:01:32,000 ეწოდება საჯარო გასაღები, და სხვა არის პირადი გასაღები. 29 00:01:32,000 --> 00:01:34,000 საჯარო გასაღები გამოიყენება დაშიფვრა შეტყობინებები. 30 00:01:34,000 --> 00:01:38,000 როგორც თქვენ ალბათ გავიგო მისი სახელი, ჩვენ შეიძლება გაიზიაროს ჩვენი საჯარო გასაღების 31 00:01:38,000 --> 00:01:43,000 ვინმე გვინდა გარეშე კომპრომეტირებისთვის უსაფრთხოების დაშიფრული გაგზავნა. 32 00:01:43,000 --> 00:01:45,000 შეტყობინებები იშიფრება გამოყენებით საჯარო გასაღები 33 00:01:45,000 --> 00:01:49,000 შესაძლებელია მხოლოდ გაშიფრავთ თავისი შესაბამისი პირადი გასაღები. 34 00:01:49,000 --> 00:01:53,000 მიუხედავად იმისა, შეგიძლიათ გაუზიაროთ თქვენი საჯარო გასაღები, თქვენ ყოველთვის უნდა ჩაწეროთ შეტყობინების გასაღები საიდუმლო. 61 00:01:55,000 --> 00:01:58,000 და მხოლოდ შეტყობინების გასაღები შეიძლება გამოყენებულ იქნას, გაშიფროთ შეტყობინებები 62 00:01:58,000 --> 00:02:02,000 თუ 2 წევრებს სურთ შეტყობინებები დაშიფრული ერთად RSA 63 00:02:02,000 --> 00:02:07,000 უკან და მეოთხე როგორც წევრებს უნდა ჰქონდეთ საკუთარი საჯარო და კერძო გასაღები წყვილი. 64 00:02:07,000 --> 00:02:10,000 შეტყობინებები მომხმარებლის 1 დან მომხმარებლის 2 65 00:02:10,000 --> 00:02:15,000 მხოლოდ მომხმარებლის 2 მთავარი წყვილი, და შეტყობინებები მომხმარებლის 2 to მომხმარებლის 1 66 00:02:15,000 --> 00:02:17,000 მხოლოდ მომხმარებლის 1 მთავარი წყვილი. 67 00:02:17,000 --> 00:02:21,000 ის ფაქტი, რომ არსებობს 2 ცალკე გასაღებები დაშიფვრა და გაშიფვრა შეტყობინებები 68 00:02:21,000 --> 00:02:24,000 ხდის RSA ასიმეტრიული გასაღების ალგორითმი. 69 00:02:24,000 --> 00:02:28,000 ჩვენ არ გვჭირდება დაშიფვრა საჯარო გასაღები, რათა გამოგვიგზავნოთ სხვა კომპიუტერზე 70 00:02:28,000 --> 00:02:31,000 რადგან გასაღები არის საჯარო მაინც. 71 00:02:31,000 --> 00:02:33,000 ეს ნიშნავს, რომ RSA ამჯამად არ აქვს იგივე ჩატვირთვის პრობლემა 72 00:02:33,000 --> 00:02:36,000 როგორც სიმეტრიული გასაღები ალგორითმები. 73 00:02:36,000 --> 00:02:39,000 ასე რომ, თუ მინდა გაგზავნას გაგზავნა გამოყენებით RSA დაშიფვრის 74 00:02:39,000 --> 00:02:42,000 ძარცვა, მე ჯერ უნდა რობ საჯარო გასაღები. 75 00:02:42,000 --> 00:02:47,000 გენერირება წყვილი გასაღებები, რობ სჭირდება აირჩიოთ 2 დიდი რიცხვების. 76 00:02:47,000 --> 00:02:50,000 ეს ციფრები გამოყენებული იქნება როგორც საჯარო და კერძო გასაღებები, 77 00:02:50,000 --> 00:02:54,000 მაგრამ საჯარო გასაღები იქნება მხოლოდ პროდუქტის ამ 2 ნომრები, 78 00:02:54,000 --> 00:02:56,000 არ ციფრები თავად. 79 00:02:56,000 --> 00:02:59,000 ერთხელ მე იშიფრება გაგზავნა გამოყენებით რობ საჯარო გასაღები 80 00:02:59,000 --> 00:03:01,000 მე შეგიძლიათ გააგზავნოთ შეტყობინება რობ. 81 00:03:01,000 --> 00:03:05,000 იყიდება კომპიუტერი, ფაქტორინგული ნომრები არის რთული პრობლემა. 82 00:03:05,000 --> 00:03:09,000 საჯარო გასაღები, გახსოვდეთ, გამოყენებული პროდუქტი 2 რიცხვების. 83 00:03:09,000 --> 00:03:12,000 ეს პროდუქტი უნდა მაშინ აქვს მხოლოდ 2 ფაქტორები, 84 00:03:12,000 --> 00:03:16,000 რაც არ უნდა იყოს ციფრები, რომ შეადგინოს პირადი გასაღები. 85 00:03:16,000 --> 00:03:20,000 იმისათვის, რომ გაშიფვრა გაგზავნა, RSA გამოიყენებს ამ შეტყობინების გასაღები 86 00:03:20,000 --> 00:03:25,000 ან ნომრები გამრავლდეს ერთად შექმნის პროცესი საჯარო გასაღები. 87 00:03:25,000 --> 00:03:28,000 იმიტომ რომ computationally რთული ფაქტორი ნომერი 88 00:03:28,000 --> 00:03:32,000 გამოიყენება საჯარო გასაღების 2 ნომრები გამოიყენება შეტყობინების გასაღები 89 00:03:32,000 --> 00:03:36,000 ეს რთული შემტევს გაერკვნენ შეტყობინების გასაღები 90 00:03:36,000 --> 00:03:39,000 რომ საჭირო იქნება გაშიფვრა გაგზავნა. 91 00:03:39,000 --> 00:03:43,000 ახლა მოდით წასვლას გარკვეული ქვედა დონეზე დეტალებზე RSA. 92 00:03:43,000 --> 00:03:46,000 მოდით პირველ ვნახოთ, როგორ შეგვიძლია გენერირება წყვილი გასაღები. 93 00:03:46,000 --> 00:03:49,000 პირველი, ჩვენ გვჭირდება 2 რიცხვების. 94 00:03:49,000 --> 00:03:52,000 ჩვენ მოვუწოდებთ ამ 2 ნომრები P და Q. 95 00:03:52,000 --> 00:03:56,000 იმისათვის, რომ აირჩიოთ P და Q, პრაქტიკაში ჩვენ pseudorandomly გენერირება 96 00:03:56,000 --> 00:03:59,000 დიდი რაოდენობით და შემდეგ გამოიყენოთ ტესტი განსაზღვრის თუ არა 97 00:03:59,000 --> 00:04:02,000 იმ რაოდენობით ალბათ პრემიერ. 98 00:04:02,000 --> 00:04:05,000 ჩვენ შეგვიძლია შევინარჩუნოთ მომტანი შემთხვევითი რიცხვების უსასრულოდ 99 00:04:05,000 --> 00:04:08,000 სანამ ჩვენ გვაქვს 2 primes რომ ჩვენ შეგვიძლია გამოვიყენოთ. 100 00:04:08,000 --> 00:04:15,000 აქ მოდით აირჩიოთ p = 23 და Q = 43. 101 00:04:15,000 --> 00:04:19,000 გახსოვდეთ, პრაქტიკაში, P და Q უნდა იყოს გაცილებით ნომრები. 102 00:04:19,000 --> 00:04:22,000 რამდენადაც ჩვენ ვიცით, უფრო დიდი ციფრები, რთული ეს 103 00:04:22,000 --> 00:04:25,000 რათა ბზარი დაშიფრული გაგზავნა. 104 00:04:25,000 --> 00:04:29,000 მაგრამ ეს ასევე უფრო ძვირი დაშიფვრა და გაშიფვრა შეტყობინებები. 105 00:04:29,000 --> 00:04:33,000 დღეს ის ხშირად რეკომენდირებულია P და Q მინიმუმ 1024 ბიტი, 106 00:04:33,000 --> 00:04:37,000 რომელიც ხელს უწყობს თითოეული ნომრის მაჩვენებელი 300 ათობითი თანრიგისაგან. 107 00:04:37,000 --> 00:04:40,000 მაგრამ ჩვენ შეარჩიო ამ მცირე რაოდენობით ამ მაგალითს. 108 00:04:40,000 --> 00:04:43,000 ახლა ჩვენ გავამრავლოთ P და Q ერთად მისაღებად მე -3 პუნქტების, 109 00:04:43,000 --> 00:04:45,000 რომელიც ჩვენ მოვუწოდებთ n. 110 00:04:45,000 --> 00:04:55,000 ჩვენს შემთხვევაში, n = 23 * 43, რომელიც = 989. 111 00:04:55,000 --> 00:04:58,000 ჩვენ N = 989. 112 00:04:58,000 --> 00:05:02,000 შემდეგი ჩვენ გავამრავლოთ P - 1 Q - 1 113 00:05:02,000 --> 00:05:05,000 მიიღონ მე -4 ნომერი, რომელიც ჩვენ მოვუწოდებთ მ. 114 00:05:05,000 --> 00:05:15,000 ჩვენს შემთხვევაში, მ = 22 * ​​42, რომელიც = 924. 115 00:05:15,000 --> 00:05:18,000 ჩვენ გვყავს m = 924. 116 00:05:18,000 --> 00:05:22,000 ახლა ჩვენ გვჭირდება ხმების ვებ რომ შედარებით პრემიერ მ 117 00:05:22,000 --> 00:05:25,000 და ნაკლები მ. 118 00:05:25,000 --> 00:05:28,000 ორი რიცხვის შედარებით პრემიერ ან coprime 119 00:05:28,000 --> 00:05:33,000 თუ მხოლოდ დადებითი მთელი რიცხვი რომ ყოფს მათ ორივე თანაბრად არის 1. 120 00:05:33,000 --> 00:05:37,000 სხვა სიტყვებით, უდიდესი საერთო divisor ელექტრონული და მ 121 00:05:37,000 --> 00:05:39,000 უნდა იყოს 1. 122 00:05:39,000 --> 00:05:44,000 პრაქტიკაში, ის საერთოა ვებ უნდა იყოს მარტივი რიცხვი 65537 123 00:05:44,000 --> 00:05:48,000 რადგან ეს რიცხვი არ მოხდეს უნდა იყოს ფაქტორი m. 124 00:05:48,000 --> 00:05:53,000 ჩვენი გასაღებები, ჩვენ აირჩიოთ E = 5 125 00:05:53,000 --> 00:05:57,000 მას შემდეგ, რაც 5 შედარებით პრემიერ to 924. 126 00:05:57,000 --> 00:06:01,000 საბოლოოდ, ჩვენ გვჭირდება კიდევ ერთი ნომერი, რომელიც ჩვენ მოვუწოდებთ დ. 127 00:06:01,000 --> 00:06:11,000 D უნდა იყოს გარკვეული მნიშვნელობა, რომ აკმაყოფილებს განტოლებას de = 1 (mod m). 128 00:06:11,000 --> 00:06:17,000 ეს mod m ნიშნავს ჩვენ ვიყენებთ რაღაც მოუწოდა მოდულარული არითმეტიკა. 129 00:06:17,000 --> 00:06:21,000 In მოდულარული არითმეტიკა, ერთხელ ხმების იღებს უფრო მაღალია, ვიდრე ზოგიერთი ზედა ბლოკნოტის 130 00:06:21,000 --> 00:06:24,000 ეს იქნება საერთო უკან გარშემო 0. 131 00:06:24,000 --> 00:06:27,000 საათი, მაგალითად, იყენებს მოდულარული არითმეტიკა. 132 00:06:27,000 --> 00:06:31,000 ერთი წუთის შემდეგ 1:59, მაგალითად, 2:00, 133 00:06:31,000 --> 00:06:33,000 არ 1:60. 134 00:06:33,000 --> 00:06:36,000 წუთი მხრივ დაასრულა გარშემო 0 135 00:06:36,000 --> 00:06:39,000 საფუძველზე მიღწევის ზედა შეკრული 60. 136 00:06:39,000 --> 00:06:46,000 ასე რომ, ჩვენ შეგვიძლია ვთქვათ, 60 უდრის 0 (mod 60) 137 00:06:46,000 --> 00:06:57,000 და 125 უდრის 65 უდრის 5 (mod 60). 138 00:06:57,000 --> 00:07:02,000 ჩვენი საზოგადოების გასაღები იქნება წყვილი E და N 139 00:07:02,000 --> 00:07:09,000 აქ ამ შემთხვევაში ვებ არის 5 და N არის 989. 140 00:07:09,000 --> 00:07:15,000 ჩვენი შეტყობინების გასაღები იქნება წყვილი დ და n, 141 00:07:15,000 --> 00:07:22,000 რომელიც ჩვენს შემთხვევაში არის 185 და 989. 142 00:07:22,000 --> 00:07:25,000 გაითვალისწინეთ, რომ ჩვენი ორიგინალური primes P და Q არ გამოჩნდება 143 00:07:25,000 --> 00:07:29,000 სადმე ჩვენი კერძო ან საჯარო გასაღები. 144 00:07:29,000 --> 00:07:33,000 არის, რომ ჩვენ გვაქვს ჩვენი წყვილი გასაღებები, მოდით შევხედოთ როგორ შეგვიძლია გაშიფრავს 145 00:07:33,000 --> 00:07:36,000 და გაშიფვრა გაგზავნა. 146 00:07:36,000 --> 00:07:38,000 მინდა გაგზავნას გაგზავნა ძარცვა, 147 00:07:38,000 --> 00:07:42,000 ამიტომ იგი იქნება ერთ გენერირება ამ გასაღები წყვილი. 148 00:07:42,000 --> 00:07:46,000 მაშინ მე ვთხოვ რობ მისი საჯარო გასაღები, რომელიც მე გამოიყენოს 149 00:07:46,000 --> 00:07:48,000 დაშიფვრა გაგზავნა უგზავნიდნენ მას. 150 00:07:48,000 --> 00:07:53,000 გახსოვდეთ, ეს სრულიად okay for რობ, რომ თავისი საჯარო გასაღები ჩემთან ერთად. 151 00:07:53,000 --> 00:07:56,000 მაგრამ, ეს არ იქნება okay, რომ თავისი პირადი გასაღები. 152 00:07:56,000 --> 00:08:00,000 მე არ მაქვს როგორია მისი შეტყობინების გასაღები არის. 153 00:08:00,000 --> 00:08:03,000 ჩვენ შეგვიძლია დაარღვიოს ჩვენი გაგზავნა m up რამდენიმე მოცულობით 154 00:08:03,000 --> 00:08:07,000 ყველა ნაკლებია N და მერე გაშიფრავს თითოეული იმ მოცულობით. 155 00:08:07,000 --> 00:08:12,000 ჩვენ გაშიფრავს სიმებიანი CS50, რომელიც ჩვენ შეგვიძლია გაწყვეტის შევიდა 4 მოცულობით, 156 00:08:12,000 --> 00:08:14,000 პოსტი წერილში. 157 00:08:14,000 --> 00:08:17,000 იმისათვის, დაშიფროთ ჩემი გაგზავნა, მე უნდა გარდაქმნას იგი 158 00:08:17,000 --> 00:08:20,000 გარკვეული რიცხვითი წარმომადგენლობა. 159 00:08:20,000 --> 00:08:25,000 მოდით concatenate ASCII ღირებულებების მქონე სიმბოლოების ჩემი გაგზავნა. 160 00:08:25,000 --> 00:08:28,000 იმისათვის, რომ გაშიფროთ მოცემული გაგზავნა m 161 00:08:28,000 --> 00:08:37,000 მე უნდა გამოთვლაც c = m to E (mod N). 162 00:08:37,000 --> 00:08:40,000 მაგრამ მ უნდა იყოს ნაკლები n, 163 00:08:40,000 --> 00:08:45,000 ანდა სრული გაგზავნა არ შეიძლება გამოთქვა modulo n. 164 00:08:45,000 --> 00:08:49,000 ჩვენ შეგვიძლია შესვენება m up რამდენიმე მოცულობით, რომლებიც ნაკლებია N, 165 00:08:49,000 --> 00:08:52,000 და გაშიფრავს თითოეული იმ მოცულობით. 166 00:08:52,000 --> 00:09:03,000 Encrypting თითოეულ ამ მოცულობით, მივიღებთ C1 = 67 დან 5 (mod 989) 167 00:09:03,000 --> 00:09:06,000 რაც = 658. 168 00:09:06,000 --> 00:09:15,000 ჩვენი მეორე ბლოკი გვაქვს 83 დან 5 (mod 989) 169 00:09:15,000 --> 00:09:18,000 რაც = 15. 170 00:09:18,000 --> 00:09:26,000 ჩვენი მესამე ბლოკი გვაქვს 53 დან 5 (mod 989) 171 00:09:26,000 --> 00:09:30,000 რაც = 799. 172 00:09:30,000 --> 00:09:39,000 და ბოლოს, ჩვენი ბოლო ბლოკი გვაქვს 48 დან 5 (mod 989) 173 00:09:39,000 --> 00:09:43,000 რაც = 975. 174 00:09:43,000 --> 00:09:48,000 ახლა ჩვენ შეგიძლიათ გააგზავნოთ ამ დაშიფრული ღირებულებების ძარცვა. 175 00:09:54,000 --> 00:09:58,000 აი ისიც, რობ. 176 00:09:58,000 --> 00:10:01,000 ხოლო ჩვენი გაგზავნა არის ფრენის, ავიღოთ კიდევ ერთი სახე 177 00:10:01,000 --> 00:10:07,000 როგორ მივიღეთ, რომ მნიშვნელობა დ. 178 00:10:07,000 --> 00:10:17,000 ჩვენი ხმების დ საჭიროა დააკმაყოფილოს 5d = 1 (mod 924). 179 00:10:17,000 --> 00:10:24,000 ეს ხდის დ multiplicative უკუპროპორციულობით of 5 modulo 924. 180 00:10:24,000 --> 00:10:28,000 თუ გავითვალისწინებთ 2 რიცხვებით, და ბ, გაფართოებულ Euclidean ალგორითმი 181 00:10:28,000 --> 00:10:33,000 შეიძლება გამოყენებულ იქნას, რათა იპოვოს უდიდესი საერთო divisor ამ 2 რიცხვებით. 182 00:10:33,000 --> 00:10:37,000 ის ასევე გვაძლევს 2 სხვა ნომრები, X და Y, 183 00:10:37,000 --> 00:10:47,000 რომ დააკმაყოფილოს განტოლება ax + by = უდიდესი საერთო divisor of და ბ. 184 00:10:47,000 --> 00:10:49,000 როგორ ამჯამად ამ დაგვეხმარება? 185 00:10:49,000 --> 00:10:52,000 ისე, ჩართვის E = 5 186 00:10:52,000 --> 00:10:56,000 და მ = 924 for B 187 00:10:56,000 --> 00:10:59,000 ჩვენ უკვე კარგად ვიცით, რომ ეს რიცხვი coprime. 188 00:10:59,000 --> 00:11:03,000 მათი უდიდესი საერთო divisor არის 1. 189 00:11:03,000 --> 00:11:09,000 ეს გვაძლევს 5x + 924y = 1 190 00:11:09,000 --> 00:11:17,000 ან 5x = 1 - 924y. 191 00:11:17,000 --> 00:11:22,000 მაგრამ თუ ჩვენ მხოლოდ აინტერესებს ყველაფერი modulo 924 192 00:11:22,000 --> 00:11:25,000 მაშინ ჩვენ შეგვიძლია ვარდნა - 924y. 193 00:11:25,000 --> 00:11:27,000 იფიქრეთ თავში საათი. 194 00:11:27,000 --> 00:11:31,000 თუ წუთი მხრივ არის 1 და შემდეგ ზუსტად 10 საათში გაივლის, 195 00:11:31,000 --> 00:11:35,000 ჩვენ ვიცით წუთი მხრივ კვლავ იყოს 1. 196 00:11:35,000 --> 00:11:39,000 აქ იწყება 1 და შემდეგ გადაიტანოთ გარშემო ზუსტად Y ჯერ, 197 00:11:39,000 --> 00:11:41,000 ამიტომ ჩვენ მაინც იყოს 1. 198 00:11:41,000 --> 00:11:49,000 ჩვენ გვყავს 5x = 1 (mod 924). 199 00:11:49,000 --> 00:11:55,000 და აქ ამ x იგივეა, რაც დ ჩვენ ეძებდნენ ადრე, 200 00:11:55,000 --> 00:11:58,000 ასე რომ, თუ ჩვენ ვიყენებთ გაფართოებულ Euclidean ალგორითმი 201 00:11:58,000 --> 00:12:04,000 მიიღოს ეს რაოდენობა x, რომ ნომერი უნდა გამოვიყენოთ, როგორც ჩვენი დ. 202 00:12:04,000 --> 00:12:07,000 ახლა მოდით აწარმოებს გაფართოებულ Euclidean ალგორითმი = 5 203 00:12:07,000 --> 00:12:11,000 და b = 924. 204 00:12:11,000 --> 00:12:14,000 ჩვენ ვიყენებთ მეთოდი მოუწოდა მაგიდა მეთოდი. 205 00:12:14,000 --> 00:12:21,000 ჩვენი მაგიდა ექნება 4 მწკრივი, X, Y, დ, და K. 206 00:12:21,000 --> 00:12:23,000 ჩვენი მაგიდა იწყება off ერთად 2 ხაზად. 207 00:12:23,000 --> 00:12:28,000 პირველ მწკრივში ჩვენ გვყავს 1, 0, მაშინ ჩვენი ღირებულება, რომელიც 5, 208 00:12:28,000 --> 00:12:37,000 და ჩვენი მეორე მწკრივი არის 0, 1, და ჩვენი მნიშვნელობა B, რომელიც 924. 209 00:12:37,000 --> 00:12:40,000 ღირებულება -4 სვეტი, K, იქნება შედეგი 210 00:12:40,000 --> 00:12:45,000 გამყოფი ღირებულება რ row ზემოთ იგი ღირებულების დ 211 00:12:45,000 --> 00:12:49,000 იმავე კლავიშს. 212 00:12:49,000 --> 00:12:56,000 ჩვენ გვყავს 5 იყოფა 924 არის 0 ზოგიერთი ნაშთი. 213 00:12:56,000 --> 00:12:59,000 ეს იმას ნიშნავს, რომ ჩვენ გვაქვს K = 0. 214 00:12:59,000 --> 00:13:05,000 არის ღირებულების ყველა სხვა საკანში იქნება ღირებულება საკანში 2 ხაზად ზემოთ იგი 215 00:13:05,000 --> 00:13:09,000 მინუს ღირებულება row ზემოთ იგი ჯერ K. 216 00:13:09,000 --> 00:13:11,000 დავიწყოთ რ მე -3 row. 217 00:13:11,000 --> 00:13:19,000 ჩვენ გვყავს 5 - 924 * 0 = 5. 218 00:13:19,000 --> 00:13:25,000 შემდეგი გვაქვს 0 - 1 * 0 არის 0 219 00:13:25,000 --> 00:13:30,000 და 1 - 0 * 0 არის 1. 220 00:13:30,000 --> 00:13:33,000 არც ისე ცუდია, მოდით გადავიდეთ მომდევნო მწკრივში. 221 00:13:33,000 --> 00:13:36,000 პირველი, ჩვენ გვჭირდება ჩვენი ღირებულება K. 222 00:13:36,000 --> 00:13:43,000 924 იყოფა 5 = 184 ზოგიერთ დარჩენილი, 223 00:13:43,000 --> 00:13:46,000 ამიტომ ჩვენი მნიშვნელობა K არის 184. 224 00:13:46,000 --> 00:13:54,000 ახლა 924 - 5 * 184 = 4. 225 00:13:54,000 --> 00:14:05,000 1 - 0 * 184 არის 1 და 0 - 1 * 184 არის -184. 226 00:14:05,000 --> 00:14:07,000 ყველა უფლება, მოდით შემდეგი row. 227 00:14:07,000 --> 00:14:10,000 ჩვენი ღირებულება K იქნება 1, რადგანაც 228 00:14:10,000 --> 00:14:15,000 5 იყოფა 4 = 1 ზოგიერთი ნაშთი. 229 00:14:15,000 --> 00:14:17,000 მოდით შეავსოთ სხვა სვეტით. 230 00:14:17,000 --> 00:14:21,000 5 - 4 * 1 = 1. 231 00:14:21,000 --> 00:14:25,000 0 - 1 * 1 = -1. 232 00:14:25,000 --> 00:14:33,000 და 1 - 184 * 1 185. 233 00:14:33,000 --> 00:14:35,000 ვნახოთ რა ჩვენი მომავალი ღირებულება K იქნებოდა. 234 00:14:35,000 --> 00:14:40,000 ასევე, ის ჰგავს გვაქვს 4 იყოფა 1, რომელიც 4. 235 00:14:40,000 --> 00:14:43,000 ამ შემთხვევაში ჩვენ გამყოფი მიერ 1 ისეთი, რომ K უდრის 236 00:14:43,000 --> 00:14:50,000 ღირებულება რ ზემოთ row იმას ნიშნავს, რომ ჩვენ გავაკეთეთ ჩვენს ალგორითმი. 237 00:14:50,000 --> 00:14:58,000 ჩვენ ვხედავთ, რომ ჩვენ გვაქვს x = 185 და Y = -1, ბოლო row. 238 00:14:58,000 --> 00:15:00,000 მოდით ახლა დაბრუნდება ჩვენი ორიგინალური მიზანი. 239 00:15:00,000 --> 00:15:04,000 ჩვენ ვთქვით, რომ ღირებულება x შედეგად გაშვებული ეს ალგორითმი 240 00:15:04,000 --> 00:15:08,000 იქნებოდა multiplicative უკუპროპორციულობით of (mod ბ). 241 00:15:08,000 --> 00:15:15,000 ეს იმას ნიშნავს, რომ 185 არის multiplicative უკუპროპორციულობით 5 (mod 924) 242 00:15:15,000 --> 00:15:20,000 რაც იმას ნიშნავს, რომ ჩვენ გვაქვს ღირებულება 185 შეეხება დ. 243 00:15:20,000 --> 00:15:23,000 ის ფაქტი, რომ დ = 1 ამ ბოლო row 244 00:15:23,000 --> 00:15:26,000 ადასტურებს, რომ ვებ იყო coprime მ. 245 00:15:26,000 --> 00:15:30,000 თუ ეს არ იყო 1 მაშინ ჩვენ უნდა აირჩიოთ ახალი ვებ. 246 00:15:30,000 --> 00:15:33,000 ახლა ვნახოთ, თუ რობ მიღებული აქვს ჩემი გაგზავნა. 247 00:15:33,000 --> 00:15:35,000 როდესაც ვინმე აგზავნის ჩემს დაშიფრული გაგზავნა 248 00:15:35,000 --> 00:15:38,000 სანამ მე ჩემი ინახება შეტყობინების გასაღები საიდუმლო 249 00:15:38,000 --> 00:15:41,000 მე მხოლოდ ერთი ვისაც შეუძლია გაშიფვრა გაგზავნა. 250 00:15:41,000 --> 00:15:46,000 რათა გაშიფვრა ბლოკი გ შემიძლია გამოთვლა ორიგინალური გაგზავნა 251 00:15:46,000 --> 00:15:53,000 უდრის ბლოკი to დ ძალა (mod N). 252 00:15:53,000 --> 00:15:57,000 გახსოვდეთ, რომ დ და N არიან ჩემი პირადი გასაღები. 253 00:15:57,000 --> 00:16:01,000 მიიღოს სრული გაგზავნა თავისი მოცულობით ჩვენ გაშიფვრა თითოეული ბლოკი 254 00:16:01,000 --> 00:16:04,000 და concatenate შედეგი. 255 00:16:04,000 --> 00:16:08,000 სწორედ რამდენად დაცულია RSA? 256 00:16:08,000 --> 00:16:10,000 სიმართლე კი ის არის, რომ ჩვენ არ ვიცით. 257 00:16:10,000 --> 00:16:14,000 უშიშროების ეფუძნება რამდენ ხანს დასჭირდება შემტევს გაიბზარება გაგზავნა 258 00:16:14,000 --> 00:16:16,000 იშიფრება ერთად RSA. 259 00:16:16,000 --> 00:16:19,000 გახსოვდეთ, რომ თავდამსხმელი ხელი მიუწვდება თქვენი საჯარო გასაღები, 260 00:16:19,000 --> 00:16:21,000 რომელიც შეიცავს ორივე E და N. 261 00:16:21,000 --> 00:16:26,000 თუ შემტევს ახერხებს ფაქტორი n მის 2 primes, P და Q, 262 00:16:26,000 --> 00:16:30,000 მაშინ მას შეეძლო გამოეთვალა დ გამოყენებით გაფართოებულ Euclidean ალგორითმი. 263 00:16:30,000 --> 00:16:35,000 ეს იძლევა მისი შეტყობინების გასაღები, რომელიც შეიძლება გამოყენებულ იქნას, გაშიფროთ ნებისმიერი გაგზავნა. 264 00:16:35,000 --> 00:16:38,000 მაგრამ რამდენად სწრაფად შეიძლება ფაქტორი რიცხვებით? 265 00:16:38,000 --> 00:16:41,000 ისევ და ისევ, არ ვიცით. 266 00:16:41,000 --> 00:16:43,000 ჯერ ჯერობით არავის არ ნაპოვნი სწრაფი გზა ამის გაკეთება, 267 00:16:43,000 --> 00:16:46,000 რაც იმას ნიშნავს, რომ მოცემულ საკმარისად დიდი N 268 00:16:46,000 --> 00:16:49,000 დასჭირდება შემტევს unrealistically ხანგრძლივი 269 00:16:49,000 --> 00:16:51,000 to ფაქტორი ნომერი. 270 00:16:51,000 --> 00:16:54,000 თუ ვინმე გამოავლინა სწრაფი გზა ფაქტორინგული რიცხვებით 271 00:16:54,000 --> 00:16:57,000 RSA იქნება გატეხილი. 272 00:16:57,000 --> 00:17:01,000 მაგრამ მაშინაც კი, თუ მთელი factorization იგი არსებითად ნელი 273 00:17:01,000 --> 00:17:04,000 RSA ალგორითმი შეიძლება ჯერ კიდევ აქვს გარკვეული ხარვეზი მასში 274 00:17:04,000 --> 00:17:07,000 რომელიც საშუალებას აძლევს ადვილად დეშიფრაციის შეტყობინებები. 275 00:17:07,000 --> 00:17:10,000 ჯერ ჯერობით არავის არ იქნა ნაპოვნი და გამოვლენილი ასეთი ხარვეზი არ არის, 276 00:17:10,000 --> 00:17:12,000 მაგრამ ეს არ ნიშნავს, ერთი არ არსებობს. 277 00:17:12,000 --> 00:17:17,000 თეორიულად, ვინმე იყოს იქ კითხულობს ყველა მონაცემი იშიფრება ერთად RSA. 278 00:17:17,000 --> 00:17:19,000 არსებობს კიდევ ერთი ცოტა კონფიდენციალურობის საკითხი. 279 00:17:19,000 --> 00:17:23,000 თუ ტომი encrypts ზოგიერთი გაგზავნა გამოყენებით ჩემი საჯარო გასაღები 280 00:17:23,000 --> 00:17:26,000 და შემტევს encrypts იმავე გაგზავნა გამოყენებით ჩემი საჯარო გასაღები 281 00:17:26,000 --> 00:17:29,000 თავდამსხმელი ნახავთ, რომ 2 შეტყობინებები იდენტურია 282 00:17:29,000 --> 00:17:32,000 და ამით ვიცით, რა ტომი დაშიფრულია. 283 00:17:32,000 --> 00:17:36,000 იმისათვის რომ თავიდან ავიცილოთ ეს, შეტყობინებები ტიპიურად padded ერთად შემთხვევითი ბიტი 284 00:17:36,000 --> 00:17:39,000 სანამ იშიფრება ასე რომ იმავე გაგზავნა იშიფრება 285 00:17:39,000 --> 00:17:44,000 რამდენჯერმე გამოიყურება სხვადასხვა რადგან padding წლის გაგზავნა განსხვავებულია. 286 00:17:44,000 --> 00:17:47,000 მაგრამ მახსოვს როგორ გვაქვს გაყოფილი შეტყობინებები შევიდა მოცულობით 287 00:17:47,000 --> 00:17:50,000 ასე, რომ ყოველი ბლოკი მცირეა N? 288 00:17:50,000 --> 00:17:52,000 Padding მოცულობით ნიშნავს, რომ ჩვენ შეიძლება გაყოფილი რამ up 289 00:17:52,000 --> 00:17:57,000 შევიდა კიდევ უფრო მოცულობით წლიდან padded ბლოკი უნდა იყოს ნაკლები n. 290 00:17:57,000 --> 00:18:01,000 Encryption და დეშიფრაციის შედარებით ძვირი ერთად RSA, 291 00:18:01,000 --> 00:18:05,000 და ასე სჭირდება გაწყვეტის გაგზავნა შევიდა ბევრი მოცულობით შეიძლება ძალიან ძვირი. 292 00:18:05,000 --> 00:18:09,000 თუ დიდი მოცულობის მონაცემები უნდა იყოს დაშიფრული და გაშიფრავთ 293 00:18:09,000 --> 00:18:12,000 ჩვენ შეგვიძლია დააკავშიროთ სარგებელი სიმეტრიული გასაღები ალგორითმები 294 00:18:12,000 --> 00:18:16,000 რეგულაციებთან RSA მიიღოს როგორც უსაფრთხოების და ეფექტურობის. 295 00:18:16,000 --> 00:18:18,000 მიუხედავად იმისა, რომ ჩვენ არ შევალ აქ, 296 00:18:18,000 --> 00:18:23,000 AES არის სიმეტრიული გასაღების ალგორითმი მოსწონს Vigenère და ცეზარ ciphers 297 00:18:23,000 --> 00:18:25,000 მაგრამ გაცილებით უფრო რთული ბზარი. 298 00:18:25,000 --> 00:18:30,000 რა თქმა უნდა, ჩვენ არ შეგვიძლია გამოვიყენოთ AES გარეშე დამყარებას საერთო საიდუმლო გასაღები 299 00:18:30,000 --> 00:18:34,000 შორის 2 სისტემებისა და დავინახეთ პრობლემა, რომ ადრე. 300 00:18:34,000 --> 00:18:40,000 მაგრამ ახლა ჩვენ შეგვიძლია გამოვიყენოთ RSA დამყარებას საერთო საიდუმლო გასაღები შორის 2 სისტემებს. 301 00:18:40,000 --> 00:18:43,000 ჩვენ მოვუწოდებთ კომპიუტერის გაგზავნის მონაცემები გამგზავნი 302 00:18:43,000 --> 00:18:46,000 და კომპიუტერის მიღების მონაცემები მიმღები. 303 00:18:46,000 --> 00:18:49,000 მიმღები აქვს RSA გასაღები წყვილი და აგზავნის 304 00:18:49,000 --> 00:18:51,000 საჯარო გასაღები გამომგზავნს. 305 00:18:51,000 --> 00:18:54,000 გამგზავნი გენერირებას AES გასაღები, 306 00:18:54,000 --> 00:18:57,000 encrypts იგი მიმღების RSA საჯარო გასაღები, 307 00:18:57,000 --> 00:19:00,000 და აგზავნის AES გასაღები მიმღები. 308 00:19:00,000 --> 00:19:04,000 მიმღები decrypts გაგზავნა თავისი RSA პირადი გასაღები. 309 00:19:04,000 --> 00:19:09,000 ორივე გამგზავნი და მიმღები ახლა აქვს საერთო AES გასაღები მათ შორის. 310 00:19:09,000 --> 00:19:14,000 AES, რომელიც ბევრად უფრო სწრაფად ზე დაშიფვრის და დეშიფრაციის ვიდრე RSA, 311 00:19:14,000 --> 00:19:18,000 უკვე შესაძლებელია გამოყენებული დაშიფვრა დიდი მოცულობის მონაცემები და გააგზავნოთ მიმღები, 312 00:19:18,000 --> 00:19:21,000 ვისაც შეუძლია გაშიფვრა გამოყენებით იგივე გასაღები. 313 00:19:21,000 --> 00:19:26,000 AES, რომელიც ბევრად უფრო სწრაფად ზე დაშიფვრის და დეშიფრაციის ვიდრე RSA, 314 00:19:26,000 --> 00:19:30,000 უკვე შესაძლებელია გამოყენებული დაშიფვრა დიდი მოცულობის მონაცემები და გააგზავნოთ მიმღები, 315 00:19:30,000 --> 00:19:32,000 ვისაც შეუძლია გაშიფვრა გამოყენებით იგივე გასაღები. 316 00:19:32,000 --> 00:19:36,000 ჩვენ მხოლოდ საჭირო RSA გადარიცხოს გაუზიარეს გასაღები. 317 00:19:36,000 --> 00:19:40,000 ჩვენ აღარ უნდა გამოვიყენოთ RSA ყველა. 318 00:19:40,000 --> 00:19:46,000 როგორც ჩანს მაქვს გაგზავნა. 319 00:19:46,000 --> 00:19:49,000 არ აქვს მნიშვნელობა, თუ ვინმეს წაკითხვის რა ქაღალდზე თვითმფრინავის სანამ დაიჭირეს ეს 320 00:19:49,000 --> 00:19:55,000 იმიტომ, რომ მე ვარ მხოლოდ ერთი კერძო გასაღები. 321 00:19:55,000 --> 00:19:57,000 მოდით გაშიფვრა თითოეული მოცულობით in გაგზავნა. 322 00:19:57,000 --> 00:20:07,000 პირველი ბლოკი, 658, ჩვენ დავაყენებთ, რათა დ ძალა, რომელიც არის 185, 323 00:20:07,000 --> 00:20:18,000 mod N, რომელიც 989, უდრის 67, 324 00:20:18,000 --> 00:20:24,000 რაც ასო C ASCII. 325 00:20:24,000 --> 00:20:31,000 ახლა, გადატანა მეორე ბლოკი. 326 00:20:31,000 --> 00:20:35,000 მეორე ბლოკი მნიშვნელობაც 15, 327 00:20:35,000 --> 00:20:41,000 რომელსაც ჩვენ დავაყენებთ, რათა 185th ძალა, 328 00:20:41,000 --> 00:20:51,000 mod 989 და ეს უდრის 83 329 00:20:51,000 --> 00:20:57,000 რაც წერილში S ში ASCII. 330 00:20:57,000 --> 00:21:06,000 ახლა მესამე ბლოკი, რომლის მნიშვნელობაც 799, ჩვენ დავაყენებთ, რათა 185, 331 00:21:06,000 --> 00:21:17,000 mod 989 და ეს უდრის 53, 332 00:21:17,000 --> 00:21:24,000 რაც ღირებულება ხასიათი 5 in ASCII. 333 00:21:24,000 --> 00:21:30,000 ახლა ბოლო ბლოკი, რომლის მნიშვნელობაც 975, 334 00:21:30,000 --> 00:21:41,000 ჩვენ დავაყენებთ, რათა 185, mod 989, 335 00:21:41,000 --> 00:21:51,000 და ეს არის ტოლი 48, რომელიც ღირებულების ხასიათი 0 in ASCII. 336 00:21:51,000 --> 00:21:57,000 ჩემი სახელი არის რობ Bowden, და ეს არის CS50. 337 00:21:57,000 --> 00:22:00,000 [CS50.TV] 338 00:22:06,000 --> 00:22:08,000 RSA ყველა. 339 00:22:08,000 --> 00:22:14,000 RSA ყველა. [სიცილის] 340 00:22:14,000 --> 00:22:17,000 ყველა.