1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [RSA] 2 00:00:02,000 --> 00:00:04,000 [Роб Бауден] [Томи MacWilliam] [Универзитетот Харвард] 3 00:00:04,000 --> 00:00:07,000 [Ова е CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:11,000 Ајде да ги разгледаме во RSA, широко се користи алгоритам за енкрипција на податоци. 5 00:00:11,000 --> 00:00:16,000 Енкрипција алгоритми како Цезар и Vigenère шифри не се многу сигурни. 6 00:00:16,000 --> 00:00:20,000 Со Цезар шифра, напаѓачот само треба да се обидат 25 различни клучеви 7 00:00:20,000 --> 00:00:22,000 да се добие обичен текст порака е. 8 00:00:22,000 --> 00:00:25,000 Додека шифра Vigenère е побезбеден отколку Цезар шифра 9 00:00:25,000 --> 00:00:28,000 поради поголемите пребарување простор за клучеви, откако напаѓачот 10 00:00:28,000 --> 00:00:30,000 знае должината на клучот во шифра Vigenère, 11 00:00:30,000 --> 00:00:34,000 која може да се утврди преку анализа на моделите во криптиран текст, 12 00:00:34,000 --> 00:00:38,000 шифра Vigenère не е многу посигурен отколку Цезар број. 13 00:00:38,000 --> 00:00:42,000 RSA, од друга страна, не е подложен на напади се допаѓа ова. 14 00:00:42,000 --> 00:00:45,000 На Цезар шифра и Vigenère шифра користи истиот клуч 15 00:00:45,000 --> 00:00:47,000 за двете криптирате и декриптирање на пораката. 16 00:00:47,000 --> 00:00:51,000 Ова својство го прави овие шифри симетричен клуч алгоритми. 17 00:00:51,000 --> 00:00:54,000 А основниот проблем со симетричен клуч алгоритми 18 00:00:54,000 --> 00:00:57,000 е дека тие се потпираат на една енкрипција и испраќање на порака 19 00:00:57,000 --> 00:00:59,000 и еден примање и декрипција на пораки 20 00:00:59,000 --> 00:01:03,000 на веќе договорени однапред на копчето тие двајцата ќе го користи. 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 до корисникот 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 да му ја одземеш, јас прв ќе мора јавниот клуч на Rob. 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 Откако сум шифрирана порака користејќи го јавниот клуч на Rob 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 Затоа што тоа е изчислителна тешко да се фактор број 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 прости броеви што можеме да го користиме. 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 со П - 1 113 00:05:02,000 --> 00:05:05,000 да се добие 4 бројот, кој ќе го наречеме м. 114 00:05:05,000 --> 00:05:15,000 Во нашиот случај, m = 22 * ​​42, кои = 924. 115 00:05:15,000 --> 00:05:18,000 Имаме m = 924. 116 00:05:18,000 --> 00:05:22,000 Сега ќе треба голем број е дека е релативно премиер до m 117 00:05:22,000 --> 00:05:25,000 и помалку од m. 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 Со други зборови, најголемиот заеднички делител на д и м 121 00:05:37,000 --> 00:05:39,000 мора да биде 1. 122 00:05:39,000 --> 00:05:44,000 Во пракса, тоа е заедничка за е да биде прост број 65.537 123 00:05:44,000 --> 00:05:48,000 додека оваа бројка не се случи да биде фактор на М. 124 00:05:48,000 --> 00:05:53,000 За нашите клучеви, ние ќе ги собереш e = 5 125 00:05:53,000 --> 00:05:57,000 од 5 е релативно премиер на 924. 126 00:05:57,000 --> 00:06:01,000 Конечно, ние ќе треба уште еден број, кој ќе го наречеме г. 127 00:06:01,000 --> 00:06:11,000 D мора да биде некоја вредност која ги задоволува равенката де = 1 (mod m). 128 00:06:11,000 --> 00:06:17,000 Овој м мод значи ние ќе го користите нешто што се нарекува модуларен аритметика. 129 00:06:17,000 --> 00:06:21,000 Во модуларен аритметика, откако голем број добива повисока од некои горна граница 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 Една минута по 01:59, на пример, е 02: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 (МО 60) 137 00:06:46,000 --> 00:06:57,000 и 125 е еквивалентно на 65 е еднакво на 5 (МО 60). 138 00:06:57,000 --> 00:07:02,000 Нашите јавен клуч ќе биде пар е и n 139 00:07:02,000 --> 00:07:09,000 каде што во овој случај е е 5 и n е 989. 140 00:07:09,000 --> 00:07:15,000 Нашите приватен клуч ќе биде пар d и n, 141 00:07:15,000 --> 00:07:22,000 која во нашиот случај е 185 и 989. 142 00:07:22,000 --> 00:07:25,000 Забележете дека нашата изворна прости броеви 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 Запомни, тоа е сосема во ред за Rob да ги сподели своите јавниот клуч со мене. 151 00:07:53,000 --> 00:07:56,000 Но, тоа не би било во ред да ги споделат своите приватни клучеви. 152 00:07:56,000 --> 00:08:00,000 Јас немам идеја што неговиот приватен клуч е. 153 00:08:00,000 --> 00:08:03,000 Ние може да се скрши нашата порака метри на неколку парчиња 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 Ќе треба да се пресмета в = m на e (МО л). 162 00:08:37,000 --> 00:08:40,000 Но m мора да биде помал од n, 163 00:08:40,000 --> 00:08:45,000 или на друго место на целосна порака не може да се изрази модул n. 164 00:08:45,000 --> 00:08:49,000 Ние може да се скрши м на неколку парчиња, од кои сите се помали од n, 165 00:08:49,000 --> 00:08:52,000 и криптирате секоја од овие парчиња. 166 00:08:52,000 --> 00:09:03,000 Енкрипција на секој од овие парчиња, ние се C1 = 67 до 5 (МО 989) 167 00:09:03,000 --> 00:09:06,000 кои = 658. 168 00:09:06,000 --> 00:09:15,000 За нашата втора парче имаме 83 до 5 (МО 989) 169 00:09:15,000 --> 00:09:18,000 кои = 15. 170 00:09:18,000 --> 00:09:26,000 За нашиот трет дел имаме 53 до 5 (МО 989) 171 00:09:26,000 --> 00:09:30,000 кои = 799. 172 00:09:30,000 --> 00:09:39,000 И конечно, за нашиот последен дел имаме 48 до 5 (МО 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 Ова го прави г помножителен обратен од 5 modulo 924. 180 00:10:24,000 --> 00:10:28,000 Со оглед 2 цели броеви, a и b, продолжениот Евклидовата алгоритам 181 00:10:28,000 --> 00:10:33,000 може да се користи да се најде најголемиот заеднички делител на овие 2 цели броеви. 182 00:10:33,000 --> 00:10:37,000 Исто така, ќе ни даде 2 други броеви, x и y, 183 00:10:37,000 --> 00:10:47,000 кои ги задоволуваат равенката ax + by = најголемиот заеднички делител на a и b. 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 и m = 924 за б 187 00:10:56,000 --> 00:10:59,000 Ние веќе знаеме дека овие бројки се coprime. 188 00:10:59,000 --> 00:11:03,000 Нивниот најголем заеднички делител е 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 па ако ние ги користиме на продолжен Евклидовата алгоритам 201 00:11:58,000 --> 00:12:04,000 да се добие овој број x, тоа е број треба да се користи како наш г. 202 00:12:04,000 --> 00:12:07,000 Сега ајде да се кандидира на подолг Евклидовата алгоритам за = 5 203 00:12:07,000 --> 00:12:11,000 и б = 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 Нашата маса започнува со 2 реда. 207 00:12:23,000 --> 00:12:28,000 Во првиот ред имаме 1, 0, тогаш нашата вредност на, што е 5, 208 00:12:28,000 --> 00:12:37,000 и нашиот втор ред е 0, 1, и нашите вредности за б, кој е 924. 209 00:12:37,000 --> 00:12:40,000 Вредноста на 4 колона, к, ќе биде резултат 210 00:12:40,000 --> 00:12:45,000 на поделба на вредноста на d во ред над неа со вредноста на г 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 минус вредноста на спорот над него пати k. 216 00:13:09,000 --> 00:13:11,000 Да почнеме со г во 3 ред. 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 Добро, ајде да се направи на следниот ред. 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 вредноста на г во горниот ред значи дека ние сме направиле со нашите алгоритам. 237 00:14:50,000 --> 00:14:58,000 Можеме да видиме тука што имаме x = 185 и y = -1 во последниот ред. 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 ќе биде помножителен обратен на (МО б). 241 00:15:08,000 --> 00:15:15,000 Тоа значи дека 185 е помножителен обратен од 5 (МО 924) 242 00:15:15,000 --> 00:15:20,000 што значи дека имаат вредност од 185 за г. 243 00:15:20,000 --> 00:15:23,000 Фактот дека г = 1 во последниот ред 244 00:15:23,000 --> 00:15:26,000 потврдува дека е беше coprime до m. 245 00:15:26,000 --> 00:15:30,000 Ако не беа 1, тогаш ние ќе мора да ги собереш нова e. 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 е еднаква на парче да г моќ (МО л). 252 00:15:53,000 --> 00:15:57,000 Запомнете дека d и 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 кој ги содржи двете е и n. 261 00:16:21,000 --> 00:16:26,000 Ако напаѓачот успева да фактор n во своите 2 прости броеви, p и q, 262 00:16:26,000 --> 00:16:30,000 тогаш таа може да се пресмета г користење на продолжен Евклидовата алгоритам. 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 ќе ја преземе напаѓачот нереално долг 269 00:16:49,000 --> 00:16:51,000 да се фактор број. 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 Ако Томи енкриптира некои порака користејќи мојот јавен клуч 280 00:17:23,000 --> 00:17:26,000 и напаѓачот енкриптира истата порака користење на мојот јавен клуч 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 Со цел да се спречи ова, пораки обично се ватирани со случајни битови 284 00:17:36,000 --> 00:17:39,000 пред да бидат криптирани, така што истиот шифрираната порака 285 00:17:39,000 --> 00:17:44,000 повеќе пати ќе изгледаат различно додека Соочи на пораката е поинаква. 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 Соочи на парчиња значи дека ние можеби ќе мора да се подели работите 289 00:17:52,000 --> 00:17:57,000 во уште повеќе парчиња од ватирани парче мора да биде помала од n. 290 00:17:57,000 --> 00:18:01,000 Енкрипција и декрипција се релативно скапи со 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 АЕС е симетричен клуч алгоритам како Vigenère и Цезар шифри 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 енкриптира со RSA на примачот јавен клуч, 307 00:18:57,000 --> 00:19:00,000 и ја праќа на клучните АЕС до примачот. 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 Да ја декриптираат секоја од парчиња во пораката. 322 00:19:57,000 --> 00:20:07,000 Првиот дел, 658, ние се подигне на г моќ, која е 185, 323 00:20:07,000 --> 00:20:18,000 МО 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 кој се подигне на 185. моќ, 328 00:20:41,000 --> 00:20:51,000 МО 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 МО 989, и тоа е еднакво на 53, 332 00:21:17,000 --> 00:21:24,000 која е вредноста на ликот 5 во ASCII. 333 00:21:24,000 --> 00:21:30,000 Сега за последен дел, кој има вредност 975, 334 00:21:30,000 --> 00:21:41,000 ние се подигне на 185, МО 989, 335 00:21:41,000 --> 00:21:51,000 и тоа е еднакво на 48, што е вредност на ликот 0 во ASCII. 336 00:21:51,000 --> 00:21:57,000 Моето име е Роб Бауден, и ова е 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 На сите.