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] [Harvardin yliopisto] 3 00:00:04,000 --> 00:00:07,000 [Tämä on CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:11,000 Katsotaanpa katsomaan RSA, laajalti käytetty algoritmi salaamalla tietoja. 5 00:00:11,000 --> 00:00:16,000 Salausalgoritmeja kuten Caesar ja Vigenère ciphers eivät ole kovin turvallinen. 6 00:00:16,000 --> 00:00:20,000 Kanssa Caesar cipher, hyökkääjä tarvitsee vain kokeilla 25 eri avaimet 7 00:00:20,000 --> 00:00:22,000 saada viestin pelkkänä tekstinä. 8 00:00:22,000 --> 00:00:25,000 Vaikka Vigenère cipher on turvallisempi kuin Caesar cipher 9 00:00:25,000 --> 00:00:28,000 koska suurempi hakualue avaimia, kun hyökkääjä 10 00:00:28,000 --> 00:00:30,000 tuntee avaimen pituus on Vigenère salakirjoituksen, 11 00:00:30,000 --> 00:00:34,000 mikä voidaan määrittää kautta analyysi kuvioita salattu teksti, 12 00:00:34,000 --> 00:00:38,000 Vigenère cipher ei ole niin paljon turvallisempi kuin Caesar cipher. 13 00:00:38,000 --> 00:00:42,000 RSA, toisaalta, ei ole alttiina hyökkäyksille kuin tämä. 14 00:00:42,000 --> 00:00:45,000 Caesar cipher ja Vigenère salaus käyttävät samaa avainta 15 00:00:45,000 --> 00:00:47,000 sekä salata ja purkaa viestin. 16 00:00:47,000 --> 00:00:51,000 Tämä ominaisuus tekee näistä ciphers symmetrisen avaimen algoritmit. 17 00:00:51,000 --> 00:00:54,000 Perustavanlaatuinen ongelma symmetrisen avaimen algoritmit 18 00:00:54,000 --> 00:00:57,000 on, että ne nojaavat yhden salauksen ja lähettää viestin 19 00:00:57,000 --> 00:00:59,000 ja yksi vastaanottava ja purkaa viestin 20 00:00:59,000 --> 00:01:03,000 pitänyt jo sopineet etukäteen keskeisistä ne molemmat käyttävät. 21 00:01:03,000 --> 00:01:06,000 Mutta meillä on hieman käynnistyksen ongelma. 22 00:01:06,000 --> 00:01:10,000 Miten 2 tietokonetta, jotka haluavat kommunikoida perustaa salainen avain niiden välillä? 23 00:01:10,000 --> 00:01:16,000 Jos avain on salainen, niin meidän tapa salata ja purkaa avain. 24 00:01:16,000 --> 00:01:18,000 Jos kaikki meillä on symmetrinen avaimen salausta 25 00:01:18,000 --> 00:01:21,000 Sitten olemme vain palata samaan ongelmaan. 26 00:01:21,000 --> 00:01:25,000 RSA, toisaalta, käyttää kahta avainta, 27 00:01:25,000 --> 00:01:28,000 yksi salaus ja toinen salauksen. 28 00:01:28,000 --> 00:01:32,000 Yksi on nimeltään julkisen avaimen, ja toinen on yksityinen avain. 29 00:01:32,000 --> 00:01:34,000 Julkista avainta käytetään viestien salaamiseen. 30 00:01:34,000 --> 00:01:38,000 Kuten ehkä arvata sen nimen, voimme jakaa julkisen avaimen 31 00:01:38,000 --> 00:01:43,000 kukaan haluamme vaarantamatta turvallisuutta salatun viestin. 32 00:01:43,000 --> 00:01:45,000 Viestit salataan julkisen avaimen 33 00:01:45,000 --> 00:01:49,000 salaus voidaan purkaa vain sen vastaavan yksityisen avaimen. 34 00:01:49,000 --> 00:01:53,000 Vaikka voit jakaa julkisen avaimen, sinun tulisi aina pitää yksityisen avaimen salainen. 61 00:01:55,000 --> 00:01:58,000 ja ainoastaan ​​yksityinen avain voidaan purkaa viestejä 62 00:01:58,000 --> 00:02:02,000 jos 2 käyttäjät haluavat lähettää viestejä salattu RSA 63 00:02:02,000 --> 00:02:07,000 edestakaisin molempien käyttäjät tarvitsevat oman julkisen ja yksityisen avaimen parin. 64 00:02:07,000 --> 00:02:10,000 Viestejä käyttäjältä 1 käyttäjälle 2 65 00:02:10,000 --> 00:02:15,000 käyttää ainoastaan ​​käyttäjän 2: n avainpari, ja viestejä käyttäjältä 2 käyttäjä 1 66 00:02:15,000 --> 00:02:17,000 käyttää vain käyttäjän 1: n avainpari. 67 00:02:17,000 --> 00:02:21,000 Se seikka, että on olemassa 2 erillisiä näppäimiä salata ja purkaa viestien 68 00:02:21,000 --> 00:02:24,000 tekee RSA epäsymmetrisen avaimen algoritmilla. 69 00:02:24,000 --> 00:02:28,000 Meidän ei tarvitse salata julkisen avaimen, jotta voit lähettää sen toiseen tietokoneeseen 70 00:02:28,000 --> 00:02:31,000 koska avain on julkinen muutenkin. 71 00:02:31,000 --> 00:02:33,000 Tämä tarkoittaa, että RSA ei ole sama käynnistys ongelma 72 00:02:33,000 --> 00:02:36,000 kuten symmetrisen avaimen algoritmit. 73 00:02:36,000 --> 00:02:39,000 Joten jos haluan lähettää viestin RSA salausta 74 00:02:39,000 --> 00:02:42,000 ryöstää, minä ensin Rob julkisen avaimen. 75 00:02:42,000 --> 00:02:47,000 Voit luoda avainpari, Rob tarvitsee valita 2 isoa alkulukuja. 76 00:02:47,000 --> 00:02:50,000 Nämä numerot käyttää sekä julkisia ja yksityisiä avaimia, 77 00:02:50,000 --> 00:02:54,000 mutta julkisen avaimen käyttää vain tuotteen näiden 2 numerot, 78 00:02:54,000 --> 00:02:56,000 ei numerot itse. 79 00:02:56,000 --> 00:02:59,000 Kun olen salataan viestin Rob julkisen avaimen 80 00:02:59,000 --> 00:03:01,000 Voin lähettää viestin Rob. 81 00:03:01,000 --> 00:03:05,000 Saat tietokoneen, factoring numeroita on vaikea ongelma. 82 00:03:05,000 --> 00:03:09,000 Julkinen avain, muista, käytetty tuote 2 alkuluvut. 83 00:03:09,000 --> 00:03:12,000 Tämä tuote on sitten vain 2 tekijöitä, 84 00:03:12,000 --> 00:03:16,000 jotka sattuvat olemaan numeroita, jotka muodostavat yksityisen avaimen. 85 00:03:16,000 --> 00:03:20,000 Jotta viestin salausta, RSA käyttää tätä yksityistä avainta 86 00:03:20,000 --> 00:03:25,000 tai numerot kerrotaan yhdessä luomassa julkisen avaimen. 87 00:03:25,000 --> 00:03:28,000 Koska se on laskennallisesti vaikeaa tekijä numero 88 00:03:28,000 --> 00:03:32,000 käytetään julkisen avaimen 2 numeroita käytetään yksityisen avaimen 89 00:03:32,000 --> 00:03:36,000 se on vaikeaa hyökkääjä selvittää yksityisen avaimen 90 00:03:36,000 --> 00:03:39,000 että on tarpeen purkaa viestin. 91 00:03:39,000 --> 00:03:43,000 Mennäänpä johonkin alhaisempi yksityiskohtia RSA. 92 00:03:43,000 --> 00:03:46,000 Katsotaanpa ensin katsoa, ​​miten voimme luoda avainpari. 93 00:03:46,000 --> 00:03:49,000 Ensinnäkin, me tarvitsemme 2 alkulukuja. 94 00:03:49,000 --> 00:03:52,000 Me kutsumme näitä 2 numeroiden p ja q. 95 00:03:52,000 --> 00:03:56,000 Jotta voit noutaa p ja q, käytännössä olisimme näennäissatunnaisesti tuottaa 96 00:03:56,000 --> 00:03:59,000 suuria määriä ja käyttää sitten testi sille, onko vai ei 97 00:03:59,000 --> 00:04:02,000 nämä luvut ovat todennäköisesti prime. 98 00:04:02,000 --> 00:04:05,000 Voimme pitää tuottaa satunnaisia ​​numeroita uudestaan ​​ja uudestaan 99 00:04:05,000 --> 00:04:08,000 kunnes meillä on 2 alkulukuja, että voimme käyttää. 100 00:04:08,000 --> 00:04:15,000 Täällä mennään valita p = 23 ja q = 43. 101 00:04:15,000 --> 00:04:19,000 Muista, käytännössä, p ja q pitäisi olla paljon suurempia määriä. 102 00:04:19,000 --> 00:04:22,000 Sikäli kuin tiedämme, suuremmat numerot, sitä vaikeampaa on 103 00:04:22,000 --> 00:04:25,000 murtaa salatun viestin. 104 00:04:25,000 --> 00:04:29,000 Mutta se on myös kalliimpaa salata ja purkaa viestejä. 105 00:04:29,000 --> 00:04:33,000 Nykyään se on usein suositeltavaa, että p ja q ovat vähintään 1024 bittiä, 106 00:04:33,000 --> 00:04:37,000 mikä asettaa kunkin numeron yli 300 desimaalia. 107 00:04:37,000 --> 00:04:40,000 Mutta me valita näiden pienien tässä esimerkissä. 108 00:04:40,000 --> 00:04:43,000 Nyt me kerrotaan p ja q yhdessä saada kolmas numero, 109 00:04:43,000 --> 00:04:45,000 jonka me kutsumme n. 110 00:04:45,000 --> 00:04:55,000 Meidän tapauksessamme, n = 23 * 43, joka = 989. 111 00:04:55,000 --> 00:04:58,000 Olemme N = 989. 112 00:04:58,000 --> 00:05:02,000 Seuraavaksi me kerrotaan p - 1, q - 1 113 00:05:02,000 --> 00:05:05,000 saada neljäs numero, joka soitamme m.. 114 00:05:05,000 --> 00:05:15,000 Meidän tapauksessamme, m = 22 * ​​42, joka = 924. 115 00:05:15,000 --> 00:05:18,000 Meillä on m = 924. 116 00:05:18,000 --> 00:05:22,000 Nyt me tarvitsemme useita e, joka on suhteellisen prime M 117 00:05:22,000 --> 00:05:25,000 ja vähemmän kuin m. 118 00:05:25,000 --> 00:05:28,000 Kaksi numeroa ovat suhteellisen prime tai keskenään jaottomia 119 00:05:28,000 --> 00:05:33,000 jos ainoa positiivinen kokonaisluku, joka jakaa molemmat tasaisesti on 1. 120 00:05:33,000 --> 00:05:37,000 Toisin sanoen suurin yhteinen tekijä e: n ja m: 121 00:05:37,000 --> 00:05:39,000 on oltava 1. 122 00:05:39,000 --> 00:05:44,000 Käytännössä on yleistä, että e on alkuluku 65537 123 00:05:44,000 --> 00:05:48,000 niin kauan kuin tämä määrä ei tapahdu olla tekijä, m. 124 00:05:48,000 --> 00:05:53,000 Meidän avaimet, me valita e = 5 125 00:05:53,000 --> 00:05:57,000 koska 5 on suhteellisen prime on 924. 126 00:05:57,000 --> 00:06:01,000 Lopuksi, me tarvitsemme yhden numero, jonka me kutsumme d. 127 00:06:01,000 --> 00:06:11,000 D on oltava jokin arvo, joka täyttää yhtälön de = 1 (mod m). 128 00:06:11,000 --> 00:06:17,000 Tämä mod m merkitsee käytämme jotain kutsutaan modulaarinen aritmeettinen. 129 00:06:17,000 --> 00:06:21,000 Vuonna modulaarinen aritmeettinen, kun joukko saa ylittää joidenkin yläraja 130 00:06:21,000 --> 00:06:24,000 se kääri takaisin noin 0. 131 00:06:24,000 --> 00:06:27,000 Kello, esimerkiksi käyttää modulaarinen aritmetiikka. 132 00:06:27,000 --> 00:06:31,000 Yksi minuutti sen jälkeen 1:59, esimerkiksi, on 02:00, 133 00:06:31,000 --> 00:06:33,000 ei 1:60. 134 00:06:33,000 --> 00:06:36,000 Minuuttiosoitin on kiedottu 0 135 00:06:36,000 --> 00:06:39,000 päästyään yläraja 60. 136 00:06:39,000 --> 00:06:46,000 Niin, voimme sanoa, 60 vastaa 0 (mod 60) 137 00:06:46,000 --> 00:06:57,000 ja 125 vastaa 65 vastaa 5 (mod 60). 138 00:06:57,000 --> 00:07:02,000 Meidän julkinen avain tulee olemaan pari e ja n 139 00:07:02,000 --> 00:07:09,000 jossa tässä tapauksessa e on 5 ja n on 989. 140 00:07:09,000 --> 00:07:15,000 Meidän yksityinen avain on pari d ja n, 141 00:07:15,000 --> 00:07:22,000 joka tässä tapauksessa on 185 ja 989. 142 00:07:22,000 --> 00:07:25,000 Huomaa, että alkuperäinen alkulukuja p ja q eivät näy 143 00:07:25,000 --> 00:07:29,000 missä meidän yksityisten tai julkisten avaimia. 144 00:07:29,000 --> 00:07:33,000 Nyt meillä on avainpari, katsotaanpa katsomaan miten voimme salata 145 00:07:33,000 --> 00:07:36,000 ja purkaa viestin. 146 00:07:36,000 --> 00:07:38,000 Haluan lähettää viestin Rob, 147 00:07:38,000 --> 00:07:42,000 joten hän tulee olemaan yksi tuottaa tämän avainparin. 148 00:07:42,000 --> 00:07:46,000 Sitten kysyn Rob hänen julkisen avaimen, jonka minä käytän 149 00:07:46,000 --> 00:07:48,000 salata viestin lähettää hänelle. 150 00:07:48,000 --> 00:07:53,000 Muista, se on täysin kunnossa Rob jakaa hänen julkisen avaimen minulle. 151 00:07:53,000 --> 00:07:56,000 Mutta se ei olisi kunnossa jakaa hänen yksityinen avain. 152 00:07:56,000 --> 00:08:00,000 Minulla ei ole mitään käsitystä siitä, mitä hänen yksityinen avain on. 153 00:08:00,000 --> 00:08:03,000 Voimme rikkoa meidän viestimme m useiksi paloiksi 154 00:08:03,000 --> 00:08:07,000 kaikki pienempi kuin n, ja sitten salata kunkin paloina. 155 00:08:07,000 --> 00:08:12,000 Me salaa merkkijono CS50, jonka voimme hajota 4 paloina, 156 00:08:12,000 --> 00:08:14,000 yksi per kirjain. 157 00:08:14,000 --> 00:08:17,000 Jotta salata minun viestini, minun täytyy muuntaa se 158 00:08:17,000 --> 00:08:20,000 jonkinlainen numeerinen edustus. 159 00:08:20,000 --> 00:08:25,000 Katsotaanpa liität ASCII arvot merkkiä viestini. 160 00:08:25,000 --> 00:08:28,000 Jotta salata tietty viesti m 161 00:08:28,000 --> 00:08:37,000 Minun täytyy laskea c = m e (mod n). 162 00:08:37,000 --> 00:08:40,000 Mutta m on oltava pienempi kuin n, 163 00:08:40,000 --> 00:08:45,000 tai sitten koko viesti ei voida ilmaista modulo n. 164 00:08:45,000 --> 00:08:49,000 Voimme murtaa m useiksi paloina, jotka kaikki ovat pienempiä kuin n, 165 00:08:49,000 --> 00:08:52,000 ja salata kunkin paloina. 166 00:08:52,000 --> 00:09:03,000 Salaaminen jokainen paloina, saamme c1 = 67 5 (mod 989) 167 00:09:03,000 --> 00:09:06,000 mikä = 658. 168 00:09:06,000 --> 00:09:15,000 Meidän toinen murikka meillä 83 5 (mod 989) 169 00:09:15,000 --> 00:09:18,000 jossa = 15. 170 00:09:18,000 --> 00:09:26,000 Sillä meidän kolmas murikka meillä 53 5 (mod 989) 171 00:09:26,000 --> 00:09:30,000 mikä = 799. 172 00:09:30,000 --> 00:09:39,000 Ja lopuksi, meidän viimeinen murikka meillä 48 5 (mod 989) 173 00:09:39,000 --> 00:09:43,000 mikä = 975. 174 00:09:43,000 --> 00:09:48,000 Nyt voimme lähettää näinä salatun arvot Rob. 175 00:09:54,000 --> 00:09:58,000 Tässä, Rob. 176 00:09:58,000 --> 00:10:01,000 Vaikka meidän viestimme on lento, mennään katsomaan uudelleen 177 00:10:01,000 --> 00:10:07,000 miten saimme tämän arvon d. 178 00:10:07,000 --> 00:10:17,000 Meidän numero d täyttämiseksi tarvittavat 5D = 1 (mod 924). 179 00:10:17,000 --> 00:10:24,000 Tämä tekee d kerrottava käänteisluku 5 modulo 924. 180 00:10:24,000 --> 00:10:28,000 Annettu 2 kokonaislukuja, a ja b, laajennetun euklidisen algoritmin 181 00:10:28,000 --> 00:10:33,000 voidaan käyttää löytämään suurin yhteinen tekijä näiden 2 kokonaislukuja. 182 00:10:33,000 --> 00:10:37,000 Se myös antaa meille 2 muut numerot, x ja y, 183 00:10:37,000 --> 00:10:47,000 , jotka täyttävät yhtälön ax + by = suurin yhteinen tekijä a ja b. 184 00:10:47,000 --> 00:10:49,000 Miten tämä auttaa meitä? 185 00:10:49,000 --> 00:10:52,000 No, kytkemällä 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 jo tiedämme, että nämä luvut ovat keskenään jaottomia. 188 00:10:59,000 --> 00:11:03,000 Heidän suurin yhteinen tekijä on 1. 189 00:11:03,000 --> 00:11:09,000 Tämä antaa meille 5x + 924y = 1 190 00:11:09,000 --> 00:11:17,000 tai 5x = 1 - 924y. 191 00:11:17,000 --> 00:11:22,000 Mutta jos me vain välitä kaikesta modulo 924 192 00:11:22,000 --> 00:11:25,000 voimme pudota - 924y. 193 00:11:25,000 --> 00:11:27,000 Muistele kelloa. 194 00:11:27,000 --> 00:11:31,000 Jos minuutti käsi on 1 ja sitten tasan 10 tunnin kuluessa, 195 00:11:31,000 --> 00:11:35,000 tiedämme minuutti käsi yhä olla 1. 196 00:11:35,000 --> 00:11:39,000 Täällä alkaa klo 1 ja sitten kietoa tarkalleen y kertaa, 197 00:11:39,000 --> 00:11:41,000 niin me vielä olla 1. 198 00:11:41,000 --> 00:11:49,000 Meillä on 5x = 1 (mod 924). 199 00:11:49,000 --> 00:11:55,000 Ja tässä tämä x on sama kuin d odotimme ennen, 200 00:11:55,000 --> 00:11:58,000 joten jos käytämme laajennetun Eukleideen algoritmi 201 00:11:58,000 --> 00:12:04,000 saat tämän määrän x, joka on määrä meidän pitäisi käyttää meidän d. 202 00:12:04,000 --> 00:12:07,000 Nyt ajaa laajennettu Eukleideen algoritmi = 5 203 00:12:07,000 --> 00:12:11,000 ja b = 924. 204 00:12:11,000 --> 00:12:14,000 Käytämme menetelmää, jota kutsutaan taulukossa menetelmällä. 205 00:12:14,000 --> 00:12:21,000 Meidän pöytä on 4 sarakkeet, x, y, d, ja k. 206 00:12:21,000 --> 00:12:23,000 Meidän pöytä alkaa 2 krs. 207 00:12:23,000 --> 00:12:28,000 Ensimmäisen rivin meillä on 1, 0, silloin arvo, joka on 5, 208 00:12:28,000 --> 00:12:37,000 ja meidän toinen rivi on 0, 1, ja meidän arvo b, joka on 924. 209 00:12:37,000 --> 00:12:40,000 Arvo neljäs sarake, k, on seurausta 210 00:12:40,000 --> 00:12:45,000 jakamalla arvo d rivin yläpuolella sen arvo d 211 00:12:45,000 --> 00:12:49,000 samalla rivillä. 212 00:12:49,000 --> 00:12:56,000 Meillä on 5 jaettuna 924 on 0 joidenkin loput. 213 00:12:56,000 --> 00:12:59,000 Tämä tarkoittaa, että meillä on k = 0. 214 00:12:59,000 --> 00:13:05,000 Nyt arvo joka toinen solu tulee olemaan arvo solun 2 riviä sen yläpuolella 215 00:13:05,000 --> 00:13:09,000 miinus arvo rivin yläpuolella kertaa k. 216 00:13:09,000 --> 00:13:11,000 Aloitetaan d 3. krs. 217 00:13:11,000 --> 00:13:19,000 Meillä on 5-924 * 0 = 5. 218 00:13:19,000 --> 00:13:25,000 Seuraavaksi meillä on 0-1 * 0 on 0 219 00:13:25,000 --> 00:13:30,000 ja 1-0 * 0, joka on 1. 220 00:13:30,000 --> 00:13:33,000 Ei liian paha, joten katsotaanpa siirtyä seuraavalle riville. 221 00:13:33,000 --> 00:13:36,000 Ensin meidän arvomme k. 222 00:13:36,000 --> 00:13:43,000 924 jaettuna 5 = 184 joidenkin loput 223 00:13:43,000 --> 00:13:46,000 joten meidän arvo k 184. 224 00:13:46,000 --> 00:13:54,000 Nyt 924-5 * 184 = 4. 225 00:13:54,000 --> 00:14:05,000 1-0 * 184 on 1 ja 0-1 * 184 on -184. 226 00:14:05,000 --> 00:14:07,000 Selvä, tehdään seuraavan rivin. 227 00:14:07,000 --> 00:14:10,000 Meidän k: n arvo on 1, koska 228 00:14:10,000 --> 00:14:15,000 5 jaettuna 4 = 1 joitakin jäljellä. 229 00:14:15,000 --> 00:14:17,000 Katsotaanpa täyttää muihin sarakkeisiin. 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 185. 233 00:14:33,000 --> 00:14:35,000 Katsotaan mitä seuraavaksi k arvo olisi. 234 00:14:35,000 --> 00:14:40,000 No, näyttää siltä, ​​meillä on 4 jaettuna 1, joka on 4. 235 00:14:40,000 --> 00:14:43,000 Tässä tapauksessa olemme jakamalla 1 siten, että k on yhtä kuin 236 00:14:43,000 --> 00:14:50,000 d: n arvo edellä rivin tarkoittaa sitä, että olemme tehneet kanssa algoritmi. 237 00:14:50,000 --> 00:14:58,000 Voimme nähdä, tässä, että meillä on x = 185 ja y = -1 viimeisellä rivillä. 238 00:14:58,000 --> 00:15:00,000 Katsotaanpa nyt palata meidän alkuperäinen tavoite. 239 00:15:00,000 --> 00:15:04,000 Sanoimme, että arvo x seurauksena käynnissä tämän algoritmin 240 00:15:04,000 --> 00:15:08,000 olisi kerrottava käänteisluku (mod b). 241 00:15:08,000 --> 00:15:15,000 Tämä tarkoittaa, että 185 on kerrottava käänteisluku 5 (mod 924) 242 00:15:15,000 --> 00:15:20,000 mikä tarkoittaa, että meillä on arvo 185 d. 243 00:15:20,000 --> 00:15:23,000 Siitä, että d = 1 viimeisellä rivillä 244 00:15:23,000 --> 00:15:26,000 varmistaa, että e on keskenään jaottomia m: ään. 245 00:15:26,000 --> 00:15:30,000 Jos se ei ole 1, niin meillä olisi valita uuden sähköpostiviestin. 246 00:15:30,000 --> 00:15:33,000 Nyt katsotaanpas jos Rob on saanut viestin. 247 00:15:33,000 --> 00:15:35,000 Kun joku lähettää minulle salattu viesti 248 00:15:35,000 --> 00:15:38,000 niin kauan kuin olen pidin yksityisen avaimen salaisuus 249 00:15:38,000 --> 00:15:41,000 Olen ainoa, joka voi purkaa viestin. 250 00:15:41,000 --> 00:15:46,000 Purkaa murikka c voin laskea alkuperäisen viestin 251 00:15:46,000 --> 00:15:53,000 on yhtä suuri kuin palan ja d teho (mod n). 252 00:15:53,000 --> 00:15:57,000 Muista, että d ja n ovat minun yksityinen avain. 253 00:15:57,000 --> 00:16:01,000 Saadaksesi täyden viestin sen paloina me purkaa kunkin murikka 254 00:16:01,000 --> 00:16:04,000 ja liität tuloksia. 255 00:16:04,000 --> 00:16:08,000 Kuinka turvallinen on RSA? 256 00:16:08,000 --> 00:16:10,000 Totuus on, emme tiedä. 257 00:16:10,000 --> 00:16:14,000 Turvallisuus perustuu siihen, kuinka kauan kestäisi hyökkääjä murtaa viestiin 258 00:16:14,000 --> 00:16:16,000 salataan RSA. 259 00:16:16,000 --> 00:16:19,000 Muista, että hyökkääjä pääsee käsiksi julkisen avaimen, 260 00:16:19,000 --> 00:16:21,000 joka sisältää sekä E ja N. 261 00:16:21,000 --> 00:16:26,000 Jos hyökkääjä onnistuu tekijä n osaksi 2 alkulukuja, p ja q, 262 00:16:26,000 --> 00:16:30,000 Sitten hän voisi laskea d käyttäen laajennettua Eukleideen algoritmi. 263 00:16:30,000 --> 00:16:35,000 Tämä antaa hänelle yksityisen avaimen, jota voidaan käyttää purkaa viestin. 264 00:16:35,000 --> 00:16:38,000 Mutta kuinka nopeasti voimme tekijä kokonaislukuja? 265 00:16:38,000 --> 00:16:41,000 Jälleen, emme tiedä. 266 00:16:41,000 --> 00:16:43,000 Kukaan ei ole löytänyt nopea tapa tehdä se, 267 00:16:43,000 --> 00:16:46,000 mikä tarkoittaa, että annetaan riittävän suuri n 268 00:16:46,000 --> 00:16:49,000 kestäisi hyökkääjä epärealistisen pitkä 269 00:16:49,000 --> 00:16:51,000 tekijään numero. 270 00:16:51,000 --> 00:16:54,000 Jos joku paljasti nopea tapa factoring kokonaislukujen 271 00:16:54,000 --> 00:16:57,000 RSA olisi rikki. 272 00:16:57,000 --> 00:17:01,000 Mutta vaikka kokonaisluku tekijöihinjakoalgoritmi on luonnostaan ​​hidasta 273 00:17:01,000 --> 00:17:04,000 RSA algoritmi voi silti olla joitakin virhe siinä 274 00:17:04,000 --> 00:17:07,000 , joka mahdollistaa helpon salauksen purkaminen viestejä. 275 00:17:07,000 --> 00:17:10,000 Kukaan ei ole löytänyt, ja havaittiin niin vika vielä, 276 00:17:10,000 --> 00:17:12,000 mutta se ei tarkoita sellaista ei ole. 277 00:17:12,000 --> 00:17:17,000 Teoriassa joku voisi olla siellä lukee kaikki tiedot salataan RSA. 278 00:17:17,000 --> 00:17:19,000 On toinenkin vähän yksityisyyttä kysymys. 279 00:17:19,000 --> 00:17:23,000 Jos Tommy salaa joitakin viestin minun julkisen avaimen 280 00:17:23,000 --> 00:17:26,000 ja hyökkääjä salaa saman viestin minun julkisen avaimen 281 00:17:26,000 --> 00:17:29,000 hyökkääjä näkee että 2 viestit ovat identtiset 282 00:17:29,000 --> 00:17:32,000 ja siten tietämään, mitä Tommy salataan. 283 00:17:32,000 --> 00:17:36,000 Estämiseksi tämän viestit ovat tyypillisesti pehmustettu satunnaisia ​​bittejä 284 00:17:36,000 --> 00:17:39,000 ennen salataan niin, että sama viesti salataan 285 00:17:39,000 --> 00:17:44,000 useita kertoja näyttää erilaiselta niin kauan kuin pehmusteet sanoma on erilainen. 286 00:17:44,000 --> 00:17:47,000 Mutta muista, miten meidän on jakaa viestejä järkäle 287 00:17:47,000 --> 00:17:50,000 siten, että kukin pala on pienempi kuin n? 288 00:17:50,000 --> 00:17:52,000 Pehmusteet paloina tarkoittaa, että meillä olisi jakaa asioita 289 00:17:52,000 --> 00:17:57,000 vielä enemmän paloina koska pehmustettu murikka on oltava pienempi kuin n. 290 00:17:57,000 --> 00:18:01,000 Salaus ja salauksen purku ovat suhteellisen kalliita RSA, 291 00:18:01,000 --> 00:18:05,000 ja niin tarvitsee rikkoa jopa viestin useisiin palasiin voi olla hyvin kallista. 292 00:18:05,000 --> 00:18:09,000 Jos suuri määrä tietoja on oltava salataan ja salaus puretaan 293 00:18:09,000 --> 00:18:12,000 voimme yhdistää edut symmetrisen avaimen algoritmit 294 00:18:12,000 --> 00:18:16,000 kanssa RSA saada sekä turvallisuutta ja tehokkuutta. 295 00:18:16,000 --> 00:18:18,000 Vaikka emme aio mennä sitä täällä, 296 00:18:18,000 --> 00:18:23,000 AES on symmetrinen avain algoritmi Vigenère ja Caesar ciphers 297 00:18:23,000 --> 00:18:25,000 mutta paljon vaikeampi murtaa. 298 00:18:25,000 --> 00:18:30,000 Tietenkään emme voi käyttää AES perustamatta jaetun salaisen avaimen 299 00:18:30,000 --> 00:18:34,000 välillä 2 järjestelmiä, ja näimme ongelma, että ennen. 300 00:18:34,000 --> 00:18:40,000 Mutta nyt voimme käyttää RSA luoda jaetun salaisen avaimen välillä 2 järjestelmiä. 301 00:18:40,000 --> 00:18:43,000 Soitamme tietokone lähettää tiedot lähettäjän 302 00:18:43,000 --> 00:18:46,000 ja tietokone vastaanottaa dataa vastaanottimen. 303 00:18:46,000 --> 00:18:49,000 Vastaanottimessa on RSA-avainparin ja lähettää 304 00:18:49,000 --> 00:18:51,000 julkisen avaimen lähettäjälle. 305 00:18:51,000 --> 00:18:54,000 Lähettäjän muodostaa AES-avaimella, 306 00:18:54,000 --> 00:18:57,000 salaa sen vastaanottajan RSA julkisen avaimen, 307 00:18:57,000 --> 00:19:00,000 ja lähettää AES-avaimella vastaanottimeen. 308 00:19:00,000 --> 00:19:04,000 Vastaanotin purkaa viestin salauksen ja sen RSA: n salaisen avaimen. 309 00:19:04,000 --> 00:19:09,000 Sekä lähettäjän että vastaanottajan on nyt jaettu AES-avaimella niiden välillä. 310 00:19:09,000 --> 00:19:14,000 AES, joka on paljon nopeampi salaus ja salauksen kuin RSA, 311 00:19:14,000 --> 00:19:18,000 voidaan nyt käyttää salaamiseen suuria tietomääriä ja lähettää ne vastaanotin, 312 00:19:18,000 --> 00:19:21,000 kuka voi purkaa käyttämällä samaa avainta. 313 00:19:21,000 --> 00:19:26,000 AES, joka on paljon nopeampi salaus ja salauksen kuin RSA, 314 00:19:26,000 --> 00:19:30,000 voidaan nyt käyttää salaamiseen suuria tietomääriä ja lähettää ne vastaanotin, 315 00:19:30,000 --> 00:19:32,000 kuka voi purkaa käyttämällä samaa avainta. 316 00:19:32,000 --> 00:19:36,000 Me vain tarvitaan RSA siirtää jaetun avaimen. 317 00:19:36,000 --> 00:19:40,000 Meidän ei enää tarvitse käyttää RSA lainkaan. 318 00:19:40,000 --> 00:19:46,000 Se näyttää minulla viestin. 319 00:19:46,000 --> 00:19:49,000 Sillä ei ole väliä, jos joku lukea mitä on paperilennokki ennen sain sen 320 00:19:49,000 --> 00:19:55,000 koska olen ainoa yksityisen avaimen. 321 00:19:55,000 --> 00:19:57,000 Katsotaanpa purkaa jokaisen paloina viestin. 322 00:19:57,000 --> 00:20:07,000 Ensimmäinen kimpale, 658, me korottaa d voima, joka on 185, 323 00:20:07,000 --> 00:20:18,000 mod n, joka on 989, on yhtä suuri kuin 67, 324 00:20:18,000 --> 00:20:24,000 joka on kirjain C ASCII. 325 00:20:24,000 --> 00:20:31,000 Nyt päälle toinen murikka. 326 00:20:31,000 --> 00:20:35,000 Toinen pala on arvo 15, 327 00:20:35,000 --> 00:20:41,000 jonka me nostamme sen 185th valtaa, 328 00:20:41,000 --> 00:20:51,000 mod 989, ja tämä on yhtä suuri kuin 83 329 00:20:51,000 --> 00:20:57,000 joka on kirjain S ASCII. 330 00:20:57,000 --> 00:21:06,000 Nyt kolmannen palan, jonka arvo on 799, me korottaa 185, 331 00:21:06,000 --> 00:21:17,000 mod 989, ja tämä on yhtä suuri kuin 53, 332 00:21:17,000 --> 00:21:24,000 joka on arvo merkin 5 ASCII-muodossa. 333 00:21:24,000 --> 00:21:30,000 Nyt viimeisen palan, jonka arvo on 975, 334 00:21:30,000 --> 00:21:41,000 keräämme 185, mod 989, 335 00:21:41,000 --> 00:21:51,000 ja tämä on yhtä suuri kuin 48, joka on arvo merkki 0 ASCII-muodossa. 336 00:21:51,000 --> 00:21:57,000 Nimeni on Rob Bowden, ja tämä on CS50. 337 00:21:57,000 --> 00:22:00,000 [CS50.TV] 338 00:22:06,000 --> 00:22:08,000 RSA lainkaan. 339 00:22:08,000 --> 00:22:14,000 RSA lainkaan. [Naurua] 340 00:22:14,000 --> 00:22:17,000 Ollenkaan.