1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [RSA] 2 00:00:02,000 --> 00:00:04,000 [羅布·鮑登] [和湯米MacWilliam] [哈佛大學] 3 00:00:04,000 --> 00:00:07,000 這是CS50。[CS50.TV] 4 00:00:07,000 --> 00:00:11,000 讓我們來看看RSA,一種廣泛使用的算法對數據進行加密。 5 00:00:11,000 --> 00:00:16,000 凱撒和維瓊內爾的密碼的加密算法,如不是很安全。 6 00:00:16,000 --> 00:00:20,000 隨著愷撒密碼,攻擊者只需要嘗試25種不同的鍵 7 00:00:20,000 --> 00:00:22,000 得到消息的純文本。 8 00:00:22,000 --> 00:00:25,000 ,雖然維瓊內爾密碼是比愷撒密碼更安全 9 00:00:25,000 --> 00:00:28,000 因為較大的搜索空間為鑰匙,一旦被攻擊者 10 00:00:28,000 --> 00:00:30,000 知道在維瓊內爾密碼的密鑰長度, 11 00:00:30,000 --> 00:00:34,000 這可通過分析圖案的加密文本中確定, 12 00:00:34,000 --> 00:00:38,000 維瓊內爾密碼是不是比愷撒密碼更安全的。 13 00:00:38,000 --> 00:00:42,000 另一方面,RSA,這樣的攻擊是不容易的。 14 00:00:42,000 --> 00:00:45,000 ,凱撒密碼和維瓊內爾的密碼使用相同的密鑰 15 00:00:45,000 --> 00:00:47,000 來加密和解密消息。 16 00:00:47,000 --> 00:00:51,000 這種特性使這些加密的對稱密鑰算法。 17 00:00:51,000 --> 00:00:54,000 對稱密鑰算法的一個基本問題 18 00:00:54,000 --> 00:00:57,000 是,他們依靠加密和發送郵件 19 00:00:57,000 --> 00:00:59,000 和一個接收和解密的消息 20 00:00:59,000 --> 00:01:03,000 前期已經同意,他們都將使用的關鍵。 21 00:01:03,000 --> 00:01:06,000 但是,我們在這裡有一點啟動的問題。 22 00:01:06,000 --> 00:01:10,000 2台電腦,想傳達如何建立它們之間的密鑰? 23 00:01:10,000 --> 00:01:16,000 如果該鍵必須是秘密的,那麼我們需要一種方法來加密和解密的關鍵。 24 00:01:16,000 --> 00:01:18,000 如果我們所擁有的是對稱密鑰加密 25 00:01:18,000 --> 00:01:21,000 我們剛剛回來的同樣的問題。 26 00:01:21,000 --> 00:01:25,000 RSA中,另一方面,使用一對密鑰, 27 00:01:25,000 --> 00:01:28,000 一個用於加密和另一個用於解密。 28 00:01:28,000 --> 00:01:32,000 一個被稱為公共密鑰,而另一個是私有密鑰。 29 00:01:32,000 --> 00:01:34,000 使用公共密鑰來加密消息。 30 00:01:34,000 --> 00:01:38,000 正如你可能猜到了它的名字,我們可以分享我們的公鑰 31 00:01:38,000 --> 00:01:43,000 任何人,我們要在不影響安全加密郵件的情況下。 32 00:01:43,000 --> 00:01:45,000 使用公共密鑰加密的消息 33 00:01:45,000 --> 00:01:49,000 只能與與其對應的私鑰進行解密。 34 00:01:49,000 --> 00:01:53,000 雖然你可以分享你的公鑰,你應該始終保持你的私鑰的秘密。 61 00:01:55,000 --> 00:01:58,000 和只有私鑰可以用來解密消息 62 00:01:58,000 --> 00:02:02,000 如果2用戶要發送郵件加密的RSA 63 00:02:02,000 --> 00:02:07,000 來回兩個用戶都需要有自己的公鑰和私鑰對。 64 00:02:07,000 --> 00:02:10,000 從用戶1,用戶2的消息 65 00:02:10,000 --> 00:02:15,000 只使用用戶2用戶1用戶2的密鑰對和消息 66 00:02:15,000 --> 00:02:17,000 只用用戶1的密鑰對。 67 00:02:17,000 --> 00:02:21,000 事實上,有2個獨立的密鑰來加密和解密消息 68 00:02:21,000 --> 00:02:24,000 使RSA非對稱密鑰算法。 69 00:02:24,000 --> 00:02:28,000 我們並不需要進行加密的公共密鑰,以發送到另一台計算機 70 00:02:28,000 --> 00:02:31,000 以來的密鑰是公開的了。 71 00:02:31,000 --> 00:02:33,000 這意味著,RSA不具有相同的啟動問題 72 00:02:33,000 --> 00:02:36,000 對稱密鑰算法。 73 00:02:36,000 --> 00:02:39,000 所以,如果我想使用RSA加密發送消息 74 00:02:39,000 --> 00:02:42,000 給搶了,我需要先搶奪的公共密鑰。 75 00:02:42,000 --> 00:02:47,000 要生成一對密鑰,羅布需要選擇2個大素數。 76 00:02:47,000 --> 00:02:50,000 這些數字將被用於公共和私營鍵, 77 00:02:50,000 --> 00:02:54,000 但公共密鑰將只使用這兩個數字的乘積, 78 00:02:54,000 --> 00:02:56,000 而不是數字本身。 79 00:02:56,000 --> 00:02:59,000 一旦我使用Rob的公共密鑰加密的消息 80 00:02:59,000 --> 00:03:01,000 我可以將消息發送到羅布。 81 00:03:01,000 --> 00:03:05,000 對於計算機,保號是一個困難的問題。 82 00:03:05,000 --> 00:03:09,000 公共密鑰,請記住,使用2個素數的乘積。 83 00:03:09,000 --> 00:03:12,000 本產品必須有2個因素, 84 00:03:12,000 --> 00:03:16,000 這恰好彌補的私鑰的數字。 85 00:03:16,000 --> 00:03:20,000 為了對消息進行解密,RSA將使用此私鑰 86 00:03:20,000 --> 00:03:25,000 或數字相乘,在這個過程中創建的公共密鑰。 87 00:03:25,000 --> 00:03:28,000 因為它的計算因素的號碼 88 00:03:28,000 --> 00:03:32,000 使用公共密鑰的私鑰在使用2號 89 00:03:32,000 --> 00:03:36,000 這是很難找出攻擊者的私鑰 90 00:03:36,000 --> 00:03:39,000 將是必要的對消息進行解密。 91 00:03:39,000 --> 00:03:43,000 現在,讓我們進入一些低級別的細節RSA。 92 00:03:43,000 --> 00:03:46,000 讓我們先來看看我們如何能夠產生一對密鑰。 93 00:03:46,000 --> 00:03:49,000 首先,我們需要2個素數。 94 00:03:49,000 --> 00:03:52,000 我們會打電話給這兩個數p和q。 95 00:03:52,000 --> 00:03:56,000 為了挑選p和q,在實踐中,我們將偽隨機生成 96 00:03:56,000 --> 00:03:59,000 大量,然後使用一個測試,用於確定是否 97 00:03:59,000 --> 00:04:02,000 這些數字可能​​是素數。 98 00:04:02,000 --> 00:04:05,000 我們可以不斷產生隨機數一遍又一遍 99 00:04:05,000 --> 00:04:08,000 直到我們有2個素數,我們可以使用。 100 00:04:08,000 --> 00:04:15,000 下面讓我們挑P = 23,Q = 43。 101 00:04:15,000 --> 00:04:19,000 記住,在實踐中,p和q要大得多號碼。 102 00:04:19,000 --> 00:04:22,000 據我們所知,較大的數字,就越難 103 00:04:22,000 --> 00:04:25,000 破解加密的郵件。 104 00:04:25,000 --> 00:04:29,000 但它也更昂貴的加密和解密信息。 105 00:04:29,000 --> 00:04:33,000 今天,它經常被推薦,p和q是至少為1024位, 106 00:04:33,000 --> 00:04:37,000 這使每個數字在300位十進制數字。 107 00:04:37,000 --> 00:04:40,000 但在這個例子中,我們將選擇這些小的數字。 108 00:04:40,000 --> 00:04:43,000 現在,我們將乘p和q一起獲得第3號, 109 00:04:43,000 --> 00:04:45,000 我們稱之為N。 110 00:04:45,000 --> 00:04:55,000 在我們的例子中,N = 23 * 43 = 989。 111 00:04:55,000 --> 00:04:58,000 我們有N = 989。 112 00:04:58,000 --> 00:05:02,000 接下來,我們將乘用q p - 1 - 1 113 00:05:02,000 --> 00:05:05,000 獲得第4號,我們會打電話給米。 114 00:05:05,000 --> 00:05:15,000 在我們的案例中,M = 22 *​​ 42 = 924。 115 00:05:15,000 --> 00:05:18,000 我們有m = 924。 116 00:05:18,000 --> 00:05:22,000 現在我們需要一個數e是互質米 117 00:05:22,000 --> 00:05:25,000 和小於m。 118 00:05:25,000 --> 00:05:28,000 兩個數是互質或互素 119 00:05:28,000 --> 00:05:33,000 如果只有正整數,將他們都均勻為1。 120 00:05:33,000 --> 00:05:37,000 換言之,e和m的最大公約數 121 00:05:37,000 --> 00:05:39,000 必須是1。 122 00:05:39,000 --> 00:05:44,000 在實踐中,這是常見的電子商務是素數65537 123 00:05:44,000 --> 00:05:48,000 只要該數量不發生的m是一個因素。 124 00:05:48,000 --> 00:05:53,000 對於我們的鑰匙,我們將選擇E = 5 125 00:05:53,000 --> 00:05:57,000 自5是相對素數到924。 126 00:05:57,000 --> 00:06:01,000 最後,我們需要更多的數量,我們將調用D。 127 00:06:01,000 --> 00:06:11,000 D必須有一定的價值,滿足方程= 1(MOD米)。 128 00:06:11,000 --> 00:06:17,000 這個mod m表示,我們將使用一種叫做模塊化算術。 129 00:06:17,000 --> 00:06:21,000 在模塊化算術,一旦得到高於一些上限 130 00:06:21,000 --> 00:06:24,000 它會換回來大約為0。 131 00:06:24,000 --> 00:06:27,000 時鐘,例如,採用模塊化算術。 132 00:06:27,000 --> 00:06:31,000 一分鐘後,1:59,例如,是凌晨2點, 133 00:06:31,000 --> 00:06:33,000 1:60。 134 00:06:33,000 --> 00:06:36,000 分針纏0 135 00:06:36,000 --> 00:06:39,000 在到達一個上限的60。 136 00:06:39,000 --> 00:06:46,000 因此,我們可以說60是等於0(MOD 60) 137 00:06:46,000 --> 00:06:57,000 和125是相當於65是相當於5(模60)。 138 00:06:57,000 --> 00:07:02,000 將是對我們的公共密鑰e和n 139 00:07:02,000 --> 00:07:09,000 在這種情況下,e是5和n為989。 140 00:07:09,000 --> 00:07:15,000 我們的私有密鑰將是對d和n, 141 00:07:15,000 --> 00:07:22,000 在我們的例子中是185和989。 142 00:07:22,000 --> 00:07:25,000 請注意,我們的原素數p和q不出現 143 00:07:25,000 --> 00:07:29,000 在我們的私人或公共密鑰的任何地方。 144 00:07:29,000 --> 00:07:33,000 現在,我們有我們的密鑰對,讓我們來看看我們如何能夠加密 145 00:07:33,000 --> 00:07:36,000 和解密的消息。 146 00:07:36,000 --> 00:07:38,000 我想將消息發送到羅布, 147 00:07:38,000 --> 00:07:42,000 因此,他將是一個生成此密鑰對。 148 00:07:42,000 --> 00:07:46,000 然後,我會問羅布他的公鑰,我將使用 149 00:07:46,000 --> 00:07:48,000 對消息進行加密,發送給他。 150 00:07:48,000 --> 00:07:53,000 請記住,這是完全可行的羅布與我分享他的公鑰。 151 00:07:53,000 --> 00:07:56,000 但它不會是好的分享自己的私有密鑰。 152 00:07:56,000 --> 00:08:00,000 我沒有任何想法,他的私人密鑰是什麼。 153 00:08:00,000 --> 00:08:03,000 成若干塊,我們可以打破我們的消息m 154 00:08:03,000 --> 00:08:07,000 所有小於n,然後加密這些塊。 155 00:08:07,000 --> 00:08:12,000 我們將加密的字符串的CS50,我們可以分手分為4塊, 156 00:08:12,000 --> 00:08:14,000 每一個字母。 157 00:08:14,000 --> 00:08:17,000 為了加密我的消息,我需要把它轉換成 158 00:08:17,000 --> 00:08:20,000 某種形式的數字表示。 159 00:08:20,000 --> 00:08:25,000 讓我們連接我的消息中的字符的ASCII值。 160 00:08:25,000 --> 00:08:28,000 為了加密一個給定的消息m 161 00:08:28,000 --> 00:08:37,000 我需要計算C = M,E(mod n)的。 162 00:08:37,000 --> 00:08:40,000 但是,m必須是小於n, 163 00:08:40,000 --> 00:08:45,000 否則完整的郵件不能被表示模n。 164 00:08:45,000 --> 00:08:49,000 我們可以打破分成幾個塊,所有這一切都是小於n,m,最高 165 00:08:49,000 --> 00:08:52,000 並加密這些塊。 166 00:08:52,000 --> 00:09:03,000 這些塊進行加密,我們可以得到C1 = 67 5(MOD 989) 167 00:09:03,000 --> 00:09:06,000 = 658。 168 00:09:06,000 --> 00:09:15,000 我們的第二塊,我們有83到5(MOD 989) 169 00:09:15,000 --> 00:09:18,000 = 15。 170 00:09:18,000 --> 00:09:26,000 對於我們的第三塊,我們有53到5(MOD 989) 171 00:09:26,000 --> 00:09:30,000 = 799。 172 00:09:30,000 --> 00:09:39,000 最後,我們的最後一個塊,我們有48到5(MOD 989) 173 00:09:39,000 --> 00:09:43,000 = 975。 174 00:09:43,000 --> 00:09:48,000 現在,我們可以送過來搶這些加密的值。 175 00:09:54,000 --> 00:09:58,000 在這裡,你走了,羅伯。 176 00:09:58,000 --> 00:10:01,000 雖然我們的信息是在飛行中,讓我們再看看 177 00:10:01,000 --> 00:10:07,000 我們如何得到該值的d。 178 00:10:07,000 --> 00:10:17,000 我們的數d 5D = 1(模924),以滿足需要。 179 00:10:17,000 --> 00:10:24,000 這使D的乘法逆模924。 180 00:10:24,000 --> 00:10:28,000 考慮到2的整數,a和b,擴展的歐幾里德算法 181 00:10:28,000 --> 00:10:33,000 可以用來找到這些2個整數的最大公約數。 182 00:10:33,000 --> 00:10:37,000 它也將給予我們2其他數目,x和y, 183 00:10:37,000 --> 00:10:47,000 滿足方程ax + = a和b的最大公約數。 184 00:10:47,000 --> 00:10:49,000 這是如何幫助我們呢? 185 00:10:49,000 --> 00:10:52,000 好了,堵在E = 5的 186 00:10:52,000 --> 00:10:56,000 和m = 924為b 187 00:10:56,000 --> 00:10:59,000 我們已經知道,這些數字是互質的。 188 00:10:59,000 --> 00:11:03,000 他們的最大公約數是1。 189 00:11:03,000 --> 00:11:09,000 這為我們提供了5倍+ 924y = 1 190 00:11:09,000 --> 00:11:17,000 或5x = 1 - 924y。 191 00:11:17,000 --> 00:11:22,000 但是,如果我們只關心一切模924 192 00:11:22,000 --> 00:11:25,000 那麼我們就可以刪除 - 924y。 193 00:11:25,000 --> 00:11:27,000 回想一下時鐘。 194 00:11:27,000 --> 00:11:31,000 如果分針是1,然後正好是10小時, 195 00:11:31,000 --> 00:11:35,000 我們知道分針將仍然是1。 196 00:11:35,000 --> 00:11:39,000 在這裡,我們從1開始,然後繞究竟y次, 197 00:11:39,000 --> 00:11:41,000 所以我們仍然會在1。 198 00:11:41,000 --> 00:11:49,000 我們有5倍= 1(模924)。 199 00:11:49,000 --> 00:11:55,000 在這裡x是我們正在尋找之前的D一樣, 200 00:11:55,000 --> 00:11:58,000 因此,如果我們使用擴展的歐幾里德算法 201 00:11:58,000 --> 00:12:04,000 得到這個數x,這是我們要利用我們的D數。 202 00:12:04,000 --> 00:12:07,000 現在,讓我們來運行擴展的歐幾里德算法為A = 5 203 00:12:07,000 --> 00:12:11,000 和b = 924。 204 00:12:11,000 --> 00:12:14,000 我們將使用的方法稱為表的方法。 205 00:12:14,000 --> 00:12:21,000 我們的表將有4個列,的x,y,D,和k。 206 00:12:21,000 --> 00:12:23,000 我們的餐桌上開始2行。 207 00:12:23,000 --> 00:12:28,000 在第一行中,我們有1,0,那麼我們的價值的,這是5, 208 00:12:28,000 --> 00:12:37,000 和我們的第二行是0,1,我們為b的值,它是924。 209 00:12:37,000 --> 00:12:40,000 的值的第4列,K,結果將是 210 00:12:40,000 --> 00:12:45,000 d的值除以d的值在它的上面的行中的 211 00:12:45,000 --> 00:12:49,000 在同一行上。 212 00:12:49,000 --> 00:12:56,000 我們有5除以924的一些其餘為0。 213 00:12:56,000 --> 00:12:59,000 這意味著我們有k = 0。 214 00:12:59,000 --> 00:13:05,000 現在的值的每一個其他小區,將小區2的值,它上面的行 215 00:13:05,000 --> 00:13:09,000 減去的排它上面的時間k的值。 216 00:13:09,000 --> 00:13:11,000 讓我們開始與d排在第三。 217 00:13:11,000 --> 00:13:19,000 我們有5個 - 924 * 0 = 5。 218 00:13:19,000 --> 00:13:25,000 下一步,我們0 - 1 0 0 219 00:13:25,000 --> 00:13:30,000 和1 - 0 * 0,它是1。 220 00:13:30,000 --> 00:13:33,000 太糟糕了,讓我們移動到下一行。 221 00:13:33,000 --> 00:13:36,000 首先,我們需要我們的k值。 222 00:13:36,000 --> 00:13:43,000 924除以5 = 184,還有剩餘, 223 00:13:43,000 --> 00:13:46,000 因此,我們對k的值是184。 224 00:13:46,000 --> 00:13:54,000 現在924 - 5 * 184 = 4。 225 00:13:54,000 --> 00:14:05,000 1 - 0 * 184為1和0 - 1 * 184 -184。 226 00:14:05,000 --> 00:14:07,000 好吧,讓我們做的下一行。 227 00:14:07,000 --> 00:14:10,000 我們的k值是1,因為 228 00:14:10,000 --> 00:14:15,000 還有剩餘5除以4 = 1。 229 00:14:15,000 --> 00:14:17,000 讓我們填寫在其他列中。 230 00:14:17,000 --> 00:14:21,000 5 - 4 * 1 = 1。 231 00:14:21,000 --> 00:14:25,000 0 - 1 * 1 = -1。 232 00:14:25,000 --> 00:14:33,000 1 - 184 * 1是185。 233 00:14:33,000 --> 00:14:35,000 讓我們來看看什麼將是我們的下一個k值。 234 00:14:35,000 --> 00:14:40,000 嗯,它看起來像我們有4個1分,這是4。 235 00:14:40,000 --> 00:14:43,000 ,除以1我們在這種情況下,使得k等於 236 00:14:43,000 --> 00:14:50,000 在上述行d的值意味著我們已經完成了我們的算法。 237 00:14:50,000 --> 00:14:58,000 我們可以看到,在這裡,我們有x = 185和y = -1的最後一排。 238 00:14:58,000 --> 00:15:00,000 現在,讓我們來回到我們原來的目標。 239 00:15:00,000 --> 00:15:04,000 我們說,x的值作為結果,運行該算法 240 00:15:04,000 --> 00:15:08,000 將的乘法逆元(模b)。 241 00:15:08,000 --> 00:15:15,000 這意味著,185是5的乘法逆(MOD 924) 242 00:15:15,000 --> 00:15:20,000 這意味著,我們有一個值185為d。 243 00:15:20,000 --> 00:15:23,000 一個事實,即d = 1的最後一排 244 00:15:23,000 --> 00:15:26,000 驗證E是互質米。 245 00:15:26,000 --> 00:15:30,000 如果不是1,那麼,我們就必須選擇一個新的電子郵件。 246 00:15:30,000 --> 00:15:33,000 現在,讓我們來看看如果羅布已收到我的消息。 247 00:15:33,000 --> 00:15:35,000 當有人向我發送加密的郵件 248 00:15:35,000 --> 00:15:38,000 只要我保持我的私鑰的秘密 249 00:15:38,000 --> 00:15:41,000 我只有一個人可以解密該消息。 250 00:15:41,000 --> 00:15:46,000 要解密塊C我可以計算出原始郵件 251 00:15:46,000 --> 00:15:53,000 等於至d功率(mod n)的組塊。 252 00:15:53,000 --> 00:15:57,000 請記住,D和N是從我的私鑰。 253 00:15:57,000 --> 00:16:01,000 要得到一個完整的消息,從它的塊中,我們每個塊進行解密 254 00:16:01,000 --> 00:16:04,000 連接的結果。 255 00:16:04,000 --> 00:16:08,000 究竟如何安全的RSA? 256 00:16:08,000 --> 00:16:10,000 事實是,我們不知道。 257 00:16:10,000 --> 00:16:14,000 安全性的基礎上多久會採取攻擊者破解的消息 258 00:16:14,000 --> 00:16:16,000 與RSA加密。 259 00:16:16,000 --> 00:16:19,000 請記住,一個攻擊者訪問你的公共密鑰, 260 00:16:19,000 --> 00:16:21,000 其中包含e和n。 261 00:16:21,000 --> 00:16:26,000 如果攻擊者設法n分解成2個質數,p和q, 262 00:16:26,000 --> 00:16:30,000 然後她可以使用擴展的歐幾里德算法計算d。 263 00:16:30,000 --> 00:16:35,000 這給她的私人密鑰,該密鑰可以用來解密任何消息。 264 00:16:35,000 --> 00:16:38,000 但是,如何能迅速因素整數? 265 00:16:38,000 --> 00:16:41,000 同樣,我們不知道。 266 00:16:41,000 --> 00:16:43,000 沒有人做一個快速的方法, 267 00:16:43,000 --> 00:16:46,000 這意味著,由於大n足夠 268 00:16:46,000 --> 00:16:49,000 攻擊者不切實際的長 269 00:16:49,000 --> 00:16:51,000 以因素的號碼。 270 00:16:51,000 --> 00:16:54,000 如果有人發現一種快速的方式分解整數 271 00:16:54,000 --> 00:16:57,000 RSA將被打破。 272 00:16:57,000 --> 00:17:01,000 但是,即使整數分解本質上是慢 273 00:17:01,000 --> 00:17:04,000 RSA算法仍然有一些缺陷 274 00:17:04,000 --> 00:17:07,000 允許容易解密的消息。 275 00:17:07,000 --> 00:17:10,000 沒有人發現,發現這樣的缺陷, 276 00:17:10,000 --> 00:17:12,000 但是,這並不意味著不存在。 277 00:17:12,000 --> 00:17:17,000 從理論上講,一個人可能有閱讀所有與RSA加密的數據。 278 00:17:17,000 --> 00:17:19,000 還有另外一個位的隱私問題。 279 00:17:19,000 --> 00:17:23,000 如果Tommy一些消息,用我的公鑰進行加密, 280 00:17:23,000 --> 00:17:26,000 攻擊者使用我的公鑰加密相同的消息 281 00:17:26,000 --> 00:17:29,000 攻擊者會看到的消息是相同的 282 00:17:29,000 --> 00:17:32,000 ,從而知道湯米加密。 283 00:17:32,000 --> 00:17:36,000 為了防止這一點,消息通常與隨機比特填充 284 00:17:36,000 --> 00:17:39,000 之前被加密,以使加密的相同的消息 285 00:17:39,000 --> 00:17:44,000 多次外觀會有所不同,只要在郵件上的填充是不同。 286 00:17:44,000 --> 00:17:47,000 但是,請記住我們是如何分割成塊的消息 287 00:17:47,000 --> 00:17:50,000 使每個組塊是小於n? 288 00:17:50,000 --> 00:17:52,000 填充塊,意味著我們可能需要分開 289 00:17:52,000 --> 00:17:57,000 成甚至更多的塊,因為該填充塊必須是小於n。 290 00:17:57,000 --> 00:18:01,000 與RSA加密和解密是相對昂貴的, 291 00:18:01,000 --> 00:18:05,000 需要分手的消息分成許多塊可以是非常昂貴的。 292 00:18:05,000 --> 00:18:09,000 如果將大量的數據需要進行加密和解密 293 00:18:09,000 --> 00:18:12,000 我們可以結合對稱密鑰算法的好處 294 00:18:12,000 --> 00:18:16,000 與RSA的安全性和效率。 295 00:18:16,000 --> 00:18:18,000 雖然我們不會進入這裡, 296 00:18:18,000 --> 00:18:23,000 AES是一種對稱密鑰算法,像維瓊內爾和凱撒密碼 297 00:18:23,000 --> 00:18:25,000 但更難破解。 298 00:18:25,000 --> 00:18:30,000 當然,我們不能沒有建立一個共享密鑰使用AES 299 00:18:30,000 --> 00:18:34,000 2個系統之間,我們看到了與之前的問題。 300 00:18:34,000 --> 00:18:40,000 但是,現在我們可以使用RSA的2個系統之間建立共享的密鑰。 301 00:18:40,000 --> 00:18:43,000 我們會打電話給計算機發送數據的發送者 302 00:18:43,000 --> 00:18:46,000 計算機接收的數據的接收器。 303 00:18:46,000 --> 00:18:49,000 接收器有一個RSA密鑰對,發送 304 00:18:49,000 --> 00:18:51,000 發送者的公鑰。 305 00:18:51,000 --> 00:18:54,000 發送者產生一個AES密鑰, 306 00:18:54,000 --> 00:18:57,000 與接收方的RSA公共密鑰加密, 307 00:18:57,000 --> 00:19:00,000 和AES密鑰發送到接收器。 308 00:19:00,000 --> 00:19:04,000 接收器與RSA私人密鑰對消息進行解密。 309 00:19:04,000 --> 00:19:09,000 發送方和接收器,它們之間有一個共同的AES密鑰。 310 00:19:09,000 --> 00:19:14,000 AES,這是快得多比RSA加密和解密, 311 00:19:14,000 --> 00:19:18,000 現在可以使用大容量的數據進行加密,並將它們發送到接收機, 312 00:19:18,000 --> 00:19:21,000 誰可以解密使用相同的密鑰。 313 00:19:21,000 --> 00:19:26,000 AES,這是快得多比RSA加密和解密, 314 00:19:26,000 --> 00:19:30,000 現在可以使用大容量的數據進行加密,並將它們發送到接收機, 315 00:19:30,000 --> 00:19:32,000 誰可以解密使用相同的密鑰。 316 00:19:32,000 --> 00:19:36,000 我們只需要RSA轉移的共享密鑰。 317 00:19:36,000 --> 00:19:40,000 我們不再需要使用RSA在所有。 318 00:19:40,000 --> 00:19:46,000 它看起來像我已經得到了消息。 319 00:19:46,000 --> 00:19:49,000 這不要緊,如果任何人讀什麼在紙張上飛機前,我發現它 320 00:19:49,000 --> 00:19:55,000 因為我是唯一一個用私鑰。 321 00:19:55,000 --> 00:19:57,000 讓我們來解密在消息中的每個組塊。 322 00:19:57,000 --> 00:20:07,000 第一個塊,658,提高到d的權力,這是185, 323 00:20:07,000 --> 00:20:18,000 模n,這是989,是等於67, 324 00:20:18,000 --> 00:20:24,000 這是在ASCII字母“C”。 325 00:20:24,000 --> 00:20:31,000 現在,到了第二塊。 326 00:20:31,000 --> 00:20:35,000 第二塊值15, 327 00:20:35,000 --> 00:20:41,000 我們提出的第185電源, 328 00:20:41,000 --> 00:20:51,000 MOD 989,這是等於83 329 00:20:51,000 --> 00:20:57,000 這是在ASCII字母S。 330 00:20:57,000 --> 00:21:06,000 現在,我們的第三塊,它的價值799提高到185, 331 00:21:06,000 --> 00:21:17,000 MOD 989,這是等於53, 332 00:21:17,000 --> 00:21:24,000 它的價值在ASCII字符5。 333 00:21:24,000 --> 00:21:30,000 現在,最後一個塊,它的值是975, 334 00:21:30,000 --> 00:21:41,000 我們募集到185,MOD 989, 335 00:21:41,000 --> 00:21:51,000 該值是48,這是值的ASCII字符0。 336 00:21:51,000 --> 00:21:57,000 我的名字是羅布·波頓,這是CS50。 337 00:21:57,000 --> 00:22:00,000 [CS50.TV] 338 00:22:06,000 --> 00:22:08,000 RSA在所有。 339 00:22:08,000 --> 00:22:14,000 RSA在所有。 [笑聲] 340 00:22:14,000 --> 00:22:17,000 在所有。