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] [Harvardi Ülikool] 3 00:00:04,000 --> 00:00:07,000 [See on CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:11,000 Võtame pilk RSA, kasutatakse laialdaselt algoritmi andmete krüpteerimiseks. 5 00:00:11,000 --> 00:00:16,000 Krüpteerimisalgoritmid nagu Caesar ja Vigenère ciphers ei ole väga turvaline. 6 00:00:16,000 --> 00:00:20,000 Mis Caesar salakiri, ründaja peab ainult proovida 25 erinevat võtmed 7 00:00:20,000 --> 00:00:22,000 saada sõnumi lihttekstina. 8 00:00:22,000 --> 00:00:25,000 Kuigi Vigenère salakiri on turvalisem kui Caesar salakiri 9 00:00:25,000 --> 00:00:28,000 sest suurem otsing ruumi võtmed, kui ründaja 10 00:00:28,000 --> 00:00:30,000 teab võtme pikkus on Vigenère salakiri, 11 00:00:30,000 --> 00:00:34,000 mida saab kindlaks analüüsi teel mustrid krüpteeritud teksti, 12 00:00:34,000 --> 00:00:38,000 Vigenère salakiri ei ole, et palju turvalisem kui Caesar salakiri. 13 00:00:38,000 --> 00:00:42,000 RSA, teiselt poolt, ei ole haavatavaks niimoodi. 14 00:00:42,000 --> 00:00:45,000 Caesar salakiri ja Vigenère salakiri kasutada sama võtit 15 00:00:45,000 --> 00:00:47,000 nii krüpteerimiseks ja dekrüpteerimiseks sõnum. 16 00:00:47,000 --> 00:00:51,000 See majutusasutus muudab need ciphers sümmeetriline võti algoritme. 17 00:00:51,000 --> 00:00:54,000 Põhiprobleem sümmeetriline võti algoritme 18 00:00:54,000 --> 00:00:57,000 on see, et need tuginevad ühelt krüptimine ja sõnumi saatmist 19 00:00:57,000 --> 00:00:59,000 ja ühe vastuvõtva ja dekrüpteerimiseks sõnum 20 00:00:59,000 --> 00:01:03,000 et juba kokkulepitud kohe algul peamiste nad mõlemad kasutavad. 21 00:01:03,000 --> 00:01:06,000 Aga meil on natuke käivitamisel probleem siin. 22 00:01:06,000 --> 00:01:10,000 Kuidas 2 arvutit, et tahavad suhelda luua salajane võti nende vahel? 23 00:01:10,000 --> 00:01:16,000 Kui võti peab olema salajane, siis peame viis krüpteerimiseks ja dekrüpteerimiseks võti. 24 00:01:16,000 --> 00:01:18,000 Kui kõik meil on sümmeetriline võtme krüptograafia 25 00:01:18,000 --> 00:01:21,000 siis tuleme just tagasi sama probleem. 26 00:01:21,000 --> 00:01:25,000 RSA, teiselt poolt, kasutab võtmepaari, 27 00:01:25,000 --> 00:01:28,000 üks krüpteerimist ja teine ​​dekodeerimiseks. 28 00:01:28,000 --> 00:01:32,000 Üks on nn avaliku võtme, ja teine ​​on isiklik võti. 29 00:01:32,000 --> 00:01:34,000 Avalikku võtit kasutatakse sõnumite krüptimiseks. 30 00:01:34,000 --> 00:01:38,000 Nagu te võite arvata, mida tema nimi, saame jagada oma avaliku võtme 31 00:01:38,000 --> 00:01:43,000 keegi tahame ohustamata turvalisust krüpteeritud sõnum. 32 00:01:43,000 --> 00:01:45,000 Sõnumid krüpteeritakse, kasutades avaliku võtme 33 00:01:45,000 --> 00:01:49,000 saab lahti krüptida ja sellele vastava isikliku võtme. 34 00:01:49,000 --> 00:01:53,000 Kuigi saate jagada oma avaliku võtme, siis tuleb alati hoida oma isikliku võtme saladus. 61 00:01:55,000 --> 00:01:58,000 ja ainult isikliku võtmega saab kasutada dekrüpteerimiseks sõnumeid 62 00:01:58,000 --> 00:02:02,000 kui 2 inimest tahavad sõnumeid saata krüptitud RSA 63 00:02:02,000 --> 00:02:07,000 edasi ja tagasi nii kasutajad peavad olema oma avaliku ja erasektori võtmepaari. 64 00:02:07,000 --> 00:02:10,000 Sõnumid kasutajaks 1 kasutajaks 2 65 00:02:10,000 --> 00:02:15,000 kasutada ainult kasutaja 2'e võtmepaari ja sõnumeid kasutaja 2. kasutajaks 1 66 00:02:15,000 --> 00:02:17,000 kasutada ainult kasutajaks 1 aasta võtmepaari. 67 00:02:17,000 --> 00:02:21,000 Asjaolu, et on olemas 2 eraldi võtmeid krüpteerimiseks ja dekrüpteerimiseks sõnumeid 68 00:02:21,000 --> 00:02:24,000 teeb RSA asümmeetrilise võtme. 69 00:02:24,000 --> 00:02:28,000 Me ei vaja krüptida avaliku võtme, et saata see teise arvutisse 70 00:02:28,000 --> 00:02:31,000 kuna võti on avalik niikuinii. 71 00:02:31,000 --> 00:02:33,000 See tähendab, et RSA ei ole sama käivitus probleem 72 00:02:33,000 --> 00:02:36,000 nagu sümmeetriline võti algoritme. 73 00:02:36,000 --> 00:02:39,000 Nii et kui ma tahan saata sõnum kasutades RSA krüpteerimisega 74 00:02:39,000 --> 00:02:42,000 Rob, ma kõigepealt Rob avaliku võtme. 75 00:02:42,000 --> 00:02:47,000 Et tekitada võtmepaari, Rob vaja valida 2 suurt algarvu. 76 00:02:47,000 --> 00:02:50,000 Need arvud kasutada nii avaliku ja erasektori võtmed, 77 00:02:50,000 --> 00:02:54,000 kuid avalik võti on ainult toodet kasutada neid 2 numbrit, 78 00:02:54,000 --> 00:02:56,000 ei numbrid ise. 79 00:02:56,000 --> 00:02:59,000 Kui olen krüpteeritud sõnumi Rob avaliku võtme 80 00:02:59,000 --> 00:03:01,000 Võin saata kiri Rob. 81 00:03:01,000 --> 00:03:05,000 Sest arvuti, faktooring numbrid on raske probleem. 82 00:03:05,000 --> 00:03:09,000 Avalik võti, mäletan, kasutatud toodet 2 algarvud. 83 00:03:09,000 --> 00:03:12,000 See toode peab siis olema ainult 2 tegureid, 84 00:03:12,000 --> 00:03:16,000 mis juhtub olema numbrid, mis moodustavad isiklik võti. 85 00:03:16,000 --> 00:03:20,000 Et lahti krüptida, RSA kasutab seda isikliku võtme 86 00:03:20,000 --> 00:03:25,000 või numbrid korrutatakse koos loomise protsessis avaliku võtme. 87 00:03:25,000 --> 00:03:28,000 Sest see on arvutuslikult raske tegur arv 88 00:03:28,000 --> 00:03:32,000 kasutatakse avaliku võtme 2 numbrit kasutatakse isikliku võtme 89 00:03:32,000 --> 00:03:36,000 see on raske ründaja välja mõelda isikliku võtme 90 00:03:36,000 --> 00:03:39,000 et on vaja lahti krüptida. 91 00:03:39,000 --> 00:03:43,000 Lähme nüüd mõnda madalamal tasemel üksikasjad RSA. 92 00:03:43,000 --> 00:03:46,000 Vaatame kõigepealt, kuidas me saame luua võtmepaari. 93 00:03:46,000 --> 00:03:49,000 Esiteks, me peame 2 algarvud. 94 00:03:49,000 --> 00:03:52,000 Me kutsume neid 2 numbrit p ja q. 95 00:03:52,000 --> 00:03:56,000 Et valida p ja q, tegelikkuses me pseudorandomly tekitada 96 00:03:56,000 --> 00:03:59,000 suured numbrid ja siis kasuta selle kindlakstegemine, kas 97 00:03:59,000 --> 00:04:02,000 need numbrid on ilmselt peamine. 98 00:04:02,000 --> 00:04:05,000 Saame hoida teeniva juhuslikke numbreid ikka ja jälle 99 00:04:05,000 --> 00:04:08,000 kuni meil on 2 PRIMES, et saame kasutada. 100 00:04:08,000 --> 00:04:15,000 Siin olgem valida p = 23 ja q = 43. 101 00:04:15,000 --> 00:04:19,000 Pea meeles, et praktikas p ja q olema palju suuremad numbrid. 102 00:04:19,000 --> 00:04:22,000 Niipalju kui me teame, et mida suurem number, seda raskem on 103 00:04:22,000 --> 00:04:25,000 crack krüpteeritud sõnum. 104 00:04:25,000 --> 00:04:29,000 Aga see on ka kallim krüpteerimiseks ja dekrüpteerimiseks sõnumeid. 105 00:04:29,000 --> 00:04:33,000 Täna on sageli soovitatakse, et p ja q on vähemalt 1024 bitti, 106 00:04:33,000 --> 00:04:37,000 mis paneb iga arv üle 300 murdarvud. 107 00:04:37,000 --> 00:04:40,000 Aga me tuleme väikest arvu Selle näite. 108 00:04:40,000 --> 00:04:43,000 Nüüd me korrutame p ja q kokku saada 3. number, 109 00:04:43,000 --> 00:04:45,000 mis me kutsume n. 110 00:04:45,000 --> 00:04:55,000 Meie puhul n = 23 * 43, mis = 989. 111 00:04:55,000 --> 00:04:58,000 Oleme n = 989. 112 00:04:58,000 --> 00:05:02,000 Järgmine me korrutame lk - 1, kus q - 1 113 00:05:02,000 --> 00:05:05,000 saada 4. arv, mis me kutsume m. 114 00:05:05,000 --> 00:05:15,000 Meie puhul m = 22 * ​​42, mis = 924. 115 00:05:15,000 --> 00:05:18,000 Meil on m = 924. 116 00:05:18,000 --> 00:05:22,000 Nüüd vajame arv e, mis on suhteliselt peaminister, et m 117 00:05:22,000 --> 00:05:25,000 ja vähem kui m. 118 00:05:25,000 --> 00:05:28,000 Kaks numbrid on suhteliselt peaministri või coprime 119 00:05:28,000 --> 00:05:33,000 kui ainult positiivne täisarv, mis jagub neid nii ühtlaselt on 1. 120 00:05:33,000 --> 00:05:37,000 Teisisõnu, suurim ühistegur e-ja m 121 00:05:37,000 --> 00:05:39,000 peab olema 1. 122 00:05:39,000 --> 00:05:44,000 Praktikas on tavaline, e olla algarv 65537 123 00:05:44,000 --> 00:05:48,000 nii kaua, kui see arv ei juhtu olema tegur m. 124 00:05:48,000 --> 00:05:53,000 Sest meie võtmed, me tuleme e = 5 125 00:05:53,000 --> 00:05:57,000 alates 5 on suhteliselt peaministri kuni 924. 126 00:05:57,000 --> 00:06:01,000 Lõpuks me vajame veel üks number, mis me kutsume d. 127 00:06:01,000 --> 00:06:11,000 D Peab olema mingi väärtus, mis rahuldab võrrandit de = 1 (mod m). 128 00:06:11,000 --> 00:06:17,000 See mod m tähendab me kasutame midagi, mida nimetatakse modulaarne aritmeetika. 129 00:06:17,000 --> 00:06:21,000 Aasta modulaarne aritmeetika, kui number on kõrgem kui mõned ülemise 130 00:06:21,000 --> 00:06:24,000 see murrab tagasi umbes 0-ga. 131 00:06:24,000 --> 00:06:27,000 Kell, näiteks kasutab modulaarne aritmeetika. 132 00:06:27,000 --> 00:06:31,000 Üks minut pärast 01:59 Näiteks on 2:00, 133 00:06:31,000 --> 00:06:33,000 ei 1:60. 134 00:06:33,000 --> 00:06:36,000 Minut käsi on pakitud ümber kuni 0 135 00:06:36,000 --> 00:06:39,000 jõudmisel ülemise 60. 136 00:06:39,000 --> 00:06:46,000 Nii võime öelda 60 on võrdne 0 (mod 60) 137 00:06:46,000 --> 00:06:57,000 ja 125 on võrdub 65 vastab 5 (mod 60). 138 00:06:57,000 --> 00:07:02,000 Meie avalik võti on paar e ja n 139 00:07:02,000 --> 00:07:09,000 kus antud juhul e on 5 ja n on 989. 140 00:07:09,000 --> 00:07:15,000 Meie isiklik võti on paar d ja n 141 00:07:15,000 --> 00:07:22,000 mis meie puhul on 185 ja 989. 142 00:07:22,000 --> 00:07:25,000 Pange tähele, et meie algne PRIMES p ja q ei kuvata 143 00:07:25,000 --> 00:07:29,000 kõikjal meie era-või avalikke võtmeid. 144 00:07:29,000 --> 00:07:33,000 Nüüd, kui oleme meie võtmepaari, võtame pilk kuidas me saame krüptida 145 00:07:33,000 --> 00:07:36,000 ja dekrüpteerimiseks sõnum. 146 00:07:36,000 --> 00:07:38,000 Ma tahan saata kiri Rob, 147 00:07:38,000 --> 00:07:42,000 nii et ta saab ühe luua selle võtmepaari. 148 00:07:42,000 --> 00:07:46,000 Siis ma küsin Rob tema avalik võti, mis ma kasutan 149 00:07:46,000 --> 00:07:48,000 krüpteerimiseks sõnum saata talle. 150 00:07:48,000 --> 00:07:53,000 Pea meeles, et see on täiesti okei Rob jagada oma avaliku võtme minuga. 151 00:07:53,000 --> 00:07:56,000 Aga see ei oleks okei jagada oma isiklikku võtit. 152 00:07:56,000 --> 00:08:00,000 Mul ei ole aimu, mida tema isiklik võti on. 153 00:08:00,000 --> 00:08:03,000 Saame murda oma sõnum m mitmeks tükkideks 154 00:08:03,000 --> 00:08:07,000 kõik väiksemad n ja seejärel krüptimiseks kõik need tükkideks. 155 00:08:07,000 --> 00:08:12,000 Me krüptida string CS50, mida me ei lahku arvesse 4 tükkideks, 156 00:08:12,000 --> 00:08:14,000 üks täht. 157 00:08:14,000 --> 00:08:17,000 Selleks, et varjata oma sõnum, mul on vaja muuta selle 158 00:08:17,000 --> 00:08:20,000 mingi arvuna. 159 00:08:20,000 --> 00:08:25,000 Olgem concatenate ASCII väärtused tegelased minu sõnum. 160 00:08:25,000 --> 00:08:28,000 Selleks, et varjata antud sõnum m 161 00:08:28,000 --> 00:08:37,000 Ma vajan arvutada c = m e (mod n). 162 00:08:37,000 --> 00:08:40,000 Aga m peab olema väiksem kui n, 163 00:08:40,000 --> 00:08:45,000 või siis kogu sõnum ei saa väljendada mooduli n. 164 00:08:45,000 --> 00:08:49,000 Me ei saa murda m mitmeks tükkideks, mis kõik on väiksemad kui N, 165 00:08:49,000 --> 00:08:52,000 ja krüptida kõik need tükkideks. 166 00:08:52,000 --> 00:09:03,000 Encrypting kõik need tükkideks, saame c1 = 67 kuni 5 (mod 989) 167 00:09:03,000 --> 00:09:06,000 mis = 658. 168 00:09:06,000 --> 00:09:15,000 Sest meie teine ​​patakas on meil 83 5 (mod 989) 169 00:09:15,000 --> 00:09:18,000 mis = 15. 170 00:09:18,000 --> 00:09:26,000 Sest meie kolmas patakas on meil 53 kuni 5 (mod 989) 171 00:09:26,000 --> 00:09:30,000 mis = 799. 172 00:09:30,000 --> 00:09:39,000 Ja lõpuks, meie viimane patakas on meil 48 kuni 5 (mod 989) 173 00:09:39,000 --> 00:09:43,000 mis = 975. 174 00:09:43,000 --> 00:09:48,000 Nüüd on võimalik saata üle need krüpteeritud väärtused Rob. 175 00:09:54,000 --> 00:09:58,000 Ole lahke, Rob. 176 00:09:58,000 --> 00:10:01,000 Kuigi meie sõnum on lennus, võtame teise ilme 177 00:10:01,000 --> 00:10:07,000 kuidas me saime selle raha d. 178 00:10:07,000 --> 00:10:17,000 Meie number d täitmiseks vajalikke 5D = 1 (mod 924). 179 00:10:17,000 --> 00:10:24,000 See muudab d multiplikatiivses vastupidine 5 mooduli 924. 180 00:10:24,000 --> 00:10:28,000 Manustatakse 2 täisarvud a ja b, laiendatud Eukleidese algoritm 181 00:10:28,000 --> 00:10:33,000 saab leida suurim ühistegur neist 2 täisarvud. 182 00:10:33,000 --> 00:10:37,000 Samuti annab meile 2 teised numbrid, x ja y, 183 00:10:37,000 --> 00:10:47,000 mis rahuldavad võrrandit ax + by = suurim ühistegur ja b. 184 00:10:47,000 --> 00:10:49,000 Kuidas see meid aitab? 185 00:10:49,000 --> 00:10:52,000 Noh, ühendades e = 5 186 00:10:52,000 --> 00:10:56,000 ja m = 924 B 187 00:10:56,000 --> 00:10:59,000 me juba teame, et need numbrid on coprime. 188 00:10:59,000 --> 00:11:03,000 Nende suurim ühistegur on 1. 189 00:11:03,000 --> 00:11:09,000 See annab meile 5x + 924y = 1 190 00:11:09,000 --> 00:11:17,000 või 5x = 1 - 924y. 191 00:11:17,000 --> 00:11:22,000 Aga kui me ainult hoolid kõik modulo 924 192 00:11:22,000 --> 00:11:25,000 siis saame tilk - 924y. 193 00:11:25,000 --> 00:11:27,000 Mõtle tagasi kella. 194 00:11:27,000 --> 00:11:31,000 Kui minut käsi on 1. ja siis täpselt 10 tundi edasi, 195 00:11:31,000 --> 00:11:35,000 me teame minut käsi ikkagi edasi 1. 196 00:11:35,000 --> 00:11:39,000 Siin me stardivad 1 ja seejärel murtakse täpselt y korda, 197 00:11:39,000 --> 00:11:41,000 nii me jääme ikka kell 1. 198 00:11:41,000 --> 00:11:49,000 Meil on 5x = 1 (mod 924). 199 00:11:49,000 --> 00:11:55,000 Ja siin see x on sama mis d otsisime enne, 200 00:11:55,000 --> 00:11:58,000 nii et kui me kasutada laiendatud Eukleidese algoritm 201 00:11:58,000 --> 00:12:04,000 saada see arv x, et see number peaksime kasutama meie d. 202 00:12:04,000 --> 00:12:07,000 Nüüd lähme jooksma laiendatud Eukleidese algoritm = 5 203 00:12:07,000 --> 00:12:11,000 ja b = 924. 204 00:12:11,000 --> 00:12:14,000 Me kasutame meetodit nimetatakse tabelit meetod. 205 00:12:14,000 --> 00:12:21,000 Meie tabel on 4 veergu, x, y, d ja k. 206 00:12:21,000 --> 00:12:23,000 Meie laud hakkab liikuma 2 rida. 207 00:12:23,000 --> 00:12:28,000 Esimeses reas on meil 1, 0, siis meie väärtus, mis on 5, 208 00:12:28,000 --> 00:12:37,000 ja meie teine ​​rida on 0, 1, ja meie raha b, mis on 924. 209 00:12:37,000 --> 00:12:40,000 Väärtus 4. veerus, k, saab tulemuse 210 00:12:40,000 --> 00:12:45,000 jagamise väärtust d reas selle kohal väärtusega d 211 00:12:45,000 --> 00:12:49,000 samas reas. 212 00:12:49,000 --> 00:12:56,000 Meil on 5 jagatuna 924 on 0. mõned ülejäänud. 213 00:12:56,000 --> 00:12:59,000 See tähendab, et meil on k = 0. 214 00:12:59,000 --> 00:13:05,000 Nüüd väärtuse iga teine ​​lahter on väärtus lahtris 2 rida kõrgemal 215 00:13:05,000 --> 00:13:09,000 miinus väärtus rida eespool see korda k. 216 00:13:09,000 --> 00:13:11,000 Alustame d 3. rida. 217 00:13:11,000 --> 00:13:19,000 Meil on 5-924 * 0 = 5. 218 00:13:19,000 --> 00:13:25,000 Järgmine on meil 0-1 * 0, mis on 0. 219 00:13:25,000 --> 00:13:30,000 ja 1 - 0 * 0 mis on 1. 220 00:13:30,000 --> 00:13:33,000 Mitte liiga halb, et liigume edasi järgmisele reale. 221 00:13:33,000 --> 00:13:36,000 Esiteks peame meie k väärtus. 222 00:13:36,000 --> 00:13:43,000 924 jagatud 5 = 184 mõned ülejäänud, 223 00:13:43,000 --> 00:13:46,000 nii meie raha k on 184. 224 00:13:46,000 --> 00:13:54,000 Nüüd 924-5 * 184 = 4. 225 00:13:54,000 --> 00:14:05,000 1-0 * 184 1 ja 0 - 1 * 184 -184. 226 00:14:05,000 --> 00:14:07,000 Olgu, teeme järgmisel real. 227 00:14:07,000 --> 00:14:10,000 Meie k väärtus on 1, sest 228 00:14:10,000 --> 00:14:15,000 5 jagatud 4 = 1 mõned ülejäänud. 229 00:14:15,000 --> 00:14:17,000 Olgem täita muid veerge. 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 Ja 1-184 * 1 on 185. 233 00:14:33,000 --> 00:14:35,000 Vaatame, mis meie kõrval k väärtus oleks. 234 00:14:35,000 --> 00:14:40,000 Noh, tundub, et meil on 4 jagada 1, mis on 4. 235 00:14:40,000 --> 00:14:43,000 Sellisel juhul, kui me jagame 1 selline, et k on võrdne 236 00:14:43,000 --> 00:14:50,000 D väärtus ülaltoodud rida tähendab, et me oleme valmis meie algoritm. 237 00:14:50,000 --> 00:14:58,000 Me näeme siin, et meil on x = 185 ja y = -1 viimases reas. 238 00:14:58,000 --> 00:15:00,000 Lähme nüüd tagasi meie algse eesmärgi. 239 00:15:00,000 --> 00:15:04,000 Me ütlesime, et x väärtus tõttu töötab see algoritm 240 00:15:04,000 --> 00:15:08,000 oleks kordades pöördvõrdeline (mod b). 241 00:15:08,000 --> 00:15:15,000 See tähendab, et 185 on kordades pöördvõrdeline 5 (mod 924) 242 00:15:15,000 --> 00:15:20,000 mis tähendab, et meil on väärtus 185 d. 243 00:15:20,000 --> 00:15:23,000 Asjaolu, et d = 1 viimases reas 244 00:15:23,000 --> 00:15:26,000 kontrollib, et e oli coprime m. 245 00:15:26,000 --> 00:15:30,000 Kui see ei oleks 1, siis oleks meil valida uue e. 246 00:15:30,000 --> 00:15:33,000 Nüüd vaatame, kui Rob on saanud minu sõnum. 247 00:15:33,000 --> 00:15:35,000 Kui keegi saadab mulle krüpteeritud sõnum 248 00:15:35,000 --> 00:15:38,000 nii kaua kui ma olen hoidnud minu isiklik võti saladus 249 00:15:38,000 --> 00:15:41,000 Ma olen ainus, kes saab lahti krüptida. 250 00:15:41,000 --> 00:15:46,000 Dekrüpteerimiseks patakas c võin arvutada algne sõnum 251 00:15:46,000 --> 00:15:53,000 võrdub tüki d võimsus (mod n). 252 00:15:53,000 --> 00:15:57,000 Pea meeles, et d ja n on minu isiklik võti. 253 00:15:57,000 --> 00:16:01,000 Et saada täielikku sõnum selle tükkideks me dekrüpteerida iga tüki 254 00:16:01,000 --> 00:16:04,000 ja concatenate tulemusi. 255 00:16:04,000 --> 00:16:08,000 Täpselt kuidas turvaline on RSA? 256 00:16:08,000 --> 00:16:10,000 Tõde on, me ei tea. 257 00:16:10,000 --> 00:16:14,000 Turvalisus põhineb, kui kaua see võtab ründaja murda sõnum 258 00:16:14,000 --> 00:16:16,000 krüptitud RSA. 259 00:16:16,000 --> 00:16:19,000 Pea meeles, et ründaja on juurdepääs teie avalik võti, 260 00:16:19,000 --> 00:16:21,000 mis sisaldab nii e ja n. 261 00:16:21,000 --> 00:16:26,000 Kui ründaja suudab tegur n arvesse oma 2 PRIMES p ja q, 262 00:16:26,000 --> 00:16:30,000 siis ta võiks arvutada d kasutades laiendatud Eukleidese algoritm. 263 00:16:30,000 --> 00:16:35,000 See annab tema isiklik võti, mida saab kasutada dekrüpteerimiseks sõnum. 264 00:16:35,000 --> 00:16:38,000 Aga kui kiiresti me saame tegur täisarvud? 265 00:16:38,000 --> 00:16:41,000 Jällegi, me ei tea. 266 00:16:41,000 --> 00:16:43,000 Keegi on leidnud kiire viis seda teha, 267 00:16:43,000 --> 00:16:46,000 mis tähendab, et antud piisavalt suur n 268 00:16:46,000 --> 00:16:49,000 see võtab ründaja ebareaalselt pikk 269 00:16:49,000 --> 00:16:51,000 silmas pidada mitmeid. 270 00:16:51,000 --> 00:16:54,000 Kui keegi näitas kiire viis faktooring täisarvud 271 00:16:54,000 --> 00:16:57,000 RSA oleks katki. 272 00:16:57,000 --> 00:17:01,000 Aga isegi kui täisarv lahutus on oma olemuselt aeglane 273 00:17:01,000 --> 00:17:04,000 RSA algoritm võiks veel mõned viga see 274 00:17:04,000 --> 00:17:07,000 mis võimaldab lihtsa dekodeerimiseks sõnumeid. 275 00:17:07,000 --> 00:17:10,000 Keegi on leidnud ja selgus selline viga veel, 276 00:17:10,000 --> 00:17:12,000 kuid see ei tähenda veel ei ole. 277 00:17:12,000 --> 00:17:17,000 Teoreetiliselt keegi võiks seal loed kõik andmed krüpteeritud RSA. 278 00:17:17,000 --> 00:17:19,000 Seal on veel natuke puutumatuse küsimusega. 279 00:17:19,000 --> 00:17:23,000 Kui Tommy krüpteerib mingit sõnumit kasutades minu avalik võti 280 00:17:23,000 --> 00:17:26,000 ja ründaja krüpteerib sama sõnumi oma avaliku võtme 281 00:17:26,000 --> 00:17:29,000 ründaja näed, et 2 sõnumit on identsed 282 00:17:29,000 --> 00:17:32,000 ja seega tean, mida Tommy krüpteeritud. 283 00:17:32,000 --> 00:17:36,000 Et seda vältida, sõnumid on tavaliselt polsterdatud juhuslikku bitti 284 00:17:36,000 --> 00:17:39,000 enne krüpteeritakse, nii et sama sõnum krüpteeritud 285 00:17:39,000 --> 00:17:44,000 mitu korda välja erinevad nii kaua kui polster sõnum on erinev. 286 00:17:44,000 --> 00:17:47,000 Aga mäletan, kuidas meil on jagada lugemiseks tükkideks 287 00:17:47,000 --> 00:17:50,000 nii, et iga tüki on väiksem kui n? 288 00:17:50,000 --> 00:17:52,000 Polster tükkideks tähendab, et meil oleks jagada asju 289 00:17:52,000 --> 00:17:57,000 isegi rohkem tükkideks, sest polsterdatud patakas peab olema väiksem kui n. 290 00:17:57,000 --> 00:18:01,000 Kodeerimiseks ja dekodeerimiseks on suhteliselt kallid RSA, 291 00:18:01,000 --> 00:18:05,000 ja nii oleks vaja lõhkuda sõnum paljudesse tükkideks võib olla väga kulukas. 292 00:18:05,000 --> 00:18:09,000 Kui andmete suur hulk peab olema krüpteeritud ja lahtikrüptitud 293 00:18:09,000 --> 00:18:12,000 saame kombineerida kasu sümmeetriline võti algoritme 294 00:18:12,000 --> 00:18:16,000 omadega RSA saada nii turvalisuse ja tõhususe. 295 00:18:16,000 --> 00:18:18,000 Kuigi me ei hakka seda siin, 296 00:18:18,000 --> 00:18:23,000 AES on sümmeetriline võtme algoritmi nagu Vigenère ja Caesar ciphers 297 00:18:23,000 --> 00:18:25,000 kuid palju raskem murda. 298 00:18:25,000 --> 00:18:30,000 Loomulikult ei saa me kasutada AES ilma kehtestatakse jagatud võtit 299 00:18:30,000 --> 00:18:34,000 vahel 2 süsteeme, ja me nägime probleem, et enne. 300 00:18:34,000 --> 00:18:40,000 Aga nüüd saame kasutada RSA luua jagatud salajane võti vahel 2 süsteeme. 301 00:18:40,000 --> 00:18:43,000 Me kutsume arvuti andmete saatmise saatja 302 00:18:43,000 --> 00:18:46,000 ja arvuti andmed saanud vastuvõtja. 303 00:18:46,000 --> 00:18:49,000 Vastuvõtja on RSA võtmepaari ja saadab 304 00:18:49,000 --> 00:18:51,000 avaliku võtme saatjale. 305 00:18:51,000 --> 00:18:54,000 Saatja genereerib AES võtmega, 306 00:18:54,000 --> 00:18:57,000 krüpteerib selle saaja RSA avalik võti, 307 00:18:57,000 --> 00:19:00,000 ja saadab AES võti vastuvõtja. 308 00:19:00,000 --> 00:19:04,000 Vastuvõtja decrypts sõnum tema RSA avalik võti. 309 00:19:04,000 --> 00:19:09,000 Nii saatja kui vastuvõtja on nüüd ühine AES võti nende vahel. 310 00:19:09,000 --> 00:19:14,000 AES, mis on palju kiirem on kodeerimiseks ja dekodeerimiseks kui RSA, 311 00:19:14,000 --> 00:19:18,000 Nüüd saab kasutada krüptimiseks suuri andmemahtusid ja saadab vastuvõtja, 312 00:19:18,000 --> 00:19:21,000 kes saab dekrüpteerida kasutades sama võtit. 313 00:19:21,000 --> 00:19:26,000 AES, mis on palju kiirem on kodeerimiseks ja dekodeerimiseks kui RSA, 314 00:19:26,000 --> 00:19:30,000 Nüüd saab kasutada krüptimiseks suuri andmemahtusid ja saadab vastuvõtja, 315 00:19:30,000 --> 00:19:32,000 kes saab dekrüpteerida kasutades sama võtit. 316 00:19:32,000 --> 00:19:36,000 Me lihtsalt vaja RSA kanda jagatud võti. 317 00:19:36,000 --> 00:19:40,000 Me ei pea enam kasutama RSA üldse. 318 00:19:40,000 --> 00:19:46,000 Tundub, et ma pean kirja. 319 00:19:46,000 --> 00:19:49,000 Ei ole oluline, kui keegi lugeda, mida on paberil lennuk enne, kui ma püütud seda 320 00:19:49,000 --> 00:19:55,000 sest ma olen ainus, kellel isiklik võti. 321 00:19:55,000 --> 00:19:57,000 Teeme lahti iga tükkideks sõnumis. 322 00:19:57,000 --> 00:20:07,000 Esimese tüki, 658, tõstame kuni d võimsus, mis on 185, 323 00:20:07,000 --> 00:20:18,000 mod n, mis on 989, on võrdne 67 324 00:20:18,000 --> 00:20:24,000 mis on täht C ASCII. 325 00:20:24,000 --> 00:20:31,000 Nüüd, peale teise patakas. 326 00:20:31,000 --> 00:20:35,000 Teine rahn on väärtus 15 327 00:20:35,000 --> 00:20:41,000 mis me tõstame kuni 185. võimu 328 00:20:41,000 --> 00:20:51,000 mod 989, ja see on võrdne 83 329 00:20:51,000 --> 00:20:57,000 mis on kirjas S ASCII. 330 00:20:57,000 --> 00:21:06,000 Nüüd juba kolmandat patakas, mis on väärtus 799, tõstame kuni 185, 331 00:21:06,000 --> 00:21:17,000 mod 989, ja see võrdub 53, 332 00:21:17,000 --> 00:21:24,000 mis on väärtus iseloomu 5 ASCII. 333 00:21:24,000 --> 00:21:30,000 Nüüd viimase tüki, mis on väärtus 975, 334 00:21:30,000 --> 00:21:41,000 me tõstame 185, mod 989, 335 00:21:41,000 --> 00:21:51,000 ja see võrdub 48, mis on väärtus tegelaskuju 0 ASCII. 336 00:21:51,000 --> 00:21:57,000 Minu nimi on Rob Bowden, ja see on CS50. 337 00:21:57,000 --> 00:22:00,000 [CS50.TV] 338 00:22:06,000 --> 00:22:08,000 RSA üldse. 339 00:22:08,000 --> 00:22:14,000 RSA üldse. [Naer] 340 00:22:14,000 --> 00:22:17,000 Üldse.