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 시저와 Vigenère의 암호와 같은 암호화 알고리즘은 매우 안전하지 않습니다. 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 Vigenère의 암호 시저 암호보다 안전하지만 9 00:00:25,000 --> 00:00:28,000 때문에 키 큰 검색 공간을 한 번 공격자 10 00:00:28,000 --> 00:00:30,000 , Vigenère의 암호로 키의 길이를 알고 11 00:00:30,000 --> 00:00:34,000 어떤은 암호화 된 텍스트의 패턴의 분석을 통해 결정될 수 12 00:00:34,000 --> 00:00:38,000 Vigenère의 암호가 훨씬 더 안전 카이사르 암호문보다하지 않습니다. 13 00:00:38,000 --> 00:00:42,000 RSA는 반면에,이 같은 공격에 취약하지 않습니다. 14 00:00:42,000 --> 00:00:45,000 카이사르 암호문과 Vigenère 암호 같은 키를 사용 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 이 사용자는 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 일단 로브의 공개 키를 사용하여 메시지를 암호화 한 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 공개 키는 기억이 소수의 제품을 사용했습니다. 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 첫째, 우리는이 소수의 숫자가 필요합니다. 94 00:03:49,000 --> 00:03:52,000 우리는이 두 숫자 P와 Q 전화 할게. 95 00:03:52,000 --> 00:03:56,000 실제로 P와 Q를 선택하기 위해 우리는 pseudorandomly 발생합니다 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 우리는 우리가 사용할 수있는 두 primes이 때까지. 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 지금 우리는 제 3 수를 함께 P와 Q를 곱합니다 109 00:04:43,000 --> 00:04:45,000 우리는 N 부를된다. 110 00:04:45,000 --> 00:04:55,000 우리의 경우, N = 23 1989 = * 43,. 111 00:04:55,000 --> 00:04:58,000 우리는 = 1989 습니했습니다. 112 00:04:58,000 --> 00:05:02,000 Q와 함께 1 - - 다음 우리는 P를 곱합니다 1 113 00:05:02,000 --> 00:05:05,000 우리가 m 부를 네번째 숫자를. 구하는 방법 114 00:05:05,000 --> 00:05:15,000 우리의 경우, m = 22 924를 = * 42. 115 00:05:15,000 --> 00:05:18,000 우리는 m = 924이 있습니다. 116 00:05:18,000 --> 00:05:22,000 이제 우리는 상대적으로 소수 숫자 전자가 필요합니다 m 117 00:05:22,000 --> 00:05:25,000 그리고 m 이내 거리에 있습니다. 118 00:05:25,000 --> 00:05:28,000 두 숫자는 상대적으로 소수 또는 coprime 아르 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 하나이어야합니다. 122 00:05:39,000 --> 00:05:44,000 실제로, 그것은 소수 65,537 할 전자에 대한 일반적 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 m). 128 00:06:11,000 --> 00:06:17,000 이 모드에서 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 일 (MOD 60)와 동일합니다. 138 00:06:57,000 --> 00:07:02,000 공개 키는 쌍 전자와 N 것입니다 139 00:07:02,000 --> 00:07:09,000 이 경우 전자는 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 오리지널 primes 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 우리는 4 그룹으로 헤어지고 할 수있는 문자열 CS50을, 암호화됩니다 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 나는 전자 (MOD N)에 C = m을 계산해야합니다. 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 5 = 67 (MOD 989) 167 00:09:03,000 --> 00:09:06,000 있는 = 658. 168 00:09:06,000 --> 00:09:15,000 두 번째 덩어리를 우리는 5 일 (모드 989)에 83이 169 00:09:15,000 --> 00:09:18,000 어떤 = 15. 170 00:09:18,000 --> 00:09:26,000 세 번째 덩어리를 우리는 5 일 (모드 989)에 53이 171 00:09:26,000 --> 00:09:30,000 있는 = 799. 172 00:09:30,000 --> 00:09:39,000 그리고 마지막으로, 우리의 마지막 덩어리를 우리는 5 일 (모드 989) 48이 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는 5 일 = 1 (MOD 924)을 만족해야했습니다. 179 00:10:17,000 --> 00:10:24,000 이 D 5 모듈로 924의 multiplicative 역 수 있습니다. 180 00:10:24,000 --> 00:10:28,000 두 정수, a와 b, 확장 유클리드 알고리즘을 감안할 때 181 00:10:28,000 --> 00:10:33,000 이 두 정수의 최대 공약수를 찾는 데 사용하실 수 있습니다. 182 00:10:33,000 --> 00:10:37,000 또한 우리에게이 다른 번호, x와 y를 제공합니다 183 00:10:37,000 --> 00:10:47,000 그 a와 b의 = 최대 공약수하여 방정식 도끼 +를 만족. 184 00:10:47,000 --> 00:10:49,000 어떻게 이런 일이 우리를 도와합니까? 185 00:10:49,000 --> 00:10:52,000 음,에 대한 전자에 = 5를 연결해 186 00:10:52,000 --> 00:10:56,000 와 B에 대한 m = 924 187 00:10:56,000 --> 00:10:59,000 우리는 이미이 숫자가 coprime 않고 있다는 것도 알고있다. 188 00:10:59,000 --> 00:11:03,000 이들의 최대 공약수는 1입니다. 189 00:11:03,000 --> 00:11:09,000 이 + 924y = 1 우리에게 5 배를 제공합니다 190 00:11:09,000 --> 00:11:17,000 또는 5 배 = 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 우리는 = 1 (MOD 924)를 5 배 있습니다. 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 이제 한 = 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 우리는 924으로 나눈 5 일부 나머지 0이 있습니다. 213 00:12:56,000 --> 00:12:59,000 우리가 = 0 K 있다는 것을 의미합니다. 214 00:12:59,000 --> 00:13:05,000 지금 다른 모든 셀의 값은 위의 셀이 행의 값이 될것이다 215 00:13:05,000 --> 00:13:09,000 그 배 K 위의 행의 마이너스 값입니다. 216 00:13:09,000 --> 00:13:11,000 3 행에서 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 85이다. 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 (MOD B)의 multiplicative 역이 될 것입니다. 241 00:15:08,000 --> 00:15:15,000 그래서 185의 5 multiplicative 역 (MOD 924)을 의미합니다 242 00:15:15,000 --> 00:15:20,000 그건 우리가 d의 185의 값을 가지고 있다는 것을 의미합니다. 243 00:15:20,000 --> 00:15:23,000 사실 그 D = 1의 마지막 행에 244 00:15:23,000 --> 00:15:26,000 그 전자가 m에 coprime되었습니다 확인합니다. 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 전력 (모드 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 이는 전자와 N을 모두 포함하고 있습니다. 261 00:16:21,000 --> 00:16:26,000 공격자는이 primes, P와 Q로 n을 반영하기 위해 관리하는 경우 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 이 unrealistically 긴 공격자 걸릴거야 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 토미는 내 공개 키를 사용하여 일부 메시지를 암호화하는 경우 280 00:17:23,000 --> 00:17:26,000 그리고 공격자는 공개 키를 사용하여 동일한 메시지를 암호화 281 00:17:26,000 --> 00:17:29,000 공격자는 2 개의 메시지가 동일한 것을 볼 수 있습니다 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는 Vigenère와 카이사르 암호와 같은 대칭 키 알고리즘입니다 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 하지만 지금 우리는 2 시스템 간의 공유 비밀 키를 구축하기 위해 RSA 사용할 수 있습니다. 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 RSA보다 암호화 및 해독에 훨씬 빠른 AES, 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 RSA보다 암호화 및 해독에 훨씬 빠른 AES, 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, 우리는 185 D 파워로 인상 323 00:20:07,000 --> 00:20:18,000 989이 모드 n은,,, 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 우리는 1백85번째 전원을 모금, 그 328 00:20:41,000 --> 00:20:51,000 MOD 1989이 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 1989이 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 이는 ASCII의 문자 0 값이 48와 동일합니다. 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 천만에.