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] [Universiteti i Harvardit] 3 00:00:04,000 --> 00:00:07,000 [Kjo është CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:11,000 Le të marrin një vështrim në RSA, një algorithm përdorur gjerësisht për encrypting të dhënave. 5 00:00:11,000 --> 00:00:16,000 Algoritme encryption si Cezarit dhe shifra Vigenere nuk janë shumë të sigurta. 6 00:00:16,000 --> 00:00:20,000 Me shifër Cezarit, një sulmues ka nevojë vetëm për të provoni 25 çelësat ndryshme 7 00:00:20,000 --> 00:00:22,000 për të marrë plain text mesazhi-së. 8 00:00:22,000 --> 00:00:25,000 Ndërsa shifër Vigenere është më e sigurtë sesa shifër Caesar 9 00:00:25,000 --> 00:00:28,000 për shkak të hapësirës më të madhe e kërkimit për çelësa, pasi një sulmues 10 00:00:28,000 --> 00:00:30,000 e di gjatësinë e kyç në një shifër Vigenere, 11 00:00:30,000 --> 00:00:34,000 e cila mund të përcaktohet me anë të një analize të modeleve në tekst koduar, 12 00:00:34,000 --> 00:00:38,000 shifër Vigenere nuk është se shumë më i sigurt se sa shifër Cezarit. 13 00:00:38,000 --> 00:00:42,000 RSA, në anën tjetër, nuk është e ndjeshme ndaj sulmeve si kjo. 14 00:00:42,000 --> 00:00:45,000 Shifër Cezari dhe Vigenere shifër të përdorni të njëjtin kyç 15 00:00:45,000 --> 00:00:47,000 të dy encrypt dhe decrypt një mesazh. 16 00:00:47,000 --> 00:00:51,000 Kjo pronë i bën këto algoritme simetrike kryesore shifra. 17 00:00:51,000 --> 00:00:54,000 Një problem themelor me algoritme simetrike kryesore 18 00:00:54,000 --> 00:00:57,000 është se ata mbështeten në një encrypting dhe dërgimin e mesazhit 19 00:00:57,000 --> 00:00:59,000 dhe ai merr dhe decrypting mesazh 20 00:00:59,000 --> 00:01:03,000 për të kanë rënë dakord tashmë upfront në tast që ata të dy do të përdorin. 21 00:01:03,000 --> 00:01:06,000 Por ne kemi një pak e një problemi për fillimin këtu. 22 00:01:06,000 --> 00:01:10,000 Si mund të 2 kompjuterëve që duan të komunikojnë të krijuar një çelës sekret midis tyre? 23 00:01:10,000 --> 00:01:16,000 Nëse çelësi duhet të jetë i fshehtë, atëherë ne kemi nevojë për një mënyrë për të encrypt dhe decrypt kryesore. 24 00:01:16,000 --> 00:01:18,000 Nëse të gjithë ne kemi është Kriptografia simetrike kyçe 25 00:01:18,000 --> 00:01:21,000 atëherë ne kemi ardhur vetëm përsëri në të njëjtin problem. 26 00:01:21,000 --> 00:01:25,000 RSA, në anën tjetër, përdor një palë çelësa, 27 00:01:25,000 --> 00:01:28,000 një për encryption dhe një tjetër për decryption. 28 00:01:28,000 --> 00:01:32,000 Njëri është quajtur çelësi publik, dhe të tjera është çelësi privat. 29 00:01:32,000 --> 00:01:34,000 Çelësi publik është përdorur për të encrypt mesazhe. 30 00:01:34,000 --> 00:01:38,000 Si ju mund të me mend me emrin e saj, ne mund të ndajnë çelësin tonë publik me 31 00:01:38,000 --> 00:01:43,000 dikush ne duam, pa kompromentuar sigurinë e një mesazhi të koduar. 32 00:01:43,000 --> 00:01:45,000 Mesazhet koduar duke përdorur një çelës publik 33 00:01:45,000 --> 00:01:49,000 mund të decrypted me kyç përkatës saj private. 34 00:01:49,000 --> 00:01:53,000 Ndërsa ju mund të ndajnë kyç tuaj publik, ju duhet të mbani gjithmonë privat sekret tuaj kryesor. 61 00:01:55,000 --> 00:01:58,000 dhe vetëm çelësi privat mund të përdoret për të decrypt mesazhe 62 00:01:58,000 --> 00:02:02,000 2 përdorues në qoftë se dëshironi të dërgoni mesazhe të koduara me RSA 63 00:02:02,000 --> 00:02:07,000 mbrapa dhe me radhë të dy përdoruesit duhet të ketë palë e tyre publike dhe private kyç. 64 00:02:07,000 --> 00:02:10,000 Mesazhe nga 1 përdorues në 2 përdorues 65 00:02:10,000 --> 00:02:15,000 përdorin vetëm palë kyç 2 përdoruesit, dhe mesazhe nga 2 përdorues në 1 përdorues 66 00:02:15,000 --> 00:02:17,000 përdorin vetëm palë kyç 1 përdorues s. 67 00:02:17,000 --> 00:02:21,000 Fakti që nuk janë të ndara 2 çelësat për të encrypt dhe decrypt mesazhe 68 00:02:21,000 --> 00:02:24,000 RSA bën një algoritmi asimetrike kyç. 69 00:02:24,000 --> 00:02:28,000 Ne nuk kemi nevojë për të encrypt çelësin publik në mënyrë që të dërgoni atë në një kompjuter tjetër 70 00:02:28,000 --> 00:02:31,000 që çelësi është publike anyway. 71 00:02:31,000 --> 00:02:33,000 Kjo do të thotë se RSA nuk kanë të njëjtin problem për fillimin 72 00:02:33,000 --> 00:02:36,000 si algoritme simetrike kryesore. 73 00:02:36,000 --> 00:02:39,000 Pra, nëse unë dua të dërgoj një mesazh duke përdorur encryption RSA 74 00:02:39,000 --> 00:02:42,000 të vjedh, unë do të duhet së pari çelësin publik Rob. 75 00:02:42,000 --> 00:02:47,000 Për të gjeneruar një palë çelësa, Rob duhet të marr 2 numra të mëdha kryeministër. 76 00:02:47,000 --> 00:02:50,000 Këta numra do të përdoren në të dy çelësat publik dhe privat, 77 00:02:50,000 --> 00:02:54,000 por çelësi publik do të përdorin vetëm produkt i këtyre numrave 2, 78 00:02:54,000 --> 00:02:56,000 jo numrat e vetë. 79 00:02:56,000 --> 00:02:59,000 Sapo kam mbyllur mesazhin duke përdorur çelësin publik Rob 80 00:02:59,000 --> 00:03:01,000 Unë mund të dërgoni mesazhin tek Rob. 81 00:03:01,000 --> 00:03:05,000 Për një kompjuter, numra factoring është një problem i vështirë. 82 00:03:05,000 --> 00:03:09,000 Çelësi publik, mbani mend, e përdorur produktin e 2 numrave të kryeministrit. 83 00:03:09,000 --> 00:03:12,000 Ky produkt duhet të ketë vetëm 2 faktorë, 84 00:03:12,000 --> 00:03:16,000 që të ndodhë të jenë numrat që përbëjnë çelësin privat. 85 00:03:16,000 --> 00:03:20,000 Në mënyrë për të decrypt mesazhi, RSA do të përdorni këtë çelës privat 86 00:03:20,000 --> 00:03:25,000 ose numrat e shumëzuar së bashku në procesin e krijimit çelësin publik. 87 00:03:25,000 --> 00:03:28,000 Për shkak se ajo është e vështirë për të computationally faktor numrin 88 00:03:28,000 --> 00:03:32,000 përdorur në një kyç publik në 2 numra të përdorura në kyç privat 89 00:03:32,000 --> 00:03:36,000 kjo është e vështirë për një sulmues të gjej çelësin privat 90 00:03:36,000 --> 00:03:39,000 që do të jetë e nevojshme për të decrypt mesazhi. 91 00:03:39,000 --> 00:03:43,000 Tani le të shkojmë në disa detaje të nivelit të ulët të RSA. 92 00:03:43,000 --> 00:03:46,000 Le të parë të shohim se si mund të gjenerojnë një palë çelësa. 93 00:03:46,000 --> 00:03:49,000 Së pari, ne do të duhet 2 numrat e kryeministrit. 94 00:03:49,000 --> 00:03:52,000 Ne do të quajmë këto 2 numra p dhe q. 95 00:03:52,000 --> 00:03:56,000 Në mënyrë që të marr p dhe q, në praktikë do të gjenerojë pseudorandomly 96 00:03:56,000 --> 00:03:59,000 një numër i madh dhe pastaj të përdorin një test për të përcaktuar nëse janë apo jo 97 00:03:59,000 --> 00:04:02,000 ato numra janë ndoshta kryeministër. 98 00:04:02,000 --> 00:04:05,000 Ne mund të vazhdojmë të gjeneruar numra të rastit pushim 99 00:04:05,000 --> 00:04:08,000 deri sa ne kemi 2 primes që ne mund të përdorni. 100 00:04:08,000 --> 00:04:15,000 Këtu le të marr p = q = 23 dhe 43. 101 00:04:15,000 --> 00:04:19,000 Mos harroni, në praktikë, p dhe q duhet të jetë një numër shumë më të mëdha. 102 00:04:19,000 --> 00:04:22,000 Aq sa dimë, të mëdha e numrave, aq më e vështirë është 103 00:04:22,000 --> 00:04:25,000 për të goditur një mesazh të koduar. 104 00:04:25,000 --> 00:04:29,000 Por ajo është gjithashtu më e shtrenjtë për të encrypt dhe decrypt mesazhe. 105 00:04:29,000 --> 00:04:33,000 Sot ajo është rekomanduar shpesh se p dhe q janë të paktën 1024 bit, 106 00:04:33,000 --> 00:04:37,000 e cila e vë çdo numër në mbi 300 shifra dhjetore. 107 00:04:37,000 --> 00:04:40,000 Por ne do të marr këto numra të vogla për këtë shembull. 108 00:04:40,000 --> 00:04:43,000 Tani ne do të shumohen p dhe q bashku për të marrë një numër 3, 109 00:04:43,000 --> 00:04:45,000 të cilat ne do të thërrasë n. 110 00:04:45,000 --> 00:04:55,000 Në rastin tonë, n = 23 * 43, e cila = 989. 111 00:04:55,000 --> 00:04:58,000 Ne kemi n = 989. 112 00:04:58,000 --> 00:05:02,000 Ardhshëm ne do të shumohen P - 1 me q - 1 113 00:05:02,000 --> 00:05:05,000 për të marrë një numër 4, të cilat ne do të thërrasë m. 114 00:05:05,000 --> 00:05:15,000 Në rastin tonë, m = 22 * ​​42, e cila = 924. 115 00:05:15,000 --> 00:05:18,000 Ne kemi m = 924. 116 00:05:18,000 --> 00:05:22,000 Tani ne do të duhet një e numër që është relativisht kryeministër të m 117 00:05:22,000 --> 00:05:25,000 dhe më pak se m. 118 00:05:25,000 --> 00:05:28,000 Dy numra janë relativisht kryeministër apo coprime 119 00:05:28,000 --> 00:05:33,000 në qoftë se numër i plotë pozitiv i vetëm që ndan ata të dy në mënyrë të barabartë është 1. 120 00:05:33,000 --> 00:05:37,000 Me fjalë të tjera, pjesëtues i përbashkët i madh e dhe m 121 00:05:37,000 --> 00:05:39,000 duhet të jetë 1. 122 00:05:39,000 --> 00:05:44,000 Në praktikë, kjo është e zakonshme për të jetë numër kryesor 65.537 123 00:05:44,000 --> 00:05:48,000 për aq kohë sa ky numër nuk ndodh të jetë një faktor i m. 124 00:05:48,000 --> 00:05:53,000 Për çelësat tona, ne do të vini e = 5 125 00:05:53,000 --> 00:05:57,000 nga 5 është relativisht kryeministër të 924. 126 00:05:57,000 --> 00:06:01,000 Së fundi, ne do të duhet një numër më shumë, të cilat ne do të thërrasë d. 127 00:06:01,000 --> 00:06:11,000 D duhet të jetë një vlerë që kënaq ekuacionin de = 1 (mod m). 128 00:06:11,000 --> 00:06:17,000 Kjo mod m tregon ne do të përdorim diçka që quhet aritmetikë modulare. 129 00:06:17,000 --> 00:06:21,000 Në aritmetikë modulare, pasi një numër merr më shumë se disa afate sipërme 130 00:06:21,000 --> 00:06:24,000 ajo do të përfundojë kthehet rreth për të 0. 131 00:06:24,000 --> 00:06:27,000 Një orë, për shembull, përdor aritmetikë modulare. 132 00:06:27,000 --> 00:06:31,000 Një minutë pas 01:59, për shembull, është 2:00, 133 00:06:31,000 --> 00:06:33,000 jo 1:60. 134 00:06:33,000 --> 00:06:36,000 Dora minuta ka përfunduar rreth për të 0 135 00:06:36,000 --> 00:06:39,000 me arritjen e një sipërme të detyruar të 60. 136 00:06:39,000 --> 00:06:46,000 Pra, ne mund të themi 60 është e barabartë me 0 (mod 60) 137 00:06:46,000 --> 00:06:57,000 dhe 125 është e barabartë me 65 është e barabartë me 5 (mod 60). 138 00:06:57,000 --> 00:07:02,000 Çelësi ynë publik do të jetë e palë dhe n 139 00:07:02,000 --> 00:07:09,000 ku në këtë rast E është 5 dhe n është 989. 140 00:07:09,000 --> 00:07:15,000 Çelësi ynë privat do të jetë palë d dhe n, 141 00:07:15,000 --> 00:07:22,000 e cila në rastin tonë është 185 dhe 989. 142 00:07:22,000 --> 00:07:25,000 Vini re se origjinale tonë primes p dhe q nuk duket 143 00:07:25,000 --> 00:07:29,000 kudo në çelësat tona private ose publike. 144 00:07:29,000 --> 00:07:33,000 Tani që ne kemi palë tonë të çelësat, le të marrin një sy se si ne mund të encrypt 145 00:07:33,000 --> 00:07:36,000 dhe decrypt një mesazh. 146 00:07:36,000 --> 00:07:38,000 Unë dua të dërgoj një mesazh tek Rob, 147 00:07:38,000 --> 00:07:42,000 kështu që ai do të jetë ai për të gjeneruar këtë palë kryesore. 148 00:07:42,000 --> 00:07:46,000 Atëherë unë do të kërkoj për Rob kyç tij publike, të cilën unë do të përdorin 149 00:07:46,000 --> 00:07:48,000 për të encrypt një mesazh për të dërguar atij. 150 00:07:48,000 --> 00:07:53,000 Mos harroni, kjo është krejtësisht në rregull për të ndarë Rob çelësin e tij publike me mua. 151 00:07:53,000 --> 00:07:56,000 Por kjo nuk do të jetë në rregull për të ndarë çelësin e tij privat. 152 00:07:56,000 --> 00:08:00,000 Unë nuk kam asnjë ide se çfarë kyç e tij private është. 153 00:08:00,000 --> 00:08:03,000 Ne mund të thyejnë m tonë mesazhit deri në chunks disa 154 00:08:03,000 --> 00:08:07,000 të gjitha të vogla se n encrypt dhe pastaj secili prej këtyre chunks. 155 00:08:07,000 --> 00:08:12,000 Ne do të encrypt CS50 varg, të cilat ne mund thyer deri në 4 chunks, 156 00:08:12,000 --> 00:08:14,000 një për letër. 157 00:08:14,000 --> 00:08:17,000 Në mënyrë që të encrypt mesazhin tim, unë do të duhet për të kthyer atë në 158 00:08:17,000 --> 00:08:20,000 një lloj i përfaqësimit numerik. 159 00:08:20,000 --> 00:08:25,000 Le të lidh vlerat ASCII me karaktereve në mesazhin tim. 160 00:08:25,000 --> 00:08:28,000 Në mënyrë që të encrypt një mesazh dhënë m 161 00:08:28,000 --> 00:08:37,000 Unë do të duhet për të llogaritur K = M me E (mod n). 162 00:08:37,000 --> 00:08:40,000 Por m duhet të jetë më e vogël se n, 163 00:08:40,000 --> 00:08:45,000 ose tjetër mesazhi i plotë nuk mund të shprehet modulo n. 164 00:08:45,000 --> 00:08:49,000 Ne mund të shpërthejë m deri në chunks të ndryshme, të cilat janë më të vogla se n, 165 00:08:49,000 --> 00:08:52,000 encrypt dhe secili prej këtyre chunks. 166 00:08:52,000 --> 00:09:03,000 Encrypting secilën prej këtyre chunks, ne kemi marrë c1 = 67 me 5 (mod 989) 167 00:09:03,000 --> 00:09:06,000 që = 658. 168 00:09:06,000 --> 00:09:15,000 Për copë tonë të dytë ne kemi 83 me 5 (mod 989) 169 00:09:15,000 --> 00:09:18,000 që = 15. 170 00:09:18,000 --> 00:09:26,000 Për copë tonë të tretë, ne kemi 53 me 5 (mod 989) 171 00:09:26,000 --> 00:09:30,000 që = 799. 172 00:09:30,000 --> 00:09:39,000 Dhe së fundi, për copë tonë të fundit ne kemi 48 me 5 (mod 989) 173 00:09:39,000 --> 00:09:43,000 që = 975. 174 00:09:43,000 --> 00:09:48,000 Tani ne mund të dërgojë mbi këto vlera të koduara Rob. 175 00:09:54,000 --> 00:09:58,000 Këtu ju shkoni, Rob. 176 00:09:58,000 --> 00:10:01,000 Ndërsa mesazhi ynë është në fluturim, le të marrin një sy 177 00:10:01,000 --> 00:10:07,000 se si kemi marrë këtë vlerë për d. 178 00:10:07,000 --> 00:10:17,000 D tonë numri i nevojshëm për të kënaqur 5D = 1 (mod 924). 179 00:10:17,000 --> 00:10:24,000 Kjo e bën të d inversi multiplicative e 5 modulo 924. 180 00:10:24,000 --> 00:10:28,000 Duke pasur parasysh 2 integers, a dhe b, algorithm Euklidiane zgjeruar 181 00:10:28,000 --> 00:10:33,000 mund të përdoret për të gjetur pjesëtues të madh të përbashkët të këtyre 2 integers. 182 00:10:33,000 --> 00:10:37,000 Ai gjithashtu do të na japin 2 numra të tjerë, x dhe y, 183 00:10:37,000 --> 00:10:47,000 që të kënaqë sëpatë ekuacion + nga = pjesëtues më të madh të përbashkët të A dhe B. 184 00:10:47,000 --> 00:10:49,000 Si funksionon kjo të na ndihmojë? 185 00:10:49,000 --> 00:10:52,000 E pra, në mbylljen e = 5 për një 186 00:10:52,000 --> 00:10:56,000 dhe m = 924 për b 187 00:10:56,000 --> 00:10:59,000 ne tashmë e dimë se këto numra janë coprime. 188 00:10:59,000 --> 00:11:03,000 Pjesëtues më e madhe e tyre e përbashkët është 1. 189 00:11:03,000 --> 00:11:09,000 Kjo na jep 5x + 924y = 1 190 00:11:09,000 --> 00:11:17,000 ose 5x = 1 - 924y. 191 00:11:17,000 --> 00:11:22,000 Por nëse ne vetëm kujdeset për çdo gjë modulo 924 192 00:11:22,000 --> 00:11:25,000 atëherë ne mund të bjerë - 924y. 193 00:11:25,000 --> 00:11:27,000 Mendoni përsëri për orën. 194 00:11:27,000 --> 00:11:31,000 Nëse dora minutë është më 1 dhe më pas pikërisht 10 orë kalojnë, 195 00:11:31,000 --> 00:11:35,000 ne e dimë se dora minuta do të vazhdojë të jetë në 1. 196 00:11:35,000 --> 00:11:39,000 Këtu ne të fillojë në 1 dhe pastaj të përfundojë rreth herë pikërisht y, 197 00:11:39,000 --> 00:11:41,000 kështu që ne do të vazhdojë të jetë në 1. 198 00:11:41,000 --> 00:11:49,000 Ne kemi 5x = 1 (mod 924). 199 00:11:49,000 --> 00:11:55,000 Dhe këtu ky x është i njëjtë si d kemi qenë duke kërkuar për para, 200 00:11:55,000 --> 00:11:58,000 kështu që nëse ne përdorim algoritmin zgjeruar Euklidiane 201 00:11:58,000 --> 00:12:04,000 për të marrë këtë numër x, që është numri ne duhet të përdorin si d tonë. 202 00:12:04,000 --> 00:12:07,000 Tani le të kandidojë algorithm Euklidiane zgjatur për një = 5 203 00:12:07,000 --> 00:12:11,000 dhe b = 924. 204 00:12:11,000 --> 00:12:14,000 Ne do të përdorim një metodë të quajtur metoda tryezë. 205 00:12:14,000 --> 00:12:21,000 Tabela e jonë do të ketë 4 kolona, ​​x, y, d, dhe k. 206 00:12:21,000 --> 00:12:23,000 Tabela tonë fillon me 2 rreshta. 207 00:12:23,000 --> 00:12:28,000 Në radhë të parë ne kemi 1, 0, atëherë vlera jonë e një, e cila është 5, 208 00:12:28,000 --> 00:12:37,000 dhe rresht ynë i dytë është 0, 1, dhe vlera jonë për B, e cila është 924. 209 00:12:37,000 --> 00:12:40,000 Vlera e kolonës 4, k, do të jetë rezultat 210 00:12:40,000 --> 00:12:45,000 të ndarë vlerën e D në rreshtin lart atë me vlerë të d 211 00:12:45,000 --> 00:12:49,000 në të njëjtin rresht. 212 00:12:49,000 --> 00:12:56,000 Ne kemi ndarë nga 5 924 është 0 me disa mbetur. 213 00:12:56,000 --> 00:12:59,000 Kjo do të thotë ne kemi k = 0. 214 00:12:59,000 --> 00:13:05,000 Tani vlera e çdo qelizë tjetër do të jetë vlera e 2 rreshtave celularë mësipërme të 215 00:13:05,000 --> 00:13:09,000 minus vlerën e rresht më lart atë herë k. 216 00:13:09,000 --> 00:13:11,000 Le të fillojmë me d në rreshtin e 3. 217 00:13:11,000 --> 00:13:19,000 Ne kemi 5-924 * 0 = 5. 218 00:13:19,000 --> 00:13:25,000 Tjetra ne kemi 0-1 * 0 e cila është 0 219 00:13:25,000 --> 00:13:30,000 dhe 1 - 0 * 0 cila është 1. 220 00:13:30,000 --> 00:13:33,000 Jo shumë e keqe, kështu që le të shkojë për në rresht tjetër. 221 00:13:33,000 --> 00:13:36,000 Së pari ne kemi nevojë për vlerën tonë të k. 222 00:13:36,000 --> 00:13:43,000 924 ndara me 5 = 184 me disa mbetur, 223 00:13:43,000 --> 00:13:46,000 kështu vlera tonë për k është 184. 224 00:13:46,000 --> 00:13:54,000 Tani 924-5 * 184 = 4. 225 00:13:54,000 --> 00:14:05,000 1 - 0 * 184 është 1 dhe 0 - 1 * 184 është -184. 226 00:14:05,000 --> 00:14:07,000 Të gjithë të drejtë, le të bëjë rresht tjetër. 227 00:14:07,000 --> 00:14:10,000 Vlera jonë e k do të jetë 1 për shkak 228 00:14:10,000 --> 00:14:15,000 5 ndarë nga 4 1 = me disa mbetur. 229 00:14:15,000 --> 00:14:17,000 Le të plotësoni kolonat e tjera. 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 Dhe 1-184 * 1 është 185. 233 00:14:33,000 --> 00:14:35,000 Le të shohim se çfarë vlera jonë e ardhshme të k do të jetë. 234 00:14:35,000 --> 00:14:40,000 E pra, kjo duket si ne kemi 4 pjesëtohet me 1, e cila është 4. 235 00:14:40,000 --> 00:14:43,000 Në këtë rast ne jemi duke pjesetuar me 1 tilla që k është e barabartë me 236 00:14:43,000 --> 00:14:50,000 vlera e d në radhën e mësipërme do të thotë se ne jemi duke bërë me algorithm tonë. 237 00:14:50,000 --> 00:14:58,000 Ne mund të shohim këtu se kemi x = 185 dhe y = -1 në rreshtin e fundit. 238 00:14:58,000 --> 00:15:00,000 Le të kthehemi tani në qëllimin tonë origjinal. 239 00:15:00,000 --> 00:15:04,000 Kemi thënë se vlera e x si pasojë e drejtimin e këtij algoritmi 240 00:15:04,000 --> 00:15:08,000 do të jetë inversi multiplicative e një (b mod). 241 00:15:08,000 --> 00:15:15,000 Kjo do të thotë se 185 është inversi multiplicative e 5 (mod 924) 242 00:15:15,000 --> 00:15:20,000 që do të thotë se kemi një vlerë prej 185 për d. 243 00:15:20,000 --> 00:15:23,000 Fakti që d = 1 në rreshtin e fundit 244 00:15:23,000 --> 00:15:26,000 vërteton se e ka coprime të m. 245 00:15:26,000 --> 00:15:30,000 Në qoftë se kjo nuk ishin 1 atëherë ne do të duhet të marr një e re. 246 00:15:30,000 --> 00:15:33,000 Tani le të shohim nëse Rob ka marrë mesazhin tim. 247 00:15:33,000 --> 00:15:35,000 Kur dikush dërgon mua një mesazh të koduar 248 00:15:35,000 --> 00:15:38,000 sa kohë që unë kam kryesore e mia mbajtur një sekret privat 249 00:15:38,000 --> 00:15:41,000 Unë jam i vetmi që mund të decrypt mesazhi. 250 00:15:41,000 --> 00:15:46,000 Për të dekodojnë një c segmentin unë mund të llogarisin mesazhin origjinal 251 00:15:46,000 --> 00:15:53,000 është e barabartë me copë tek D fuqisë (MOD n). 252 00:15:53,000 --> 00:15:57,000 Mos harroni se d dhe n janë nga kyç time private. 253 00:15:57,000 --> 00:16:01,000 Për të marrë një mesazh të plotë nga chunks e saj ne decrypt çdo copë 254 00:16:01,000 --> 00:16:04,000 dhe lidh rezultatet. 255 00:16:04,000 --> 00:16:08,000 Saktësisht se si të sigurt është RSA? 256 00:16:08,000 --> 00:16:10,000 E vërteta është, ne nuk e dimë. 257 00:16:10,000 --> 00:16:14,000 Sigurisë është i bazuar në sa kohë do të marrë një sulmues për të goditur një mesazh 258 00:16:14,000 --> 00:16:16,000 koduar me RSA. 259 00:16:16,000 --> 00:16:19,000 Mos harroni se një sulmues ka qasje në kyç tuaj publik, 260 00:16:19,000 --> 00:16:21,000 i cili përmban edhe E dhe n. 261 00:16:21,000 --> 00:16:26,000 Nëse sulmuesi arrin të faktor në primes n 2 e saj, p dhe q, 262 00:16:26,000 --> 00:16:30,000 atëherë ajo mund të llogarisin d përdorur algorithm Euklidiane zgjeruar. 263 00:16:30,000 --> 00:16:35,000 Kjo i jep asaj çelësin privat, i cili mund të përdoret për të decrypt ndonjë mesazh. 264 00:16:35,000 --> 00:16:38,000 Por sa shpejt mund të kemi faktor integers? 265 00:16:38,000 --> 00:16:41,000 Përsëri, ne nuk e dimë. 266 00:16:41,000 --> 00:16:43,000 Askush nuk ka gjetur një mënyrë të shpejtë për të bërë atë, 267 00:16:43,000 --> 00:16:46,000 që do të thotë se duke pasur parasysh mjaft e madhe n 268 00:16:46,000 --> 00:16:49,000 ajo do të marrë një sulmues jorealiste të gjatë 269 00:16:49,000 --> 00:16:51,000 faktor për numrin. 270 00:16:51,000 --> 00:16:54,000 Nëse dikush zbuloi një mënyrë të shpejtë të integers factoring 271 00:16:54,000 --> 00:16:57,000 RSA do të jetë i prishur. 272 00:16:57,000 --> 00:17:01,000 Por edhe nëse factorization numër i plotë është në thelb i ngadalshëm 273 00:17:01,000 --> 00:17:04,000 algorithm RSA ende mund të ketë disa krisje në atë 274 00:17:04,000 --> 00:17:07,000 që lejon për decryption lehtë të mesazheve. 275 00:17:07,000 --> 00:17:10,000 Askush nuk ka gjetur të tillë dhe zbuloi një krisje ende, 276 00:17:10,000 --> 00:17:12,000 por kjo nuk do të thotë nuk ekziston. 277 00:17:12,000 --> 00:17:17,000 Në teori, dikush mund të jetë atje lexuar të gjitha të dhënat e koduara me RSA. 278 00:17:17,000 --> 00:17:19,000 Nuk është një tjetër pak e një çështje private. 279 00:17:19,000 --> 00:17:23,000 Nëse Tommy kodon një mesazh duke përdorur çelësin publik time 280 00:17:23,000 --> 00:17:26,000 dhe një sulmues kodon të njëjtin mesazh duke përdorur çelësin publik time 281 00:17:26,000 --> 00:17:29,000 sulmuesi do të shihni se 2 mesazhe janë identike 282 00:17:29,000 --> 00:17:32,000 dhe kështu e di se çfarë Tommy koduar. 283 00:17:32,000 --> 00:17:36,000 Në mënyrë për të parandaluar këtë, mesazhet janë mbushur zakonisht me copa të rastit 284 00:17:36,000 --> 00:17:39,000 para se të koduar në mënyrë që të njëjtin mesazh Encrypted 285 00:17:39,000 --> 00:17:44,000 herë të shumta do të duken të ndryshme për aq kohë sa mbushje në mesazhin është e ndryshme. 286 00:17:44,000 --> 00:17:47,000 Por mos harroni se ne kemi për të ndarë mesazhet në chunks 287 00:17:47,000 --> 00:17:50,000 në mënyrë që çdo copë është më i vogël se n? 288 00:17:50,000 --> 00:17:52,000 Zbutja e chunks të thotë që ne mund të kemi për të ndarë gjërat 289 00:17:52,000 --> 00:17:57,000 në chunks aq më tepër që duhet të jetë mbushur copë e vogël se n. 290 00:17:57,000 --> 00:18:01,000 Encryption decryption dhe janë relativisht të shtrenjta me RSA, 291 00:18:01,000 --> 00:18:05,000 dhe kështu kanë nevojë për të thyer një mesazh në chunks shumë mund të jetë shumë i kushtueshëm. 292 00:18:05,000 --> 00:18:09,000 Nëse një vëllim i madh i të dhënave duhet të jetë i mbyllur dhe decrypted 293 00:18:09,000 --> 00:18:12,000 ne mund të kombinojnë përfitimet e algoritme simetrike kryesore 294 00:18:12,000 --> 00:18:16,000 me ato të RSA për të marrë edhe sigurinë dhe efikasitetin. 295 00:18:16,000 --> 00:18:18,000 Edhe pse ne nuk do të shkojë në atë këtu, 296 00:18:18,000 --> 00:18:23,000 AES është një algoritmi simetrik kyç si Vigenere dhe Cezarit shifra 297 00:18:23,000 --> 00:18:25,000 por shumë e vështirë për të goditur. 298 00:18:25,000 --> 00:18:30,000 Sigurisht, ne nuk mund të përdorë AES pa krijimin e një çelës sekret të përbashkët 299 00:18:30,000 --> 00:18:34,000 mes 2 sistemeve, dhe ne pa problem me këtë më parë. 300 00:18:34,000 --> 00:18:40,000 Por tani ne mund të përdorim për të krijuar RSA kyç sekret të përbashkët në mes të 2 sistemeve. 301 00:18:40,000 --> 00:18:43,000 Ne do të thërrasë në kompjuter dërguar dhënave të dërguesit 302 00:18:43,000 --> 00:18:46,000 dhe marrjes së të dhënave kompjuterike marrës. 303 00:18:46,000 --> 00:18:49,000 Marrësi ka një palë RSA kyç dhe dërgon 304 00:18:49,000 --> 00:18:51,000 çelësi publik të dërguesit. 305 00:18:51,000 --> 00:18:54,000 Dërguesi gjeneron një çelës AES, 306 00:18:54,000 --> 00:18:57,000 kodon atë me çelës RSA publik të drejtorit, 307 00:18:57,000 --> 00:19:00,000 dhe dërgon kyç AES të pranuesit. 308 00:19:00,000 --> 00:19:04,000 Marrësi decrypts mesazh me çelës RSA saj private. 309 00:19:04,000 --> 00:19:09,000 Si dërguesi dhe marrësi tani kanë një çelës të përbashkët AES mes tyre. 310 00:19:09,000 --> 00:19:14,000 AES, e cila është shumë më e shpejtë në encryption dhe decryption se RSA, 311 00:19:14,000 --> 00:19:18,000 tani mund të përdoret për të encrypt vëllime të mëdha të të dhënave dhe për të dërguar ato në marrës, 312 00:19:18,000 --> 00:19:21,000 i cili mund të decrypt duke përdorur të njëjtin kyç. 313 00:19:21,000 --> 00:19:26,000 AES, e cila është shumë më e shpejtë në encryption dhe decryption se RSA, 314 00:19:26,000 --> 00:19:30,000 tani mund të përdoret për të encrypt vëllime të mëdha të të dhënave dhe për të dërguar ato në marrës, 315 00:19:30,000 --> 00:19:32,000 i cili mund të decrypt duke përdorur të njëjtin kyç. 316 00:19:32,000 --> 00:19:36,000 Ne vetëm e nevojshme për të transferuar RSA kyç përbashkët. 317 00:19:36,000 --> 00:19:40,000 Ne nuk duhet të përdorni RSA në të gjitha. 318 00:19:40,000 --> 00:19:46,000 Ajo duket si unë kam marrë një mesazh. 319 00:19:46,000 --> 00:19:49,000 Kjo nuk ka rëndësi në qoftë se dikush të lexoni se çfarë është në aeroplan letër para se të kapur atë 320 00:19:49,000 --> 00:19:55,000 sepse unë jam i vetmi me çelës privat. 321 00:19:55,000 --> 00:19:57,000 Le të decrypt secilin nga segmentet në mesazh. 322 00:19:57,000 --> 00:20:07,000 Copë e parë, 658, ne të rritur të energjisë d, i cili është 185, 323 00:20:07,000 --> 00:20:18,000 MOD n, e cila është 989, është i barabartë me 67, 324 00:20:18,000 --> 00:20:24,000 cila është C letër në ASCII. 325 00:20:24,000 --> 00:20:31,000 Tani, mbi copë dytë. 326 00:20:31,000 --> 00:20:35,000 Copë e dytë ka vlerë 15, 327 00:20:35,000 --> 00:20:41,000 që ne të rritur në pushtet 185, 328 00:20:41,000 --> 00:20:51,000 mod 989, dhe kjo është e barabartë me 83 329 00:20:51,000 --> 00:20:57,000 cila është letër S në ASCII. 330 00:20:57,000 --> 00:21:06,000 Tani për copë e tretë, i cili ka vlerën 799, ne të rritur deri në 185, 331 00:21:06,000 --> 00:21:17,000 mod 989, dhe kjo është e barabartë me 53, 332 00:21:17,000 --> 00:21:24,000 cila është vlera e karakter 5 në ASCII. 333 00:21:24,000 --> 00:21:30,000 Tani për copë fundit, i cili ka vlerën 975, 334 00:21:30,000 --> 00:21:41,000 ne të rritur deri në 185, 989, mod 335 00:21:41,000 --> 00:21:51,000 dhe kjo është e barabartë me 48, e cila është vlera e karakterit 0 në ASCII. 336 00:21:51,000 --> 00:21:57,000 Emri im është Rob Bowden, dhe kjo është CS50. 337 00:21:57,000 --> 00:22:00,000 [CS50.TV] 338 00:22:06,000 --> 00:22:08,000 RSA në të gjitha. 339 00:22:08,000 --> 00:22:14,000 RSA në të gjitha. [Qeshura] 340 00:22:14,000 --> 00:22:17,000 Në të gjitha.