1 00:00:00,000 --> 00:00:02,750 [Powered by Google Translate] [Semana 10] 2 00:00:02,750 --> 00:00:04,750 [David J. Malan] [Harvard University] 3 00:00:04,750 --> 00:00:07,000 [Esta es CS50.] [CS50.TV] 4 00:00:08,520 --> 00:00:13,240 >> ¡Muy bien! Esto es CS50 pero no por mucho tiempo. 5 00:00:13,240 --> 00:00:14,740 Este es el comienzo de la semana 10. 6 00:00:14,740 --> 00:00:18,780 El miércoles tenemos nuestro concurso, y luego el próximo lunes tenemos una tarta de celebración 7 00:00:18,780 --> 00:00:22,030 como se cierra el círculo todo el camino de vuelta desde la semana cero. 8 00:00:22,030 --> 00:00:25,200 Hoy en día, hablamos de uno de mis temas favoritos, la verdad sea dicha - 9 00:00:25,200 --> 00:00:29,000 el de la seguridad y la privacidad y las implicaciones de todo el hardware y software 10 00:00:29,000 --> 00:00:31,000 que todos usamos hoy en día. 11 00:00:31,000 --> 00:00:33,300 Para ser honesto, hay una gran cantidad de amenazas por ahí 12 00:00:33,300 --> 00:00:35,430 que si usted realmente no han detenido a pensar en ellos, 13 00:00:35,430 --> 00:00:36,920 en realidad son bastante desalentador. 14 00:00:36,920 --> 00:00:40,070 El caso en cuestión - si alguno de ustedes alguna vez has descargado un software 15 00:00:40,070 --> 00:00:42,660 fuera de la Internet e instalado en su computadora, 16 00:00:42,660 --> 00:00:45,220 que ha participado en un importante grado de confianza, ¿no? 17 00:00:45,220 --> 00:00:50,220 No hay nada haber impedido Skype, o Chrome, o cualquier pieza de software 18 00:00:50,220 --> 00:00:54,770 que ha instalado en su computadora, desde simplemente eliminar todos los archivos en el disco duro; 19 00:00:54,770 --> 00:00:58,260 de subir todos los archivos en su disco duro al servidor un poco de chico malo; 20 00:00:58,260 --> 00:01:01,650 de la lectura de todos sus correos electrónicos, a partir de interceptar todos los mensajes instantáneos. 21 00:01:01,650 --> 00:01:05,040 Porque la realidad es hoy en día con los sistemas operativos más modernos 22 00:01:05,040 --> 00:01:10,040 en realidad no hay mucho de un muro entre los programas de software que se instalan, 23 00:01:10,040 --> 00:01:14,220 y tú y yo somos más o menos sólo un poco de cruzar los dedos y teniendo fe en 24 00:01:14,220 --> 00:01:17,750 que dicha aplicación se descarga de forma gratuita, o esa cosa que es 99 centavos de dólar, 25 00:01:17,750 --> 00:01:20,140 en realidad es completamente benigno. 26 00:01:20,140 --> 00:01:23,090 Pero como hemos visto a través de C, y ahora PHP y JavaScript, 27 00:01:23,090 --> 00:01:25,420 con esta capacidad de expresarnos mediante programación, 28 00:01:25,420 --> 00:01:30,300 usted puede hacer casi cualquier cosa que quieras con un programa que un usuario mismo o ella misma podía hacer. 29 00:01:30,300 --> 00:01:32,390 >> Así, hoy nos centramos en el tema - 30 00:01:32,390 --> 00:01:35,360 no sólo algunas amenazas, pero también defensas. 31 00:01:35,360 --> 00:01:37,540 De hecho, en el mundo de la seguridad en general, 32 00:01:37,540 --> 00:01:39,040 hay una especie de este juego del gato y el ratón, 33 00:01:39,040 --> 00:01:41,990 y me atrevo a decir a los chicos malos tienen casi siempre una ventaja. 34 00:01:41,990 --> 00:01:45,880 Cuando se trata de tomar ventaja de hardware y software en los ordenadores personales, 35 00:01:45,880 --> 00:01:51,250 tenemos que darnos cuenta de que un chico malo, simplemente tiene que encontrar un simple error - 36 00:01:51,250 --> 00:01:56,150 una explotación, un error - en una pieza de software que hemos escrito o están en ejecución 37 00:01:56,150 --> 00:01:58,280 para que él o ella para tomar el control de nuestro sistema. 38 00:01:58,280 --> 00:02:02,870 Por el contrario, nosotros - los buenos - que parchear y corregir todos esos errores 39 00:02:02,870 --> 00:02:04,900 y evitar todas esas debilidades. 40 00:02:04,900 --> 00:02:07,870 Y así, me atrevo a decir que, en general, los chicos malos tienen la ventaja. 41 00:02:07,870 --> 00:02:10,840 ¿Qué clases de clases como esta y posteriores son realmente 42 00:02:10,840 --> 00:02:14,830 no se le enseña acerca de cómo librar las batallas que estos chicos malos hacen, 43 00:02:14,830 --> 00:02:18,220 pero son sobre como protegerse a sí mismo o al menos cómo hacer una decisión calculada 44 00:02:18,220 --> 00:02:22,970 eso sí, sé que este pedazo de software realmente podía leer cada uno de mis correos electrónicos, 45 00:02:22,970 --> 00:02:27,040 pero estoy de acuerdo con eso por el valor que me lleva a la otra. 46 00:02:27,040 --> 00:02:31,060 >> Estoy muy contento de estar unidos por dos de las personas más inteligentes que conozco - 47 00:02:31,060 --> 00:02:33,060 Rob Bowden y Hardison Nate. 48 00:02:33,060 --> 00:02:36,850 Rob está a punto de llevarnos por un recorrido a través de los niveles más bajos de las etiquetas de seguridad - 49 00:02:36,850 --> 00:02:42,470 la del compilador que, hasta ahora, todos hemos llegado a amar y confiar. Rob Bowden. 50 00:02:42,470 --> 00:02:47,790 [Aplauso] 51 00:02:47,790 --> 00:02:50,280 >> [Rob] De acuerdo. David ha tomado casi toda mi spiel 52 00:02:50,280 --> 00:02:52,320 que me iba a presentar con, pero - 53 00:02:52,320 --> 00:02:58,070 Hace varias semanas, usted vio el ejemplo de un ataque de desbordamiento del búfer 54 00:02:58,070 --> 00:03:01,900 que es un ejemplo de un pirata informático de hacking en alguna pieza de software 55 00:03:01,900 --> 00:03:06,060 que no se supone que están pirateando. 56 00:03:06,060 --> 00:03:09,690 El otro lado de este 57 00:03:09,690 --> 00:03:14,470 es a veces tienes software malicioso que es en sí y por sí mismo. 58 00:03:14,470 --> 00:03:17,070 No necesita ni siquiera ser hackeado. 59 00:03:17,070 --> 00:03:20,670 La persona que escribió el software quiere hackear. 60 00:03:20,670 --> 00:03:22,190 >> Vamos a entrar de lleno en el código, 61 00:03:22,190 --> 00:03:28,560 echar un vistazo a "login.c". 62 00:03:28,560 --> 00:03:33,390 Aquí, un programa tonto que valida un nombre de usuario y una contraseña. 63 00:03:33,390 --> 00:03:39,420 Aquí usted definitivamente debe ser sentirse cómodo con C de nuevo para el concurso. 64 00:03:39,420 --> 00:03:43,470 En primer lugar, estamos usando conseguir cuerdas para describir el nombre de usuario, 65 00:03:43,470 --> 00:03:46,280 entonces estamos usando get cadena para agarrar la contraseña, 66 00:03:46,280 --> 00:03:50,680 y luego tenemos algunas comprobaciones triviales de la justa, es el nombre de usuario "robar"? 67 00:03:50,680 --> 00:03:52,710 Y es la contraseña "thisiscs50"? 68 00:03:52,710 --> 00:03:56,900 ¿O es el nombre de usuario "tommy" y la contraseña "i <3javascript"? 69 00:03:56,900 --> 00:03:58,980 Si cualquiera de ellos es el caso, 70 00:03:58,980 --> 00:04:01,980  entonces sólo vamos a imprimir el "éxito", y luego tenemos acceso. 71 00:04:01,980 --> 00:04:07,690 De lo contrario, vamos a imprimir "no válido de inicio de sesión" y luego, por supuesto, 72 00:04:07,690 --> 00:04:11,120  ya que la memoria malloc bosquejo cadenas, hemos nombre de usuario y contraseña gratis. 73 00:04:11,120 --> 00:04:15,560 Este es un programa de conexión trivial, 74 00:04:15,560 --> 00:04:18,110 y si lo piensas al iniciar sesión en el dispositivo, 75 00:04:18,110 --> 00:04:22,350 es bastante similar - o incluso acceder a su ordenador - 76 00:04:22,350 --> 00:04:24,930 sólo hay algún programa de inicio de sesión que te da acceso. 77 00:04:24,930 --> 00:04:31,840 A continuación, pasamos a tener codificado 'rob', 'thisiscs50', 'Tommy', 'i <3javascript', 78 00:04:31,840 --> 00:04:34,950 pero probablemente hay algún archivo en alguna parte de su sistema operativo 79 00:04:34,950 --> 00:04:38,690 que tiene una lista de nombres de usuarios que pueden iniciar sesión en el sistema 80 00:04:38,690 --> 00:04:41,740 y una lista de las contraseñas asociadas con los nombres de usuario. 81 00:04:41,740 --> 00:04:46,090 Por lo general, las contraseñas no se almacenan en texto plano sólo de esta manera. 82 00:04:46,090 --> 00:04:50,360 Hay algún tipo de cifrado, pero esto va a hacer para nuestro ejemplo. 83 00:04:50,360 --> 00:04:57,000 >> Viniendo a nuestro compilador - 84 00:04:57,020 --> 00:05:00,780 que va a ser muy sencillo. 85 00:05:00,780 --> 00:05:04,800 Tenemos que especificar al menos algún archivo que queremos compilar, 86 00:05:04,800 --> 00:05:10,200 Y luego aquí - estas líneas 87 00:05:10,200 --> 00:05:12,520 se acaba de leer un archivo. 88 00:05:12,520 --> 00:05:16,080 Se lee todo el archivo en un búfer grande, 89 00:05:16,080 --> 00:05:19,000 y luego nos null-terminará nuestro buffer como siempre, 90 00:05:19,000 --> 00:05:21,000 y finalmente sólo compilar el archivo. 91 00:05:21,000 --> 00:05:24,090 No vamos a ver cómo se aplica realmente compilación, 92 00:05:24,090 --> 00:05:26,820 sino como una pista, sólo llama a Clang. 93 00:05:26,820 --> 00:05:32,370 Vamos a utilizar este programa para compilar cosas en vez de Clang. 94 00:05:32,370 --> 00:05:39,260 Un problema que empezar es que vemos que queremos compilar nuestro compilador, 95 00:05:39,260 --> 00:05:43,620 pero si no vas a utilizar Clang, no sé lo que voy a compilar con. 96 00:05:43,620 --> 00:05:46,700 Este es un problema general conocido como bootstrapping. 97 00:05:46,700 --> 00:05:53,080 Así que, sólo por esta vez, voy a utilizar Clang para recopilar nuestro compilador. 98 00:05:53,080 --> 00:05:58,800 >> Si usted piensa en GCC y Clang - 99 00:05:58,800 --> 00:06:03,200 estos programas, los compiladores se actualizan constantemente, 100 00:06:03,200 --> 00:06:10,010 y los compiladores se compilan utilizando GCC y Clang. 101 00:06:10,010 --> 00:06:14,890 Clang es sólo una gran C o C + +, 102 00:06:14,890 --> 00:06:19,510 por lo que el compilador se utilice para compilar ese es Clang. 103 00:06:19,510 --> 00:06:26,820 Aquí, ahora, sólo vamos a usar nuestro compilador para compilar el compilador, 104 00:06:26,820 --> 00:06:33,830 e incluso podemos decir - '/ compilador.', 'compiler.c', 'compile.c', '-o compilador. 105 00:06:33,830 --> 00:06:37,250 Observe este es el comando exacto que corrió delante - 106 00:06:37,250 --> 00:06:41,330 basta con sustituir Clang con '. / compilador. 107 00:06:41,330 --> 00:06:44,990 Y ahora tenemos otro compilador, pero es exactamente lo mismo. 108 00:06:44,990 --> 00:06:47,510 Simplemente llama Clang. 109 00:06:47,510 --> 00:06:55,050 >> Vamos a usar nuestro compilador para compilar nuestro programa de inicio de sesión. 110 00:06:55,050 --> 00:07:03,030 Está bien - ". / Compilador login.c-o login". 111 00:07:03,030 --> 00:07:06,160 Por lo tanto, undefined reference to "GetString". 112 00:07:06,160 --> 00:07:11,250 ¿Tienes un "-lcs50". Bien. 113 00:07:11,250 --> 00:07:13,790 Así que ahora tengo el programa de inicio de sesión. 114 00:07:13,790 --> 00:07:16,790 Ejecutarlo - recibir "Por favor, ingrese su nombre de usuario". 115 00:07:16,790 --> 00:07:22,140 Un ejemplo fue robar. Introduzca su contraseña - thisiscs50. 116 00:07:22,140 --> 00:07:24,930 Y el éxito! Tengo acceso. 117 00:07:24,930 --> 00:07:28,350 Ejecutar de nuevo y entrar en algún contraseña no válida - 118 00:07:28,350 --> 00:07:30,350 o nombre de usuario válido y la contraseña - 119 00:07:30,350 --> 00:07:32,860 Login incorrecto. 120 00:07:32,860 --> 00:07:37,740 Bien. Nada interesante acerca de esto hasta ahora. 121 00:07:37,740 --> 00:07:43,100 Pero, vamos a echar un vistazo al iniciar la sesión de nuevo - 122 00:07:43,100 --> 00:07:47,850 y esto va a ser un ejemplo algo trivial, 123 00:07:47,850 --> 00:07:59,330 pero vamos a añadir una cosa aquí y decir: else if ((strcmp (nombre de usuario, "hacker") == 0 && 124 00:07:59,330 --> 00:08:14,510 strcmp (password ", LOLihackyou") == 0)) 125 00:08:14,510 --> 00:08:26,280 por lo que ahora, printf ("Hacked Ahora tiene acceso \ n!."); bien. 126 00:08:26,280 --> 00:08:36,240 Compilación de esto - compilador login.c-o login-lcs50 - 127 00:08:36,240 --> 00:08:40,190 ahora corriendo identificarte - y si uso mi nombre de usuario hackers 128 00:08:40,190 --> 00:08:44,740 y la contraseña LOLihackedyou - 129 00:08:44,740 --> 00:08:47,780 ¿Me escribe mal allí antes? 130 00:08:47,780 --> 00:08:52,990 En login.c--ihack - I'Ll se cortó porque creo que hacer eso más tarde. 131 00:08:52,990 --> 00:08:56,270 Bien. Volver a compilar. 132 00:08:56,270 --> 00:09:01,500 Re-running - hacker - LOLihackedyou - 133 00:09:01,500 --> 00:09:03,650 Hacked! Ahora tiene acceso. 134 00:09:03,650 --> 00:09:06,580 >> No parece ser que gran parte de la diferencia 135 00:09:06,580 --> 00:09:10,890 porque es la misma comprobación exacta que estaba haciendo por otros nombres de usuario y contraseñas. 136 00:09:10,890 --> 00:09:17,720 Además, lo importante es que si la gente mira esto-login.c - 137 00:09:17,720 --> 00:09:24,020 decir, si yo fuera a pasar esto a mi pareja, y abrir este archivo, 138 00:09:24,020 --> 00:09:29,870 y lean esto, van a ver - está bien, ¿por qué tienes estas líneas de código en esta lista? 139 00:09:29,870 --> 00:09:33,320 Eso no es, obviamente, algo que debería estar en su programa. 140 00:09:33,320 --> 00:09:41,590 En algunos programas - como cualquier software propietario que no es de código abierto - 141 00:09:41,590 --> 00:09:46,200 usted puede nunca ver estas líneas de código. 142 00:09:46,200 --> 00:09:50,440 Algo como Skype o algo así - por todo lo que sé, 143 00:09:50,440 --> 00:09:57,600 Skype está en el equipo y no es sólo un nombre de usuario y contraseña específica combinación 144 00:09:57,600 --> 00:10:01,580 que se conectará a Skype en una forma especial. 145 00:10:01,580 --> 00:10:04,230 No sabemos de él, y la gente no sabe sobre él, 146 00:10:04,230 --> 00:10:09,640 porque no se llega a leer el código fuente para ver que hay de este agujero. 147 00:10:09,640 --> 00:10:11,800 >> Lo que llamamos esto - 148 00:10:11,800 --> 00:10:16,530 aunque esto no es un ejemplo muy inteligente - 149 00:10:16,530 --> 00:10:18,970 esto se llama una puerta trasera. 150 00:10:18,970 --> 00:10:22,320 Si usted piensa en la puerta trasera de su casa. 151 00:10:22,320 --> 00:10:26,640 Aquí, si puedo validar con "robar" los nombres de usuario o 'Tommy' 152 00:10:26,640 --> 00:10:28,580 que sería como usar la "puerta de entrada". 153 00:10:28,580 --> 00:10:33,700 Esa es la manera que tengo que iniciar sesión segura. 154 00:10:33,700 --> 00:10:37,630 Pero si entro con este nombre de usuario y contraseña - 155 00:10:37,630 --> 00:10:40,630 luego de que está usando la "puerta trasera". 156 00:10:40,630 --> 00:10:42,810 No era la manera intencional para entrar en el programa, 157 00:10:42,810 --> 00:10:45,350 pero aún funciona. 158 00:10:45,350 --> 00:10:49,160 Y la gente en general, no se supone que deben saber acerca de estas puertas traseras. 159 00:10:49,160 --> 00:10:53,050 Vamos a mejorar esto. 160 00:10:53,050 --> 00:10:55,610 Vamos a revertir esta en nuestro login.c original, 161 00:10:55,610 --> 00:11:05,510 y vamos a echar un vistazo a nuestro nuevo compilador. Bien. 162 00:11:05,510 --> 00:11:08,460 Todo hasta aquí es exactamente el mismo. 163 00:11:08,460 --> 00:11:10,460 Estamos leyendo todo el archivo en un búfer. 164 00:11:10,460 --> 00:11:14,400 Todo aquí es el mismo. 165 00:11:14,400 --> 00:11:16,180 Nos acaba de compilar el archivo. 166 00:11:16,180 --> 00:11:19,770 Pero ahora tengo esta cosa si aquí 167 00:11:19,770 --> 00:11:24,140 dice que, si el archivo que se me ocurre es que la compilación login.c, 168 00:11:24,140 --> 00:11:27,390 entonces hago algo especial. 169 00:11:27,390 --> 00:11:29,900 ¿Qué es ese algo especial? 170 00:11:29,900 --> 00:11:33,820 Veo aquí un trozo de cuerda llamado 'hack', 171 00:11:33,820 --> 00:11:35,950 y mirando a estas líneas de código - 172 00:11:35,950 --> 00:11:41,990 estas son las mismas líneas de código - Supongo que hice uso "ihack 'y no' ihacked" antes - 173 00:11:41,990 --> 00:11:44,240 mirar estas líneas de código, 174 00:11:44,240 --> 00:11:47,880 son las mismas líneas exactas del código que tenía en login.c antes. 175 00:11:47,880 --> 00:11:51,130 Pero ahora, en vez de tenerlos en login.c, 176 00:11:51,130 --> 00:11:54,290 Me voy a poner en mi compilador. 177 00:11:54,290 --> 00:12:00,240 >> Estas son las líneas de código que voy a querer para insertar en login.c. 178 00:12:00,240 --> 00:12:06,350 Estas líneas de código - el búfer que originalmente tenía mi login.c 179 00:12:06,350 --> 00:12:11,080 ya no va a ser lo suficientemente grande, porque ahora quiero insertar también este hack 180 00:12:11,080 --> 00:12:12,940 en medio de mi programa. 181 00:12:12,940 --> 00:12:16,350 Todo esto hace es crear un nuevo buffer que es lo suficientemente grande - 182 00:12:16,350 --> 00:12:22,020 tanto para el fichero original y las líneas adicionales de código - el hack - que quiero insertar allí. 183 00:12:22,020 --> 00:12:24,920 Aquí hay algo para notar - 184 00:12:24,920 --> 00:12:29,200 char * pattern = "/ / negarles el acceso!" 185 00:12:29,200 --> 00:12:33,760 Si miramos hacia atrás en login.c, 186 00:12:33,760 --> 00:12:37,690 vemos aquí este comentario - negarles el acceso! 187 00:12:37,690 --> 00:12:42,360 En login.c, este comentario se ve completamente inocuo, 188 00:12:42,360 --> 00:12:48,270 por lo que no se sospecha de cualquier intento malicioso con sólo este comentario. 189 00:12:48,270 --> 00:12:55,600 Pero en nuestro compilador, se nos va a mirar específicamente para esta línea de código, 190 00:12:55,600 --> 00:12:57,600 y después, cuando la encontramos - 191 00:12:57,600 --> 00:13:03,330 estas líneas de código a insertar nuestro cortar en esa posición. 192 00:13:03,330 --> 00:13:06,910 Por lo tanto, estamos interactuando sobre la login.c entero, 193 00:13:06,910 --> 00:13:12,080 estamos insertando ese truco exactamente donde dice negarles el acceso, 194 00:13:12,080 --> 00:13:15,890 y entonces estamos compilando - no el original de login.c 195 00:13:15,890 --> 00:13:20,340 pero el login.c nuevo con ese truco insertado a la derecha en "denegar el acceso. 196 00:13:20,340 --> 00:13:29,190 >> Ahora quiero compilar mi nuevo compilador con ese truco en cuestión. 197 00:13:29,190 --> 00:13:36,900 Yo no voy a usar Clang, así que vamos a copiar el compilador que usamos anteriormente 198 00:13:36,900 --> 00:13:48,420 y el uso que - por lo que, compilador compiler.c compile.c-o evil_compiler. 199 00:13:48,420 --> 00:13:50,870 Ahora nuestro compilador mal - 200 00:13:50,870 --> 00:13:54,310 si usamos el compilador para compilar el mal cualquier otro archivo, 201 00:13:54,310 --> 00:13:57,980 el archivo se compila como debería. 202 00:13:57,980 --> 00:13:59,980 Es completamente normal. 203 00:13:59,980 --> 00:14:06,870 Pero si utilizamos nuestro compilador para compilar el mal que identificarte - 204 00:14:06,870 --> 00:14:14,920 así, / evil_compiler login.c-o login-lcs50. - 205 00:14:14,920 --> 00:14:21,310 mirando login.c de nuevo, no hay absolutamente nada aquí. 206 00:14:21,310 --> 00:14:25,770 Es nuestra costumbre "si está bien robar o tommy estamos, más nos vamos '. 207 00:14:25,770 --> 00:14:31,620 Pero cuando nos encontramos nuestro ejecutable, esto funcionará como de costumbre. 208 00:14:31,620 --> 00:14:36,640 Ejecución de nuevo - hacker, LOLihackyou - 209 00:14:36,640 --> 00:14:39,000 Hacked! Ahora tiene acceso. 210 00:14:39,000 --> 00:14:43,560 Con sólo mirar a login.c, usted no pensaría que algo está mal. 211 00:14:43,560 --> 00:14:46,960 Sin embargo, el compilador que está siendo utilizado para compilar login.c 212 00:14:46,960 --> 00:14:53,820 está diseñado específicamente para insertar este corte en el programa. 213 00:14:53,820 --> 00:14:57,320 Sólo hemos trasladado nuestro problema original. 214 00:14:57,320 --> 00:15:02,880 Originalmente, teníamos estas líneas de código en login.c que si alguien más los miraba, 215 00:15:02,880 --> 00:15:05,470 que sería como, ¿por qué estas aquí? 216 00:15:05,470 --> 00:15:09,550 Ahora bien, si alguien pasa a buscar a nuestro compilador, 217 00:15:09,550 --> 00:15:12,140 se van a ver en estas líneas de código y decir: 218 00:15:12,140 --> 00:15:15,290 ¿por qué estas aquí? 219 00:15:15,290 --> 00:15:17,210 Por lo tanto, no hemos resuelto completamente nuestro problema. 220 00:15:17,210 --> 00:15:22,510 Pero podemos utilizar esta idea de nuevo. 221 00:15:22,510 --> 00:15:26,260 >> Echando un vistazo a nuestra tercera versión del compilador, 222 00:15:26,260 --> 00:15:32,500 Es la misma idea. 223 00:15:32,500 --> 00:15:36,240 Leemos todo el archivo en un búfer hasta aquí, 224 00:15:36,240 --> 00:15:39,660 se compila el archivo de aquí abajo, 225 00:15:39,660 --> 00:15:44,220 y tengo algún tipo de hack cadena aquí, 226 00:15:44,220 --> 00:15:47,710 notar el archivo que en realidad estoy hackeando ahora. 227 00:15:47,710 --> 00:15:52,260 Soy compiler.c piratería 228 00:15:52,260 --> 00:15:54,590 no login.c. 229 00:15:54,590 --> 00:15:57,780 Pero ¿qué estoy insertando en compiler.c? 230 00:15:57,780 --> 00:16:04,600 Estoy insertando el código que es el código exacto en nuestro compilador anterior, 231 00:16:04,600 --> 00:16:10,540 que tenía por objeto insertar código en login.c. 232 00:16:10,540 --> 00:16:13,360 Aquí está nuestra si login.c archivo strcmp 233 00:16:13,360 --> 00:16:19,370 y luego insertar en nuestras cosas login.c hack. 234 00:16:19,370 --> 00:16:26,010 Este nuevo compilador se pretende crear un compilador 235 00:16:26,010 --> 00:16:30,390 que está destinado a compilar inicio de sesión maliciosamente. 236 00:16:30,390 --> 00:16:34,320 Vamos a ver por qué eso nos ayuda. 237 00:16:34,320 --> 00:16:40,630 Todo lo demás es lo mismo, por lo que funciona exactamente como funcionaba con nuestro compilador anterior. 238 00:16:40,630 --> 00:16:45,550 Sólo estamos interactuando sobre nuestro compile.c entero. 239 00:16:45,550 --> 00:16:48,190 Pero ahora, en vez de buscar 'negarles el acceso " 240 00:16:48,190 --> 00:16:51,490 estamos buscando "compilar el archivo. ' 241 00:16:51,490 --> 00:16:53,750 Cuando se compila el archivo? 242 00:16:53,750 --> 00:16:57,210 En cuanto a nuestro compiler.c completamente inocente, 243 00:16:57,210 --> 00:17:01,340 está justo aquí abajo en la parte inferior. 244 00:17:01,340 --> 00:17:06,500 Este comentario - compilar el archivo - de nuevo, que parece totalmente inocuo. 245 00:17:06,500 --> 00:17:11,599 Pero, en nuestra versión maliciosa del compilador, 246 00:17:11,599 --> 00:17:16,550 vamos a - justo antes de que el comentario - introduzca el código 247 00:17:16,550 --> 00:17:20,690 que tiene por objeto insertar código al compilar login.c. 248 00:17:20,690 --> 00:17:25,589 >> Hay una gran cantidad de niveles de indirección aquí. 249 00:17:25,589 --> 00:17:29,760 Vamos a ejecutarlo realmente. 250 00:17:29,760 --> 00:17:37,360 Una vez más, vamos a copiar nuestro compilador original. 251 00:17:37,360 --> 00:17:48,260 Ahora, compile - compilador compiler.c compile.c-o evilest_compiler - 252 00:17:48,260 --> 00:17:52,640 y ahora evilest_compiler. 253 00:17:52,640 --> 00:17:59,200 Más malvado compilador - si usamos eso para compilar el compilador, 254 00:17:59,200 --> 00:18:01,550 vamos a ver en realidad. 255 00:18:01,550 --> 00:18:13,230 Evilest_compiler - llevándolo encima, todo el camino de vuelta a la versión 1 de nuestro compilador - 256 00:18:13,230 --> 00:18:19,640 versión 1 de nuestro compilador que se acaba de leer en el archivo y compilarlo. 257 00:18:19,640 --> 00:18:24,780 En este caso, sabemos que evilest_compiler - cuando se compila el archivo - 258 00:18:24,780 --> 00:18:29,890 se va a insertar código aquí antes de compilar el archivo, 259 00:18:29,890 --> 00:18:38,510 y que el código se va a ver exactamente como el código de la segunda versión de nuestro compilador 260 00:18:38,510 --> 00:18:42,240 que hizo esto. 261 00:18:42,240 --> 00:18:46,450 Este código, que está destinada a entrar en inicio de sesión, 262 00:18:46,450 --> 00:18:56,480 va a ser insertado en nuestro compilador por compilador más malvado. 263 00:18:56,480 --> 00:19:08,600 Usemos evilest_compiler para compilar nuestro compilador. 264 00:19:08,600 --> 00:19:15,040 Ahora vamos a utilizar compilador, 265 00:19:15,040 --> 00:19:19,460 volver a iniciar sesión, 266 00:19:19,460 --> 00:19:25,280 y recuerda que esto no tiene absolutamente nada login.c sospechoso en él. 267 00:19:25,280 --> 00:19:35,250 Pero el uso de nuestro compilador para compilar login.c, 268 00:19:35,250 --> 00:19:38,430 rob, thisiscs50, el éxito. 269 00:19:38,430 --> 00:19:44,350 Hackers Vamos a inicio de sesión, LOLihackyou, Hacked! Ahora tiene acceso. 270 00:19:44,350 --> 00:19:49,710 >> Reconocer que esto era diferente de la versión 2 de nuestro compilador. 271 00:19:49,710 --> 00:20:00,500 El compilador que utilizamos - vamos a volver - copia de identificarte - 272 00:20:00,500 --> 00:20:01,880 vamos a llevar nuestro compilador de vuelta aquí. 273 00:20:01,880 --> 00:20:06,360 Extracción de compilador más malvado. 274 00:20:06,360 --> 00:20:08,970 Todo lo que queda ahora es compilador. 275 00:20:08,970 --> 00:20:10,950 Si nos fijamos en compiler.c, 276 00:20:10,950 --> 00:20:16,840 no hay absolutamente nada allí que parece malintencionado de ningún modo. 277 00:20:16,840 --> 00:20:22,390 Si nos fijamos en login.c, 278 00:20:22,390 --> 00:20:28,790 no hay absolutamente nada en que se ve aquí malicioso de ninguna manera. 279 00:20:28,790 --> 00:20:34,600 Sin embargo, cuando utilizamos nuestro compilador para compilar login.c, 280 00:20:34,600 --> 00:20:38,840 tenemos la versión hackeable de login.c. 281 00:20:38,840 --> 00:20:41,850 Cuando utilizamos nuestro compilador para compilar una nueva versión del compilador, 282 00:20:41,850 --> 00:20:46,620 tenemos la versión hackeable del compilador. 283 00:20:46,620 --> 00:20:51,790 Ahora bien, si salimos y distribuir nuestro ejecutable del compilador, 284 00:20:51,790 --> 00:20:59,280 y nadie sabrá que no hay nada malicioso en ello. 285 00:20:59,280 --> 00:21:04,680 >> Esto es en realidad lo que en - no puedo recordar el año - 286 00:21:04,680 --> 00:21:10,350 Ken Thompson, y ganó el Premio Turing - 287 00:21:10,350 --> 00:21:15,600 si no está familiarizado con el Premio Turing, es casi siempre definida como la 288 00:21:15,600 --> 00:21:20,160 Premio Nobel de ciencias de la computación, así es como lo voy a definir. 289 00:21:20,160 --> 00:21:24,100 Ken Thompson pronunció un discurso cuando recibió el Premio Turing 290 00:21:24,100 --> 00:21:27,150 llamado "Reflexiones sobre la confianza que confían." 291 00:21:27,150 --> 00:21:30,710 Básicamente, esta fue la idea de su discurso. 292 00:21:30,710 --> 00:21:35,050 Excepto que en vez de nuestro compilador, que estaba hablando GCC - 293 00:21:35,050 --> 00:21:37,250 sólo otro compilador como Clang - 294 00:21:37,250 --> 00:21:45,600 y lo que estaba diciendo es, como nuestro login.c, nuestro login.c parece relativamente inútil 295 00:21:45,600 --> 00:21:50,190 pero él estaba hablando de la actual login.c UNIX. 296 00:21:50,190 --> 00:21:53,050 Cuando usted ingrese a su aparato, 297 00:21:53,050 --> 00:21:56,070 hay algún programa de inicio de sesión que se está ejecutando. 298 00:21:56,070 --> 00:21:58,080 Ese fue el inicio de sesión que él estaba hablando. 299 00:21:58,080 --> 00:22:02,420 Esto era básicamente su idea. 300 00:22:02,420 --> 00:22:09,080 Dijo que en GCC, que en teoría podría haber plantado un error - 301 00:22:09,080 --> 00:22:12,290 no es un error sino un código malicioso - 302 00:22:12,290 --> 00:22:16,860 que al compilar la función de inicio de sesión - el archivo de inicio de sesión - 303 00:22:16,860 --> 00:22:23,700 insertaría una puerta trasera para que pudiera ir a absolutamente cualquier sistema UNIX en el mundo 304 00:22:23,700 --> 00:22:27,360 y entrar con algún nombre de usuario y una contraseña específicos. 305 00:22:27,360 --> 00:22:33,710 A la vez, GCC era más o menos el compilador que todo el mundo sirve para nada. 306 00:22:33,710 --> 00:22:36,460 Si alguien le pasó a actualizar GCC, 307 00:22:36,460 --> 00:22:40,880 entonces sería volver a compilar GCC usando GCC, 308 00:22:40,880 --> 00:22:44,500 y todavía tendría una mala versión de GCC 309 00:22:44,500 --> 00:22:50,140 porque fue compilado específicamente para reconocer que fue recompilar el compilador. 310 00:22:50,140 --> 00:22:57,360 Y si alguna vez utiliza GCC para compilar un archivo login.c, 311 00:22:57,360 --> 00:23:03,550 entonces sería insertar esta puerta trasera que podía utilizar para iniciar sesión en cualquier ordenador. 312 00:23:03,550 --> 00:23:08,750 >> Esto fue todo teórico, pero - tal circunstancia en particular era teórica, 313 00:23:08,750 --> 00:23:12,440 pero las ideas son muy reales. 314 00:23:12,440 --> 00:23:18,250 En 2003, hubo un ejemplo similar en el que - 315 00:23:18,250 --> 00:23:21,290 vamos a echar un vistazo a este archivo, 316 00:23:21,290 --> 00:23:25,870 y no tiene absolutamente nada que ver en realidad con él, pero el error es similar. 317 00:23:25,870 --> 00:23:29,390 Este archivo sólo define una función llamada brecha. 318 00:23:29,390 --> 00:23:31,780 Es necesario un argumento a, b un argumento, 319 00:23:31,780 --> 00:23:34,270 y la intención es hacer un mundo dividido por b. 320 00:23:34,270 --> 00:23:37,230 Pero hace algún chequeo de errores, 321 00:23:37,230 --> 00:23:40,070 así que sabemos que las cosas son raras si b pasa a ser igual a cero. 322 00:23:40,070 --> 00:23:44,900 Si b es cero, entonces nos dividimos esto en 2 casos. 323 00:23:44,900 --> 00:23:46,900 Usted ya puede ver el error. 324 00:23:46,900 --> 00:23:51,840 El primer caso - si a es cero, entonces estamos haciendo cero dividido por cero, 325 00:23:51,840 --> 00:23:54,300 y nos dicen que eso es indefinido. 326 00:23:54,300 --> 00:23:56,250 El segundo caso - si A no es igual a cero, 327 00:23:56,250 --> 00:24:00,580 entonces es algo como 1 dividido por cero, y llamamos a ese infinito. 328 00:24:00,580 --> 00:24:03,730 Otra cosa que devolver el usual a dividido por b. 329 00:24:03,730 --> 00:24:06,390 Así que aquí, nos estamos quedando los 3 casos, 330 00:24:06,390 --> 00:24:13,740 y que en realidad ejecuta división - que le grita a él para mí - 331 00:24:13,740 --> 00:24:21,330 Así que, haciendo caso omiso de las advertencias de Clang - 332 00:24:21,330 --> 00:24:24,500 fin de no anular la función - al parecer yo no compilar esto de antemano. 333 00:24:24,500 --> 00:24:26,500 Devuelve 0. 334 00:24:26,500 --> 00:24:28,900 Haga dividir - Está bien. 335 00:24:28,900 --> 00:24:32,470 Con. / División, vemos 3, Infinity, Infinity. 336 00:24:32,470 --> 00:24:39,150 Cero dividido por cero no debería haber vuelto infinito. 337 00:24:39,150 --> 00:24:42,840 Y si no se han dado cuenta del error todavía - o no lo vieron antes - 338 00:24:42,840 --> 00:24:46,800 vemos que estamos haciendo a = 0. 339 00:24:46,800 --> 00:24:52,610 Probablemente nos referíamos a == 0. Probablemente. 340 00:24:52,610 --> 00:24:58,640 >> Sin embargo, esto fue en realidad algo que, de nuevo, en 2003, el kernel de Linux - 341 00:24:58,640 --> 00:25:02,260 por lo que nuestro aparato utiliza el núcleo Linux - 342 00:25:02,260 --> 00:25:05,550 cualquier sistema operativo Linux utiliza el núcleo Linux - 343 00:25:05,550 --> 00:25:11,610 por lo que un error muy similar a este apareció. 344 00:25:11,610 --> 00:25:15,180 La idea detrás de este error fue - 345 00:25:15,180 --> 00:25:18,820 de nuevo, no era sólo una función que se llama, y ​​lo hizo un poco de comprobación de errores. 346 00:25:18,820 --> 00:25:24,300 Hubo algunos insumos específicos que este chequeo de error - 347 00:25:24,300 --> 00:25:30,210 lo que debería haber sido así, está bien, no se puede llamar a esta función con un divisor de 0. 348 00:25:30,210 --> 00:25:35,070 Por lo tanto, voy a volver sólo algunos errores. 349 00:25:35,070 --> 00:25:38,090 Excepto, que no era tan inocente como se acaba de establecer un igual a 0. 350 00:25:38,090 --> 00:25:46,920 En su lugar, esta línea de código terminamos haciendo algo más como usuario administrador =. 351 00:25:46,920 --> 00:25:50,500 O user = superusuario. 352 00:25:50,500 --> 00:25:59,170 Se trataba de un inocente - a primera vista - error en el que podría haber sido sólo razonable 353 00:25:59,170 --> 00:26:01,560 que yo sólo quería informar de algo específico 354 00:26:01,560 --> 00:26:05,150 si el usuario pasó a ser el administrador de superusuario. 355 00:26:05,150 --> 00:26:11,220 Pero luego volver a pensar en ello, la persona que quería que se viera como un simple error tipográfico, 356 00:26:11,220 --> 00:26:14,330 pero si este código había sido realmente puesto en libertad, 357 00:26:14,330 --> 00:26:21,580 entonces habría sido capaz de hackear cualquier sistema pasando una bandera específica - 358 00:26:21,580 --> 00:26:25,200 en este caso b = 0 - 359 00:26:25,200 --> 00:26:28,020 y automáticamente se crea el usuario el administrador, 360 00:26:28,020 --> 00:26:30,400 y entonces él tiene el control total. 361 00:26:30,400 --> 00:26:32,540 Esto sucedió en 2003. 362 00:26:32,540 --> 00:26:35,700 >> Dio la casualidad de que la única razón por la que fue capturado 363 00:26:35,700 --> 00:26:39,200 era porque había pasado a ser algún sistema automatizado 364 00:26:39,200 --> 00:26:41,540 que notó el cambio en el archivo 365 00:26:41,540 --> 00:26:44,560 que nunca debería haber sido cambiado por un humano. 366 00:26:44,560 --> 00:26:47,580 El archivo sólo se debería haber generado automáticamente. 367 00:26:47,580 --> 00:26:49,780 Dio la casualidad de que alguien tocado - 368 00:26:49,780 --> 00:26:52,460 así, la persona que quería hackear tocado ese archivo, 369 00:26:52,460 --> 00:26:55,450 y el equipo capturado ese contacto. 370 00:26:55,450 --> 00:27:01,750 Así, cambiaron esto y sólo más tarde se dio cuenta de lo que es un desastre que habría sido 371 00:27:01,750 --> 00:27:04,830 si esto hubiera salido en el mundo real. 372 00:27:04,830 --> 00:27:08,220 >> Usted puede estar pensando que - volviendo a nuestro ejemplo de compilador - 373 00:27:08,220 --> 00:27:14,290 a pesar de que no podemos ver - mirar el código fuente - 374 00:27:14,290 --> 00:27:17,490 que nada en particular que está mal, 375 00:27:17,490 --> 00:27:25,460 si en realidad nos fijamos en el código binario del compilador, 376 00:27:25,460 --> 00:27:28,670 veríamos que algo anda mal. 377 00:27:28,670 --> 00:27:31,260 Por ejemplo, si ejecutamos las cuerdas funcionar - 378 00:27:31,260 --> 00:27:34,930 que sólo va a mirar por encima de un archivo e imprimir todas las cadenas que puede encontrar - 379 00:27:34,930 --> 00:27:37,990 si nos quedamos sin cuerdas en nuestro compilador, 380 00:27:37,990 --> 00:27:42,400 vemos que una cadena que se encuentra es esta extraña - 381 00:27:42,400 --> 00:27:45,500 else if (strcmp (nombre de usuario, "hacker") - bla, bla, bla. 382 00:27:45,500 --> 00:27:52,570 Si alguien pasó a ser paranoico como para no confiar en su compilador, 383 00:27:52,570 --> 00:27:56,690 podrían ejecutar las cuerdas y ver esto, 384 00:27:56,690 --> 00:28:00,430 y entonces ellos sabrían que había algo mal con el binario real. 385 00:28:00,430 --> 00:28:07,250 Sin embargo, las cadenas era algo que inevitablemente se compiló. 386 00:28:07,250 --> 00:28:11,590 Así que, ¿quién puede decir que nuestro compilador no sólo tiene más código especial 387 00:28:11,590 --> 00:28:19,240 que dice, si las cadenas se ejecute cada vez en nuestro compilador, no se genera todo el código malicioso. 388 00:28:19,240 --> 00:28:23,980 >> La misma idea de que si queremos desensamblar el archivo - 389 00:28:23,980 --> 00:28:30,440 nos enteramos de que el ensamblador nos trae de código ensamblador a un código máquina - 390 00:28:30,440 --> 00:28:36,010 podemos ir en la dirección opuesta - objdump-d compilador - 391 00:28:36,010 --> 00:28:38,770 nos dará el montaje de nuestro código. 392 00:28:38,770 --> 00:28:41,730 En cuanto a esto, 393 00:28:41,730 --> 00:28:47,480 es bastante críptico, pero si queríamos, podíamos ver a través de este 394 00:28:47,480 --> 00:28:51,700 y la razón, espera, hay algo que hacer aquí que no debería estar pasando, 395 00:28:51,700 --> 00:28:59,380 y luego vamos a reconocer que el compilador está haciendo algo malicioso. 396 00:28:59,380 --> 00:29:03,950 Pero, así como las cadenas, ¿quién puede decir objdump no era especial con carcasa. 397 00:29:03,950 --> 00:29:11,380 Básicamente, todo se reduce a que no puedes confiar en nada. 398 00:29:11,380 --> 00:29:14,310 La cuestión del papel que se llama "Confianza Confiar" es 399 00:29:14,310 --> 00:29:17,900 en general, confiamos en nuestro compilador. 400 00:29:17,900 --> 00:29:21,700 Compilar el código y esperar que lo que me pides que haga. 401 00:29:21,700 --> 00:29:26,440 Pero, ¿por qué debería confiar en el compilador? 402 00:29:26,440 --> 00:29:32,120 Usted no escribió el compilador. Usted no sabe lo que el compilador está necesariamente haciendo. 403 00:29:32,120 --> 00:29:36,870 ¿Quién dice que usted puede confiar en ella? 404 00:29:36,870 --> 00:29:40,050 Pero incluso entonces, bueno, a lo mejor podemos confiar en el compilador. 405 00:29:40,050 --> 00:29:44,670 Hay decenas de miles de personas que han estudiado en esto. 406 00:29:44,670 --> 00:29:51,360 Alguien debe haber reconocido que algo estaba pasando con el compilador. 407 00:29:51,360 --> 00:29:55,100 >> ¿Y si sólo tiene que ir un nivel más profundo? 408 00:29:55,100 --> 00:29:59,450 Incluso podría ser su procesador. 409 00:29:59,450 --> 00:30:01,250 Por ridículo que pueda ser, 410 00:30:01,250 --> 00:30:06,690 tal vez hay algún pícaro empleado de Intel que crea estos procesadores 411 00:30:06,690 --> 00:30:12,400 que cada vez que el procesador se da cuenta de que está ejecutando algún comando 412 00:30:12,400 --> 00:30:14,570 que es la intención de iniciar sesión en el ordenador, 413 00:30:14,570 --> 00:30:19,230 el procesador aceptar algún nombre de usuario específico y una contraseña. 414 00:30:19,230 --> 00:30:21,530 Sería tremendamente complicado, 415 00:30:21,530 --> 00:30:24,790 pero alguien podría hacerlo. 416 00:30:24,790 --> 00:30:29,350 En ese momento, ¿está usted realmente va a abrir el ordenador para mirar el procesador 417 00:30:29,350 --> 00:30:35,970 y el uso de un microscopio para reconocer que estos circuitos no están alineados como deberían ser? 418 00:30:35,970 --> 00:30:39,730 A nadie se le va a coger ese error. 419 00:30:39,730 --> 00:30:45,570 En algún momento, usted sólo tiene que rendirse y confiar en algo. 420 00:30:45,570 --> 00:30:48,390 La mayoría de la gente confía en el compilador en este punto. 421 00:30:48,390 --> 00:30:55,760 Es decir, no necesariamente que usted debe. 422 00:30:55,760 --> 00:30:59,350 Mirando un poco infame vídeo - 423 00:30:59,350 --> 00:31:09,280 [Música dramática jugar] 424 00:31:09,280 --> 00:31:13,270 [Es un sistema UNIX. Sé que esto.] 425 00:31:13,270 --> 00:31:14,470 [Es todos los archivos -] 426 00:31:14,470 --> 00:31:18,950 Ella dijo: "Es un sistema UNIX. Sé que esto." 427 00:31:18,950 --> 00:31:21,760 Reemplace UNIX con lo que su sistema operativo favorito es - 428 00:31:21,760 --> 00:31:25,230 ella podría haber dicho: "Es un sistema Windows. Sé que esto." 429 00:31:25,230 --> 00:31:29,710 Es una afirmación completamente carente de sentido, 430 00:31:29,710 --> 00:31:34,450 pero por lo que sabemos, ella pasa a conocer una puerta trasera en el sistema UNIX. 431 00:31:34,450 --> 00:31:38,840 Ella sabe alguna combinación nombre de usuario / contraseña que realmente le dejará 432 00:31:38,840 --> 00:31:41,540 hacer lo que quiera. 433 00:31:41,540 --> 00:31:49,000 >> Está bien. La moraleja de hoy es, básicamente, no se puede confiar en nada. 434 00:31:49,000 --> 00:31:52,620 Incluso las cosas que escribes - usted no escribió el compilador. 435 00:31:52,620 --> 00:31:53,870 El compilador puede ser malo. 436 00:31:53,870 --> 00:31:59,140 Incluso si lo hizo escribir el compilador, lo que se está ejecutando el compilador podría ser malo. 437 00:31:59,140 --> 00:32:05,210 (Risas) No hay mucho que puedas hacer. 438 00:32:05,210 --> 00:32:09,050 El mundo está condenado. 439 00:32:09,050 --> 00:32:11,570 Regreso a David! 440 00:32:11,570 --> 00:32:19,540 [Aplauso] 441 00:32:19,540 --> 00:32:21,340 >> [David] Gracias. Eso fue realmente deprimente. 442 00:32:21,340 --> 00:32:23,910 Pero de hecho, Rob es correcta. 443 00:32:23,910 --> 00:32:27,150 Realmente no tengo una solución para eso, sino que está a punto de obtener algunas soluciones 444 00:32:27,150 --> 00:32:29,150 a algunas defensas más comunes. 445 00:32:29,150 --> 00:32:31,170 En previsión de esto, lo que Nate y yo hemos estado haciendo fuera del escenario hay 446 00:32:31,170 --> 00:32:33,950 es saber que hay tantas laptops en esta sala, 447 00:32:33,950 --> 00:32:37,020 hemos estado olfateando todo el tráfico inalámbrico pasando por este lugar para los últimos 20 minutos 448 00:32:37,020 --> 00:32:39,260 durante la charla de Rob, así que vamos a tomar un descanso de 2 minutos aquí. 449 00:32:39,260 --> 00:32:41,740 Nate va a configurar, y luego vamos a hablar de todas las cosas 450 00:32:41,740 --> 00:32:46,380 que podríamos haber encontrado. (Risas) 451 00:32:46,380 --> 00:32:51,990 >> Por lo tanto, puede que haya exagerado un poco por el simple hecho de drama, 452 00:32:51,990 --> 00:32:55,990 pero podríamos haber estado husmeando todo su tráfico inalámbrico porque en realidad, 453 00:32:55,990 --> 00:32:57,240 es así de fácil. 454 00:32:57,240 --> 00:32:59,790 Pero también hay formas en que puede defenderse contra esto, y así con eso, 455 00:32:59,790 --> 00:33:03,160 Te doy Nate Hardison. >> [Nate] Sweet. 456 00:33:03,160 --> 00:33:06,300 (Aplausos) 457 00:33:06,300 --> 00:33:08,650 >> [Nate] Gracias, hombre. Agradezco el grito. 458 00:33:08,650 --> 00:33:12,790 ¡Muy bien! Es la semana de juego. ¿Están emocionados? 459 00:33:12,790 --> 00:33:16,670 Es de esperar que va a ser un gran partido el sábado. 460 00:33:16,670 --> 00:33:20,220 Me imagino que ustedes en este momento - ya que tienes un examen el miércoles 461 00:33:20,220 --> 00:33:24,430 todo sobre el código, y nos sentamos a través de una conferencia maravillosa por Rob 462 00:33:24,430 --> 00:33:25,850 con un montón de código C en él - 463 00:33:25,850 --> 00:33:28,330 son tal vez un poco cansado de código. 464 00:33:28,330 --> 00:33:32,180 En esta parte, estamos en realidad no va a tocar ningún código en absoluto. 465 00:33:32,180 --> 00:33:36,960 Sólo vamos a hablar de una tecnología que se utiliza todos los días, 466 00:33:36,960 --> 00:33:39,790 a menudo por muchas, muchas horas al día, 467 00:33:39,790 --> 00:33:46,220 y vamos a hablar de las implicaciones en la seguridad de que no lo son. 468 00:33:46,220 --> 00:33:48,960 >> Hemos hablado mucho acerca de la seguridad a lo largo del semestre, 469 00:33:48,960 --> 00:33:53,030 y empezamos con un poco de criptografía. 470 00:33:53,030 --> 00:33:55,030 [Bdoh lv vwlqng!] 471 00:33:55,030 --> 00:33:57,890 Y mientras ustedes están probablemente súper emocionada de estar pasando notas entre sí 472 00:33:57,890 --> 00:33:59,890 en clase mediante un cifrado de César como éste, 473 00:33:59,890 --> 00:34:03,870 en realidad, hay algo más que se había divertido cuando en realidad estás hablando de seguridad 474 00:34:03,870 --> 00:34:05,870 y ese tipo de cosas. 475 00:34:05,870 --> 00:34:09,090 Hoy en día, vamos a cubrir algunas tecnologías 476 00:34:09,090 --> 00:34:13,650 que las personas utilizan realmente en el mundo real para hacer todo tipo de cosas 477 00:34:13,650 --> 00:34:18,360 de oler los paquetes de la gente para realmente entrar y 478 00:34:18,360 --> 00:34:20,409 irrumpir en las cuentas bancarias de la gente y todo eso. 479 00:34:20,409 --> 00:34:23,460 Estas son herramientas legítimas que estamos hablando 480 00:34:23,460 --> 00:34:26,320 con la excepción de posiblemente una herramienta. 481 00:34:26,320 --> 00:34:28,889 >> Y yo sólo quiero hacer una aclaración rápida. 482 00:34:28,889 --> 00:34:34,909 Cuando hablamos de estas cosas, estamos hablando de ellos para que sepa lo que hay ahí fuera, 483 00:34:34,909 --> 00:34:39,389 y eres consciente de cómo estar seguros cuando usted está fuera mediante el ordenador. 484 00:34:39,389 --> 00:34:44,000 Pero definitivamente no quiero dar a entender que usted debe utilizar estas herramientas 485 00:34:44,000 --> 00:34:48,090 en su habitación o su casa porque usted puede tener un montón de grandes temas. 486 00:34:48,090 --> 00:34:52,760 Esa es una razón hoy en día que en realidad no estaban olfateando sus paquetes. 487 00:34:52,760 --> 00:35:01,300 >> Está bien. El lunes pasado, hemos hablado acerca de las cookies y HTTP y autenticación, 488 00:35:01,300 --> 00:35:05,920 Firesheep y cómo se abre la puerta grande en su cuenta de Facebook, 489 00:35:05,920 --> 00:35:08,670 a su cuenta de Hotmail - si alguien sigue usando Hotmail - 490 00:35:08,670 --> 00:35:12,360 y muchas otras cuentas. 491 00:35:12,360 --> 00:35:16,980 Muchas de estas cosas se va a construir fuera de eso, 492 00:35:16,980 --> 00:35:22,070 pero en primer lugar, quiero hacer un recorrido rápido de cómo el Internet ha evolucionado con el tiempo. 493 00:35:22,070 --> 00:35:27,490 En los años 90, ustedes podrían haber recordado realmente conectar 494 00:35:27,490 --> 00:35:29,880 los equipos con uno de estos. 495 00:35:29,880 --> 00:35:32,640 Ahora ya no hago eso tanto más. 496 00:35:32,640 --> 00:35:37,230 En realidad, resulta que para conectar un cable Ethernet en mi portátil, 497 00:35:37,230 --> 00:35:41,710 Ahora tengo que usar uno de estos adaptadores, que es una locura. 498 00:35:41,710 --> 00:35:47,580 >> En cambio, en 1997 tuvimos esta nueva tecnología, diversión 499 00:35:47,580 --> 00:35:54,960 trascendió que se conoce como IEEE 802.11, por lo que este es el estándar inalámbrico a internet 500 00:35:54,960 --> 00:36:00,430 El IEEE es este órgano de gobierno que le da toda clase de - 501 00:36:00,430 --> 00:36:04,770 publica todo tipo de normas con relación a las computadoras. 502 00:36:04,770 --> 00:36:08,780 Los estándares 802 son todos acerca de las tecnologías de Internet. 503 00:36:08,780 --> 00:36:12,690 Así 802,3, por ejemplo, es el estándar de Ethernet, 504 00:36:12,690 --> 00:36:17,120 802.15.1 creo que es el estándar Bluetooth, 505 00:36:17,120 --> 00:36:19,540 y 802.11 es todo acerca de Internet inalámbrico. 506 00:36:19,540 --> 00:36:24,150 En 1997, este salió. No entendí bien de inmediato. 507 00:36:24,150 --> 00:36:30,200 No fue sino hasta 1999, y el estándar 802.11b supo que acaba de conseguir realmente popular. 508 00:36:30,200 --> 00:36:36,330 >> ¿Cuántos de ustedes recuerdan cuando los equipos empezaron a salir y conseguir wi-fi en ellos? 509 00:36:36,330 --> 00:36:38,330 Eso era una especie de fresco, ¿no? 510 00:36:38,330 --> 00:36:41,260 Recuerdo que recibí mi primera computadora portátil en la escuela secundaria, 511 00:36:41,260 --> 00:36:44,250 y que tenía una tarjeta inalámbrica en ella. 512 00:36:44,250 --> 00:36:49,580 Mi padre me lo dio y me dijo que debo usar para mis aplicaciones universidad y todo eso, 513 00:36:49,580 --> 00:36:53,030 y yo no tenía idea de cómo iba a buscar este material en línea. 514 00:36:53,030 --> 00:36:54,640 Pero, afortunadamente, yo tenía una tarjeta inalámbrica, por lo que era bastante guay. 515 00:36:54,640 --> 00:37:04,090 Hoy en día, usted también verá 802.11g, que es uno de los otros realmente popular 516 00:37:04,090 --> 00:37:06,090 estándares inalámbricos que hay ahí fuera. 517 00:37:06,090 --> 00:37:08,660 Tanto B y G son bastante obsoletas en este punto. 518 00:37:08,660 --> 00:37:12,580 ¿Alguien sabe qué versión de la mayoría de las personas están en estos momentos 519 00:37:12,580 --> 00:37:15,110 si va a comprar nuevos routers inalámbricos y ese tipo de cosas? 520 00:37:15,110 --> 00:37:24,290 N. Exactamente. Bingo. Y resulta que la norma de CA está saliendo en forma de borrador, 521 00:37:24,290 --> 00:37:28,050 y hay otras versiones en el camino. 522 00:37:28,050 --> 00:37:31,190 Con cada una de estas normas lo que estamos obteniendo es más ancho de banda, 523 00:37:31,190 --> 00:37:33,900 más datos a una velocidad más rápida. 524 00:37:33,900 --> 00:37:36,260 Estas cosas van cambiando muy rápidamente. 525 00:37:36,260 --> 00:37:39,880 También lo hace así que tenemos que comprar más routers y todas esas cosas divertidas. 526 00:37:39,880 --> 00:37:48,160 >> Vamos a hablar de lo que realmente es la comunicación inalámbrica en su núcleo. 527 00:37:48,160 --> 00:37:51,790 Con Ethernet y los módems antiguos de acceso telefónico, 528 00:37:51,790 --> 00:37:55,780 que en realidad tenía esta cosa que se ha conectado a su computadora, 529 00:37:55,780 --> 00:37:59,820 y luego conectado a un módem de tipo, y luego lo enchufa a una toma en la pared. 530 00:37:59,820 --> 00:38:01,820 Tenías que esta conexión por cable, ¿no? 531 00:38:01,820 --> 00:38:06,030 El punto entero de la tecnología inalámbrica es deshacerse de estas cosas. 532 00:38:06,030 --> 00:38:10,300 Con el fin de hacer eso, lo que tenemos es esencialmente 533 00:38:10,300 --> 00:38:13,960 una comunicación de radio donde nuestro router inalámbrico - 534 00:38:13,960 --> 00:38:16,230 designado por nuestro pequeño icono de red inalámbrica - 535 00:38:16,230 --> 00:38:21,730 está conectado a la Internet con esta flecha sólida que indica algún tipo de conexión por cable, 536 00:38:21,730 --> 00:38:24,640 pero cuando se conecta a su enrutador inalámbrico 537 00:38:24,640 --> 00:38:29,190 en realidad estás usando casi como un walkie-talkie entre 538 00:38:29,190 --> 00:38:31,960 el ordenador y el router inalámbrico. 539 00:38:31,960 --> 00:38:35,150 Lo que es realmente bueno de esto es que usted puede moverse. 540 00:38:35,150 --> 00:38:40,900 Usted puede llevar a su equipo por todo Sanders, vaya navegar por la web, lo que quieras, 541 00:38:40,900 --> 00:38:43,240 al igual que todos conocemos y amamos, 542 00:38:43,240 --> 00:38:46,030 y no siempre tiene que ser conectado a nada. 543 00:38:46,030 --> 00:38:53,880 Para que esto funcione, tenemos tanto la recepción y la transmisión. 544 00:38:53,880 --> 00:38:56,060 Realmente es así de walkie-talkie. 545 00:38:56,060 --> 00:39:03,800 >> Este router inalámbrico - que en Sanders está sentado debajo de esta etapa, aquí - 546 00:39:03,800 --> 00:39:06,590 siempre la transmisión y recepción, transmisión y recepción, 547 00:39:06,590 --> 00:39:09,330 y del mismo modo, los equipos están haciendo el mismo tipo de cosa, también. 548 00:39:09,330 --> 00:39:12,840 Simplemente no se puede oír. 549 00:39:12,840 --> 00:39:17,900 La otra cosa que puedes hacer es que usted puede tener varios ordenadores 550 00:39:17,900 --> 00:39:22,200 hablando con el mismo router inalámbrico. 551 00:39:22,200 --> 00:39:25,680 Cuanto más cerca se encuentre de una router - y de nuevo, se trata de una comunicación de radio - 552 00:39:25,680 --> 00:39:30,320 cuanto más cerca esté, mejor será su señal es, el mejor de su equipo "oye" el router 553 00:39:30,320 --> 00:39:32,460 y puede comunicarse con la Internet. 554 00:39:32,460 --> 00:39:39,520 Si ustedes alguna vez en su dormitorio, en tu casa y te preguntas por qué la señal es mala, 555 00:39:39,520 --> 00:39:42,230 probablemente se deba a). no estás muy cerca de tu router, o 556 00:39:42,230 --> 00:39:46,930 b). hay algo entre tú y tu router como un muro de cemento o algo 557 00:39:46,930 --> 00:39:50,720 que no permite que las ondas de radio pasan. 558 00:39:50,720 --> 00:39:57,850 >> Vamos a hablar un poco acerca de por qué los chicos malos de wi-fi. 559 00:39:57,850 --> 00:40:02,980 Los malos aman wi-fi por varias razones. 560 00:40:02,980 --> 00:40:06,670 Aquí está nuestro chico malo malo allí. 561 00:40:06,670 --> 00:40:10,660 Una de las razones por qué este chico malo ama wi-fi 562 00:40:10,660 --> 00:40:18,770 se debe a que, por defecto, una gran cantidad de routers inalámbricos vienen y cuando los creó, 563 00:40:18,770 --> 00:40:20,950 que están sin encriptar. 564 00:40:20,950 --> 00:40:23,970 Este ha sido un problema, y ​​se han dado casos - 565 00:40:23,970 --> 00:40:28,210 varias instancias, ahora - donde el malo se presenta a la casa de alguien, 566 00:40:28,210 --> 00:40:32,630 da cuenta de que hay un cifrado Wi-Fi a la que se puede conectar. 567 00:40:32,630 --> 00:40:37,350 Se conectan a la conexión wi-fi, y luego empezar a descargar todo tipo de cosas divertidas. 568 00:40:37,350 --> 00:40:40,890 Y no se está descargando gatitos, no está descargando cachorros. 569 00:40:40,890 --> 00:40:44,610 Esto es como BitTorrent. Esta es la repugnante de la más repugnante. 570 00:40:44,610 --> 00:40:48,740 Ha habido casos en los que incluso el FBI ha metido 571 00:40:48,740 --> 00:40:52,390 pensar que la persona que es dueña de la casa es en realidad la 572 00:40:52,390 --> 00:40:56,090 salir a la cancha y descargar cosas que realmente no debería ser. 573 00:40:56,090 --> 00:41:00,730 Una vez cifrados wi-fi no es definitivamente algo que usted quiere hacer, 574 00:41:00,730 --> 00:41:06,340 aunque sólo sea para no tener el FBI venga a llamar a su puerta. 575 00:41:06,340 --> 00:41:09,910 >> Otra razón por la que los malos aman wi-fi 576 00:41:09,910 --> 00:41:13,870 es la razón por la que David hablado antes durante el descanso. 577 00:41:13,870 --> 00:41:17,240 Debido a que es una comunicación de radio en su núcleo, 578 00:41:17,240 --> 00:41:22,460 si se conoce el canal, se puede escuchar dicha emisora ​​de radio. 579 00:41:22,460 --> 00:41:31,870 Por ejemplo, si hay un derecho malo allí sentado en el centro a la derecha al lado del punto de acceso, 580 00:41:31,870 --> 00:41:36,830 justo al lado de ese router inalámbrico, el malo de la película puede escuchar todo el tráfico inalámbrico 581 00:41:36,830 --> 00:41:40,240 que viene de todos esos equipos. 582 00:41:40,240 --> 00:41:44,590 De hecho, estos chicos - estos pocos afortunados que están en la primera fila - 583 00:41:44,590 --> 00:41:47,610 porque son super-cerca de todos estos routers inalámbricos 584 00:41:47,610 --> 00:41:49,950 que se sientan justo debajo del escenario, 585 00:41:49,950 --> 00:41:53,780 que sería capaz de oír el tráfico de todos en este cuarto entero 586 00:41:53,780 --> 00:41:59,480 si estás conectado a wi-fi y comenzar a navegar a través de estos puntos de acceso. 587 00:41:59,480 --> 00:42:03,740 No es muy difícil sentarse a sí mismo en una buena posición para olfatear y encontrar la 588 00:42:03,740 --> 00:42:07,030 lo que los demás están haciendo. 589 00:42:07,030 --> 00:42:10,830 Es algo a tener en cuenta, especialmente si no estás seguro de dónde está el punto de acceso es, 590 00:42:10,830 --> 00:42:15,010 y que está navegando, digamos, en un Starbucks. 591 00:42:15,010 --> 00:42:17,360 >> Resulta que huele y todo eso 592 00:42:17,360 --> 00:42:19,440 no es realmente tan difícil de hacer. 593 00:42:19,440 --> 00:42:25,430 Hay un programa llamado tcpdump que vuelca todo tipo de tráfico TCP 594 00:42:25,430 --> 00:42:29,910 y se puede correr bastante simplemente - como lo hice esta mañana. 595 00:42:29,910 --> 00:42:32,810 Aquí está un poco de un tugurio, y aquí está una parte del tráfico que iba a venir 596 00:42:32,810 --> 00:42:34,960 mi red en el momento. 597 00:42:34,960 --> 00:42:41,500 Usted puede ver - si usted escudriña realmente difícil - hay un poco de Spotify en ese país. 598 00:42:41,500 --> 00:42:44,050 En la parte superior de tcpdump - porque este es un tipo de dolor de usar - 599 00:42:44,050 --> 00:42:48,860 hay un programa llamado Wireshark que haces todo esto en una interfaz gráfica de usuario agradable. 600 00:42:48,860 --> 00:42:51,970 Wireshark es súper práctico así que si vas a tomar clases de redes, 601 00:42:51,970 --> 00:42:56,780 esta es una herramienta que te encontrarás al amor, ya que le ayuda a analizar todos los paquetes 602 00:42:56,780 --> 00:42:59,400 que están flotando por ahí. 603 00:42:59,400 --> 00:43:01,810 Pero también se puede utilizar para el mal. 604 00:43:01,810 --> 00:43:05,810 Es muy simple sólo tiene que descargar este programa, arrancar hacia arriba, 605 00:43:05,810 --> 00:43:09,300 iniciar una captura de red, y ver todo lo que está pasando - 606 00:43:09,300 --> 00:43:14,130 y el filtro y hacer todo tipo de cosas divertidas con él. 607 00:43:14,130 --> 00:43:17,930 >> La otra cosa que usted puede hacer con la comunicación inalámbrica 608 00:43:17,930 --> 00:43:25,380 no sólo se puede escuchar a escondidas pero también se puede aprender a joder con la red 609 00:43:25,380 --> 00:43:31,020 e inyectar su propia información para controlar la experiencia que otras personas 610 00:43:31,020 --> 00:43:35,140 en la misma red inalámbrica está recibiendo. 611 00:43:35,140 --> 00:43:37,140 Vamos a echar un vistazo a eso. 612 00:43:37,140 --> 00:43:40,700 Aquí está Firesheep - que conocemos y amamos de la semana pasada - 613 00:43:40,700 --> 00:43:43,590 que es que la tecnología de escuchas. 614 00:43:43,590 --> 00:43:50,360 Si, por ejemplo, queríamos tener nuestro activamente go malo y perder el tiempo con 615 00:43:50,360 --> 00:43:52,690 uno de estos equipos, 616 00:43:52,690 --> 00:43:58,380 en este caso tenemos un equipo tratando de ir de surf para harvard.edu. 617 00:43:58,380 --> 00:44:04,690 Lo que pasa es que la primera computadora envía un mensaje al enrutador inalámbrico y dice: 618 00:44:04,690 --> 00:44:07,920 hey, yo quiero ir www.harvard.edu visita. 619 00:44:07,920 --> 00:44:10,610 Digamos, por alguna razón, ellos están tratando de obtener información sobre el partido de este fin de semana. 620 00:44:10,610 --> 00:44:14,940 Chico malo, ya que él está sentado en el centro, 621 00:44:14,940 --> 00:44:18,730 justo al lado de ese punto de acceso, se puede ver que la comunicación procedente de la computadora 622 00:44:18,730 --> 00:44:26,170 en el router, y él lo sabe: "¡Ajá! Alguien va a harvard.edu". (Malvadamente risas) 623 00:44:26,170 --> 00:44:33,870 Va a ser esta latencia mientras que la comunicación va desde el router 624 00:44:33,870 --> 00:44:37,780 a Internet para ir a buscar a la página web a-harvard.edu - 625 00:44:37,780 --> 00:44:42,020 al igual que todos ustedes saben después de hacer sus conjuntos de procesadores PHP - 626 00:44:42,020 --> 00:44:45,680 por lo que el malo de la película tiene un poco de tiempo, un poco de la ventana, 627 00:44:45,680 --> 00:44:49,410 en la que se puede responder con algunas cosas. 628 00:44:49,410 --> 00:44:53,660 >> Digamos que este chico malo, por supuesto, es un Yaley. 629 00:44:53,660 --> 00:44:59,990 Él responde con harvardsucks.org. Boo! 630 00:44:59,990 --> 00:45:02,300 Chico malo, malo! Bad Yaley! 631 00:45:02,300 --> 00:45:06,020 O peor aún, podría responder con eso. [Http://youtu.be/ZSBq8geuJk0]. 632 00:45:06,020 --> 00:45:09,530 Voy a dejar que ustedes imaginar lo que es. 633 00:45:09,530 --> 00:45:14,840 Esto es realmente una tecnología llamada airpwn! que se estrenó en 634 00:45:14,840 --> 00:45:18,950 una de las conferencias de seguridad de vuelta de unos años. 635 00:45:18,950 --> 00:45:25,190 Con airpwn! usted es capaz de inyectar en realidad el tráfico de vuelta a la red. 636 00:45:25,190 --> 00:45:30,060 Los equipos que trataban de salir a Internet y tratando de llegar a 637 00:45:30,060 --> 00:45:33,090 Google.com, a Facebook.com, a harvard.edu 638 00:45:33,090 --> 00:45:39,190 ver la respuesta malicioso entrar y asumir inmediatamente, de acuerdo, 639 00:45:39,190 --> 00:45:43,550 esa es la respuesta que estaba esperando y terminar encima de conseguir el contenido de 640 00:45:43,550 --> 00:45:48,860 harvardsucks.org o nameyourfavoriteshocksite.com, 641 00:45:48,860 --> 00:45:55,270 y se puede ver lo rápido que las cosas van a empeorar. 642 00:45:55,270 --> 00:46:00,190 >> Todo este tipo de cosas no se puede hacer 643 00:46:00,190 --> 00:46:05,870 con estas conexiones por cable, ya que con una conexión cableada 644 00:46:05,870 --> 00:46:08,710 es difícil husmear en el tráfico. 645 00:46:08,710 --> 00:46:13,020 Si yo soy un tipo malo y en un extremo se encuentra el equipo 646 00:46:13,020 --> 00:46:14,460 y en el otro extremo se encuentra el router - el módem - 647 00:46:14,460 --> 00:46:20,180 la única manera de conseguir entre esa conexión para empalmar en realidad mi ordenador 648 00:46:20,180 --> 00:46:22,180 en algún lugar en el medio 649 00:46:22,180 --> 00:46:26,820 o hacer otra cosa con el router, aguas abajo algo así. 650 00:46:26,820 --> 00:46:33,360 Pero con la tecnología inalámbrica, puede ser tan fácil como sentarse en la primera fila de un aula, 651 00:46:33,360 --> 00:46:38,200 y usted puede hacer todo tipo de cosas desagradables a la gente en la parte posterior. 652 00:46:38,200 --> 00:46:41,570 >> Vamos a hablar de cómo se puede defender contra algunas de estas cosas. 653 00:46:41,570 --> 00:46:46,860 La gente que desarrolló los estándares inalámbricos - el 802,11 - 654 00:46:46,860 --> 00:46:50,820 no son gente tonta por cualquier tramo de la imaginación. 655 00:46:50,820 --> 00:46:56,110 Esta es una tecnología fría y cuando debutó en 1999, 656 00:46:56,110 --> 00:47:00,780 que salió con este estándar llamado WEP. 657 00:47:00,780 --> 00:47:03,360 Se puede ver aquí cuando usted trata de conectarse a una red inalámbrica, 658 00:47:03,360 --> 00:47:07,450 Tiene todo tipo de opciones de seguridad diferentes. 659 00:47:07,450 --> 00:47:11,800 Eso es un poco de un fastidio porque hay 6 todos juntos 660 00:47:11,800 --> 00:47:14,790 y nunca realmente tiene sentido que una a unirse. 661 00:47:14,790 --> 00:47:19,190 Este 1 en la parte superior es el primero que se les ocurrió llamado WEP. 662 00:47:19,190 --> 00:47:27,960 WEP significa privacidad equivalente a cableado, creo yo, 663 00:47:27,960 --> 00:47:31,730 no protocolo de cifrado inalámbrico que es un nombre inapropiado común. 664 00:47:31,730 --> 00:47:36,170 Debido a que intenta darle equivalente privacidad y la protección de la seguridad 665 00:47:36,170 --> 00:47:40,590 equivalente a la de una red cableada 666 00:47:40,590 --> 00:47:46,710 Con WEP lo que termina pasando es, 667 00:47:46,710 --> 00:47:52,300 tienes contraseña simple, poco que escribir y que sirve para encriptar 668 00:47:52,300 --> 00:47:56,210 todas las comunicaciones entre el ordenador y el router. 669 00:47:56,210 --> 00:47:58,210 >> ¿Cuál es el problema con WEP sin embargo? 670 00:47:58,210 --> 00:48:01,470 La contraseña de WEP es muy corto, 671 00:48:01,470 --> 00:48:04,900 y también que todo el mundo usa exactamente la misma contraseña, 672 00:48:04,900 --> 00:48:07,610  y por lo que es muy fácil de descifrar. 673 00:48:07,610 --> 00:48:10,580 Así que muy pronto la gente descubrió que WEP era un problema, 674 00:48:10,580 --> 00:48:16,100 y la única razón que veo aparecer todavía en este pequeño individuo es - 675 00:48:16,100 --> 00:48:18,890 hay algunos sistemas antiguos que usen WEP - 676 00:48:18,890 --> 00:48:25,710 lo que en su lugar se debe buscar son la WPA y WPA2 incluso normas 677 00:48:25,710 --> 00:48:29,130 que fueron puestos en libertad más tarde. 678 00:48:29,130 --> 00:48:35,040 Estos sistemas son un ir mucho mejor en la protección de Internet inalámbrico. 679 00:48:35,040 --> 00:48:41,090 Dicho esto, todavía tenemos algunos hackability. 680 00:48:41,090 --> 00:48:44,010 Existen herramientas por ahí que puede ir a hacer esto. 681 00:48:44,010 --> 00:48:47,490 Una cosa en particular que puede ser desagradable es que 682 00:48:47,490 --> 00:48:55,370 si se conecta y autenticado a un router inalámbrico y están utilizando algún tipo de 683 00:48:55,370 --> 00:49:00,940 comunicaciones cifradas, resulta que un hacker puede enviar un solo paquete 684 00:49:00,940 --> 00:49:03,990 para que se desconecte del router, 685 00:49:03,990 --> 00:49:07,220 y una vez que te han desconectado se puede escuchar en - 686 00:49:07,220 --> 00:49:11,800 pueden oler los paquetes a medida que tratan de restablecer la conexión con el router. 687 00:49:11,800 --> 00:49:16,800 Y con esa información que luego puede entrar y descifrar el resto de su comunicación. 688 00:49:16,800 --> 00:49:24,580 Esto no es de ninguna manera ningún tipo de seguro más allá de toda imaginación. 689 00:49:24,580 --> 00:49:30,060 >> La otra cosa que puedes hacer cuando estás configurando redes inalámbricas 690 00:49:30,060 --> 00:49:35,460 o que los está uniendo es - te das cuenta de que aquí cuando me estoy uniendo a esta red, 691 00:49:35,460 --> 00:49:37,640 se pide el nombre de mi red. 692 00:49:37,640 --> 00:49:41,060 Esto también se conoce como el SSID. 693 00:49:41,060 --> 00:49:48,610 Y usted ve aquí que en el derecho que tengo una caja que me muestra los SSID disponibles. 694 00:49:48,610 --> 00:49:52,690 Hay una Universidad de Harvard, CS50 y CS50 una red personal. 695 00:49:52,690 --> 00:49:59,180 Ahora, ¿cuántos de ustedes sabían que había una red personal CS50 alrededor? 696 00:49:59,180 --> 00:50:01,910 Algunos de ustedes. No todos ustedes. 697 00:50:01,910 --> 00:50:08,800 El problema con esto, por supuesto, es que si no ponemos esto en nuestra lista de SSID, 698 00:50:08,800 --> 00:50:10,930 nadie habría sabido de ella lo más probable. 699 00:50:10,930 --> 00:50:16,090 Espero. A menos que ustedes están tratando de entrar ilegalmente en nuestro móvil. 700 00:50:16,090 --> 00:50:18,700 Pero esto es algo que puede hacer eso es muy importante cuando se está configurando 701 00:50:18,700 --> 00:50:20,280 un router en casa. 702 00:50:20,280 --> 00:50:22,820 Esto probablemente no va a suceder durante unos años para muchos de ustedes, 703 00:50:22,820 --> 00:50:29,010 pero tenga en cuenta que el mantenimiento de SSID que salir de allí y no también nombrar 704 00:50:29,010 --> 00:50:34,630 algo súper común le ayudará a mantenerse más seguros en el largo plazo. 705 00:50:34,630 --> 00:50:38,070 >> Un par final de las cosas que puedes hacer. Uno de ellos es HTTPS. 706 00:50:38,070 --> 00:50:44,760 Si usted está en un Starbucks, si usted está en un público wi-fi zona 707 00:50:44,760 --> 00:50:52,620 y usted decide tener acceso a su cuenta bancaria, acceder a su Gmail, Facebook, 708 00:50:52,620 --> 00:50:56,140 asegúrese de que las conexiones van a través de HTTPS. 709 00:50:56,140 --> 00:50:59,800 Es una capa adicional de seguridad, una capa adicional de cifrado. 710 00:50:59,800 --> 00:51:01,520 La única cosa a tener en cuenta aquí es, 711 00:51:01,520 --> 00:51:04,740 ¿Cuántos de ustedes han hecho clic a través de esa pantalla grande, rojo que dice: 712 00:51:04,740 --> 00:51:07,480 "Este sitio web puede ser malo". 713 00:51:07,480 --> 00:51:09,710 Yo sé lo que tengo. 714 00:51:09,710 --> 00:51:13,090 Es probable que cuando usted está navegando a todos a ver a la Patria, o algo así, ¿verdad? 715 00:51:13,090 --> 00:51:19,900 Si. (Risas) Si. Ahí lo tienes. Sabemos quién está mirando Patria. 716 00:51:19,900 --> 00:51:24,540 Esa pantalla grande, rojo allí 717 00:51:24,540 --> 00:51:28,600 a menudo indica que algo funky que está pasando. 718 00:51:28,600 --> 00:51:32,530 A veces es la propia página web es inseguro, 719 00:51:32,530 --> 00:51:35,520 pero esa misma pantalla grande, rojo aparece cuando la gente está tratando de 720 00:51:35,520 --> 00:51:37,520 montaje de red ataca a usted. 721 00:51:37,520 --> 00:51:40,220 Así que si usted ve que la pantalla grande, rojo subido en un Starbucks, 722 00:51:40,220 --> 00:51:42,440 no haga clic a través de él. 723 00:51:42,440 --> 00:51:45,350 Malas noticias. Una pandilla de pelotas. 724 00:51:45,350 --> 00:51:51,490 >> La última cosa que se puede ver en 725 00:51:51,490 --> 00:51:54,120 es una especie de VPN. 726 00:51:54,120 --> 00:52:00,280 Esta VPN está disponible a través de la Universidad de Harvard - vpn.fas.harvard.edu-- 727 00:52:00,280 --> 00:52:03,260 y lo que esto hace es que en realidad establece una conexión segura 728 00:52:03,260 --> 00:52:06,460 entre usted y Harvard, embudos de su tráfico a través de él, 729 00:52:06,460 --> 00:52:12,160 y de esa manera si usted está sentado en un lugar como un Starbucks 730 00:52:12,160 --> 00:52:19,030 puede conectarse a Harvard, conseguir que el tráfico seguro, a continuación, busque la Universidad de Harvard. 731 00:52:19,030 --> 00:52:21,950 Una vez más no, a toda prueba. Las personas pueden obtener en el medio. 732 00:52:21,950 --> 00:52:25,850 Pueden empezar a romper, pero esto es mucho más seguro que confían en la seguridad 733 00:52:25,850 --> 00:52:28,620 de la sola wi-fi. 734 00:52:28,620 --> 00:52:32,570 >> Está bien. En suma, 735 00:52:32,570 --> 00:52:34,580 cuando va a configurar las redes inalámbricas, 736 00:52:34,580 --> 00:52:37,250 cuando se va a utilizar una red inalámbrica en público - 737 00:52:37,250 --> 00:52:43,430 si se trata de un Starbucks, si se trata de Five Guys, ya sea b.good, 738 00:52:43,430 --> 00:52:46,440 algo así - siempre que tengan wi-fi - 739 00:52:46,440 --> 00:52:48,440 ser consciente de sus alrededores. 740 00:52:48,440 --> 00:52:50,440 Sea consciente de lo que la gente puede hacer. 741 00:52:50,440 --> 00:52:53,890 Y ten cuidado. No acceda a su cuenta bancaria. 742 00:52:53,890 --> 00:52:58,740 Podría ser un rudo despertar si alguien aparece con la contraseña más adelante. 743 00:52:58,740 --> 00:53:05,480 Con eso, ir carmesí! Y voy a cambiar las cosas de vuelta a David por una palabra final. 744 00:53:05,480 --> 00:53:11,270 (Aplausos) 745 00:53:11,270 --> 00:53:14,360 >> [David] Yo pensé en compartir algo de mi experiencia personal. 746 00:53:14,360 --> 00:53:19,940 Una herramienta que te gustaría jugar con - aunque Apple ha erradicado en gran medida este problema 747 00:53:19,940 --> 00:53:22,710 si usted ha actualizado su software, ya que - 748 00:53:22,710 --> 00:53:26,670 pero con ese fin de no ser realmente capaces de confiar en el software que usamos, 749 00:53:26,670 --> 00:53:33,270 ya los puntos de Nate, siendo capaz de olfatear un poco de lo que otras personas están haciendo 750 00:53:33,270 --> 00:53:37,010 por ahí - se trataba de una pieza de software que surgió hace alrededor de un año-y-uno-mitad ahora. 751 00:53:37,010 --> 00:53:39,010 [IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] 752 00:53:39,010 --> 00:53:41,010 Desde hace algún tiempo, iTunes - antes de iCloud, cuando estabas sincronizando sus iPods o iPhones o sus 753 00:53:41,010 --> 00:53:45,570 o sus iPads con iTunes - en el interés de copias de seguridad, 754 00:53:45,570 --> 00:53:48,340 lo que tu iPhone y otros dispositivos de estos han estado haciendo durante algún tiempo es 755 00:53:48,340 --> 00:53:50,340 haciendo uso de los datos de GPS. 756 00:53:50,340 --> 00:53:52,710 >> Todos ustedes saben acaso que sus iPhones y Androids y los teléfonos móviles de Windows 757 00:53:52,710 --> 00:53:55,410 y el que en estos días se puede rastrear dónde usted está en el interés de mostrar mapas 758 00:53:55,410 --> 00:53:59,440 y similares - así lo que Apple y estas otras compañías hacen es 759 00:53:59,440 --> 00:54:02,650 por lo general un seguimiento casi en todas partes que usted ha estado realmente en el interés de 760 00:54:02,650 --> 00:54:05,380 mejora de la calidad de servicio. 761 00:54:05,380 --> 00:54:07,170 Uno de ellos, usted puede obtener más publicidad dirigida y similares, 762 00:54:07,170 --> 00:54:10,740 sino dos, también pueden averiguar dónde hay puntos de acceso inalámbricos en el mundo, 763 00:54:10,740 --> 00:54:14,780 y esto puede ayudar con geo-localización - una especie de triangulación de la posición de las personas. 764 00:54:14,780 --> 00:54:18,520 >> Larga historia corta, todos habíamos estado caminando antenas para una cierta cantidad de tiempo. 765 00:54:18,520 --> 00:54:22,180 Desafortunadamente, Apple había tomado la decisión de diseño - o falta de ella - 766 00:54:22,180 --> 00:54:26,590 a no cifrar esta información cuando estaba siendo copia de seguridad en iTunes. 767 00:54:26,590 --> 00:54:30,330 Y lo que el investigador de seguridad encontró fue que se trataba de un archivo XML enorme - 768 00:54:30,330 --> 00:54:33,810 un archivo de texto enorme - sentado en software popular iTunes, 769 00:54:33,810 --> 00:54:35,400 y si usted fuera un poco curioso, 770 00:54:35,400 --> 00:54:38,990 usted podría ir a hurgar la historia de su cónyuge, la historia de su compañero de cuarto, 771 00:54:38,990 --> 00:54:41,050 historia de su hermano y similares, 772 00:54:41,050 --> 00:54:44,590 y gracias a un software libre, se puede trazar todas estas coordenadas GPS - 773 00:54:44,590 --> 00:54:46,590 latitud y longitud. 774 00:54:46,590 --> 00:54:48,590 >> Así que en realidad hizo esto con mi propio teléfono. 775 00:54:48,590 --> 00:54:51,210 He conectado mi teléfono, y por supuesto, mi versión de iTunes no se ha cifrado en el momento, 776 00:54:51,210 --> 00:54:53,900 y lo que yo podía ver eran mis propios patrones. 777 00:54:53,900 --> 00:54:56,970 He aquí los Estados Unidos y representa cada uno de estos círculos azules 778 00:54:56,970 --> 00:55:01,670 donde se me ocurrió que fue durante esos meses anteriores de poseer este teléfono en particular. 779 00:55:01,670 --> 00:55:04,940  He pasado mucho tiempo, por supuesto, en el noreste, un poco de tiempo en California, 780 00:55:04,940 --> 00:55:08,690 un viaje de corta duración a Texas, y si a continuación, hacer un zoom sobre esto - 781 00:55:08,690 --> 00:55:11,120 todo esto es una especie de multa e interesante, pero yo lo sabía. 782 00:55:11,120 --> 00:55:13,890 La mayoría de mis amigos sabían esto, pero si usted bucear más profundo, 783 00:55:13,890 --> 00:55:17,090 a ver donde paso la mayor parte de mi tiempo en el noreste. 784 00:55:17,090 --> 00:55:20,330 Si se adhieren a algunos pueblos de aspecto familiar - 785 00:55:20,330 --> 00:55:24,670 esta mancha grande, tinta azul se centra esencialmente sobre Boston, 786 00:55:24,670 --> 00:55:29,510 y luego pasar un poco de tiempo en los suburbios que irradian desde Boston. 787 00:55:29,510 --> 00:55:32,780 Pero yo también estaba haciendo un poco de entrevistarse con dicho año. 788 00:55:32,780 --> 00:55:36,090 Y este año es la costa oriental, y de hecho puedes verme 789 00:55:36,090 --> 00:55:41,920 y mi iPhone en el bolsillo de mi viaje de ida y vuelta entre Boston y Nueva York 790 00:55:41,920 --> 00:55:47,510 Filadelfia y más abajo, así como pasar un poco de tiempo de vacaciones 791 00:55:47,510 --> 00:55:50,340 en el cabo, que es el brazo poco por ahí. 792 00:55:50,340 --> 00:55:53,030 Por lo tanto, cada uno de estos puntos representa un lugar que había sido, 793 00:55:53,030 --> 00:55:56,970 y completamente desconocido para mí, toda esta historia estaba allí sentado 794 00:55:56,970 --> 00:55:58,410 en mi computadora de escritorio. 795 00:55:58,410 --> 00:56:00,470 Si el zoom - esto en realidad era un poco preocupante. 796 00:56:00,470 --> 00:56:04,190 Yo no recordaba haber estado nunca en Pensilvania ese año en particular. 797 00:56:04,190 --> 00:56:07,840 Pero aunque un poco más duro en ello y me di cuenta, oh, era de hecho ese viaje 798 00:56:07,840 --> 00:56:11,160 y por supuesto, mi teléfono me había atrapado. 799 00:56:11,160 --> 00:56:14,180 >> Apple ha puesto esta información cifrada, 800 00:56:14,180 --> 00:56:17,380 pero esto también es testimonio de la cantidad de información que está siendo recopilada por nosotros, 801 00:56:17,380 --> 00:56:20,850 y la facilidad con que - para bien o para mal - es aceptable. 802 00:56:20,850 --> 00:56:23,340 Una de las Sugerencias del chef suerte de hablar de Rob, de la charla de Nate 803 00:56:23,340 --> 00:56:27,370 y las imágenes pequeñas, como esta de hoy es sólo para estar todo el conocedor más de este 804 00:56:27,370 --> 00:56:31,160 de modo que a pesar de que - como a punto de Rob - we're tipo de jodido, ¿no? 805 00:56:31,160 --> 00:56:33,920 No hay mucho que podemos hacer cuando se trata de algunas de estas amenazas, 806 00:56:33,920 --> 00:56:37,130 pero al final del día tenemos que confiar en algo o alguien 807 00:56:37,130 --> 00:56:38,510 si queremos utilizar realmente estas tecnologías. 808 00:56:38,510 --> 00:56:43,150 Por lo menos podemos estar tomando decisiones informadas y decisiones calculadas o no 809 00:56:43,150 --> 00:56:46,390 que realmente debe comprobar esta cuenta particularmente sensible 810 00:56:46,390 --> 00:56:49,330 o que en realidad debería ser el envío de sospechar que algo mensaje instantáneo 811 00:56:49,330 --> 00:56:52,180  en un entorno wi-fi así. 812 00:56:52,180 --> 00:56:54,990 >> Así que, dicho esto, sólo queda un cuestionario, una conferencia permanece. 813 00:56:54,990 --> 00:56:57,740 Nos vemos el miércoles luego del lunes. 814 00:56:57,740 --> 00:57:02,100 (Aplausos y exclamaciones) 815 00:57:02,100 --> 00:57:06,100 [CS50TV]