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] [Harvard Egyetem] 3 00:00:04,000 --> 00:00:07,000 [Ez a CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:11,000 Vessünk egy pillantást RSA, a széles körben használt algoritmus az adatok titkosítására. 5 00:00:11,000 --> 00:00:16,000 Titkosítási algoritmusok, mint Caesar és Vigenère titkosításokat nem túl biztonságos. 6 00:00:16,000 --> 00:00:20,000 A Caesar titkosítás, a támadó csak szüksége, hogy megpróbálja 25 különböző kulcs 7 00:00:20,000 --> 00:00:22,000 hogy az üzenet egyszerű szöveg. 8 00:00:22,000 --> 00:00:25,000 Míg a Vigenère titkosító sokkal biztonságosabb, mint a Caesar titkosítás 9 00:00:25,000 --> 00:00:28,000 mivel a nagyobb keresési teret a kulcsoknak, amint egy támadó 10 00:00:28,000 --> 00:00:30,000 tudja, hogy a hossza a kulcsot Vigenère titkosítást, 11 00:00:30,000 --> 00:00:34,000 amely megállapítható keresztül elemzése minták a titkosított szöveg, 12 00:00:34,000 --> 00:00:38,000 A Vigenère titkosítás nem az, hogy sokkal biztonságosabb, mint a Caesar titkosítás. 13 00:00:38,000 --> 00:00:42,000 RSA, a másik viszont nem támadás veszélyének vannak kitéve, mint ez. 14 00:00:42,000 --> 00:00:45,000 A Caesar titkosító és Vigenère titkosítás használja ugyanazt a kulcsot 15 00:00:45,000 --> 00:00:47,000 mind titkosítani és visszafejteni az üzenetet. 16 00:00:47,000 --> 00:00:51,000 Ez a tulajdonság teszi ezeket a szimmetrikus kulcsú titkosítási algoritmusok. 17 00:00:51,000 --> 00:00:54,000 Az alapvető probléma szimmetrikus kulcsú 18 00:00:54,000 --> 00:00:57,000 az, hogy hivatkozhat az egyik titkosítása és az üzenetet küldő 19 00:00:57,000 --> 00:00:59,000 és az egyik fogadó és dekódoláshoz az üzenetet 20 00:00:59,000 --> 00:01:03,000 A már előre megállapodott a kulcsfontosságú mindketten használni. 21 00:01:03,000 --> 00:01:06,000 De van egy kis indítási probléma itt. 22 00:01:06,000 --> 00:01:10,000 Hogyan lehet 2 számítógép, hogy szeretne kommunikálni létre titkos kulcs között? 23 00:01:10,000 --> 00:01:16,000 Ha a kulcs legyen titok, akkor szükségünk van egy módja annak, hogy titkosítani és visszafejteni a kulcsot. 24 00:01:16,000 --> 00:01:18,000 Ha minden megvan szimmetrikus kulcsú 25 00:01:18,000 --> 00:01:21,000 akkor már csak jön vissza ugyanarra a problémára. 26 00:01:21,000 --> 00:01:25,000 RSA, másrészt, pedig két kulcs, 27 00:01:25,000 --> 00:01:28,000 az egyik a titkosítás és egy másik a dekódolás. 28 00:01:28,000 --> 00:01:32,000 Az egyik az úgynevezett a nyilvános kulcsot, és a másik pedig a privát kulcs. 29 00:01:32,000 --> 00:01:34,000 A nyilvános kulccsal titkosítja az üzeneteket. 30 00:01:34,000 --> 00:01:38,000 Mint azt sejteni lehet a neve, meg tudjuk osztani a nyilvános kulcsot 31 00:01:38,000 --> 00:01:43,000 bárki szeretnénk biztonságának veszélyeztetése nélkül a titkosított üzenetet. 32 00:01:43,000 --> 00:01:45,000 Az üzenetek titkosítása a nyilvános kulccsal 33 00:01:45,000 --> 00:01:49,000 csak akkor lehet visszafejteni a hozzá tartozó privát kulcs. 34 00:01:49,000 --> 00:01:53,000 Amíg lehet osztani a nyilvános kulcsot, akkor mindig a privát kulcs titkos. 61 00:01:55,000 --> 00:01:58,000 és csak a privát kulcs visszafejtéséhez használt üzenetek 62 00:01:58,000 --> 00:02:02,000 ha 2 felhasználó szeretné üzeneteket küldjön titkosított RSA 63 00:02:02,000 --> 00:02:07,000 oda-vissza a két felhasználónak kell saját köz-és magán kulcspár. 64 00:02:07,000 --> 00:02:10,000 Üzenetek Felhasználói 1 és 2 felhasználó 65 00:02:10,000 --> 00:02:15,000 kizárólag a felhasználó 2-es kulcspár, üzenetek és user 2 felhasználó 1 66 00:02:15,000 --> 00:02:17,000 kizárólag a felhasználó 1-es kulcspár. 67 00:02:17,000 --> 00:02:21,000 Az a tény, hogy van 2 különálló kulcsok titkosítani és visszafejteni üzenetek 68 00:02:21,000 --> 00:02:24,000 teszi RSA aszimmetrikus kulcsú algoritmus. 69 00:02:24,000 --> 00:02:28,000 Nem kell, hogy titkosítja a nyilvános kulcs ahhoz, hogy küldje el egy másik számítógépre 70 00:02:28,000 --> 00:02:31,000 mivel a kulcs nyilvános egyébként. 71 00:02:31,000 --> 00:02:33,000 Ez azt jelenti, hogy az RSA nem az ugyanaz rendszerindítási probléma 72 00:02:33,000 --> 00:02:36,000 mint a szimmetrikus kulcsú algoritmusok. 73 00:02:36,000 --> 00:02:39,000 Tehát, ha azt akarom, hogy küldjön egy üzenetet RSA titkosítás 74 00:02:39,000 --> 00:02:42,000 Rob, én először meg kell Rob nyilvános kulcsa. 75 00:02:42,000 --> 00:02:47,000 Ahhoz, hogy létrehoz egy pár kulcs, Rob kell felvenni 2 nagy prímszám. 76 00:02:47,000 --> 00:02:50,000 Ezeket a számokat fogják használni a köz-és a magán kulcs, 77 00:02:50,000 --> 00:02:54,000 de a nyilvános kulcsot csak akkor használja a terméket e 2 szám, 78 00:02:54,000 --> 00:02:56,000 Nem a számok önmagukban. 79 00:02:56,000 --> 00:02:59,000 Egyszer már titkosított az üzenetet Rob nyilvános kulcsával 80 00:02:59,000 --> 00:03:01,000 Tudom elküldeni az üzenetet Rob. 81 00:03:01,000 --> 00:03:05,000 Egy számítógép, faktoring számok egy nehéz probléma. 82 00:03:05,000 --> 00:03:09,000 A nyilvános kulcs, emlékszem, használt a termék a 2 prímszám. 83 00:03:09,000 --> 00:03:12,000 Ezt a terméket, akkor csak 2 tényező, 84 00:03:12,000 --> 00:03:16,000 amely történetesen a számok teszik ki a privát kulcs. 85 00:03:16,000 --> 00:03:20,000 Annak érdekében, hogy dekódolni az üzenetet, RSA fogja használni ezt a privát kulcsát 86 00:03:20,000 --> 00:03:25,000 vagy a számok szorzata együtt a létrehozásának folyamatában a nyilvános kulcs. 87 00:03:25,000 --> 00:03:28,000 Mert számításigényes nehéz faktor a szám 88 00:03:28,000 --> 00:03:32,000 használják a nyilvános kulcsot a 2 szám használt privát kulcs 89 00:03:32,000 --> 00:03:36,000 nehéz egy támadó számára, hogy kitaláljuk, a titkos kulcs 90 00:03:36,000 --> 00:03:39,000 hogy lesz szükség dekódolni az üzenetet. 91 00:03:39,000 --> 00:03:43,000 Most menjünk a néhány alacsonyabb szintű részletek RSA. 92 00:03:43,000 --> 00:03:46,000 Nézzük először, hogyan tudunk generálni egy pár kulcs. 93 00:03:46,000 --> 00:03:49,000 Először is, szükségünk lesz 2 prímszám. 94 00:03:49,000 --> 00:03:52,000 Hívjuk ezeket a 2 szám p és q. 95 00:03:52,000 --> 00:03:56,000 Annak érdekében, hogy vegye p és q a gyakorlatban mi lenne pseudorandomly létre 96 00:03:56,000 --> 00:03:59,000 nagy számok majd egy tesztet annak meghatározására e vagy sem 97 00:03:59,000 --> 00:04:02,000 ezek a számok valószínűleg prím. 98 00:04:02,000 --> 00:04:05,000 Meg tudja tartani a véletlen szám generálás, újra és újra 99 00:04:05,000 --> 00:04:08,000 amíg van 2 prímszám, hogy tudjuk használni. 100 00:04:08,000 --> 00:04:15,000 Itt hadd vegye p = 23 és q = 43. 101 00:04:15,000 --> 00:04:19,000 Ne feledje, gyakorlatban, p és q kell sokkal nagyobb számú. 102 00:04:19,000 --> 00:04:22,000 Amennyire tudjuk, minél nagyobb a szám, annál nehezebb 103 00:04:22,000 --> 00:04:25,000 feltörni a titkosított üzenetet. 104 00:04:25,000 --> 00:04:29,000 De ez is drágább titkosítani és visszafejteni üzeneteket. 105 00:04:29,000 --> 00:04:33,000 Ma már gyakran ajánlott, hogy p és q értéke legalább 1024 bit, 106 00:04:33,000 --> 00:04:37,000 amely helyére teszi az egyes számot, több mint 300 decimális számjegy. 107 00:04:37,000 --> 00:04:40,000 De mi lesz felvenni ezeket a kis számokat ezt a példát. 108 00:04:40,000 --> 00:04:43,000 Most majd megszorozzuk p és q együtt, hogy a 3. szám, 109 00:04:43,000 --> 00:04:45,000 amely hívjuk n. 110 00:04:45,000 --> 00:04:55,000 A mi esetünkben, n = 23 * 43, ami = 989. 111 00:04:55,000 --> 00:04:58,000 Van n = 989. 112 00:04:58,000 --> 00:05:02,000 Ezután fogjuk megszorozzuk p - 1 q - 1 113 00:05:02,000 --> 00:05:05,000 így a 4. szám, ami hívjuk m. 114 00:05:05,000 --> 00:05:15,000 A mi esetünkben, m = 22 * ​​42, ami = 924. 115 00:05:15,000 --> 00:05:18,000 Van m = 924. 116 00:05:18,000 --> 00:05:22,000 Most szükségünk lesz egy sor e, amely relatív prím m 117 00:05:22,000 --> 00:05:25,000 és kevesebb, mint m. 118 00:05:25,000 --> 00:05:28,000 Két szám relatív prím, vagy relatív prímek 119 00:05:28,000 --> 00:05:33,000 ha csak pozitív egész szám, amely elválasztja mindkettőjüket egyformán 1 lehet. 120 00:05:33,000 --> 00:05:37,000 Más szóval, a legnagyobb közös osztója e és m 121 00:05:37,000 --> 00:05:39,000 kell lennie 1. 122 00:05:39,000 --> 00:05:44,000 A gyakorlatban ez gyakori e, hogy a prímszám 65537 123 00:05:44,000 --> 00:05:48,000 amennyiben ez a szám nem történik, hogy egy tényező m. 124 00:05:48,000 --> 00:05:53,000 A mi kulcs, akkor vedd e = 5 125 00:05:53,000 --> 00:05:57,000 mivel 5 relatív prím 924. 126 00:05:57,000 --> 00:06:01,000 Végül, szükségünk lesz még egy szám, amely hívjuk d. 127 00:06:01,000 --> 00:06:11,000 F-et meg valami érték, amely megfelel az egyenlet de = 1 (mod m). 128 00:06:11,000 --> 00:06:17,000 Ez a mod m jelenti fogjuk használni egy úgynevezett moduláris aritmetika. 129 00:06:17,000 --> 00:06:21,000 A moduláris aritmetika, ha egy szám lesz magasabb, mint néhány felső határ 130 00:06:21,000 --> 00:06:24,000 majd tekerje vissza mintegy 0-ra. 131 00:06:24,000 --> 00:06:27,000 Egy óra, például a használat moduláris aritmetika. 132 00:06:27,000 --> 00:06:31,000 Egy perc után 1:59, például, 2:00, 133 00:06:31,000 --> 00:06:33,000 nem 1:60. 134 00:06:33,000 --> 00:06:36,000 Abban a pillanatban, kéz köré 0-ra 135 00:06:36,000 --> 00:06:39,000 elérve felső határa 60. 136 00:06:39,000 --> 00:06:46,000 Tehát, azt mondhatjuk, a 60 felel meg 0 (mod 60) 137 00:06:46,000 --> 00:06:57,000 és 125 ekvivalens 65 egyenértékű az 5 (mod 60). 138 00:06:57,000 --> 00:07:02,000 A mi nyilvános kulcs lesz a pár e és n 139 00:07:02,000 --> 00:07:09,000 ahol ebben az esetben az e értéke 5 és n értéke 989. 140 00:07:09,000 --> 00:07:15,000 A privát kulcs lesz a pár d és n, 141 00:07:15,000 --> 00:07:22,000 ami esetünkben: 185 és 989. 142 00:07:22,000 --> 00:07:25,000 Figyeljük meg, hogy az eredeti prímszám p és q nem jelennek meg 143 00:07:25,000 --> 00:07:29,000 bárhol a magán-és nyilvános kulcsokat egyaránt. 144 00:07:29,000 --> 00:07:33,000 Most, hogy megvan a két kulcs, vessünk egy pillantást, hogyan lehet titkosítani 145 00:07:33,000 --> 00:07:36,000 és dekódolja az üzenetet. 146 00:07:36,000 --> 00:07:38,000 Azt akarom, hogy küldjön egy üzenetet, hogy Rob, 147 00:07:38,000 --> 00:07:42,000 így ő lesz az, aki ezt a generál kulcspárt. 148 00:07:42,000 --> 00:07:46,000 Akkor megkérdezem Rob az ő nyilvános kulcs, amelyet fogom használni 149 00:07:46,000 --> 00:07:48,000 titkosítani egy üzenetet küld neki. 150 00:07:48,000 --> 00:07:53,000 Ne feledd, ez teljesen rendben van Rob, hogy ossza meg nyilvános kulcsot velem. 151 00:07:53,000 --> 00:07:56,000 De nem lenne jó, hogy megossza személyes kulcsot. 152 00:07:56,000 --> 00:08:00,000 Nekem nincs ötlete, mi a titkos kulcs. 153 00:08:00,000 --> 00:08:03,000 Mi lehet törni az üzenetet m-ig szét darabokra 154 00:08:03,000 --> 00:08:07,000 összes kisebb, mint n, majd titkosítja minden egyes ilyen darabokat. 155 00:08:07,000 --> 00:08:12,000 Majd titkosítja a húr CS50, amit tudunk szakítani, 4 darabokat, 156 00:08:12,000 --> 00:08:14,000 enként egy levelet. 157 00:08:14,000 --> 00:08:17,000 Annak érdekében, hogy titkosítja az üzenetemet, én kell alakítani 158 00:08:17,000 --> 00:08:20,000 valamilyen numerikus képviselet. 159 00:08:20,000 --> 00:08:25,000 Nézzük összefűzi az ASCII értékek a karakterek üzenetem. 160 00:08:25,000 --> 00:08:28,000 Annak érdekében, hogy egy adott üzenet titkosítása m 161 00:08:28,000 --> 00:08:37,000 Majd ki kell számolnunk c = m a e (mod n). 162 00:08:37,000 --> 00:08:40,000 De m kisebbnek kell lennie, mint n, 163 00:08:40,000 --> 00:08:45,000 vagy pedig a teljes üzenetet nem lehet kifejezni modulo n. 164 00:08:45,000 --> 00:08:49,000 Mi tönkreteheti m több különálló darabokat, amelyek mindegyike kisebb, mint n, 165 00:08:49,000 --> 00:08:52,000 és titkosítani minden egyes ilyen darabokat. 166 00:08:52,000 --> 00:09:03,000 Titkosítása minden ilyen darabokat, megkapjuk c1 = 67 az 5 (mod 989) 167 00:09:03,000 --> 00:09:06,000 amely = 658. 168 00:09:06,000 --> 00:09:15,000 Mert a második darabja már 83 az 5 (mod 989) 169 00:09:15,000 --> 00:09:18,000 ami = 15. 170 00:09:18,000 --> 00:09:26,000 Mert a harmadik darabja már 53 az 5 (mod 989) 171 00:09:26,000 --> 00:09:30,000 ami = 799. 172 00:09:30,000 --> 00:09:39,000 És végül, a mi utolsó darabja már 48 az 5 (mod 989) 173 00:09:39,000 --> 00:09:43,000 ami = 975. 174 00:09:43,000 --> 00:09:48,000 Most küldhetünk át ezeket a titkosított értékek Rob. 175 00:09:54,000 --> 00:09:58,000 Tessék, Rob. 176 00:09:58,000 --> 00:10:01,000 Míg az üzenet a repülés, vessünk egy pillantást 177 00:10:01,000 --> 00:10:07,000 , hogyan van, hogy értéket d. 178 00:10:07,000 --> 00:10:17,000 A szám d teljesítéséhez szükséges 5d = 1 (mod 924). 179 00:10:17,000 --> 00:10:24,000 Ez teszi d a multiplikatív inverzét modulo 5 924. 180 00:10:24,000 --> 00:10:28,000 Adott 2 egész szám, a és b, az euklideszi meghosszabbított algoritmus 181 00:10:28,000 --> 00:10:33,000 lehet használni, hogy megtalálja a legnagyobb közös osztója e 2 egész számok. 182 00:10:33,000 --> 00:10:37,000 Azt is ad nekünk 2 egyéb számok, x és y, 183 00:10:37,000 --> 00:10:47,000 , amelyek megfelelnek a egyenlete ax + by = a legnagyobb közös osztója a és b. 184 00:10:47,000 --> 00:10:49,000 Hogyan segít ez nekünk? 185 00:10:49,000 --> 00:10:52,000 Nos, dugulás e = 5 egy 186 00:10:52,000 --> 00:10:56,000 és m = 924 a b 187 00:10:56,000 --> 00:10:59,000 már tudjuk, hogy ezek a számok relatív prímek. 188 00:10:59,000 --> 00:11:03,000 A legnagyobb közös osztó 1 lehet. 189 00:11:03,000 --> 00:11:09,000 Ez ad nekünk 5x + 924y = 1 190 00:11:09,000 --> 00:11:17,000 vagy 5x = 1 - 924y. 191 00:11:17,000 --> 00:11:22,000 De ha csak az érdekel mindent modulo 924 192 00:11:22,000 --> 00:11:25,000 akkor mi is csepp a - 924y. 193 00:11:25,000 --> 00:11:27,000 Gondolj vissza az órát. 194 00:11:27,000 --> 00:11:31,000 Ha a percmutató van 1-jén, majd pontosan 10 órán át, 195 00:11:31,000 --> 00:11:35,000 tudjuk, hogy a percmutató továbbra is 1-jén. 196 00:11:35,000 --> 00:11:39,000 Itt kezdődik az 1, majd a köré pontosan y alkalommal, 197 00:11:39,000 --> 00:11:41,000 úgyhogy még az 1. 198 00:11:41,000 --> 00:11:49,000 Van 5x = 1 (mod 924). 199 00:11:49,000 --> 00:11:55,000 És itt ez x megegyezik a d kerestünk előtt, 200 00:11:55,000 --> 00:11:58,000 így ha használja a kiterjesztett euklideszi algoritmus 201 00:11:58,000 --> 00:12:04,000 , hogy ezt a számot x, ez a szám is kell használni, mint a mi d. 202 00:12:04,000 --> 00:12:07,000 Most fut a kiterjesztett euklideszi algoritmus a = 5 203 00:12:07,000 --> 00:12:11,000 és b = 924. 204 00:12:11,000 --> 00:12:14,000 Fogjuk használni a módszert nevezett táblázatos módszerrel. 205 00:12:14,000 --> 00:12:21,000 Mi tábla lesz 4 oszlop, x, y, d, és k. 206 00:12:21,000 --> 00:12:23,000 A táblázat indul 2 soros. 207 00:12:23,000 --> 00:12:28,000 Az első sorban van 1, 0, akkor a értéke, ami 5, 208 00:12:28,000 --> 00:12:37,000 és a második sor jelentése 0, 1, és a mi érték B, a 924. 209 00:12:37,000 --> 00:12:40,000 Értékét a 4. oszlop, k, lesz az eredménye 210 00:12:40,000 --> 00:12:45,000 felosztásának értéke d sorban felette az értéke d 211 00:12:45,000 --> 00:12:49,000 ugyanabban a sorban. 212 00:12:49,000 --> 00:12:56,000 Jelenleg 5 osztva 924 0, némi maradék. 213 00:12:56,000 --> 00:12:59,000 Ez azt jelenti, hogy k = 0. 214 00:12:59,000 --> 00:13:05,000 Az érték minden más sejt lesz az értéke a cella 2 sor fölötte 215 00:13:05,000 --> 00:13:09,000 mínusz az értékét a sor felette Times K. 216 00:13:09,000 --> 00:13:11,000 Kezdjük ad a 3. sorban. 217 00:13:11,000 --> 00:13:19,000 Van 5-924 * 0 = 5. 218 00:13:19,000 --> 00:13:25,000 Ezután már 0-1 * 0, amely 0 219 00:13:25,000 --> 00:13:30,000 és 1 - 0 * 0, amely 1. 220 00:13:30,000 --> 00:13:33,000 Nem is rossz, úgyhogy menjünk tovább a következő sorra. 221 00:13:33,000 --> 00:13:36,000 Először is szükségünk van értéke a k. 222 00:13:36,000 --> 00:13:43,000 924 osztva 5 = 184 némi maradék, 223 00:13:43,000 --> 00:13:46,000 így a értéke k 184. 224 00:13:46,000 --> 00:13:54,000 Most 924-5 * 184 = 4. 225 00:13:54,000 --> 00:14:05,000 1-0 * 184 jelentése 1 és 0 - 1 * 184 -184. 226 00:14:05,000 --> 00:14:07,000 Rendben, lássuk a következő sorban. 227 00:14:07,000 --> 00:14:10,000 A k értéke 1 lesz, mert 228 00:14:10,000 --> 00:14:15,000 5 osztva 4 = 1 némi maradék. 229 00:14:15,000 --> 00:14:17,000 Nézzük, töltse ki a többi oszlop. 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 És 1-184 * 1 185. 233 00:14:33,000 --> 00:14:35,000 Lássuk, mi a következő k értéke lenne. 234 00:14:35,000 --> 00:14:40,000 Nos, úgy néz ki, van 4 osztva 1, amely 4. 235 00:14:40,000 --> 00:14:43,000 Ebben az esetben, ha vagyunk elosztjuk 1 ilyen hogy k egyenlő 236 00:14:43,000 --> 00:14:50,000 értéke ad a fenti sorban azt jelenti, hogy mi történik a mi algoritmus. 237 00:14:50,000 --> 00:14:58,000 Láthatjuk, hogy itt van x = 185 és y = -1 az utolsó sorban. 238 00:14:58,000 --> 00:15:00,000 Nézzük most jön vissza az eredeti cél. 239 00:15:00,000 --> 00:15:04,000 Azt mondtuk, hogy a x értékét eredményeként futó ezen algoritmus 240 00:15:04,000 --> 00:15:08,000 lenne a multiplikatív inverzét egy (mod b). 241 00:15:08,000 --> 00:15:15,000 Ez azt jelenti, hogy 185 a multiplikatív inverze 5 (mod 924) 242 00:15:15,000 --> 00:15:20,000 ami azt jelenti, hogy értéke 185 d. 243 00:15:20,000 --> 00:15:23,000 Az a tény, hogy a d = 1-ben az utolsó sorban 244 00:15:23,000 --> 00:15:26,000 ellenőrzi, hogy e volt, a relatív prímek m. 245 00:15:26,000 --> 00:15:30,000 Ha ez nem 1, akkor mi lenne, hogy válasszon egy új e. 246 00:15:30,000 --> 00:15:33,000 Most nézzük meg, ha Rob megkapta az üzenetem. 247 00:15:33,000 --> 00:15:35,000 Ha valaki küld nekem egy titkosított üzenet 248 00:15:35,000 --> 00:15:38,000 amíg én megtartottam az én privát kulcs egy titkos 249 00:15:38,000 --> 00:15:41,000 Én vagyok az egyetlen, aki tudja dekódolni az üzenetet. 250 00:15:41,000 --> 00:15:46,000 Visszafejteni egy darab c tudok számítani az eredeti üzenet 251 00:15:46,000 --> 00:15:53,000 egyenlő a csonkot-D teljesítmény (mod n). 252 00:15:53,000 --> 00:15:57,000 Ne feledje, hogy d és n értéke az én privát kulcs. 253 00:15:57,000 --> 00:16:01,000 Ahhoz, hogy a teljes üzenetet saját darabokat is hírbe egyes chunk 254 00:16:01,000 --> 00:16:04,000 és összefűzi az eredményeket. 255 00:16:04,000 --> 00:16:08,000 Pontosan mennyire biztonságos az RSA? 256 00:16:08,000 --> 00:16:10,000 Az igazság az, hogy nem tudom. 257 00:16:10,000 --> 00:16:14,000 Biztonság alapja, hogy mennyi ideig fog tartani, hogy a támadó kiváló üzenet 258 00:16:14,000 --> 00:16:16,000 titkosítja RSA. 259 00:16:16,000 --> 00:16:19,000 Ne feledje, hogy a támadó hozzáférhet a nyilvános kulcs, 260 00:16:19,000 --> 00:16:21,000 amely mind az E és n. 261 00:16:21,000 --> 00:16:26,000 Ha a támadónak sikerül faktor n bele 2 prím, p és q, 262 00:16:26,000 --> 00:16:30,000 akkor tudta kiszámítani d a kiterjesztett euklideszi algoritmus. 263 00:16:30,000 --> 00:16:35,000 Ez ad neki a privát kulcs, amelyeket fel lehet használni, hogy dekódolni a üzenetet. 264 00:16:35,000 --> 00:16:38,000 De milyen gyorsan tudunk vennünk egész? 265 00:16:38,000 --> 00:16:41,000 Még egyszer, nem tudjuk. 266 00:16:41,000 --> 00:16:43,000 Senki sem talált egy gyors módja, hogy, 267 00:16:43,000 --> 00:16:46,000 ami azt jelenti, hogy meghatározott, nagy elég n- 268 00:16:46,000 --> 00:16:49,000 lenne szükség a támadónak irreálisan hosszú 269 00:16:49,000 --> 00:16:51,000 A faktor a számot. 270 00:16:51,000 --> 00:16:54,000 Ha valaki mutatott gyors módja a faktoring egészek 271 00:16:54,000 --> 00:16:57,000 RSA lenne törve. 272 00:16:57,000 --> 00:17:01,000 De még ha egész faktorizációs eredendően lassú 273 00:17:01,000 --> 00:17:04,000 Az RSA algoritmus még mindig van néhány hibája, hogy 274 00:17:04,000 --> 00:17:07,000 , amely lehetővé teszi az egyszerű dekódolás az üzeneteket. 275 00:17:07,000 --> 00:17:10,000 Senki sem talált, és kiderült, egy ilyen hiba még, 276 00:17:10,000 --> 00:17:12,000 de ez nem jelenti azt, nem létezik. 277 00:17:12,000 --> 00:17:17,000 Elméletileg, valaki lehet ott olvasni az összes adatot titkosítja RSA. 278 00:17:17,000 --> 00:17:19,000 Van még egy kis adatvédelmi kérdés. 279 00:17:19,000 --> 00:17:23,000 Ha Tommy titkosít néhány üzenetet a nyilvános kulcs 280 00:17:23,000 --> 00:17:26,000 és a támadó titkosítja ugyanazt az üzenetet a saját nyilvános kulcsú 281 00:17:26,000 --> 00:17:29,000 a támadó fogja látni, hogy a 2 üzenet azonosak 282 00:17:29,000 --> 00:17:32,000 és így tudom, mi Tommy titkosítva. 283 00:17:32,000 --> 00:17:36,000 Annak érdekében, hogy ezt, az üzenetek általában párnázott véletlenszerű bit 284 00:17:36,000 --> 00:17:39,000 mielőtt kódolják, ezért az ugyanazt az üzenetet titkosított 285 00:17:39,000 --> 00:17:44,000 többször fogja eltérő amíg a padding az üzenet más. 286 00:17:44,000 --> 00:17:47,000 De ne felejtsd el, hogy hogyan kell megosztani üzeneteket darabokat 287 00:17:47,000 --> 00:17:50,000 úgy, hogy minden egyes csonk kisebb, mint n? 288 00:17:50,000 --> 00:17:52,000 Padding a darabokat azt jelenti, hogy lehet, hogy szét a dolgokat 289 00:17:52,000 --> 00:17:57,000 a még darabokat, mert a párnázott csonk kisebbnek kell lennie, mint a n. 290 00:17:57,000 --> 00:18:01,000 Titkosítás és visszafejtés viszonylag drága az RSA, 291 00:18:01,000 --> 00:18:05,000 és így kelljen szakítani egy üzenet a sok darabokat is nagyon költséges. 292 00:18:05,000 --> 00:18:09,000 Ha nagy mennyiségű adatot kell titkosítható és visszafejthető 293 00:18:09,000 --> 00:18:12,000 tudjuk kombinálni előnyeit szimmetrikus kulcsú 294 00:18:12,000 --> 00:18:16,000 azokkal RSA, hogy a biztonság és a hatékonyság. 295 00:18:16,000 --> 00:18:18,000 Bár mi nem megyünk bele itt, 296 00:18:18,000 --> 00:18:23,000 AES szimmetrikus kulcsú algoritmus, mint a Vigenère és Caesar titkosítást 297 00:18:23,000 --> 00:18:25,000 de sokkal nehezebb feltörni. 298 00:18:25,000 --> 00:18:30,000 Természetesen nem tudjuk használni AES megállapítása nélkül egy megosztott titkos kulcs 299 00:18:30,000 --> 00:18:34,000 a 2 rendszer, és azt látta, hogy a probléma, hogy mielőtt. 300 00:18:34,000 --> 00:18:40,000 De most már tudjuk használni RSA megállapítani a megosztott titkos kulcsot a 2 rendszer. 301 00:18:40,000 --> 00:18:43,000 Hívjuk a számítógép az adatokat küldő a feladó 302 00:18:43,000 --> 00:18:46,000 és a számítógép az adatokat fogadó a kagylót. 303 00:18:46,000 --> 00:18:49,000 A vevő egy RSA kulcspár, és elküldi 304 00:18:49,000 --> 00:18:51,000 a nyilvános kulcsot a feladónak. 305 00:18:51,000 --> 00:18:54,000 A feladó generál egy AES kulcsot, 306 00:18:54,000 --> 00:18:57,000 titkosítja azt a vevő RSA nyilvános kulcs, 307 00:18:57,000 --> 00:19:00,000 és elküldi az AES kulcsot a vevő. 308 00:19:00,000 --> 00:19:04,000 A vevő dekódolja az üzenetet a RSA privát kulcs. 309 00:19:04,000 --> 00:19:09,000 Mind a küldő és a vevő most van egy közös AES kulcs között. 310 00:19:09,000 --> 00:19:14,000 AES, ami sokkal gyorsabb, mint a titkosítás és a visszafejtés RSA, 311 00:19:14,000 --> 00:19:18,000 most titkosításához használt nagy mennyiségű adat, és elküldi őket, hogy a vevő, 312 00:19:18,000 --> 00:19:21,000 aki képes visszafejteni segítségével ugyanazt a kulcsot. 313 00:19:21,000 --> 00:19:26,000 AES, ami sokkal gyorsabb, mint a titkosítás és a visszafejtés RSA, 314 00:19:26,000 --> 00:19:30,000 most titkosításához használt nagy mennyiségű adat, és elküldi őket, hogy a vevő, 315 00:19:30,000 --> 00:19:32,000 aki képes visszafejteni segítségével ugyanazt a kulcsot. 316 00:19:32,000 --> 00:19:36,000 Csak szükség RSA át a megosztott kulcsot. 317 00:19:36,000 --> 00:19:40,000 Már nem kell használni RSA egyáltalán. 318 00:19:40,000 --> 00:19:46,000 Úgy néz ki, kaptam egy üzenetet. 319 00:19:46,000 --> 00:19:49,000 Nem számít, ha valaki olvassa el, mi van a papíron repülőgépen, mielőtt elkapta 320 00:19:49,000 --> 00:19:55,000 mert én vagyok az egyetlen, akinek a privát kulcs. 321 00:19:55,000 --> 00:19:57,000 Nézzük dekódolja egyes darabokat az üzenetben. 322 00:19:57,000 --> 00:20:07,000 Az első darab, 658, emeljük a d hatalom, amely 185, 323 00:20:07,000 --> 00:20:18,000 mod n, ami 989, egyenlő 67, 324 00:20:18,000 --> 00:20:24,000 amely a C betű ASCII. 325 00:20:24,000 --> 00:20:31,000 Most rá a második darab. 326 00:20:31,000 --> 00:20:35,000 A második darab van értéke 15, 327 00:20:35,000 --> 00:20:41,000 amelyhez fel a 185. hatalom, 328 00:20:41,000 --> 00:20:51,000 mod 989, és ez egyenlő 83 329 00:20:51,000 --> 00:20:57,000 amely a levél S ASCII. 330 00:20:57,000 --> 00:21:06,000 Most, a harmadik darabja, amelynek értéke 799, emeljük a 185, 331 00:21:06,000 --> 00:21:17,000 mod 989, és ez egyenlő 53, 332 00:21:17,000 --> 00:21:24,000 amelynek az értéke a karakter 5 ASCII. 333 00:21:24,000 --> 00:21:30,000 Most az utolsó darabja, amelynek értéke 975, 334 00:21:30,000 --> 00:21:41,000 emeljük a 185, mod 989, 335 00:21:41,000 --> 00:21:51,000 és ez egyenlő 48, amely az értéke a karakter 0 ASCII. 336 00:21:51,000 --> 00:21:57,000 A nevem Rob Bowden, és ez CS50. 337 00:21:57,000 --> 00:22:00,000 [CS50.TV] 338 00:22:06,000 --> 00:22:08,000 RSA egyáltalán. 339 00:22:08,000 --> 00:22:14,000 RSA egyáltalán. [Nevetés] 340 00:22:14,000 --> 00:22:17,000 Egyáltalán.