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 é CS50.] [CS50.TV] 4 00:00:08,520 --> 00:00:13,240 >> Todo ben! Este é CS50, pero non por moito máis tempo. 5 00:00:13,240 --> 00:00:14,740 Este é o inicio da semana 10. 6 00:00:14,740 --> 00:00:18,780 O mércores temos o noso proba, e despois vindeiro luns temos un bolo conmemorativo 7 00:00:18,780 --> 00:00:22,030 como un círculo completo todo o camiño de volta de cero semana. 8 00:00:22,030 --> 00:00:25,200 Hoxe, falamos de un dos meus temas favoritos, a dicir verdade - 9 00:00:25,200 --> 00:00:29,000 a seguridade e privacidade e as implicacións de todo o hardware e software 10 00:00:29,000 --> 00:00:31,000 que todos usamos estes días. 11 00:00:31,000 --> 00:00:33,300 Para ser honesto, hai unha serie de ameazas por aí 12 00:00:33,300 --> 00:00:35,430 que, se realmente non parou a pensar sobre eles, 13 00:00:35,430 --> 00:00:36,920 son realmente moi asustado. 14 00:00:36,920 --> 00:00:40,070 Caso en cuestión - se algún de vós xa descargar unha peza de software 15 00:00:40,070 --> 00:00:42,660 fóra da Internet e instalar no seu ordenador, 16 00:00:42,660 --> 00:00:45,220 xa estean implicados en un grao significativo de confianza, non? 17 00:00:45,220 --> 00:00:50,220 Non hai nada impedir o Skype, ou Chrome, ou calquera peza de software 18 00:00:50,220 --> 00:00:54,770 teña instalado no seu ordenador, desde a simple exclusión de todos os ficheiros do seu disco duro; 19 00:00:54,770 --> 00:00:58,260 cargar todos os ficheiros do seu disco duro para o servidor algún bandido; 20 00:00:58,260 --> 00:01:01,650 ler todos os seus e-mails, a partir de interceptación de todas as súas mensaxes instantáneas. 21 00:01:01,650 --> 00:01:05,040 Porque a realidade é hoxe, con sistemas operativos máis modernos 22 00:01:05,040 --> 00:01:10,040 hai realmente non é moi de un muro entre os programas que instalar, 23 00:01:10,040 --> 00:01:14,220 e ti e eu somos practicamente só o tipo de cruzar nosos dedos e tendo en fe 24 00:01:14,220 --> 00:01:17,750 que ese programa que baixo gratuitamente, ou que o que é 99 centavos, 25 00:01:17,750 --> 00:01:20,140 é realmente completamente benigno. 26 00:01:20,140 --> 00:01:23,090 Pero, como vimos a través de C, e agora PHP e JavaScript, 27 00:01:23,090 --> 00:01:25,420 con esta capacidade de nos expresar a través de programación, 28 00:01:25,420 --> 00:01:30,300 pode facer máis calquera cousa que quere un programa que un usuario a si mesmo podería facer. 29 00:01:30,300 --> 00:01:32,390 >> Entón, hoxe imos nos centrarse sobre o tema - 30 00:01:32,390 --> 00:01:35,360 non só algunhas ameazas, pero tamén defensas. 31 00:01:35,360 --> 00:01:37,540 De feito, no mundo da seguridade en xeral, 32 00:01:37,540 --> 00:01:39,040 hai un tipo de xogo de gato-e-rato, 33 00:01:39,040 --> 00:01:41,990 e Eu ouso dicir que os bandidos case sempre teñen unha perna cara arriba. 34 00:01:41,990 --> 00:01:45,880 Cando se trata de tomar partido de hardware e software nos nosos propios ordenadores persoais, 35 00:01:45,880 --> 00:01:51,250 temos que entender que un cara malo simplemente precisa atopar un simple erro - 36 00:01:51,250 --> 00:01:56,150 unha explotación, un erro - en unha peza de software que escribir ou está executando 37 00:01:56,150 --> 00:01:58,280 para que el ou ela para asumir todo o noso sistema. 38 00:01:58,280 --> 00:02:02,870 Por outra banda, nós - os bos - a necesidade de corrixir e corrixir os erros 39 00:02:02,870 --> 00:02:04,900 e evitar todas estas debilidades. 40 00:02:04,900 --> 00:02:07,870 E así, eu diría que, en xeral, os bandidos teñen a vantaxe. 41 00:02:07,870 --> 00:02:10,840 Que clases como este e as clases posteriores son realmente sobre 42 00:02:10,840 --> 00:02:14,830 non sobre o ensino como para frear as batallas que eses bandidos fan, 43 00:02:14,830 --> 00:02:18,220 pero son sobre como se protexer ou polo menos como facer unha decisión calculada 44 00:02:18,220 --> 00:02:22,970 que si, sei que este anaco de software podería realmente ler cada un dos meus e-mails, 45 00:02:22,970 --> 00:02:27,040 pero eu estou ben con iso por mor do valor que me leva, por outro lado. 46 00:02:27,040 --> 00:02:31,060 >> Estou moi satisfeito de ser acompañado por 2 das persoas máis intelixentes que eu coñezo - 47 00:02:31,060 --> 00:02:33,060 Rob Bowden e Nate Hardison. 48 00:02:33,060 --> 00:02:36,850 Rob está a piques de levar-nos a un paseo polo menor nivel de etiquetas de seguridade - 49 00:02:36,850 --> 00:02:42,470 do compilador que, ata agora, todos temos benvida a amar e confiar. Rob Bowden. 50 00:02:42,470 --> 00:02:47,790 [Aplausos] 51 00:02:47,790 --> 00:02:50,280 >> [Rob] Todo ben. David ten practicamente tomado a miña lengalenga toda 52 00:02:50,280 --> 00:02:52,320 que eu estaba indo a introducir con, pero - 53 00:02:52,320 --> 00:02:58,070 Varias semanas atrás, viu o exemplo dun ataque de estourido de buffer 54 00:02:58,070 --> 00:03:01,900 que é un exemplo de un hacker hacker nalgún peza de software 55 00:03:01,900 --> 00:03:06,060 que non deben ser invadido. 56 00:03:06,060 --> 00:03:09,690 O outro lado desta 57 00:03:09,690 --> 00:03:14,470 é ás veces ten un software que é malicioso en si. 58 00:03:14,470 --> 00:03:17,070 Non precisa aínda de ser cortado. 59 00:03:17,070 --> 00:03:20,670 A persoa que escribiu o software quere hackear ti. 60 00:03:20,670 --> 00:03:22,190 >> Nós só ir directo para o código, 61 00:03:22,190 --> 00:03:28,560 dar un ollo no "login.c". 62 00:03:28,560 --> 00:03:33,390 Aquí, un programa parvo que valida un nome de usuario e contrasinal combinación. 63 00:03:33,390 --> 00:03:39,420 Aquí debe ser definitivamente ficar cómodo con C de novo para o quiz. 64 00:03:39,420 --> 00:03:43,470 En primeiro lugar, estamos usando cordas comezar a describir o nome de usuario, 65 00:03:43,470 --> 00:03:46,280 entón nós estamos usando a corda get para incorporarse o contrasinal, 66 00:03:46,280 --> 00:03:50,680 e entón temos algunhas comprobacións triviais de xusto, é o nome de usuario "roubar"? 67 00:03:50,680 --> 00:03:52,710 E é o contrasinal "thisiscs50"? 68 00:03:52,710 --> 00:03:56,900 Ou, é o nome de usuario "Tommy" eo contrasinal "i <3javascript"? 69 00:03:56,900 --> 00:03:58,980 Se algún deles é o caso, 70 00:03:58,980 --> 00:04:01,980  entón nós estamos indo só para imprimir o "éxito", e entón temos acceso. 71 00:04:01,980 --> 00:04:07,690 Se non, imos para imprimir "válido sesión" e despois, por suposto, 72 00:04:07,690 --> 00:04:11,120  Como a memoria malloc esbozo cordas, o nome de usuario e contrasinal que libre. 73 00:04:11,120 --> 00:04:15,560 Este é un programa de rexistro trivial, 74 00:04:15,560 --> 00:04:18,110 e se pensar sobre cando entrar no aparello, 75 00:04:18,110 --> 00:04:22,350 é moi semellante - ou incluso sesión no seu computador - 76 00:04:22,350 --> 00:04:24,930 hai só uns programa de sesión, que é o que lle dá acceso. 77 00:04:24,930 --> 00:04:31,840 Aquí, pasa que temos hard-Coded 'roubar', 'thisiscs50', 'Tommy', 'i <3javascript', 78 00:04:31,840 --> 00:04:34,950 pero probablemente hai algún arquivo en algún lugar do seu sistema operativo 79 00:04:34,950 --> 00:04:38,690 que ten unha lista de nomes de usuarios que poden acceder ao sistema 80 00:04:38,690 --> 00:04:41,740 e unha lista de contrasinais asociadas cos nomes de usuarios. 81 00:04:41,740 --> 00:04:46,090 Normalmente, os contrasinais non son só almacenadas en texto simple coma este. 82 00:04:46,090 --> 00:04:50,360 Existe algún tipo de criptografía, pero iso vai facer para o noso exemplo. 83 00:04:50,360 --> 00:04:57,000 >> Benvida ao noso compilador - 84 00:04:57,020 --> 00:05:00,780 vai ser moi sinxelo. 85 00:05:00,780 --> 00:05:04,800 Necesitamos que especificar alomenos un ficheiro que desexa compilar, 86 00:05:04,800 --> 00:05:10,200 E entón aquí - estas liñas 87 00:05:10,200 --> 00:05:12,520 só ler un arquivo de A. 88 00:05:12,520 --> 00:05:16,080 Le o ficheiro enteiro nun buffer grande, 89 00:05:16,080 --> 00:05:19,000 e, entón, nulo rematar noso buffer como sempre, 90 00:05:19,000 --> 00:05:21,000 e, finalmente, só compilar o ficheiro. 91 00:05:21,000 --> 00:05:24,090 Non imos ollar como compilación é realmente aplicado, 92 00:05:24,090 --> 00:05:26,820 pero como unha información, que só chama Clang. 93 00:05:26,820 --> 00:05:32,370 Nós imos empregar este programa para compilar as cousas en vez de Clang. 94 00:05:32,370 --> 00:05:39,260 Un problema que comezar é que vemos queremos compilar noso compilador, 95 00:05:39,260 --> 00:05:43,620 pero se nós non imos usar Clang, eu non sei o que eu vou compilar con. 96 00:05:43,620 --> 00:05:46,700 Esta é unha cuestión xeral coñecido como cargando. 97 00:05:46,700 --> 00:05:53,080 Entón, só esta vez, eu vou usar Clang para compilar noso compilador. 98 00:05:53,080 --> 00:05:58,800 >> Se pensar en GCC e Clang - 99 00:05:58,800 --> 00:06:03,200 estes programas, os compiladores están sendo actualizados constantemente, 100 00:06:03,200 --> 00:06:10,010 e os compiladores son compilados empregando GCC e Clang. 101 00:06:10,010 --> 00:06:14,890 Clang é só un gran C ou C + + programa, 102 00:06:14,890 --> 00:06:19,510 para que o compilador que empregan para compilar que é Clang. 103 00:06:19,510 --> 00:06:26,820 Aquí, agora, estamos indo só para estar usando o noso compilador para compilar noso compilador, 104 00:06:26,820 --> 00:06:33,830 e podemos ata dicir - '/ compilador.', 'compiler.c', 'compile.c', 'o compilador'. 105 00:06:33,830 --> 00:06:37,250 Teña en conta que este é o comando exacto eu corre antes - 106 00:06:37,250 --> 00:06:41,330 basta substituír Clang con '. / compilador'. 107 00:06:41,330 --> 00:06:44,990 E agora temos outro compilador, pero é exactamente o mesmo. 108 00:06:44,990 --> 00:06:47,510 El só chama Clang. 109 00:06:47,510 --> 00:06:55,050 >> Nós imos utilizar o noso compilador para compilar o programa de rexistro. 110 00:06:55,050 --> 00:07:03,030 Okay - "usuario / compilador login.c-o.". 111 00:07:03,030 --> 00:07:06,160 Así, a referencia non existe "GetString". 112 00:07:06,160 --> 00:07:11,250 Ten un "-lcs50". Okay. 113 00:07:11,250 --> 00:07:13,790 Entón agora eu teño o noso programa de login. 114 00:07:13,790 --> 00:07:16,790 Executa-lo - recibir "Introduce o teu nome de usuario". 115 00:07:16,790 --> 00:07:22,140 Un exemplo foi roubar. Introduza o seu contrasinal - thisiscs50. 116 00:07:22,140 --> 00:07:24,930 E éxito! Eu teño acceso. 117 00:07:24,930 --> 00:07:28,350 Executa-lo novo e inserir un contrasinal incorrecta - 118 00:07:28,350 --> 00:07:30,350 ou nome de usuario e contrasinal non válidos - 119 00:07:30,350 --> 00:07:32,860 válido login. 120 00:07:32,860 --> 00:07:37,740 Okay. Nada de interesante sobre iso ata agora. 121 00:07:37,740 --> 00:07:43,100 Pero, imos dar un ollo ao usuario de novo - 122 00:07:43,100 --> 00:07:47,850 e este vai ser un exemplo un tanto trivial, 123 00:07:47,850 --> 00:07:59,330 pero imos engadir unha outra persoa aquí e dicir: else if ((strcmp (nome, "hacker") == 0 && 124 00:07:59,330 --> 00:08:14,510 strcmp (contrasinal "LOLihackyou") == 0)) 125 00:08:14,510 --> 00:08:26,280 agora, printf ("hacked Agora tes acceso \ n").; ben. 126 00:08:26,280 --> 00:08:36,240 Compilando iso - compilador login.c o login-lcs50 - 127 00:08:36,240 --> 00:08:40,190 agora correndo a - e se eu usar o meu nome de usuario hacker 128 00:08:40,190 --> 00:08:44,740 e contrasinal LOLihackedyou - 129 00:08:44,740 --> 00:08:47,780 Será que eu escriba mal alí antes? 130 00:08:47,780 --> 00:08:52,990 No login.c-iHack - eu non cortado porque eu creo que iso máis tarde. 131 00:08:52,990 --> 00:08:56,270 Okay. Recompilación. 132 00:08:56,270 --> 00:09:01,500 Re-running - hacker - LOLihackedyou - 133 00:09:01,500 --> 00:09:03,650 Hacked! Agora tes acceso. 134 00:09:03,650 --> 00:09:06,580 >> Non parece ser a de que gran parte da diferenza 135 00:09:06,580 --> 00:09:10,890 porque é a mesma comprobación exacta que eu estaba facendo a outros nomes de usuarios e contrasinais. 136 00:09:10,890 --> 00:09:17,720 Ademais, a gran cousa é que outras persoas miran para esta login.c - 137 00:09:17,720 --> 00:09:24,020 dicir, se eu pasar iso para o meu compañeiro, e eles abren este ficheiro, 138 00:09:24,020 --> 00:09:29,870 e ler isto, eles van ver - así, por que ten esas liñas de código aquí? 139 00:09:29,870 --> 00:09:33,320 Este suposto non é algo que debe estar no seu programa. 140 00:09:33,320 --> 00:09:41,590 Nalgúns programas - como calquera software propietario, que non é open-source - 141 00:09:41,590 --> 00:09:46,200 pode nunca ver estas liñas de código. 142 00:09:46,200 --> 00:09:50,440 Algo así como o Skype ou algo - por todo o que vostede sabe, 143 00:09:50,440 --> 00:09:57,600 Skype está no seu ordenador e non é só unha combinación Username Contrasinal específica 144 00:09:57,600 --> 00:10:01,580 que pode entrar no Skype, dalgunha forma especial. 145 00:10:01,580 --> 00:10:04,230 Nós non sabemos sobre el, e as persoas non saben sobre iso, 146 00:10:04,230 --> 00:10:09,640 porque non pode ler o código fonte para ver que non hai este burato. 147 00:10:09,640 --> 00:10:11,800 >> O que chamamos iso - 148 00:10:11,800 --> 00:10:16,530 aínda que este non é un exemplo moi intelixente - 149 00:10:16,530 --> 00:10:18,970 iso é chamado dunha porta traseira. 150 00:10:18,970 --> 00:10:22,320 Se pensas que a porta de atrás da súa casa. 151 00:10:22,320 --> 00:10:26,640 Aquí, se eu validar con 'roubar' os nomes de usuario ou 'Tommy' 152 00:10:26,640 --> 00:10:28,580 que sería como usar a "porta de entrada". 153 00:10:28,580 --> 00:10:33,700 Esta é a forma que eu teño que suxeita o login. 154 00:10:33,700 --> 00:10:37,630 Pero se eu entrar con ese nome de usuario e contrasinal - 155 00:10:37,630 --> 00:10:40,630 a continuación, que está a usar a "porta de atrás". 156 00:10:40,630 --> 00:10:42,810 Non era a forma intencionada para entrar no programa, 157 00:10:42,810 --> 00:10:45,350 pero aínda funciona. 158 00:10:45,350 --> 00:10:49,160 E as persoas, en xeral, non se quere saber sobre esas portas de atrás. 159 00:10:49,160 --> 00:10:53,050 Estamos indo para mellorar esta situación. 160 00:10:53,050 --> 00:10:55,610 Imos desfacer iso para a nosa login.c orixinal, 161 00:10:55,610 --> 00:11:05,510 e imos dar un ollo ao noso novo compilador. Okay. 162 00:11:05,510 --> 00:11:08,460 Todo aquí é exactamente o mesmo. 163 00:11:08,460 --> 00:11:10,460 Estamos lendo o ficheiro enteiro nun buffer. 164 00:11:10,460 --> 00:11:14,400 Todo aquí é o mesmo. 165 00:11:14,400 --> 00:11:16,180 Nós só compilou o arquivo. 166 00:11:16,180 --> 00:11:19,770 Pero agora eu teño esa gran aquí 167 00:11:19,770 --> 00:11:24,140 que di que, se o arquivo que ocorrer de eu ser a compilación é login.c, 168 00:11:24,140 --> 00:11:27,390 entón eu facer algo especial. 169 00:11:27,390 --> 00:11:29,900 O que é que algo de especial? 170 00:11:29,900 --> 00:11:33,820 Vexo aquí algunhas cordas chamado 'hack', 171 00:11:33,820 --> 00:11:35,950 e ollando para estas liñas de código - 172 00:11:35,950 --> 00:11:41,990 estas son as mesmas liñas de código - Eu creo que eu fixen 'iHack "uso e non' ihacked 'antes - 173 00:11:41,990 --> 00:11:44,240 mirar para estas liñas de código, 174 00:11:44,240 --> 00:11:47,880 son as mesmas liñas exactas de código que eu tiña en login.c antes. 175 00:11:47,880 --> 00:11:51,130 Pero agora, en vez de telos en login.c, 176 00:11:51,130 --> 00:11:54,290 Vou poñer-los no meu compilador. 177 00:11:54,290 --> 00:12:00,240 >> Estas son as liñas de código que eu vou querer inserir login.c. 178 00:12:00,240 --> 00:12:06,350 Estas liñas de código - o tapón que orixinalmente mantiña a miña login.c 179 00:12:06,350 --> 00:12:11,080 non é máis vai ser grande abondo, porque agora quero tamén introducir este hack 180 00:12:11,080 --> 00:12:12,940 no medio do meu programa. 181 00:12:12,940 --> 00:12:16,350 Todo iso está facendo é crear un novo buffer que é grande o suficiente - 182 00:12:16,350 --> 00:12:22,020 tanto para o arquivo orixinal e as liñas extras de código - o corte - que quero introducir alí. 183 00:12:22,020 --> 00:12:24,920 Aquí está unha cousa a notar - 184 00:12:24,920 --> 00:12:29,200 char * pattern = "/ / negar-lles acceso!" 185 00:12:29,200 --> 00:12:33,760 Se miramos cara atrás, login.c, 186 00:12:33,760 --> 00:12:37,690 vemos aquí este comentario - negar-lles acceso! 187 00:12:37,690 --> 00:12:42,360 En login.c, este comentario parece completamente inocuo, 188 00:12:42,360 --> 00:12:48,270 para que non sospeitar de calquera intención maliciosa con só este comentario. 189 00:12:48,270 --> 00:12:55,600 Pero, no noso compilador, imos ollar especificamente para esta liña de código, 190 00:12:55,600 --> 00:12:57,600 e, despois, cando atopalo - 191 00:12:57,600 --> 00:13:03,330 estas liñas de código está inserindo noso invadir esa posición. 192 00:13:03,330 --> 00:13:06,910 Entón, nós estamos interactuar sobre o login.c enteiro, 193 00:13:06,910 --> 00:13:12,080 estamos introducindo que corte exactamente onde el di que negar-lles o acceso, 194 00:13:12,080 --> 00:13:15,890 e despois imos compilar - e non o orixinal, login.c 195 00:13:15,890 --> 00:13:20,340 pero o login.c novo con ese corte inserida ben en 'negar-lles acceso. 196 00:13:20,340 --> 00:13:29,190 >> Agora quero compilar meu novo compilador que corte implicados. 197 00:13:29,190 --> 00:13:36,900 Eu non vou usar Clang, entón imos copiar o compilador que usan antes 198 00:13:36,900 --> 00:13:48,420 e usar isto - así, compilador compiler.c compile.c o evil_compiler. 199 00:13:48,420 --> 00:13:50,870 Agora compilador noso mal - 200 00:13:50,870 --> 00:13:54,310 se usarmos o noso compilador mal para compilar calquera outro arquivo, 201 00:13:54,310 --> 00:13:57,980 o ficheiro pode compilar como debería. 202 00:13:57,980 --> 00:13:59,980 É completamente normal. 203 00:13:59,980 --> 00:14:06,870 Pero se usarmos o noso compilador mal para compilar a - 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 novo, non hai absolutamente nada aquí. 206 00:14:21,310 --> 00:14:25,770 É o noso costume "se é ou roubo ou Tommy en que estamos, outra cousa que está fóra". 207 00:14:25,770 --> 00:14:31,620 Pero cando executar o noso executable, iso vai funcionar como de costume. 208 00:14:31,620 --> 00:14:36,640 Correr novo - hacker, LOLihackyou - 209 00:14:36,640 --> 00:14:39,000 Hacked! Agora tes acceso. 210 00:14:39,000 --> 00:14:43,560 Basta ollar para login.c, non cre que algo está mal. 211 00:14:43,560 --> 00:14:46,960 Pero o compilador que está a ser usado para compilar login.c 212 00:14:46,960 --> 00:14:53,820 é designado especificamente para introducir este hack no programa. 213 00:14:53,820 --> 00:14:57,320 Nós só cambiamos o noso problema orixinal. 214 00:14:57,320 --> 00:15:02,880 Orixinalmente, tiñamos esas liñas de código login.c que se alguén mirou para eles, 215 00:15:02,880 --> 00:15:05,470 que sería como, por que son estes aquí? 216 00:15:05,470 --> 00:15:09,550 Agora, se alguén pasa a ollar para o noso compilador, 217 00:15:09,550 --> 00:15:12,140 eles van ollar para estas liñas de código e dicir: 218 00:15:12,140 --> 00:15:15,290 porque son estes aquí? 219 00:15:15,290 --> 00:15:17,210 Entón, non estamos completamente resolto o noso problema. 220 00:15:17,210 --> 00:15:22,510 Pero podemos utilizar esa idea de novo. 221 00:15:22,510 --> 00:15:26,260 >> Dando un ollo á nosa terceira versión do compilador, 222 00:15:26,260 --> 00:15:32,500 É a mesma idea. 223 00:15:32,500 --> 00:15:36,240 Nós ler o ficheiro enteiro nun buffer ata aquí, 224 00:15:36,240 --> 00:15:39,660 Nós compilar o ficheiro aquí, 225 00:15:39,660 --> 00:15:44,220 e eu teño algún tipo de hack corda aquí, 226 00:15:44,220 --> 00:15:47,710 pero observar o arquivo que eu estou realmente cortar agora. 227 00:15:47,710 --> 00:15:52,260 Estou compiler.c hackers 228 00:15:52,260 --> 00:15:54,590 non login.c. 229 00:15:54,590 --> 00:15:57,780 Pero o que estou introducindo en compiler.c? 230 00:15:57,780 --> 00:16:04,600 Estou inserindo este código, que é o código exacto no noso compilador anterior, 231 00:16:04,600 --> 00:16:10,540 que foi feito para introducir código login.c. 232 00:16:10,540 --> 00:16:13,360 Aquí está o noso caso login.c arquivo strcmp 233 00:16:13,360 --> 00:16:19,370 e despois introducir en Hack stuff login.c noso. 234 00:16:19,370 --> 00:16:26,010 Este novo compilador pretende crear un compilador 235 00:16:26,010 --> 00:16:30,390 que se destina a compilación de rexistro maliciosamente. 236 00:16:30,390 --> 00:16:34,320 Imos ver por que isto nos axuda. 237 00:16:34,320 --> 00:16:40,630 Todo o resto é o mesmo, polo que funciona exactamente como el traballou co noso compilador anterior. 238 00:16:40,630 --> 00:16:45,550 Estamos só a iteração sobre a nosa compile.c enteiro. 239 00:16:45,550 --> 00:16:48,190 Pero agora, en vez de buscar "negar-lles acceso", 240 00:16:48,190 --> 00:16:51,490 que estamos a buscar "compilar o ficheiro. ' 241 00:16:51,490 --> 00:16:53,750 Onde é compilar o ficheiro? 242 00:16:53,750 --> 00:16:57,210 Mirando para o noso compiler.c completamente inocente, 243 00:16:57,210 --> 00:17:01,340 É ben aquí na parte inferior. 244 00:17:01,340 --> 00:17:06,500 Este comentario - compilar o ficheiro - unha vez máis, que parece completamente inocuo. 245 00:17:06,500 --> 00:17:11,599 Pero, na nosa versión maliciosa do compilador, 246 00:17:11,599 --> 00:17:16,550 imos - ben antes de que o comentario - inserir este código 247 00:17:16,550 --> 00:17:20,690 que se destina a introducir o código cando compilar login.c. 248 00:17:20,690 --> 00:17:25,589 >> Hai unha serie de niveis de erro aquí. 249 00:17:25,589 --> 00:17:29,760 Imos realmente executa-lo. 250 00:17:29,760 --> 00:17:37,360 Unha vez máis, imos copiar o noso compilador orixinal. 251 00:17:37,360 --> 00:17:48,260 Agora compilación, - compilador compiler.c compile.c o evilest_compiler - 252 00:17:48,260 --> 00:17:52,640 e agora evilest_compiler. 253 00:17:52,640 --> 00:17:59,200 Máis maligno compilador - usar isto para compilar noso compilador, 254 00:17:59,200 --> 00:18:01,550 imos realmente ollar. 255 00:18:01,550 --> 00:18:13,230 Evilest_compiler - traer-o, todo o camiño de volta para a versión 1 do noso compilador - 256 00:18:13,230 --> 00:18:19,640 a versión 1 do noso compilador que foi só ler o ficheiro e recompila-lo. 257 00:18:19,640 --> 00:18:24,780 Aquí, sabemos que evilest_compiler - cando compila o ficheiro - 258 00:18:24,780 --> 00:18:29,890 vai inserir o código aquí antes de compilar o ficheiro, 259 00:18:29,890 --> 00:18:38,510 e que o código será exactamente como o código a partir da segunda versión do noso compilador 260 00:18:38,510 --> 00:18:42,240 que fixo iso. 261 00:18:42,240 --> 00:18:46,450 Este código, que se destina a entrar en sesión, 262 00:18:46,450 --> 00:18:56,480 vai ser inserido na nosa compilador compilador máis maligno. 263 00:18:56,480 --> 00:19:08,600 Imos usar evilest_compiler para compilar noso compilador. 264 00:19:08,600 --> 00:19:15,040 Agora imos usar o compilador, 265 00:19:15,040 --> 00:19:19,460 voltar máis para entrar, 266 00:19:19,460 --> 00:19:25,280 e lembre-se este login.c non ten absolutamente nada sospeitoso nel. 267 00:19:25,280 --> 00:19:35,250 Pero, usando o noso compilador para compilar login.c, 268 00:19:35,250 --> 00:19:38,430 Rob, thisiscs50, éxito. 269 00:19:38,430 --> 00:19:44,350 Imos hacker de rexistro, LOLihackyou, hacked! Agora tes acceso. 270 00:19:44,350 --> 00:19:49,710 >> Recoñecer que este era diferente da versión 2 do noso compilador. 271 00:19:49,710 --> 00:20:00,500 O compilador que usan - imos volver - copia de sesión - 272 00:20:00,500 --> 00:20:01,880 imos traer o noso compilador de volta aquí. 273 00:20:01,880 --> 00:20:06,360 Retirada compilador máis maligno. 274 00:20:06,360 --> 00:20:08,970 Todo o que nos queda agora é compilador. 275 00:20:08,970 --> 00:20:10,950 Se olharmos para compiler.c, 276 00:20:10,950 --> 00:20:16,840 non hai absolutamente nada alí que parece malicioso de calquera forma. 277 00:20:16,840 --> 00:20:22,390 Se olharmos para login.c, 278 00:20:22,390 --> 00:20:28,790 non hai absolutamente nada aquí que parece malicioso de calquera forma. 279 00:20:28,790 --> 00:20:34,600 Pero cando usamos a nosa compilador para compilar login.c, 280 00:20:34,600 --> 00:20:38,840 temos a versión hackable de login.c. 281 00:20:38,840 --> 00:20:41,850 Cando usamos o noso compilador para compilar unha nova versión do compilador, 282 00:20:41,850 --> 00:20:46,620 temos a versión hackable do compilador. 283 00:20:46,620 --> 00:20:51,790 Agora, saír e distribuír noso executable compilador, 284 00:20:51,790 --> 00:20:59,280 e ninguén vai saber que non hai nada de malicioso sobre iso. 285 00:20:59,280 --> 00:21:04,680 >> Esta é realmente así - Eu non me lembro do ano - 286 00:21:04,680 --> 00:21:10,350 Ken Thompson, e gañou o Premio Turing - 287 00:21:10,350 --> 00:21:15,600 Se vostede non está familiarizado co Premio Turing, é case sempre definido como a 288 00:21:15,600 --> 00:21:20,160 Premio Nobel de ciencia da computación, entón é así que eu vou definir iso. 289 00:21:20,160 --> 00:21:24,100 Ken Thompson fixo un discurso cando recibiu o seu premio Turing 290 00:21:24,100 --> 00:21:27,150 chamado "Reflexións sobre Confianza Confiar". 291 00:21:27,150 --> 00:21:30,710 Basicamente, esta era a idea do seu discurso. 292 00:21:30,710 --> 00:21:35,050 Pero en vez de noso compilador, estaba falando sobre GCC - 293 00:21:35,050 --> 00:21:37,250 só un compilador outro como Clang - 294 00:21:37,250 --> 00:21:45,600 e que estaba dicindo é que, como o noso login.c, o noso login.c parece relativamente inútil 295 00:21:45,600 --> 00:21:50,190 pero el estaba falando sobre o real UNIX login.c. 296 00:21:50,190 --> 00:21:53,050 Cando acceder ao seu dispositivo, 297 00:21:53,050 --> 00:21:56,070 existe algún programa de login que está a ser executado. 298 00:21:56,070 --> 00:21:58,080 Ese foi o login que estaba falando. 299 00:21:58,080 --> 00:22:02,420 Este foi basicamente a súa idea. 300 00:22:02,420 --> 00:22:09,080 El dixo que o GCC, el, en teoría, podería ter plantado un erro - 301 00:22:09,080 --> 00:22:12,290 non é un erro, pero un código malicioso - 302 00:22:12,290 --> 00:22:16,860 que ao compilar a función de rexistro - o ficheiro de sesión - 303 00:22:16,860 --> 00:22:23,700 ía introducir unha porta traseira para que el puidese ir absolutamente calquera Unix no mundo 304 00:22:23,700 --> 00:22:27,360 e faga o login co nome de usuario específico e algunha contrasinal. 305 00:22:27,360 --> 00:22:33,710 Na época, o GCC foi practicamente o compilador que todos usado para calquera cousa. 306 00:22:33,710 --> 00:22:36,460 Se alguén pasou para actualizar GCC, 307 00:22:36,460 --> 00:22:40,880 entón eles recompilar GCC usando o GCC, 308 00:22:40,880 --> 00:22:44,500 e aínda pode facer unha versión mala do GCC 309 00:22:44,500 --> 00:22:50,140 porque foi especialmente elaborado para recoñecer que foi recompilar o compilador. 310 00:22:50,140 --> 00:22:57,360 E se nunca usar o GCC para compilar un arquivo login.c, 311 00:22:57,360 --> 00:23:03,550 a continuación, iria introducir esa porta traseira que podería usar para acceder a calquera ordenador. 312 00:23:03,550 --> 00:23:08,750 >> Iso todo era teórico, pero - que circunstancia particular era teórico, 313 00:23:08,750 --> 00:23:12,440 pero as ideas son moi reais. 314 00:23:12,440 --> 00:23:18,250 En 2003, houbo un exemplo semellante onde - 315 00:23:18,250 --> 00:23:21,290 imos dar un ollo neste ficheiro, 316 00:23:21,290 --> 00:23:25,870 e iso non ten absolutamente nada que ver con iso, en realidade, pero o erro é semellante. 317 00:23:25,870 --> 00:23:29,390 Este ficheiro só define unha función chamada división. 318 00:23:29,390 --> 00:23:31,780 É preciso un argumento a, b un argumento, 319 00:23:31,780 --> 00:23:34,270 ea intención é facer un dividido por b. 320 00:23:34,270 --> 00:23:37,230 Pero fai unhas comprobación de erros, 321 00:23:37,230 --> 00:23:40,070 así sabemos que as cousas son estrañas se b acontece igual a cero. 322 00:23:40,070 --> 00:23:44,900 Se b é cero, entón dividir iso en dous casos. 323 00:23:44,900 --> 00:23:46,900 Xa podes ver o erro. 324 00:23:46,900 --> 00:23:51,840 O primeiro caso - a é cero, entón estamos facendo cero dividido por cero, 325 00:23:51,840 --> 00:23:54,300 e nós só dicir que non está definida. 326 00:23:54,300 --> 00:23:56,250 O segundo caso - a non é cero, 327 00:23:56,250 --> 00:24:00,580 entón é algo así como 1 dividido por cero, e só conectar o infinito. 328 00:24:00,580 --> 00:24:03,730 Máis que devolva o usual, un dividido por b. 329 00:24:03,730 --> 00:24:06,390 E aquí, nós estamos correndo estes tres casos, 330 00:24:06,390 --> 00:24:13,740 e nós realmente executar división - el grita para min - 331 00:24:13,740 --> 00:24:21,330 así, ignorando as advertencias do Clang - 332 00:24:21,330 --> 00:24:24,500 fin de non-void función - parece non compilar este antemán. 333 00:24:24,500 --> 00:24:26,500 Voltar 0. 334 00:24:26,500 --> 00:24:28,900 Fai dividir - todo ben. 335 00:24:28,900 --> 00:24:32,470 Com División / vemos 3, Infinity, Infinity. 336 00:24:32,470 --> 00:24:39,150 Cero dividido por cero non debería ter retornado infinito. 337 00:24:39,150 --> 00:24:42,840 E se aínda non descubriu o erro aínda - ou non viu iso antes - 338 00:24:42,840 --> 00:24:46,800 vemos que estamos facendo a = 0. 339 00:24:46,800 --> 00:24:52,610 Probablemente nós significou a == 0. Probablemente. 340 00:24:52,610 --> 00:24:58,640 >> Pero este foi realmente algo que, unha vez máis, en 2003, o kernel Linux - 341 00:24:58,640 --> 00:25:02,260 entón o noso aparello emprega o núcleo de Linux - 342 00:25:02,260 --> 00:25:05,550 calquera sistema operativo Linux usa o núcleo de Linux - 343 00:25:05,550 --> 00:25:11,610 así un erro moi semellante a esta apareceu. 344 00:25:11,610 --> 00:25:15,180 A idea detrás dese erro era - 345 00:25:15,180 --> 00:25:18,820 de novo, non foi só algunha función que foi chamado, e fixo un pouco de verificación de erros. 346 00:25:18,820 --> 00:25:24,300 Había algunhas entradas específicas que esta comprobación de erros - 347 00:25:24,300 --> 00:25:30,210 debería ser así, todo ben, non se pode chamar esta función con un divisor de 0. 348 00:25:30,210 --> 00:25:35,070 Entón, eu estou indo só para volver algún erro. 349 00:25:35,070 --> 00:25:38,090 Excepto que non era tan inocente como só a creación dun igual a 0. 350 00:25:38,090 --> 00:25:46,920 En vez diso, esta liña de código acaba facendo algo máis como usuario administrador =. 351 00:25:46,920 --> 00:25:50,500 Ou user = superusuario. 352 00:25:50,500 --> 00:25:59,170 Foi un inocente - a primeira vista - erro que podería ser só razoable 353 00:25:59,170 --> 00:26:01,560 que eu só quería informar algo específico 354 00:26:01,560 --> 00:26:05,150 se o usuario pasou a ser o administrador do superusuario. 355 00:26:05,150 --> 00:26:11,220 Pero, entón, volver a pensar sobre iso, a persoa quería que parecese como un simple erro de dixitación, 356 00:26:11,220 --> 00:26:14,330 pero este código realmente fora liberada, 357 00:26:14,330 --> 00:26:21,580 entón sería capaz de invadir calquera sistema, pasando unha bandeira específica - 358 00:26:21,580 --> 00:26:25,200 neste caso, b = 0 - 359 00:26:25,200 --> 00:26:28,020 e sería automaticamente o usuario que o administrador 360 00:26:28,020 --> 00:26:30,400 e el ten control total. 361 00:26:30,400 --> 00:26:32,540 Iso aconteceu en 2003. 362 00:26:32,540 --> 00:26:35,700 >> Aconteceu entón que a única razón foi capturado 363 00:26:35,700 --> 00:26:39,200 foi porque pasou de haber algún sistema automatizado 364 00:26:39,200 --> 00:26:41,540 que entendeu o cambio nese ficheiro 365 00:26:41,540 --> 00:26:44,560 que nunca debería ser modificado por un humano. 366 00:26:44,560 --> 00:26:47,580 O ficheiro só debe ser xerado automaticamente. 367 00:26:47,580 --> 00:26:49,780 Aconteceu entón que alguén tocou - 368 00:26:49,780 --> 00:26:52,460 así, a persoa que quería cortar tocou o ficheiro, 369 00:26:52,460 --> 00:26:55,450 eo ordenador trabado que tocar. 370 00:26:55,450 --> 00:27:01,750 Entón, eles cambiaron iso e só máis tarde entendeu o desastre sería 371 00:27:01,750 --> 00:27:04,830 este saíra para o mundo real. 372 00:27:04,830 --> 00:27:08,220 >> Vostede pode estar pensando que - volvendo ao noso exemplo compilador - 373 00:27:08,220 --> 00:27:14,290 aínda que non pode ver - ollar o código fonte - 374 00:27:14,290 --> 00:27:17,490 que nada en particular é malo, 375 00:27:17,490 --> 00:27:25,460 se nós realmente ollar para o código binario do compilador, 376 00:27:25,460 --> 00:27:28,670 veremos que algo está mal. 377 00:27:28,670 --> 00:27:31,260 Como exemplo, se executar as cordas funcionar - 378 00:27:31,260 --> 00:27:34,930 que está indo só para ollar sobre un ficheiro e imprimir todas as cordas que pode atopar - 379 00:27:34,930 --> 00:27:37,990 se corremos cordas no noso compilador, 380 00:27:37,990 --> 00:27:42,400 vemos que unha cadea de caracteres que atopa é este estraño - 381 00:27:42,400 --> 00:27:45,500 else if (strcmp (nome de usuario, "hacker") - bla, bla, bla. 382 00:27:45,500 --> 00:27:52,570 Se alguén pasou a ser paranóico o suficiente para non confiar no seu compilador, 383 00:27:52,570 --> 00:27:56,690 eles poderían facer cordas e ver iso, 384 00:27:56,690 --> 00:28:00,430 e entón eles saben que había algo mal co binario real. 385 00:28:00,430 --> 00:28:07,250 Pero, cordas foi, inevitablemente, algo que foi compilado. 386 00:28:07,250 --> 00:28:11,590 Entón, quen pode dicir que o noso compilador non só un código máis especial 387 00:28:11,590 --> 00:28:19,240 que di que, se cordas é sempre executado no noso compilador, a saída non é todo de que o código malicioso. 388 00:28:19,240 --> 00:28:23,980 >> A mesma idea con se queremos dis-montar o arquivo - 389 00:28:23,980 --> 00:28:30,440 nós aprenden que a montadora trae-nos o código de montaxe dun código de máquina - 390 00:28:30,440 --> 00:28:36,010 podemos ir na dirección oposta - objdump-d compilador - 391 00:28:36,010 --> 00:28:38,770 nos dará a montaxe do noso código. 392 00:28:38,770 --> 00:28:41,730 Mirando para iso, 393 00:28:41,730 --> 00:28:47,480 é moi enigmático, pero quixésemos poderiamos ollar a través deste 394 00:28:47,480 --> 00:28:51,700 e razón, espera, hai algo suceder aquí que non debe estar a suceder, 395 00:28:51,700 --> 00:28:59,380 e despois imos recoñecer que o compilador está facendo algo malicioso. 396 00:28:59,380 --> 00:29:03,950 Pero, así como cordas, quen pode dicir que non era especial objdump-casetonado. 397 00:29:03,950 --> 00:29:11,380 Basicamente, todo se reduce a non pode confiar en nada. 398 00:29:11,380 --> 00:29:14,310 O punto do papel que está a ser chamado de "Confianza Confiar" é 399 00:29:14,310 --> 00:29:17,900 en xeral, nós confío noso compilador. 400 00:29:17,900 --> 00:29:21,700 Vostede compilar o código e esperar que faga o que lle pedir para el facer. 401 00:29:21,700 --> 00:29:26,440 Pero, por que ten que confiar no compilador? 402 00:29:26,440 --> 00:29:32,120 Non escribiu o compilador. Vostede non sabe o que o compilador é necesariamente realmente facendo. 403 00:29:32,120 --> 00:29:36,870 Quen vai dicir que pode confiar? 404 00:29:36,870 --> 00:29:40,050 Pero, aínda así, ben, quizais podemos confiar no compilador. 405 00:29:40,050 --> 00:29:44,670 Hai decenas de miles de persoas que miraron para iso. 406 00:29:44,670 --> 00:29:51,360 Alguén debe ter recoñecido que algo estaba a suceder co compilador. 407 00:29:51,360 --> 00:29:55,100 >> E se nós só ir nun nivel máis profundo? 408 00:29:55,100 --> 00:29:59,450 Podería ata ser o seu procesador. 409 00:29:59,450 --> 00:30:01,250 Por máis ridículo que iso podería ser posible, 410 00:30:01,250 --> 00:30:06,690 quizais haxa algún funcionario deshonesto de Intel que crea estes procesadores 411 00:30:06,690 --> 00:30:12,400 que sempre que o procesador entende que está executando algún comando 412 00:30:12,400 --> 00:30:14,570 que está feito o login no ordenador, 413 00:30:14,570 --> 00:30:19,230 o procesador ha aceptar un usuario específico e combinación de contrasinal. 414 00:30:19,230 --> 00:30:21,530 Sería incontrolado complicada, 415 00:30:21,530 --> 00:30:24,790 pero alguén podería facelo. 416 00:30:24,790 --> 00:30:29,350 Nese punto, se realmente vai abrir o seu ordenador para ollar o procesador 417 00:30:29,350 --> 00:30:35,970 e utilizar un microscopio de recoñecer que estes circuítos non están aliñados como deben ser? 418 00:30:35,970 --> 00:30:39,730 Ninguén xamais vai pegar ese erro. 419 00:30:39,730 --> 00:30:45,570 Nalgún momento, só tes que desistir e confiar en algo. 420 00:30:45,570 --> 00:30:48,390 A maioría da xente non confía no compilador neste momento. 421 00:30:48,390 --> 00:30:55,760 Iso quere dicir que non necesariamente que ten que. 422 00:30:55,760 --> 00:30:59,350 Mirando para un vídeo un tanto infame - 423 00:30:59,350 --> 00:31:09,280 [Música dramática xogar] 424 00:31:09,280 --> 00:31:13,270 [É un sistema UNIX. Sei que isto.] 425 00:31:13,270 --> 00:31:14,470 [E todos os arquivos -] 426 00:31:14,470 --> 00:31:18,950 Ela dixo: "É un sistema UNIX. Sei que iso." 427 00:31:18,950 --> 00:31:21,760 Substitúe UNIX co que o seu sistema operativo favorito é - 428 00:31:21,760 --> 00:31:25,230 podería ter dito: "É un sistema Windows. Sei que iso." 429 00:31:25,230 --> 00:31:29,710 É unha declaración completamente sen sentido, 430 00:31:29,710 --> 00:31:34,450 pero, polo que sabemos, ela pasa a coñecer un porta dos fondos no sistema UNIX. 431 00:31:34,450 --> 00:31:38,840 Ela sabe algunha combinación de usuario / contrasinal que vai realmente deixar la 432 00:31:38,840 --> 00:31:41,540 facer o que ela quere. 433 00:31:41,540 --> 00:31:49,000 >> Todo ben. A moral de hoxe é, basicamente, non pode confiar en nada. 434 00:31:49,000 --> 00:31:52,620 Mesmo as cousas que escribe - non escribir o compilador. 435 00:31:52,620 --> 00:31:53,870 O compilador pode ser malo. 436 00:31:53,870 --> 00:31:59,140 Mesmo se non escribir o compilador, o único que está executando o compilador podería ser malo. 437 00:31:59,140 --> 00:32:05,210 (Risas) Non hai moito que podes facer. 438 00:32:05,210 --> 00:32:09,050 O mundo está condenado. 439 00:32:09,050 --> 00:32:11,570 Voltar David! 440 00:32:11,570 --> 00:32:19,540 [Aplausos] 441 00:32:19,540 --> 00:32:21,340 >> [David] Grazas. Isto foi realmente deprimente. 442 00:32:21,340 --> 00:32:23,910 Pero, en realidade, Rob é correcta. 443 00:32:23,910 --> 00:32:27,150 Nós realmente non temos unha solución para iso, pero está a piques de recibir algunhas solucións 444 00:32:27,150 --> 00:32:29,150 para algunhas defensas máis comúns. 445 00:32:29,150 --> 00:32:31,170 En anticipación a iso, o que Nate e eu teño feito nos bastidores hai 446 00:32:31,170 --> 00:32:33,950 é saber que hai tantos portátiles nesta sala, 447 00:32:33,950 --> 00:32:37,020 estamos cheirando todo o tráfico sen fíos pasar por este espazo para os últimos 20 minutos 448 00:32:37,020 --> 00:32:39,260 durante a charla de Rob, entón imos facer unha pausa 2 minutos aquí. 449 00:32:39,260 --> 00:32:41,740 Nate vai montar, e despois imos falar sobre todas as cousas 450 00:32:41,740 --> 00:32:46,380 que se podería atopar. (Risas) 451 00:32:46,380 --> 00:32:51,990 >> Entón, eu podo ter esaxerado un pouco só por unha cuestión de drama, 452 00:32:51,990 --> 00:32:55,990 pero podería ser cheirando todo o tráfico sen fío, porque de feito, 453 00:32:55,990 --> 00:32:57,240 é así tan fácil. 454 00:32:57,240 --> 00:32:59,790 Pero tamén existen formas que pode protexer contra iso, e así, con que, 455 00:32:59,790 --> 00:33:03,160 Eu darlle Nate Hardison. >> [Nate] Sweet. 456 00:33:03,160 --> 00:33:06,300 (Aplausos) 457 00:33:06,300 --> 00:33:08,650 >> [Nate] Grazas, cara. Eu aprecio o grito para fóra. 458 00:33:08,650 --> 00:33:12,790 Todo ben! É a semana do xogo. Vostedes están animado? 459 00:33:12,790 --> 00:33:16,670 Esperamos que vai ser un gran xogo o sábado. 460 00:33:16,670 --> 00:33:20,220 Eu imaxino que vós neste momento - unha vez que ten unha proba na Mércores 461 00:33:20,220 --> 00:33:24,430 todo sobre o código, e só Sáb través dunha charla marabillosa por Rob 462 00:33:24,430 --> 00:33:25,850 con unha morea de código C nel - 463 00:33:25,850 --> 00:33:28,330 son quizais un pouco canso de código. 464 00:33:28,330 --> 00:33:32,180 Nesta parte, non estamos realmente indo a tocar en calquera código que sexa. 465 00:33:32,180 --> 00:33:36,960 Nós só imos falar sobre unha tecnoloxía que usa todos os días, 466 00:33:36,960 --> 00:33:39,790 moitas veces para moitas, moitas horas ao día, 467 00:33:39,790 --> 00:33:46,220 e imos falar sobre as implicacións sobre a seguridade que existen. 468 00:33:46,220 --> 00:33:48,960 >> Nós falamos moito sobre a seguridade ao longo do semestre, 469 00:33:48,960 --> 00:33:53,030 e nós comezamos cun pouco de cifrado. 470 00:33:53,030 --> 00:33:55,030 [Bdoh lv vwlqng!] 471 00:33:55,030 --> 00:33:57,890 E mentres vostedes están probablemente super-animado para estar pasando notas para o outro 472 00:33:57,890 --> 00:33:59,890 en clase mediante unha cifra de César como esta, 473 00:33:59,890 --> 00:34:03,870 en realidade, hai un pouco máis de diversión para ser tido cando está realmente a falar de seguridade 474 00:34:03,870 --> 00:34:05,870 e este tipo de cousas. 475 00:34:05,870 --> 00:34:09,090 Hoxe, nós estamos indo para cubrir algunhas tecnoloxías 476 00:34:09,090 --> 00:34:13,650 que a xente realmente usar no mundo real para facer todo tipo de cousas 477 00:34:13,650 --> 00:34:18,360 de sniffing paquetes persoas para realmente entrar e 478 00:34:18,360 --> 00:34:20,409 invadir contas bancarias das persoas e todo iso. 479 00:34:20,409 --> 00:34:23,460 Estas son ferramentas lexítimas de que estamos falando 480 00:34:23,460 --> 00:34:26,320 coa excepción de que, finalmente, unha ferramenta. 481 00:34:26,320 --> 00:34:28,889 >> E eu só quero facer un aviso rápido. 482 00:34:28,889 --> 00:34:34,909 Cando falamos sobre isto, nós estamos falando sobre eles para que vostede sabe o que está aí fóra, 483 00:34:34,909 --> 00:34:39,389 e está consciente de como ser seguro cando está fóra de usar o ordenador. 484 00:34:39,389 --> 00:34:44,000 Pero nós definitivamente non quere dicir que ten que usar esas ferramentas 485 00:34:44,000 --> 00:34:48,090 no seu dormitorio ou a súa casa, pois pode correr en lotes de grandes cuestións. 486 00:34:48,090 --> 00:34:52,760 Esta é unha razón, hoxe, que realmente non estaban cheirando seus paquetes. 487 00:34:52,760 --> 00:35:01,300 >> Todo ben. O pasado luns, falamos sobre as cookies, e HTTP e autenticación, 488 00:35:01,300 --> 00:35:05,920 e como Firesheep abrir esta porta grande na súa conta de Facebook, 489 00:35:05,920 --> 00:35:08,670 a súa conta de Hotmail - se alguén aínda usa Hotmail - 490 00:35:08,670 --> 00:35:12,360 e moitas outras contas. 491 00:35:12,360 --> 00:35:16,980 Unha gran cantidade deste material vai construír fóra do que, 492 00:35:16,980 --> 00:35:22,070 Pero, primeiro, quero facer un tour rápido de como a Internet ten evolucionado ao longo do tempo. 493 00:35:22,070 --> 00:35:27,490 Nos anos 90, vostedes poderían lembrar realmente conectar 494 00:35:27,490 --> 00:35:29,880 seus ordenadores con un destes. 495 00:35:29,880 --> 00:35:32,640 Agora nós non facemos iso moito máis. 496 00:35:32,640 --> 00:35:37,230 Realmente que, a fin de conectar un cable Ethernet no meu portátil, 497 00:35:37,230 --> 00:35:41,710 Eu agora teño que usar un destes adaptadores, que é unha especie de loucura. 498 00:35:41,710 --> 00:35:47,580 >> En vez diso, en 1997 tivemos esta tecnoloxía nova e divertida 499 00:35:47,580 --> 00:35:54,960 saíu que é coñecido como IEEE 802.11, polo que este é o estándar de Internet sen fíos 500 00:35:54,960 --> 00:36:00,430 O IEEE é este órgano que dá a todos os tipos de - 501 00:36:00,430 --> 00:36:04,770 publica todo tipo de patróns con relación aos ordenadores. 502 00:36:04,770 --> 00:36:08,780 Os 802 patróns son todos sobre tecnoloxías de Internet. 503 00:36:08,780 --> 00:36:12,690 Entón, 802.3, por exemplo, é o estándar Ethernet, 504 00:36:12,690 --> 00:36:17,120 802.15.1, creo, é o estándar Bluetooth, 505 00:36:17,120 --> 00:36:19,540 e 802,11 é todo sobre Internet sen fíos. 506 00:36:19,540 --> 00:36:24,150 En 1997, este saíu. El non chegou a incorporarse inmediatamente. 507 00:36:24,150 --> 00:36:30,200 Non foi ata 1999 eo modelo 802.11b saíu que quedou moi popular. 508 00:36:30,200 --> 00:36:36,330 >> Como moitos de vostedes lembran cando os ordenadores comezaron a saír e quedando wi-fi sobre eles? 509 00:36:36,330 --> 00:36:38,330 Iso foi legal, ne? 510 00:36:38,330 --> 00:36:41,260 Lembro o meu primeiro portátil na escola, 511 00:36:41,260 --> 00:36:44,250 e tiña unha placa sen fíos nela. 512 00:36:44,250 --> 00:36:49,580 Meu pai me deu e foi dicindo que eu debería usalo para os meus aplicacións da facultade e de todos os que, 513 00:36:49,580 --> 00:36:53,030 e eu non tiña idea de como eu ía buscar este material on-line. 514 00:36:53,030 --> 00:36:54,640 Pero, afortunadamente, eu tiña unha tarxeta sen fíos, de xeito que foi moi legal. 515 00:36:54,640 --> 00:37:04,090 Hoxe en día, tamén vai ver 802.11g, que é un dos outros realmente popular 516 00:37:04,090 --> 00:37:06,090 patróns sen fíos que está aí fóra. 517 00:37:06,090 --> 00:37:08,660 Ambos b e g son bastante desactualizados neste momento. 518 00:37:08,660 --> 00:37:12,580 Alguén sabe cal é a versión maioría das persoas están neste momento 519 00:37:12,580 --> 00:37:15,110 se eles están a mercar novos routers sen fíos e este tipo de cousas? 520 00:37:15,110 --> 00:37:24,290 N. Exactamente. Bingo. E verifícase que o estándar de corrente alterna está saíndo dunha fase de proxecto, 521 00:37:24,290 --> 00:37:28,050 e hai outras versións sobre o camiño. 522 00:37:28,050 --> 00:37:31,190 Con cada un destes patróns que estamos gañando máis ancho de banda, 523 00:37:31,190 --> 00:37:33,900 máis datos a unha velocidade máis rápida. 524 00:37:33,900 --> 00:37:36,260 Esas cousas seguen cambiando moi rapidamente. 525 00:37:36,260 --> 00:37:39,880 Tamén fai que nós temos que mercar máis routers e todas esas cousas divertidas. 526 00:37:39,880 --> 00:37:48,160 >> Imos falar sobre o que realmente é a comunicación sen fíos no seu núcleo. 527 00:37:48,160 --> 00:37:51,790 Con Ethernet e os vellos módems dial-up, 528 00:37:51,790 --> 00:37:55,780 realmente tiña esa cousa que conectado ao seu ordenador, 529 00:37:55,780 --> 00:37:59,820 e entón conectado a un módem de tipo, e entón plug nunha toma de parede. 530 00:37:59,820 --> 00:38:01,820 Tiña esa conexión con fío, non? 531 00:38:01,820 --> 00:38:06,030 O punto enteiro de fío é se librar destas cousas. 532 00:38:06,030 --> 00:38:10,300 Co fin de facer iso, o que temos é esencialmente 533 00:38:10,300 --> 00:38:13,960 unha comunicación de radio, onde o noso router sen fíos - 534 00:38:13,960 --> 00:38:16,230 designado polo noso pequeno icono sen fíos - 535 00:38:16,230 --> 00:38:21,730 está conectado a Internet con esta frecha sólida indicando algún tipo de conexión con fío, 536 00:38:21,730 --> 00:38:24,640 pero cando se conectar ao router sen fíos 537 00:38:24,640 --> 00:38:29,190 está realmente usando case como un Walkie-Talkie entre 538 00:38:29,190 --> 00:38:31,960 o ordenador eo roteador sen fío. 539 00:38:31,960 --> 00:38:35,150 O que é realmente legal sobre iso é que pode moverse. 540 00:38:35,150 --> 00:38:40,900 Pode levar o seu ordenador todo Sanders, vai navegar na web, o que sexa, 541 00:38:40,900 --> 00:38:43,240 como todos coñecemos e amamos, 542 00:38:43,240 --> 00:38:46,030 e non tes que sempre ser conectado a nada. 543 00:38:46,030 --> 00:38:53,880 Para que isto funcione, temos tanto a recepción deste e de transmisión. 544 00:38:53,880 --> 00:38:56,060 É realmente como que Walkie-Talkie. 545 00:38:56,060 --> 00:39:03,800 >> Este router sen fíos - que Sanders está sentado debaixo deste estadio, aquí - 546 00:39:03,800 --> 00:39:06,590 sempre transmitindo e recibindo, transmitindo e recibindo, 547 00:39:06,590 --> 00:39:09,330 e do mesmo xeito, os ordenadores están todos facendo este tipo de cousas, tamén. 548 00:39:09,330 --> 00:39:12,840 Nós simplemente non podemos oín-lo. 549 00:39:12,840 --> 00:39:17,900 A outra cousa que podes facer é que pode ter varios ordenadores 550 00:39:17,900 --> 00:39:22,200 falando ao mesmo router sen fíos. 551 00:39:22,200 --> 00:39:25,680 O máis próximo estea un router - e, de novo, esta é unha comunicación de radio - 552 00:39:25,680 --> 00:39:30,320 canto máis preto está, mellor o sinal, mellor o seu ordenador 'oe' roteador 553 00:39:30,320 --> 00:39:32,460 e pode comunicarse a Internet. 554 00:39:32,460 --> 00:39:39,520 Se vostedes están sempre no seu dormitorio, na súa casa e está a se pregunta por que o seu sinal é malo, 555 00:39:39,520 --> 00:39:42,230 probablemente é porque a). non está moi preto do seu encamiñador ou 556 00:39:42,230 --> 00:39:46,930 b). hai algo entre vostede eo seu roteador como unha parede de cemento ou algo 557 00:39:46,930 --> 00:39:50,720 que non deixa as ondas de radio pasan. 558 00:39:50,720 --> 00:39:57,850 >> Imos falar un pouco sobre o porqué de bandidos como wi-fi. 559 00:39:57,850 --> 00:40:02,980 Bandidos amo wi-fi por algúns motivos. 560 00:40:02,980 --> 00:40:06,670 Aquí está o noso cara desagradável malo alí. 561 00:40:06,670 --> 00:40:10,660 Unha razón pola que este cara malo ama wi-fi 562 00:40:10,660 --> 00:40:18,770 é porque, por defecto, unha morea de routers wireless veñen e cando configure-los, 563 00:40:18,770 --> 00:40:20,950 están sen criptografía. 564 00:40:20,950 --> 00:40:23,970 Este foi un problema, e ten habido casos - 565 00:40:23,970 --> 00:40:28,210 varias instancias, agora - onde vilán mostra-se para a casa de alguén, 566 00:40:28,210 --> 00:40:32,630 enténdese que hai un sen cifrado Wi-Fi para que poidan conectarse. 567 00:40:32,630 --> 00:40:37,350 Eles se conectan a internet wi-fi, e entón comezar a baixar todo tipo de cousas divertidas. 568 00:40:37,350 --> 00:40:40,890 E eles non están baixando Gatinhos, non está baixando crías. 569 00:40:40,890 --> 00:40:44,610 Isto é como o BitTorrent. Esta é a desagradábel do máis desagradable. 570 00:40:44,610 --> 00:40:48,740 Houbo casos en que o FBI aínda envolvido 571 00:40:48,740 --> 00:40:52,390 pensar que a persoa que ten a casa é realmente o 572 00:40:52,390 --> 00:40:56,090 ir alí e baixando cousas que realmente non debería ser. 573 00:40:56,090 --> 00:41:00,730 Tendo unencrypted wi-fi non é sempre algo que quere facer, 574 00:41:00,730 --> 00:41:06,340 só para non ter o FBI vén bater á súa porta. 575 00:41:06,340 --> 00:41:09,910 >> Outra razón pola cal os malos amo wi-fi 576 00:41:09,910 --> 00:41:13,870 é a razón que David falei anteriormente durante o período. 577 00:41:13,870 --> 00:41:17,240 Porque é unha comunicación de radio no seu núcleo, 578 00:41:17,240 --> 00:41:22,460 Se sabe a canle, pode escoitar a emisora ​​de radio. 579 00:41:22,460 --> 00:41:31,870 Por exemplo, se hai un dereito malo alí sentado no medio á dereita a carón do punto de acceso, 580 00:41:31,870 --> 00:41:36,830 ben próximo ao roteador sen fío, o bandido pode escoitar todo o tráfico sen fíos 581 00:41:36,830 --> 00:41:40,240 que a partir de todos estes ordenadores. 582 00:41:40,240 --> 00:41:44,590 En realidade, estes faces - eses poucos afortunados que están aquí na fila de diante - 583 00:41:44,590 --> 00:41:47,610 porque son super-preto de todos estes routers sen fíos 584 00:41:47,610 --> 00:41:49,950 que sentir-se debaixo do escenario, 585 00:41:49,950 --> 00:41:53,780 eles serían capaces de escoitar o tráfico de todos nesta sala enteira 586 00:41:53,780 --> 00:41:59,480 se está conectado a internet wi-fi e comezar a navegar a través destes puntos de acceso. 587 00:41:59,480 --> 00:42:03,740 Non é moi difícil sentir-se nunha boa posición para farejar e descubrir 588 00:42:03,740 --> 00:42:07,030 o que os outros están facendo. 589 00:42:07,030 --> 00:42:10,830 É algo para manter presente, especialmente se non está seguro de onde o punto de acceso e, 590 00:42:10,830 --> 00:42:15,010 e está navegando, digamos, nun Starbucks. 591 00:42:15,010 --> 00:42:17,360 >> Acontece que sniffing e todo iso 592 00:42:17,360 --> 00:42:19,440 non é realmente difícil de facer. 593 00:42:19,440 --> 00:42:25,430 Hai un programa chamado tcpdump que botan todo tipo de tráfico TCP 594 00:42:25,430 --> 00:42:29,910 e pode executa-lo moi sinxelo - así como eu fixen esta mañá. 595 00:42:29,910 --> 00:42:32,810 Aquí está un pouco de un despejo, e aquí está parte do tráfico que estaba benvida 596 00:42:32,810 --> 00:42:34,960 miña rede na actualidade. 597 00:42:34,960 --> 00:42:41,500 Podes ver - se é Vesgo realmente difícil - hai un pouco de Spotify alí. 598 00:42:41,500 --> 00:42:44,050 No cumio do tcpdump - porque este é un tipo de dor de usar - 599 00:42:44,050 --> 00:42:48,860 hai un programa chamado Wireshark que embalaxe todo isto en unha interface gráfica agradable. 600 00:42:48,860 --> 00:42:51,970 Wireshark é super-man, así se pasar a ter clases de rede, 601 00:42:51,970 --> 00:42:56,780 esta é unha ferramenta que vai amar, xa que axuda a dissecar todos os paquetes 602 00:42:56,780 --> 00:42:59,400 que están flotando por aí. 603 00:42:59,400 --> 00:43:01,810 Pero tamén pode ser usado para o mal. 604 00:43:01,810 --> 00:43:05,810 É moi sinxelo, só tes que baixar este programa, arrinca, 605 00:43:05,810 --> 00:43:09,300 iniciar unha captura de rede, para ver todo o que está a suceder - 606 00:43:09,300 --> 00:43:14,130 e filtrar e facer todo tipo de cousas divertidas con el. 607 00:43:14,130 --> 00:43:17,930 >> A outra cousa que podes facer coa comunicación sen fíos 608 00:43:17,930 --> 00:43:25,380 é non só podes escoitar, pero tamén pode aprender a xogar coa rede 609 00:43:25,380 --> 00:43:31,020 e inxectar as súas propias información para controlar a experiencia que outras persoas 610 00:43:31,020 --> 00:43:35,140 na mesma rede sen fíos está comezando. 611 00:43:35,140 --> 00:43:37,140 Imos dar un ollo niso. 612 00:43:37,140 --> 00:43:40,700 Aquí está o Firesheep - que nós coñecemos e amamos desde a semana pasada - 613 00:43:40,700 --> 00:43:43,590 que é o que a tecnoloxía de espionaxe. 614 00:43:43,590 --> 00:43:50,360 Se, por exemplo, queriamos activamente o noso go bad guy e xogar con 615 00:43:50,360 --> 00:43:52,690 un deses ordenadores, 616 00:43:52,690 --> 00:43:58,380 Neste escenario, temos un ordenador que intenta surf para harvard.edu. 617 00:43:58,380 --> 00:44:04,690 O que pasa é, o primeiro ordenador envía unha mensaxe ao roteador sen fío e di: 618 00:44:04,690 --> 00:44:07,920 hey, eu quero ir www.harvard.edu visita. 619 00:44:07,920 --> 00:44:10,610 Digamos, por algunha razón, eles están tentando obter información sobre o xogo deste fin de semana. 620 00:44:10,610 --> 00:44:14,940 Cara malo, xa que el está sentado no medio, 621 00:44:14,940 --> 00:44:18,730 ben próximo ao punto de acceso, pode ver que a comunicación vén do ordenador 622 00:44:18,730 --> 00:44:26,170 no router, e el sabe, "Aha! Alguén vai harvard.edu". (Maldosamente risas) 623 00:44:26,170 --> 00:44:33,870 Non vai ser esta latencia mentres a comunicación vai do router 624 00:44:33,870 --> 00:44:37,780 a Internet para ir atopar a páxina na harvard.edu - 625 00:44:37,780 --> 00:44:42,020 así como vostedes todos saben despois de facer o seu PHP serie de exercicios - 626 00:44:42,020 --> 00:44:45,680 e así o bandido ten un pouco de tempo, un pouco de ventá, 627 00:44:45,680 --> 00:44:49,410 en que pode responder con algunhas cousas. 628 00:44:49,410 --> 00:44:53,660 >> Imos dicir que este cara malo, por suposto, é unha Yaley. 629 00:44:53,660 --> 00:44:59,990 El responde con harvardsucks.org. Boo! 630 00:44:59,990 --> 00:45:02,300 Cara moi, moi malo! Yaley malo! 631 00:45:02,300 --> 00:45:06,020 Ou, peor aínda, pode responder con iso. [Http :/ / youtu.be/ZSBq8geuJk0]. 632 00:45:06,020 --> 00:45:09,530 Eu vou deixar vostedes descubrir o que é. 633 00:45:09,530 --> 00:45:14,840 Esta é realmente unha tecnoloxía chamada Airpwn! que foi estreada en 634 00:45:14,840 --> 00:45:18,950 unha das conferencias de seguridade de hai uns anos. 635 00:45:18,950 --> 00:45:25,190 Con Airpwn! vostede é realmente capaz de inxectar o tráfico de volta para a rede. 636 00:45:25,190 --> 00:45:30,060 Os ordenadores que estaban tentando ir a Internet e tentar chegar a 637 00:45:30,060 --> 00:45:33,090 Google.com, para Facebook.com, para harvard.edu 638 00:45:33,090 --> 00:45:39,190 ver a resposta malicioso entrar e asumir inmediatamente, ok, 639 00:45:39,190 --> 00:45:43,550 esa é a resposta que eu estaba esperando e acaban recibindo o contido 640 00:45:43,550 --> 00:45:48,860 harvardsucks.org ou nameyourfavoriteshocksite.com, 641 00:45:48,860 --> 00:45:55,270 e podes ver como rapidamente as cousas van peor. 642 00:45:55,270 --> 00:46:00,190 >> Todos estes tipos de cousas non se pode facer 643 00:46:00,190 --> 00:46:05,870 con estas conexións con fíos, pois con unha conexión con fío 644 00:46:05,870 --> 00:46:08,710 é difícil de espiar para o tráfico. 645 00:46:08,710 --> 00:46:13,020 Se eu son un cara mal e nunha extremidade é o seu ordenador 646 00:46:13,020 --> 00:46:14,460 e do outro lado é o seu router - o seu módem - 647 00:46:14,460 --> 00:46:20,180 a única forma que eu poida poñerse en entre esa conexión é realmente emendar o meu ordenador 648 00:46:20,180 --> 00:46:22,180 en algún lugar no medio 649 00:46:22,180 --> 00:46:26,820 ou facer outra cousa co router, participada algo así. 650 00:46:26,820 --> 00:46:33,360 Pero con wireless, que pode ser tan sinxelo coma sentada na fileira da fronte dunha aula, 651 00:46:33,360 --> 00:46:38,200 e pode facer todo tipo de cousas desagradables para as persoas na parte de atrás. 652 00:46:38,200 --> 00:46:41,570 >> Imos falar sobre como pode defender algunhas destas cousas. 653 00:46:41,570 --> 00:46:46,860 As persoas que desenvolveron os patróns sen fíos - a - 802,11 654 00:46:46,860 --> 00:46:50,820 eles non son persoas burras por calquera extensión da imaxinación. 655 00:46:50,820 --> 00:46:56,110 Esta é unha tecnoloxía legal e cando estreou en 1999, 656 00:46:56,110 --> 00:47:00,780 saíron con este estándar chamado WEP. 657 00:47:00,780 --> 00:47:03,360 Podes ver aquí cando intenta e participar nunha rede sen fíos, 658 00:47:03,360 --> 00:47:07,450 ten todo tipo de opcións de seguridade diferentes. 659 00:47:07,450 --> 00:47:11,800 Isto é un tipo de dor, porque hai seis todos xuntos 660 00:47:11,800 --> 00:47:14,790 e nunca realmente ten sentido que unha participar. 661 00:47:14,790 --> 00:47:19,190 Este 1 arriba é o primeiro que veu con chama WEP. 662 00:47:19,190 --> 00:47:27,960 WEP significa Wired Equivalent Privacy, creo eu, 663 00:47:27,960 --> 00:47:31,730 Non Wireless Encryption Protocol que é un equívoco común. 664 00:47:31,730 --> 00:47:36,170 Porque intenta darlle o equivalente a privacidade e protección de seguridade 665 00:47:36,170 --> 00:47:40,590 equivalente ao dunha rede con fío 666 00:47:40,590 --> 00:47:46,710 Con WEP que acaba pasando é, 667 00:47:46,710 --> 00:47:52,300 ten unha contrasinal simple e pouco que escribe e que serve para cifrar 668 00:47:52,300 --> 00:47:56,210 todas as súas comunicacións entre o seu ordenador eo roteador. 669 00:47:56,210 --> 00:47:58,210 >> Cal é o problema con WEP aínda? 670 00:47:58,210 --> 00:48:01,470 O contrasinal con WEP é moi curto, 671 00:48:01,470 --> 00:48:04,900 e tamén todo o mundo usa a mesma contrasinal exacta, 672 00:48:04,900 --> 00:48:07,610  e por iso é moi doado de descifrar. 673 00:48:07,610 --> 00:48:10,580 Entón, moi rapidamente as persoas descubriron que o WEP era un problema, 674 00:48:10,580 --> 00:48:16,100 ea única razón que velo amosar-se aínda sobre este cara é pouco - 675 00:48:16,100 --> 00:48:18,890 existen algúns sistemas máis antigos que usan WEP - 676 00:48:18,890 --> 00:48:25,710 o que debería estar a buscar son o WPA e WPA2 mesmo patróns 677 00:48:25,710 --> 00:48:29,130 que foron liberados máis tarde. 678 00:48:29,130 --> 00:48:35,040 Estes sistemas son un ir moito mellor en protección en Internet sen fíos. 679 00:48:35,040 --> 00:48:41,090 Dito isto, eles aínda teñen algún Hackability. 680 00:48:41,090 --> 00:48:44,010 Existen ferramentas aí fóra, que pode ir facelo. 681 00:48:44,010 --> 00:48:47,490 Unha cousa en particular que pode ser desagradable é que 682 00:48:47,490 --> 00:48:55,370 se conectar e rexistrado para un router sen fíos e usa algún tipo de 683 00:48:55,370 --> 00:49:00,940 comunicación cifrada, verifícase que un hacker pode facilmente enviar un único paquete 684 00:49:00,940 --> 00:49:03,990 Para desactivar vostede do router, 685 00:49:03,990 --> 00:49:07,220 e unha vez que xa desconectado, ten poden entón escoitar - 686 00:49:07,220 --> 00:49:11,800 poden cheirar os paquetes como tentar restablecer a conexión co router. 687 00:49:11,800 --> 00:49:16,800 E con esa información que pode, entón, entrar e descifrar o resto da súa comunicación. 688 00:49:16,800 --> 00:49:24,580 Este non é de forma algunha calquera tipo de seguro ademais de toda imaxinación. 689 00:49:24,580 --> 00:49:30,060 >> A outra cousa que podes facer cando se está a creación de redes sen fíos 690 00:49:30,060 --> 00:49:35,460 ou se está xuntando a eles é - vostede entender que aquí cando eu estou xuntando esta rede, 691 00:49:35,460 --> 00:49:37,640 el pide para o nome da miña rede. 692 00:49:37,640 --> 00:49:41,060 Isto tamén é coñecido como o SSID. 693 00:49:41,060 --> 00:49:48,610 E mira aquí que na dereita eu teño unha caixa que me amosa os SSIDs dispoñibles. 694 00:49:48,610 --> 00:49:52,690 Hai unha Universidade de Harvard, unha CS50 e CS50 unha rede persoal. 695 00:49:52,690 --> 00:49:59,180 Agora, como moitos de vostedes sabían que había unha rede de Persoal CS50 redor? 696 00:49:59,180 --> 00:50:01,910 Algúns de vostedes. Non todos vostedes. 697 00:50:01,910 --> 00:50:08,800 O problema con iso, está claro, é que se non poñer isto na nosa lista de SSIDs, 698 00:50:08,800 --> 00:50:10,930 ninguén sabería sobre iso máis probable. 699 00:50:10,930 --> 00:50:16,090 Espero. A menos que vostedes están tentando crack na nosa sen fíos. 700 00:50:16,090 --> 00:50:18,700 Pero iso é algo que pode facer que é realmente importante cando está configurando 701 00:50:18,700 --> 00:50:20,280 un router na casa. 702 00:50:20,280 --> 00:50:22,820 Iso probablemente non vai ocorrer durante uns anos para unha morea de ti, 703 00:50:22,820 --> 00:50:29,010 Pero teña presente que o mantemento desta SSID de alí e tampouco nomealo 704 00:50:29,010 --> 00:50:34,630 algo super común axudará mantelo máis seguro a longo prazo. 705 00:50:34,630 --> 00:50:38,070 >> Unha parella finais de cousas que podes facer. Un é HTTPS. 706 00:50:38,070 --> 00:50:44,760 Se vostede está en un Starbucks, se está nunha zona wi-fi público 707 00:50:44,760 --> 00:50:52,620 e decide facer para acceder a súa conta bancaria, acceder ao seu Gmail, o seu Facebook, 708 00:50:52,620 --> 00:50:56,140 asegúrese de que estas conexións están indo por HTTPS. 709 00:50:56,140 --> 00:50:59,800 É unha capa adicional de seguridade, unha capa adicional de cifrado. 710 00:50:59,800 --> 00:51:01,520 A única cousa a ter presente aquí é, 711 00:51:01,520 --> 00:51:04,740 cantos de vós xa clicaram en que a pantalla grande, vermella, que di: 712 00:51:04,740 --> 00:51:07,480 "Este sitio pode ser malo." 713 00:51:07,480 --> 00:51:09,710 Sei que teño. 714 00:51:09,710 --> 00:51:13,090 É, probablemente, cando está navegando todo para ir ver Patria ou algo así, non? 715 00:51:13,090 --> 00:51:19,900 Si (Risas) É. Alí vai. Nós sabemos quen está a asistir Patria. 716 00:51:19,900 --> 00:51:24,540 Que a pantalla grande, vermello alí 717 00:51:24,540 --> 00:51:28,600 moitas veces indica que algo funky está a suceder. 718 00:51:28,600 --> 00:51:32,530 Ás veces é só o sitio en si é certo, 719 00:51:32,530 --> 00:51:35,520 pero que aínda pantalla grande, vermella xorde cando a xente está intentando 720 00:51:35,520 --> 00:51:37,520 montaxe de rede ataca en ti. 721 00:51:37,520 --> 00:51:40,220 Entón, se ves que a pantalla grande, vermello chegar nun Starbucks, 722 00:51:40,220 --> 00:51:42,440 non prema por el. 723 00:51:42,440 --> 00:51:45,350 Malas novas. Bad News Bears. 724 00:51:45,350 --> 00:51:51,490 >> A última cousa que vostede pode ver 725 00:51:51,490 --> 00:51:54,120 é algún tipo de VPN. 726 00:51:54,120 --> 00:52:00,280 Este VPN está dispoñible a través de Harvard - vpn.fas.harvard.edu - 727 00:52:00,280 --> 00:52:03,260 eo que isto significa que, en realidade, establece unha conexión segura 728 00:52:03,260 --> 00:52:06,460 entre vostede e Harvard, funis de tráfico do seu medio-lo, 729 00:52:06,460 --> 00:52:12,160 e de que xeito se está sentado en un lugar como a Starbucks 730 00:52:12,160 --> 00:52:19,030 pode conectarse a Harvard, conseguir que o tráfico seguro, e despois buscar en Harvard. 731 00:52:19,030 --> 00:52:21,950 De novo, non é infalible. As persoas poden estar no medio. 732 00:52:21,950 --> 00:52:25,850 Poden comezar a rompe-lo, pero iso é moito máis seguro que confían na seguridade 733 00:52:25,850 --> 00:52:28,620 do só wi-fi. 734 00:52:28,620 --> 00:52:32,570 >> Todo ben. En suma, 735 00:52:32,570 --> 00:52:34,580 cando está a creación de redes sen fíos, 736 00:52:34,580 --> 00:52:37,250 cando está indo a usar sen fíos en público - 737 00:52:37,250 --> 00:52:43,430 se é un Starbucks, se é Five Guys, se é b.good, 738 00:52:43,430 --> 00:52:46,440 algo así - onde queira que eles teñen wi-fi - 739 00:52:46,440 --> 00:52:48,440 ser consciente dos seus arredores. 740 00:52:48,440 --> 00:52:50,440 Ser consciente de que as persoas poden facer. 741 00:52:50,440 --> 00:52:53,890 E ser seguro. Non acceder á túa conta bancaria. 742 00:52:53,890 --> 00:52:58,740 Podería ser un violento despertar se alguén aparece con contrasinal máis tarde. 743 00:52:58,740 --> 00:53:05,480 Con iso, vaia vermello! E eu vou virar as cousas de volta para David por unha palabra final. 744 00:53:05,480 --> 00:53:11,270 (Aplausos) 745 00:53:11,270 --> 00:53:14,360 >> [David] Eu penso que eu ía compartir unha cousa coa experiencia persoal. 746 00:53:14,360 --> 00:53:19,940 Unha ferramenta que pode gusta de xogar con - aínda que Apple practicamente erradicada esta cuestión 747 00:53:19,940 --> 00:53:22,710 Se xa actualizou o seu software xa que - 748 00:53:22,710 --> 00:53:26,670 pero para este fin de que realmente non ser capaz de confiar en software que usamos, 749 00:53:26,670 --> 00:53:33,270 e puntos de Nate, sendo capaz de farejar un pouco do que as outras persoas están facendo 750 00:53:33,270 --> 00:53:37,010 alí fóra - este era unha peza de software que saíu preto de un ano atrás-e-un-metade agora. 751 00:53:37,010 --> 00:53:39,010 [IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] 752 00:53:39,010 --> 00:53:41,010 Por algún tempo, o iTunes - antes iCloud, cando estaba sincronizar os seus iPods ou iPhones ou os seus 753 00:53:41,010 --> 00:53:45,570 ou dos seus iPads con iTunes - no interese de copias de seguridade, 754 00:53:45,570 --> 00:53:48,340 o que o seu iPhone e estes outros dispositivos veñen facendo hai tempo e 755 00:53:48,340 --> 00:53:50,340 facendo uso de datos de GPS. 756 00:53:50,340 --> 00:53:52,710 >> Todos saben, quizais, que os seus iPhones e Androids e Windows Mobile 757 00:53:52,710 --> 00:53:55,410 e como nos días de hoxe pode seguir onde está no interese de amosar-lle mapas 758 00:53:55,410 --> 00:53:59,440 e similares - ben o que Apple e estas empresas fan é 759 00:53:59,440 --> 00:54:02,650 normalmente seguir case todos os lugares que realmente foi do interese de 760 00:54:02,650 --> 00:54:05,380 mellora da calidade de servizo. 761 00:54:05,380 --> 00:54:07,170 Un, pode recibir máis publicidade segmentada e similares, 762 00:54:07,170 --> 00:54:10,740 pero dous, eles tamén poden descubrir onde hai hotspots sen fíos do mundo, 763 00:54:10,740 --> 00:54:14,780 e isto pode axudar con xeo-localización - unha especie de triangulación da posición das persoas. 764 00:54:14,780 --> 00:54:18,520 >> Para reducir a historia, todos nós tiñamos andado antenas para unha certa cantidade de tempo. 765 00:54:18,520 --> 00:54:22,180 Desafortunadamente, a Apple tomou a decisión de proxecto - ou a falta dela - 766 00:54:22,180 --> 00:54:26,590 para non cifrar esta información cando estaba sendo backup para o iTunes. 767 00:54:26,590 --> 00:54:30,330 E o que o investigador de seguridade descubriu foi que este foi só un gran arquivo XML - 768 00:54:30,330 --> 00:54:33,810 un arquivo de texto enorme - sentado en software persoas iTunes, 769 00:54:33,810 --> 00:54:35,400 e se fose só un pouco curioso, 770 00:54:35,400 --> 00:54:38,990 podería ir picando en torno á historia do seu cónxuxe, a historia da súa compañeira de cuarto, 771 00:54:38,990 --> 00:54:41,050 a historia do seu irmán e similares, 772 00:54:41,050 --> 00:54:44,590 e grazas a un software libre, pode trazar todas esas coordenadas GPS - 773 00:54:44,590 --> 00:54:46,590 latitude e lonxitude. 774 00:54:46,590 --> 00:54:48,590 >> Entón, realmente fixen iso co meu propio teléfono. 775 00:54:48,590 --> 00:54:51,210 Liguei o meu teléfono, e con certeza, a miña versión de iTunes non foi codificado na época, 776 00:54:51,210 --> 00:54:53,900 eo que eu era capaz de ver eran os meus propios patróns. 777 00:54:53,900 --> 00:54:56,970 Aquí está os Estados Unidos e cada un deses círculos azuis representa 778 00:54:56,970 --> 00:55:01,670 onde pasou de eu ter sido ao longo destes meses anteriores de ter este teléfono particular. 779 00:55:01,670 --> 00:55:04,940  Eu gasto moito tempo, por suposto, no Nordeste, un pouco de tempo en California, 780 00:55:04,940 --> 00:55:08,690 unha viaxe de curta duración para o Texas, e se entón ampliar ese - 781 00:55:08,690 --> 00:55:11,120 este é todo tipo de multa e interesante, pero eu sabía que iso. 782 00:55:11,120 --> 00:55:13,890 A maioría dos meus amigos sabía, pero se mergullar no máis profundo, 783 00:55:13,890 --> 00:55:17,090 ver onde eu pasar a maior parte do meu tempo no Nordeste. 784 00:55:17,090 --> 00:55:20,330 Se bloquear nalgunhas cidades de aspecto familiar - 785 00:55:20,330 --> 00:55:24,670 este gran, mancha de tinta azul é esencialmente centrada sobre Boston, 786 00:55:24,670 --> 00:55:29,510 e entón eu gastar un pouco de tempo nos suburbios que saen de Boston. 787 00:55:29,510 --> 00:55:32,780 Pero eu tamén estaba facendo un pouco de consultar este ano. 788 00:55:32,780 --> 00:55:36,090 E este ano é a costa leste, e realmente pode verme 789 00:55:36,090 --> 00:55:41,920 e meu iPhone no meu peto viaxar cara atrás e cara adiante entre Boston e Nova York 790 00:55:41,920 --> 00:55:47,510 e Filadelfia aínda máis para abaixo, así como gastar un pouco de tempo de vacacións 791 00:55:47,510 --> 00:55:50,340 no Cabo, que é o brazo pouco alí fora. 792 00:55:50,340 --> 00:55:53,030 Así, cada un destes puntos representa algún lugar que eu fora, 793 00:55:53,030 --> 00:55:56,970 e completamente descoñecido para min, toda esa historia estaba alí, sentado 794 00:55:56,970 --> 00:55:58,410 no meu ordenador de escritorio. 795 00:55:58,410 --> 00:56:00,470 Se diminuír o zoom - esta, en realidade, foi un pouco preocupante. 796 00:56:00,470 --> 00:56:04,190 Eu non tiña ningunha lembranza de nunca ser, en Pensilvania ese ano. 797 00:56:04,190 --> 00:56:07,840 Pero a pesar de un pouco máis sobre iso e eu descubrir, oh, era en realidade a viaxe 798 00:56:07,840 --> 00:56:11,160 e con certeza, o meu teléfono tiña me pegou. 799 00:56:11,160 --> 00:56:14,180 >> Apple xa codificado esta información, 800 00:56:14,180 --> 00:56:17,380 pero iso tamén é só proba de canta información está recollida sobre nós, 801 00:56:17,380 --> 00:56:20,850 e como é doado - para mellor ou para peor - é aceptable. 802 00:56:20,850 --> 00:56:23,340 Un dos take-aways espero falar de Rob, falar de Nate 803 00:56:23,340 --> 00:56:27,370 e visuais pequenas como esta hoxe é só para ser todo o máis consciente deste 804 00:56:27,370 --> 00:56:31,160 de xeito que, aínda que - como o punto de Rob - unha especie de nós estamos ferrados, non? 805 00:56:31,160 --> 00:56:33,920 Non hai moito o que podemos facer cando se trata de algunhas destas ameazas, 806 00:56:33,920 --> 00:56:37,130 pero ao final do día, temos que confiar en algo ou alguén 807 00:56:37,130 --> 00:56:38,510 se queremos realmente usar esas tecnoloxías. 808 00:56:38,510 --> 00:56:43,150 Polo menos podemos tomar decisións e decisións informadas calculados ou non 809 00:56:43,150 --> 00:56:46,390 debemos realmente estar comprobando esta conta especialmente sensible 810 00:56:46,390 --> 00:56:49,330 ou realmente debe ser o envío de que un pouco sospeitoso mensaxe instantánea 811 00:56:49,330 --> 00:56:52,180  nun ambiente Wi-Fi coma este. 812 00:56:52,180 --> 00:56:54,990 >> Entón, o que dixo, só unha permanece quiz, unha charla permanece. 813 00:56:54,990 --> 00:56:57,740 Vemo-nos o mércores despois luns. 814 00:56:57,740 --> 00:57:02,100 (Aplausos e exclamacións) 815 00:57:02,100 --> 00:57:06,100 [CS50TV]