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 在所有。