1 00:00:00,000 --> 00:00:02,750 [Powered by Google Translate] [Setmana 10] 2 00:00:02,750 --> 00:00:04,750 [David J. Malan] [Harvard University] 3 00:00:04,750 --> 00:00:07,000 [Aquesta és CS50.] [CS50.TV] 4 00:00:08,520 --> 00:00:13,240 >> Molt bé! Això és CS50 però no per molt temps. 5 00:00:13,240 --> 00:00:14,740 Aquest és el començament de la setmana 10. 6 00:00:14,740 --> 00:00:18,780 Dimecres tenim el nostre concurs, i després el dilluns tenim un pastís de celebració 7 00:00:18,780 --> 00:00:22,030 com es tanca el cercle tot el camí de tornada des de la setmana zero. 8 00:00:22,030 --> 00:00:25,200 Avui en dia, parlem d'un dels meus temes preferits, la veritat sigui dita - 9 00:00:25,200 --> 00:00:29,000 el de la seguretat i la privacitat i les implicacions de tot el maquinari i programari 10 00:00:29,000 --> 00:00:31,000 que tots fem servir avui en dia. 11 00:00:31,000 --> 00:00:33,300 Per ser honest, hi ha una gran quantitat d'amenaces per aquí 12 00:00:33,300 --> 00:00:35,430 que si realment no han detingut a pensar-hi, 13 00:00:35,430 --> 00:00:36,920 en realitat són bastant descoratjador. 14 00:00:36,920 --> 00:00:40,070 El cas en qüestió - si algun de vostès alguna vegada has descarregat un programari 15 00:00:40,070 --> 00:00:42,660 fora d'Internet i instal · lat a l'ordinador, 16 00:00:42,660 --> 00:00:45,220 que ha participat en un important grau de confiança, no? 17 00:00:45,220 --> 00:00:50,220 No hi ha res haver impedit Skype, o Chrome, o qualsevol peça de programari 18 00:00:50,220 --> 00:00:54,770 que ha instal · lat a l'ordinador, des esborrar tots els arxius en el disc dur; 19 00:00:54,770 --> 00:00:58,260 de pujar tots els arxius en el seu disc dur al servidor una mica de noi dolent; 20 00:00:58,260 --> 00:01:01,650 de la lectura de tots els seus correus electrònics, a partir d'interceptar tots els missatges instantanis. 21 00:01:01,650 --> 00:01:05,040 Perquè la realitat és avui en dia amb els sistemes operatius més moderns 22 00:01:05,040 --> 00:01:10,040 en realitat no hi ha molt d'un mur entre els programes de programari que s'instal · len, 23 00:01:10,040 --> 00:01:14,220 i tu i jo som més o menys només una mica de creuar els dits i tenint fe en 24 00:01:14,220 --> 00:01:17,750 que aquesta aplicació es descarrega de forma gratuïta, o aquesta cosa que és 99 centaus de dòlar, 25 00:01:17,750 --> 00:01:20,140 en realitat és completament benigne. 26 00:01:20,140 --> 00:01:23,090 Però com hem vist a través de C, i ara PHP i JavaScript, 27 00:01:23,090 --> 00:01:25,420 amb aquesta capacitat d'expressar-nos mitjançant programació, 28 00:01:25,420 --> 00:01:30,300 vostè pot fer gairebé qualsevol cosa que vulguis amb un programa que un usuari mateix o ella mateixa podia fer. 29 00:01:30,300 --> 00:01:32,390 >> Així, avui ens centrem en el tema - 30 00:01:32,390 --> 00:01:35,360 no només algunes amenaces, però també defenses. 31 00:01:35,360 --> 00:01:37,540 De fet, en el món de la seguretat en general, 32 00:01:37,540 --> 00:01:39,040 hi ha una espècie d'aquest joc del gat i el ratolí, 33 00:01:39,040 --> 00:01:41,990 i m'atreveixo a dir als nois dolents tenen gairebé sempre un avantatge. 34 00:01:41,990 --> 00:01:45,880 Quan es tracta de prendre avantatge de maquinari i programari en els ordinadors personals, 35 00:01:45,880 --> 00:01:51,250 hem de donar-nos compte que un noi dolent, simplement ha de trobar un simple error - 36 00:01:51,250 --> 00:01:56,150 una explotació, un error - en una peça de programari que hem escrit o estan en execució 37 00:01:56,150 --> 00:01:58,280 perquè ell o ella per prendre el control del nostre sistema. 38 00:01:58,280 --> 00:02:02,870 Per contra, nosaltres - els bons - que apedaçar i corregir tots aquests errors 39 00:02:02,870 --> 00:02:04,900 i evitar totes aquestes debilitats. 40 00:02:04,900 --> 00:02:07,870 I així, m'atreveixo a dir que, en general, els nois dolents tenen l'avantatge. 41 00:02:07,870 --> 00:02:10,840 Què classes de classes com aquesta i posteriors són realment 42 00:02:10,840 --> 00:02:14,830 no se li ensenya sobre com lliurar les batalles que aquests nois dolents fan, 43 00:02:14,830 --> 00:02:18,220 però són sobre com protegir-se a si mateix o almenys com fer una decisió calculada 44 00:02:18,220 --> 00:02:22,970 això sí, sé que aquest tros de programari realment podia llegir cada un dels meus correus electrònics, 45 00:02:22,970 --> 00:02:27,040 però estic d'acord amb això pel valor que em porta a l'altra. 46 00:02:27,040 --> 00:02:31,060 >> Estic molt content d'estar units per dues de les persones més intel · ligents que conec - 47 00:02:31,060 --> 00:02:33,060 Rob Bowden i Hardison Nate. 48 00:02:33,060 --> 00:02:36,850 Rob està a punt de portar-nos per un recorregut a través dels nivells més baixos de les etiquetes de seguretat - 49 00:02:36,850 --> 00:02:42,470 la del compilador que, fins ara, tots hem arribat a estimar i confiar. Rob Bowden. 50 00:02:42,470 --> 00:02:47,790 [Aplaudiment] 51 00:02:47,790 --> 00:02:50,280 >> [Rob] D'acord. David ha pres gairebé tota la meva Spiel 52 00:02:50,280 --> 00:02:52,320 que m'anava a presentar amb, però - 53 00:02:52,320 --> 00:02:58,070 Fa diverses setmanes, vostè va veure l'exemple d'un atac de desbordament de la memòria intermèdia 54 00:02:58,070 --> 00:03:01,900 que és un exemple d'un pirata informàtic de hacking en alguna peça de programari 55 00:03:01,900 --> 00:03:06,060 que no se suposa que estan piratejant. 56 00:03:06,060 --> 00:03:09,690 L'altre costat d'aquest 57 00:03:09,690 --> 00:03:14,470 és de vegades has programari maliciós que és en si i per si mateix. 58 00:03:14,470 --> 00:03:17,070 No necessita ni tan sols ser hacker. 59 00:03:17,070 --> 00:03:20,670 La persona que va escriure el programari vol hackejar. 60 00:03:20,670 --> 00:03:22,190 >> Anem a entrar de ple en el codi, 61 00:03:22,190 --> 00:03:28,560 fer una ullada a "login.c". 62 00:03:28,560 --> 00:03:33,390 Aquí, un programa tonto que valida un nom d'usuari i una contrasenya. 63 00:03:33,390 --> 00:03:39,420 Aquí definitivament ha de ser sentir-se còmode amb C de nou per al concurs. 64 00:03:39,420 --> 00:03:43,470 En primer lloc, estem usant aconseguir cordes per descriure el nom d'usuari, 65 00:03:43,470 --> 00:03:46,280 llavors estem usant get cadena per agafar la contrasenya, 66 00:03:46,280 --> 00:03:50,680 i després tenim algunes comprovacions trivials de la justa, és el nom d'usuari "robar"? 67 00:03:50,680 --> 00:03:52,710 I és la contrasenya "thisiscs50"? 68 00:03:52,710 --> 00:03:56,900 O és el nom d'usuari "tommy" i la contrasenya "i <3javascript"? 69 00:03:56,900 --> 00:03:58,980 Si qualsevol d'ells és el cas, 70 00:03:58,980 --> 00:04:01,980  llavors només anem a imprimir el "èxit", i després tenim accés. 71 00:04:01,980 --> 00:04:07,690 En cas contrari, anem a imprimir "no vàlid d'inici de sessió" i després, per descomptat, 72 00:04:07,690 --> 00:04:11,120  ja que la memòria malloc esbós cadenes, hem nom d'usuari i contrasenya gratis. 73 00:04:11,120 --> 00:04:15,560 Aquest és un programa de connexió trivial, 74 00:04:15,560 --> 00:04:18,110 i si ho penses en iniciar-vos al dispositiu, 75 00:04:18,110 --> 00:04:22,350 és bastant semblant - o fins i tot accedir al seu ordinador - 76 00:04:22,350 --> 00:04:24,930 només hi ha algun programa d'inici de sessió que et dóna accés. 77 00:04:24,930 --> 00:04:31,840 A continuació, passem a tenir codificat 'rob', 'thisiscs50', 'Tommy', 'i <3javascript', 78 00:04:31,840 --> 00:04:34,950 però probablement hi ha algun arxiu en algun lloc del seu sistema operatiu 79 00:04:34,950 --> 00:04:38,690 que té una llista de noms d'usuaris que poden iniciar sessió en el sistema 80 00:04:38,690 --> 00:04:41,740 i una llista de les contrasenyes associades amb els noms d'usuari. 81 00:04:41,740 --> 00:04:46,090 En general, les contrasenyes no s'emmagatzemen en text pla només d'aquesta manera. 82 00:04:46,090 --> 00:04:50,360 Hi ha algun tipus de xifrat, però això farà per al nostre exemple. 83 00:04:50,360 --> 00:04:57,000 >> Venint al nostre compilador - 84 00:04:57,020 --> 00:05:00,780 que serà molt senzill. 85 00:05:00,780 --> 00:05:04,800 Hem d'especificar almenys algun arxiu que volem compilar, 86 00:05:04,800 --> 00:05:10,200 I després aquí - aquestes línies 87 00:05:10,200 --> 00:05:12,520 s'acaba de llegir un arxiu. 88 00:05:12,520 --> 00:05:16,080 Es llegeix tot l'arxiu en un memòria intermèdia gran, 89 00:05:16,080 --> 00:05:19,000 i després ens null-acabarà nostre buffer com sempre, 90 00:05:19,000 --> 00:05:21,000 i finalment només compilar l'arxiu. 91 00:05:21,000 --> 00:05:24,090 No anem a veure com s'aplica realment compilació, 92 00:05:24,090 --> 00:05:26,820 sinó com una pista, només crida Clang. 93 00:05:26,820 --> 00:05:32,370 Utilitzarem aquest programa per compilar coses en comptes de Clang. 94 00:05:32,370 --> 00:05:39,260 Un problema de començar és que veiem que volem compilar el nostre compilador, 95 00:05:39,260 --> 00:05:43,620 però si no vas a utilitzar Clang, no sé el que vaig a compilar amb. 96 00:05:43,620 --> 00:05:46,700 Aquest és un problema general conegut com bootstrapping. 97 00:05:46,700 --> 00:05:53,080 Així que, només per aquesta vegada, vaig a utilitzar Clang per recopilar nostre compilador. 98 00:05:53,080 --> 00:05:58,800 >> Si vostè pensa en GCC i Clang - 99 00:05:58,800 --> 00:06:03,200 aquests programes, els compiladors s'actualitzen constantment, 100 00:06:03,200 --> 00:06:10,010 i els compiladors es compilen utilitzant GCC i Clang. 101 00:06:10,010 --> 00:06:14,890 Clang és només una gran C o C + +, 102 00:06:14,890 --> 00:06:19,510 de manera que el compilador s'utilitzi per instal aquest és Clang. 103 00:06:19,510 --> 00:06:26,820 Aquí, ara, només anem a utilitzar el nostre compilador per compilar el compilador, 104 00:06:26,820 --> 00:06:33,830 i fins i tot podem dir - '/ compilador.', 'compiler.c', 'compile.c', '-o compilador. 105 00:06:33,830 --> 00:06:37,250 Vegeu aquest és l'ordre exacte que va córrer davant - 106 00:06:37,250 --> 00:06:41,330 n'hi ha prou amb substituir Clang amb '. / compilador. 107 00:06:41,330 --> 00:06:44,990 I ara tenim un altre compilador, però és exactament el mateix. 108 00:06:44,990 --> 00:06:47,510 Simplement diu Clang. 109 00:06:47,510 --> 00:06:55,050 >> Anem a utilitzar el nostre compilador per compilar el nostre programa d'inici de sessió. 110 00:06:55,050 --> 00:07:03,030 Està bé - ". / Compilador login.c-o login". 111 00:07:03,030 --> 00:07:06,160 Per tant, undefined reference to "GetString". 112 00:07:06,160 --> 00:07:11,250 Tens un "-lcs50". Bé. 113 00:07:11,250 --> 00:07:13,790 Així que ara tinc el programa d'inici de sessió. 114 00:07:13,790 --> 00:07:16,790 Executar - rebre "Si us plau, introdueix el teu nom d'usuari". 115 00:07:16,790 --> 00:07:22,140 Un exemple va ser robar. Introduïu la contrasenya - thisiscs50. 116 00:07:22,140 --> 00:07:24,930 I l'èxit! Tinc accés. 117 00:07:24,930 --> 00:07:28,350 Executar de nou i entrar en algun contrasenya no vàlida - 118 00:07:28,350 --> 00:07:30,350 o nom d'usuari vàlid i la contrasenya - 119 00:07:30,350 --> 00:07:32,860 Login incorrecte. 120 00:07:32,860 --> 00:07:37,740 Bé. Res interessant sobre això fins ara. 121 00:07:37,740 --> 00:07:43,100 Però, anem a fer una ullada en iniciar la sessió de nou - 122 00:07:43,100 --> 00:07:47,850 i això serà un exemple una mica trivial, 123 00:07:47,850 --> 00:07:59,330 però anem a afegir una cosa aquí i dir: else if ((strcmp (nom d'usuari, "hacker") == 0 && 124 00:07:59,330 --> 00:08:14,510 strcmp (password ", LOLihackyou") == 0)) 125 00:08:14,510 --> 00:08:26,280 de manera que ara, printf ("Hacked Ara té accés \ n!."); bé. 126 00:08:26,280 --> 00:08:36,240 Compilació d'això - compilador login.c-o login-lcs50 - 127 00:08:36,240 --> 00:08:40,190 ara corrent identificar - i si faig servir el nom d'usuari hackers 128 00:08:40,190 --> 00:08:44,740 i la contrasenya LOLihackedyou - 129 00:08:44,740 --> 00:08:47,780 Em escriu malament allà abans? 130 00:08:47,780 --> 00:08:52,990 En login.c--ihack - I'Ll es va tallar perquè crec que fer això més tard. 131 00:08:52,990 --> 00:08:56,270 Bé. Tornar 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! Ara té accés. 134 00:09:03,650 --> 00:09:06,580 >> No sembla que gran part de la diferència 135 00:09:06,580 --> 00:09:10,890 perquè és la mateixa comprovació exacta que estava fent per altres noms d'usuari i contrasenyes. 136 00:09:10,890 --> 00:09:17,720 A més, l'important és que si la gent mira això-login.c - 137 00:09:17,720 --> 00:09:24,020 dir, si jo fos a passar això a la meva parella, i obrir aquest arxiu, 138 00:09:24,020 --> 00:09:29,870 i llegeixin això, veuran - està bé, per què tens aquestes línies de codi en aquesta llista? 139 00:09:29,870 --> 00:09:33,320 Això no és, òbviament, una cosa que hauria d'estar en el seu programa. 140 00:09:33,320 --> 00:09:41,590 En alguns programes - com qualsevol programari propietari que no és de codi obert - 141 00:09:41,590 --> 00:09:46,200 vostè pot mai veure aquestes línies de codi. 142 00:09:46,200 --> 00:09:50,440 Una cosa com Skype o alguna cosa així - per tot el que sé, 143 00:09:50,440 --> 00:09:57,600 Skype està en l'equip i no és només un nom d'usuari i contrasenya específica combinació 144 00:09:57,600 --> 00:10:01,580 que es connectarà a Skype en una forma especial. 145 00:10:01,580 --> 00:10:04,230 No sabem d'ell, i la gent no sap sobre ell, 146 00:10:04,230 --> 00:10:09,640 perquè no s'arriba a llegir el codi font per veure que hi ha d'aquest forat. 147 00:10:09,640 --> 00:10:11,800 >> El que anomenem això - 148 00:10:11,800 --> 00:10:16,530 encara que això no és un exemple molt intel · ligent - 149 00:10:16,530 --> 00:10:18,970 això es diu una porta del darrere. 150 00:10:18,970 --> 00:10:22,320 Si vostè pensa en la porta del darrere de casa. 151 00:10:22,320 --> 00:10:26,640 Aquí, si puc validar amb "robar" els noms d'usuari o 'Tommy' 152 00:10:26,640 --> 00:10:28,580 que seria com utilitzar la "porta d'entrada". 153 00:10:28,580 --> 00:10:33,700 Aquesta és la manera que he de iniciar sessió segura. 154 00:10:33,700 --> 00:10:37,630 Però si entro amb aquest nom d'usuari i contrasenya - 155 00:10:37,630 --> 00:10:40,630 després de que l'useu la "porta del darrere". 156 00:10:40,630 --> 00:10:42,810 No era la manera intencional per entrar al programa, 157 00:10:42,810 --> 00:10:45,350 però encara funciona. 158 00:10:45,350 --> 00:10:49,160 I la gent en general, no se suposa que han de saber sobre aquestes portes posteriors. 159 00:10:49,160 --> 00:10:53,050 Millorarem això. 160 00:10:53,050 --> 00:10:55,610 Anem a revertir aquesta al nostre login.c original, 161 00:10:55,610 --> 00:11:05,510 i anem a fer una ullada al nostre nou compilador. Bé. 162 00:11:05,510 --> 00:11:08,460 Tot fins aquí és exactament el mateix. 163 00:11:08,460 --> 00:11:10,460 Estem llegint tot l'arxiu en un memòria intermèdia. 164 00:11:10,460 --> 00:11:14,400 Aquí tot és el mateix. 165 00:11:14,400 --> 00:11:16,180 Ens acaba de compilar l'arxiu. 166 00:11:16,180 --> 00:11:19,770 Però ara tinc aquesta cosa si aquí 167 00:11:19,770 --> 00:11:24,140 diu que, si l'arxiu que se m'acut és que la compilació login.c, 168 00:11:24,140 --> 00:11:27,390 llavors faig alguna cosa especial. 169 00:11:27,390 --> 00:11:29,900 Què és aquesta cosa especial? 170 00:11:29,900 --> 00:11:33,820 Veig aquí un tros de corda anomenat 'hack', 171 00:11:33,820 --> 00:11:35,950 i mirant a aquestes línies de codi - 172 00:11:35,950 --> 00:11:41,990 aquestes són les mateixes línies de codi - Suposo que vaig fer ús "ihack 'i no' ihacked" abans - 173 00:11:41,990 --> 00:11:44,240 mirar aquestes línies de codi, 174 00:11:44,240 --> 00:11:47,880 són les mateixes línies exactes del codi que tenia en login.c abans. 175 00:11:47,880 --> 00:11:51,130 Però ara, en comptes de tenir-los en login.c, 176 00:11:51,130 --> 00:11:54,290 Em posaré en el meu compilador. 177 00:11:54,290 --> 00:12:00,240 >> Aquestes són les línies de codi que vaig a voler per inserir en login.c. 178 00:12:00,240 --> 00:12:06,350 Aquestes línies de codi - la memòria intermèdia que originalment tenia la meva login.c 179 00:12:06,350 --> 00:12:11,080 ja no serà prou gran, perquè ara vull inserir també aquest hack 180 00:12:11,080 --> 00:12:12,940 enmig del meu programa. 181 00:12:12,940 --> 00:12:16,350 Tot això fa és crear un nou buffer que és prou gran - 182 00:12:16,350 --> 00:12:22,020 tant per al fitxer original i les línies addicionals de codi - el hack - que vull inserir allà. 183 00:12:22,020 --> 00:12:24,920 Aquí hi ha alguna cosa per notar - 184 00:12:24,920 --> 00:12:29,200 char * pattern = "/ / negar-los l'accés!" 185 00:12:29,200 --> 00:12:33,760 Si mirem cap enrere en login.c, 186 00:12:33,760 --> 00:12:37,690 veiem aquí aquest comentari - negar-los l'accés! 187 00:12:37,690 --> 00:12:42,360 En login.c, aquest comentari es veu completament innocu, 188 00:12:42,360 --> 00:12:48,270 pel que no es sospita de qualsevol intent maliciós amb només aquest comentari. 189 00:12:48,270 --> 00:12:55,600 Però en el nostre compilador, se'ns mirarà específicament per a aquesta línia de codi, 190 00:12:55,600 --> 00:12:57,600 i després, quan la trobem - 191 00:12:57,600 --> 00:13:03,330 aquestes línies de codi a inserir nostre tallar en aquesta posició. 192 00:13:03,330 --> 00:13:06,910 Per tant, estem interactuant sobre la login.c sencer, 193 00:13:06,910 --> 00:13:12,080 estem inserint aquest truc exactament on diu negar-los l'accés, 194 00:13:12,080 --> 00:13:15,890 i llavors estem compilant - no l'original de login.c 195 00:13:15,890 --> 00:13:20,340 però el login.c nou amb aquest truc inserit a la dreta en "denegar l'accés. 196 00:13:20,340 --> 00:13:29,190 >> Ara vull compilar el meu nou compilador amb aquest truc en qüestió. 197 00:13:29,190 --> 00:13:36,900 Jo no vaig a utilitzar Clang, així que anem a copiar el compilador que fem servir anteriorment 198 00:13:36,900 --> 00:13:48,420 i l'ús que - pel que, compilador compiler.c compile.c-o evil_compiler. 199 00:13:48,420 --> 00:13:50,870 Ara el nostre compilador malament - 200 00:13:50,870 --> 00:13:54,310 si fem servir el compilador per compilar el mal qualsevol altre arxiu, 201 00:13:54,310 --> 00:13:57,980 l'arxiu es compila com hauria. 202 00:13:57,980 --> 00:13:59,980 És completament normal. 203 00:13:59,980 --> 00:14:06,870 Però si utilitzem el nostre compilador per compilar el mal d'identificar - 204 00:14:06,870 --> 00:14:14,920 així, / evil_compiler login.c-o login-lcs50. - 205 00:14:14,920 --> 00:14:21,310 mirant login.c de nou, no és pas aquí. 206 00:14:21,310 --> 00:14:25,770 És la nostra costum "si està bé robar o tommy estem, més ens anem '. 207 00:14:25,770 --> 00:14:31,620 Però quan ens trobem el nostre executable, això funcionarà com de costum. 208 00:14:31,620 --> 00:14:36,640 Execució de nou - hacker, LOLihackyou - 209 00:14:36,640 --> 00:14:39,000 Hacked! Ara té accés. 210 00:14:39,000 --> 00:14:43,560 Amb només mirar login.c, vostè no pensaria que alguna cosa està malament. 211 00:14:43,560 --> 00:14:46,960 No obstant això, el compilador que està sent utilitzat per compilar login.c 212 00:14:46,960 --> 00:14:53,820 està dissenyat específicament per inserir aquest tall en el programa. 213 00:14:53,820 --> 00:14:57,320 Només hem traslladat el nostre problema original. 214 00:14:57,320 --> 00:15:02,880 Originalment, teníem aquestes línies de codi en login.c que si algú més els mirava, 215 00:15:02,880 --> 00:15:05,470 que seria com, per què ets aquí? 216 00:15:05,470 --> 00:15:09,550 Ara bé, si algú passa a buscar al nostre compilador, 217 00:15:09,550 --> 00:15:12,140 es veuran en aquestes línies de codi i dir: 218 00:15:12,140 --> 00:15:15,290 Per què ets aquí? 219 00:15:15,290 --> 00:15:17,210 Per tant, no hem resolt completament el nostre problema. 220 00:15:17,210 --> 00:15:22,510 Però podem utilitzar aquesta idea de nou. 221 00:15:22,510 --> 00:15:26,260 >> Fent un cop d'ull a la nostra tercera versió del compilador, 222 00:15:26,260 --> 00:15:32,500 És la mateixa idea. 223 00:15:32,500 --> 00:15:36,240 Llegim tot l'arxiu en un memòria intermèdia fins aquí, 224 00:15:36,240 --> 00:15:39,660 es compila l'arxiu d'aquí baix, 225 00:15:39,660 --> 00:15:44,220 i tinc algun tipus de hack cadena aquí, 226 00:15:44,220 --> 00:15:47,710 notar l'arxiu que en realitat estic hackejant ara. 227 00:15:47,710 --> 00:15:52,260 Sóc compiler.c pirateria 228 00:15:52,260 --> 00:15:54,590 no login.c. 229 00:15:54,590 --> 00:15:57,780 Però què estic inserint en compiler.c? 230 00:15:57,780 --> 00:16:04,600 Estic inserint el codi que és el codi exacte en el nostre compilador anterior, 231 00:16:04,600 --> 00:16:10,540 que tenia per objecte inserir codi en login.c. 232 00:16:10,540 --> 00:16:13,360 Aquí està la nostra si login.c arxiu strcmp 233 00:16:13,360 --> 00:16:19,370 i després inserir en les nostres coses login.c hack. 234 00:16:19,370 --> 00:16:26,010 Aquest nou compilador es pretén crear un compilador 235 00:16:26,010 --> 00:16:30,390 que està destinat a compilar inici de sessió maliciosament. 236 00:16:30,390 --> 00:16:34,320 Anem a veure per què això ens ajuda. 237 00:16:34,320 --> 00:16:40,630 Tota la resta és el mateix, de manera que funciona exactament com funcionava amb el nostre compilador anterior. 238 00:16:40,630 --> 00:16:45,550 Només estem interactuant sobre el nostre compile.c sencer. 239 00:16:45,550 --> 00:16:48,190 Però ara, en comptes de buscar 'negar-los l'accés " 240 00:16:48,190 --> 00:16:51,490 estem buscant "compilar l'arxiu. ' 241 00:16:51,490 --> 00:16:53,750 Quan es compila l'arxiu? 242 00:16:53,750 --> 00:16:57,210 Quant al nostre compiler.c completament innocent, 243 00:16:57,210 --> 00:17:01,340 està just aquí baix a la part inferior. 244 00:17:01,340 --> 00:17:06,500 Aquest comentari - compilar l'arxiu - de nou, que sembla totalment innocu. 245 00:17:06,500 --> 00:17:11,599 Però, en la nostra versió maliciosa del compilador, 246 00:17:11,599 --> 00:17:16,550 anem a - just abans que el comentari - introdueixi el codi 247 00:17:16,550 --> 00:17:20,690 que té per objecte inserir codi en compilar login.c. 248 00:17:20,690 --> 00:17:25,589 >> Hi ha una gran quantitat de nivells de indirecció aquí. 249 00:17:25,589 --> 00:17:29,760 Anem a executar realment. 250 00:17:29,760 --> 00:17:37,360 Un cop més, anem a copiar el nostre compilador original. 251 00:17:37,360 --> 00:17:48,260 Ara, compili - compilador compiler.c compile.c-o evilest_compiler - 252 00:17:48,260 --> 00:17:52,640 i ara evilest_compiler. 253 00:17:52,640 --> 00:17:59,200 Més malvat compilador - si fem servir això per compilar el compilador, 254 00:17:59,200 --> 00:18:01,550 veurem en realitat. 255 00:18:01,550 --> 00:18:13,230 Evilest_compiler - portant sobre, tot el camí de tornada a la versió 1 del nostre compilador - 256 00:18:13,230 --> 00:18:19,640 versió 1 del nostre compilador que s'acaba de llegir a l'arxiu i compilar. 257 00:18:19,640 --> 00:18:24,780 En aquest cas, sabem que evilest_compiler - quan es compila l'arxiu - 258 00:18:24,780 --> 00:18:29,890 es va a inserir codi aquí abans de compilar l'arxiu, 259 00:18:29,890 --> 00:18:38,510 i que el codi es veurà exactament com el codi de la segona versió del nostre compilador 260 00:18:38,510 --> 00:18:42,240 que va fer això. 261 00:18:42,240 --> 00:18:46,450 Aquest codi, que està destinada a entrar en inici de sessió, 262 00:18:46,450 --> 00:18:56,480 serà inserit en el nostre compilador per compilador més malvat. 263 00:18:56,480 --> 00:19:08,600 Fem servir evilest_compiler per compilar el nostre compilador. 264 00:19:08,600 --> 00:19:15,040 Ara utilitzarem compilador, 265 00:19:15,040 --> 00:19:19,460 tornar a iniciar sessió, 266 00:19:19,460 --> 00:19:25,280 i recorda que això no té absolutament res login.c sospitós en ell. 267 00:19:25,280 --> 00:19:35,250 Però l'ús del nostre compilador per compilar login.c, 268 00:19:35,250 --> 00:19:38,430 rob, thisiscs50, l'èxit. 269 00:19:38,430 --> 00:19:44,350 Hackers Anem a inici de sessió, LOLihackyou, Hacked! Ara té accés. 270 00:19:44,350 --> 00:19:49,710 >> Reconèixer que això era diferent de la versió 2 del nostre compilador. 271 00:19:49,710 --> 00:20:00,500 El compilador que utilitzem - tornarem - còpia d'identificar - 272 00:20:00,500 --> 00:20:01,880 portarem el nostre compilador de tornada aquí. 273 00:20:01,880 --> 00:20:06,360 Extracció de compilador més malvat. 274 00:20:06,360 --> 00:20:08,970 Tot el que queda ara és compilador. 275 00:20:08,970 --> 00:20:10,950 Si ens fixem en compiler.c, 276 00:20:10,950 --> 00:20:16,840 no és pas allà que sembla malintencionat de cap manera. 277 00:20:16,840 --> 00:20:22,390 Si ens fixem en login.c, 278 00:20:22,390 --> 00:20:28,790 no és pas en què es veu aquí maliciós de cap manera. 279 00:20:28,790 --> 00:20:34,600 No obstant això, quan utilitzem el nostre compilador per compilar login.c, 280 00:20:34,600 --> 00:20:38,840 tenim la versió hackeable de login.c. 281 00:20:38,840 --> 00:20:41,850 Quan utilitzem el nostre compilador per compilar una nova versió del compilador, 282 00:20:41,850 --> 00:20:46,620 tenim la versió hackeable del compilador. 283 00:20:46,620 --> 00:20:51,790 Ara bé, si sortim i distribuir el nostre executable del compilador, 284 00:20:51,790 --> 00:20:59,280 i ningú sabrà que no hi ha res maliciós en això. 285 00:20:59,280 --> 00:21:04,680 >> Això és en realitat el que en - no puc recordar l'any - 286 00:21:04,680 --> 00:21:10,350 Ken Thompson, i va guanyar el Premi Turing - 287 00:21:10,350 --> 00:21:15,600 si no està familiaritzat amb el Premi Turing, és gairebé sempre definida com la 288 00:21:15,600 --> 00:21:20,160 Premi Nobel de ciències de la computació, així és com ho vaig a definir. 289 00:21:20,160 --> 00:21:24,100 Ken Thompson va pronunciar un discurs quan va rebre el Premi Turing 290 00:21:24,100 --> 00:21:27,150 anomenat "Reflexions sobre la confiança que confien." 291 00:21:27,150 --> 00:21:30,710 Bàsicament, aquesta va ser la idea del seu discurs. 292 00:21:30,710 --> 00:21:35,050 Excepte que en comptes del nostre compilador, que estava parlant GCC - 293 00:21:35,050 --> 00:21:37,250 només un altre compilador com Clang - 294 00:21:37,250 --> 00:21:45,600 i el que estava dient és, com el nostre login.c, el nostre login.c sembla relativament inútil 295 00:21:45,600 --> 00:21:50,190 però ell estava parlant de l'actual login.c UNIX. 296 00:21:50,190 --> 00:21:53,050 Quan vostè accedeix al teu aparell, 297 00:21:53,050 --> 00:21:56,070 hi ha algun programa d'inici de sessió que s'està executant. 298 00:21:56,070 --> 00:21:58,080 Aquest va ser l'inici de sessió que ell estava parlant. 299 00:21:58,080 --> 00:22:02,420 Això era bàsicament la seva idea. 300 00:22:02,420 --> 00:22:09,080 Va dir que en GCC, que en teoria podria haver plantat un error - 301 00:22:09,080 --> 00:22:12,290 no és un error sinó un codi maliciós - 302 00:22:12,290 --> 00:22:16,860 que en compilar la funció d'inici de sessió - l'arxiu d'inici de sessió - 303 00:22:16,860 --> 00:22:23,700 s'inseriria una porta del darrere perquè pogués anar a absolutament qualsevol sistema UNIX al món 304 00:22:23,700 --> 00:22:27,360 i entrar amb algun nom d'usuari i una contrasenya específics. 305 00:22:27,360 --> 00:22:33,710 Alhora, GCC era més o menys el compilador que tothom serveix per a res. 306 00:22:33,710 --> 00:22:36,460 Si algú li va passar a actualitzar GCC, 307 00:22:36,460 --> 00:22:40,880 llavors seria tornar a compilar GCC usant GCC, 308 00:22:40,880 --> 00:22:44,500 i encara tindria una mala versió de GCC 309 00:22:44,500 --> 00:22:50,140 perquè va ser compilat específicament per reconèixer que va ser recompilar el compilador. 310 00:22:50,140 --> 00:22:57,360 I si mai utilitza GCC per compilar un arxiu login.c, 311 00:22:57,360 --> 00:23:03,550 llavors seria inserir aquesta porta del darrere que podia utilitzar per iniciar sessió en qualsevol ordinador. 312 00:23:03,550 --> 00:23:08,750 >> Això va ser tot teòric, però - aquesta circumstància en particular era teòrica, 313 00:23:08,750 --> 00:23:12,440 però les idees són molt reals. 314 00:23:12,440 --> 00:23:18,250 El 2003, hi va haver un exemple similar en el qual - 315 00:23:18,250 --> 00:23:21,290 anem a fer una ullada a aquesta imatge, 316 00:23:21,290 --> 00:23:25,870 i no té absolutament res a veure en realitat amb ell, però l'error és similar. 317 00:23:25,870 --> 00:23:29,390 Aquest arxiu només defineix una funció anomenada bretxa. 318 00:23:29,390 --> 00:23:31,780 Cal un argument a, b un argument, 319 00:23:31,780 --> 00:23:34,270 i la intenció és fer un món dividit per b. 320 00:23:34,270 --> 00:23:37,230 Però fa algun revisió d'errors, 321 00:23:37,230 --> 00:23:40,070 així que sabem que les coses són rares si b passa a ser igual a zero. 322 00:23:40,070 --> 00:23:44,900 Si b és zero, llavors ens dividim això en 2 casos. 323 00:23:44,900 --> 00:23:46,900 Vostè ja pot veure l'error. 324 00:23:46,900 --> 00:23:51,840 El primer cas - si a és zero, llavors estem fent zero dividit per zero, 325 00:23:51,840 --> 00:23:54,300 i ens diuen que això és indefinit. 326 00:23:54,300 --> 00:23:56,250 El segon cas - si A no és igual a zero, 327 00:23:56,250 --> 00:24:00,580 llavors és una cosa com 1 dividit per zero, i anomenem a aquest infinit. 328 00:24:00,580 --> 00:24:03,730 Una altra cosa que tornar l'usual a dividit per b. 329 00:24:03,730 --> 00:24:06,390 Així que aquí, ens estem quedant els 3 casos, 330 00:24:06,390 --> 00:24:13,740 i que fa és executar divisió - que li crida a ell per a mi - 331 00:24:13,740 --> 00:24:21,330 Així que, fent cas omís de les advertències de Clang - 332 00:24:21,330 --> 00:24:24,500 tal de no anul · lar la funció - pel que sembla jo no compilar això per endavant. 333 00:24:24,500 --> 00:24:26,500 Retorna 0. 334 00:24:26,500 --> 00:24:28,900 Feu dividir - Està bé. 335 00:24:28,900 --> 00:24:32,470 Con / Divisió, veiem 3, Infinity, Infinity. 336 00:24:32,470 --> 00:24:39,150 Zero dividit per zero no hauria d'haver tornat infinit. 337 00:24:39,150 --> 00:24:42,840 I si no s'han adonat de l'error encara - o no ho van veure abans - 338 00:24:42,840 --> 00:24:46,800 veiem que estem fent a = 0. 339 00:24:46,800 --> 00:24:52,610 Probablement ens referíem a == 0. Probablement. 340 00:24:52,610 --> 00:24:58,640 >> No obstant això, això va ser en realitat una cosa que, de nou, el 2003, el nucli de Linux - 341 00:24:58,640 --> 00:25:02,260 pel que el nostre aparell utilitza el nucli Linux - 342 00:25:02,260 --> 00:25:05,550 qualsevol sistema operatiu Linux utilitza el nucli Linux - 343 00:25:05,550 --> 00:25:11,610 de manera que un error molt similar a aquest va aparèixer. 344 00:25:11,610 --> 00:25:15,180 La idea darrere d'aquest error va ser - 345 00:25:15,180 --> 00:25:18,820 de nou, no era només una funció que es diu, i ho va fer una mica de comprovació d'errors. 346 00:25:18,820 --> 00:25:24,300 Hi va haver alguns insums específics que aquesta revisió d'error - 347 00:25:24,300 --> 00:25:30,210 el que hauria d'haver estat així, està bé, no es pot cridar a aquesta funció amb un divisor de 0. 348 00:25:30,210 --> 00:25:35,070 Per tant, vaig a tornar només alguns errors. 349 00:25:35,070 --> 00:25:38,090 Excepte, que no era tan innocent com s'acaba d'establir un igual a 0. 350 00:25:38,090 --> 00:25:46,920 En el seu lloc, aquesta línia de codi acabem fent alguna cosa més com a root =. 351 00:25:46,920 --> 00:25:50,500 O user = root. 352 00:25:50,500 --> 00:25:59,170 Es tractava d'un innocent - a primera vista - error en què podria haver estat només raonable 353 00:25:59,170 --> 00:26:01,560 que jo només volia informar d'alguna cosa específic 354 00:26:01,560 --> 00:26:05,150 si l'usuari va passar a ser l'administrador de superusuari. 355 00:26:05,150 --> 00:26:11,220 Però després tornar a pensar-hi, la persona que volia que es veiés com un simple error tipogràfic, 356 00:26:11,220 --> 00:26:14,330 però si aquest codi havia estat realment posat en llibertat, 357 00:26:14,330 --> 00:26:21,580 llavors hauria estat capaç de hackejar qualsevol sistema passant una bandera específica - 358 00:26:21,580 --> 00:26:25,200 en aquest cas b = 0 - 359 00:26:25,200 --> 00:26:28,020 i automàticament es crea l'usuari l'administrador, 360 00:26:28,020 --> 00:26:30,400 i llavors ell té el control total. 361 00:26:30,400 --> 00:26:32,540 Això va succeir en 2003. 362 00:26:32,540 --> 00:26:35,700 >> Va donar la casualitat que l'única raó per la qual va ser capturat 363 00:26:35,700 --> 00:26:39,200 era perquè havia passat a ser algun sistema automatitzat 364 00:26:39,200 --> 00:26:41,540 que va notar el canvi en l'arxiu 365 00:26:41,540 --> 00:26:44,560 que mai hauria d'haver estat canviat per un humà. 366 00:26:44,560 --> 00:26:47,580 L'arxiu només s'hauria d'haver generat automàticament. 367 00:26:47,580 --> 00:26:49,780 Va donar la casualitat que algú tocat - 368 00:26:49,780 --> 00:26:52,460 així, la persona que volia hackejar tocat aquest arxiu, 369 00:26:52,460 --> 00:26:55,450 i l'equip capturat aquest contacte. 370 00:26:55,450 --> 00:27:01,750 Així, van canviar això i només més tard es va adonar del que és un desastre que hauria estat 371 00:27:01,750 --> 00:27:04,830 si això hagués sortit al món real. 372 00:27:04,830 --> 00:27:08,220 >> Vostè pot estar pensant que - tornant al nostre exemple de compilador - 373 00:27:08,220 --> 00:27:14,290 tot i que no podem veure - mirar el codi font - 374 00:27:14,290 --> 00:27:17,490 que res en particular que està malament, 375 00:27:17,490 --> 00:27:25,460 si en realitat ens fixem en el codi binari del compilador, 376 00:27:25,460 --> 00:27:28,670 veuríem que alguna cosa va malament. 377 00:27:28,670 --> 00:27:31,260 Per exemple, si executem les cordes funcionar - 378 00:27:31,260 --> 00:27:34,930 que només va a mirar per sobre d'un arxiu i imprimir totes les cadenes que pot trobar - 379 00:27:34,930 --> 00:27:37,990 si ens quedem sense cordes al nostre compilador, 380 00:27:37,990 --> 00:27:42,400 veiem que una cadena que es troba és aquesta estranya - 381 00:27:42,400 --> 00:27:45,500 else if (strcmp (nom d'usuari, "hacker") - bla, bla, bla. 382 00:27:45,500 --> 00:27:52,570 Si algú va passar a ser paranoic com per no confiar en la seva compilador, 383 00:27:52,570 --> 00:27:56,690 podrien executar les cordes i veure això, 384 00:27:56,690 --> 00:28:00,430 i llavors ells sabrien que hi havia alguna cosa malament amb el binari real. 385 00:28:00,430 --> 00:28:07,250 No obstant això, les cadenes era una cosa que inevitablement es va compilar. 386 00:28:07,250 --> 00:28:11,590 Així que, qui pot dir que el nostre compilador no només té més codi especial 387 00:28:11,590 --> 00:28:19,240 que diu, si les cadenes s'executi cada vegada en el nostre compilador, no es genera tot el codi maliciós. 388 00:28:19,240 --> 00:28:23,980 >> La mateixa idea que si volem desencadellar l'arxiu - 389 00:28:23,980 --> 00:28:30,440 ens assabentem que l'assemblador ens porta de codi assemblador a un codi màquina - 390 00:28:30,440 --> 00:28:36,010 podem anar en la direcció oposada - objdump-d compilador - 391 00:28:36,010 --> 00:28:38,770 ens donarà el muntatge del nostre codi. 392 00:28:38,770 --> 00:28:41,730 Quant a això, 393 00:28:41,730 --> 00:28:47,480 és bastant críptic, però si volíem, podíem veure a través d'aquest 394 00:28:47,480 --> 00:28:51,700 i la raó, espera, hi ha alguna cosa que fer aquí que no hauria d'estar passant, 395 00:28:51,700 --> 00:28:59,380 i després anem a reconèixer que el compilador està fent alguna cosa maliciós. 396 00:28:59,380 --> 00:29:03,950 Però, així com les cadenes, qui pot dir objdump no era especial amb carcassa. 397 00:29:03,950 --> 00:29:11,380 Bàsicament, tot es redueix a que no pots confiar en res. 398 00:29:11,380 --> 00:29:14,310 La qüestió del paper que es diu "Confiança Confiar" és 399 00:29:14,310 --> 00:29:17,900 en general, confiem en el nostre compilador. 400 00:29:17,900 --> 00:29:21,700 Compilar el codi i esperar que el que em demanes que faci. 401 00:29:21,700 --> 00:29:26,440 Però, per què hauria de confiar en el compilador? 402 00:29:26,440 --> 00:29:32,120 No va escriure el compilador. No sap el que el compilador està necessàriament fent. 403 00:29:32,120 --> 00:29:36,870 Qui diu que vostè pot confiar-hi? 404 00:29:36,870 --> 00:29:40,050 Però fins i tot llavors, bé, potser podem confiar en el compilador. 405 00:29:40,050 --> 00:29:44,670 Hi ha desenes de milers de persones que han estudiat en això. 406 00:29:44,670 --> 00:29:51,360 Algú ha d'haver reconegut que alguna cosa estava passant amb el compilador. 407 00:29:51,360 --> 00:29:55,100 >> I si només ha d'anar un nivell més profund? 408 00:29:55,100 --> 00:29:59,450 Fins i tot podria ser el seu processador. 409 00:29:59,450 --> 00:30:01,250 Per ridícul que pugui ser, 410 00:30:01,250 --> 00:30:06,690 potser hi ha algun murri empleat d'Intel que crea aquests processadors 411 00:30:06,690 --> 00:30:12,400 que cada vegada que el processador s'adona que està executant alguna ordre 412 00:30:12,400 --> 00:30:14,570 que és la intenció d'iniciar sessió a l'ordinador, 413 00:30:14,570 --> 00:30:19,230 el processador acceptar algun nom d'usuari específic i una contrasenya. 414 00:30:19,230 --> 00:30:21,530 Seria tremendament complicat, 415 00:30:21,530 --> 00:30:24,790 però algú podria fer-ho. 416 00:30:24,790 --> 00:30:29,350 En aquest moment, està vostè realment va a obrir l'ordinador per mirar el processador 417 00:30:29,350 --> 00:30:35,970 i l'ús d'un microscopi per reconèixer que aquests circuits no estan alineats com haurien de ser? 418 00:30:35,970 --> 00:30:39,730 A ningú se li va a agafar aquest error. 419 00:30:39,730 --> 00:30:45,570 En algun moment, vostè només ha de rendir-se i confiar en alguna cosa. 420 00:30:45,570 --> 00:30:48,390 La majoria de la gent confia en el compilador en aquest punt. 421 00:30:48,390 --> 00:30:55,760 És a dir, no necessàriament que vostè ha. 422 00:30:55,760 --> 00:30:59,350 Mirant una mica 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 [És un sistema UNIX. Sé que això.] 425 00:31:13,270 --> 00:31:14,470 [És tots els arxius -] 426 00:31:14,470 --> 00:31:18,950 Ella va dir: "És un sistema UNIX. Sé que això." 427 00:31:18,950 --> 00:31:21,760 Reemplaci UNIX amb el que el seu sistema operatiu favorit és - 428 00:31:21,760 --> 00:31:25,230 ella podria haver dit: "És un sistema Windows. Sé que això." 429 00:31:25,230 --> 00:31:29,710 És una afirmació completament sense sentit, 430 00:31:29,710 --> 00:31:34,450 però pel que sabem, ella passa a conèixer una porta del darrere en el sistema UNIX. 431 00:31:34,450 --> 00:31:38,840 Ella sap alguna combinació nom d'usuari / contrasenya que realment li deixarà 432 00:31:38,840 --> 00:31:41,540 fer el que vulgui. 433 00:31:41,540 --> 00:31:49,000 >> Està bé. La moralitat d'avui és, bàsicament, no es pot confiar en res. 434 00:31:49,000 --> 00:31:52,620 Fins i tot les coses que escrius - vostè no va escriure el compilador. 435 00:31:52,620 --> 00:31:53,870 El compilador pot ser dolent. 436 00:31:53,870 --> 00:31:59,140 Fins i tot si ho va fer escriure el compilador, el que s'està executant el compilador podria ser dolent. 437 00:31:59,140 --> 00:32:05,210 (Rialles) No hi ha molt que puguis fer. 438 00:32:05,210 --> 00:32:09,050 El món està condemnat. 439 00:32:09,050 --> 00:32:11,570 Retorn a David! 440 00:32:11,570 --> 00:32:19,540 [Aplaudiment] 441 00:32:19,540 --> 00:32:21,340 >> [David] Gràcies. Això va ser realment depriment. 442 00:32:21,340 --> 00:32:23,910 Però de fet, Rob és correcta. 443 00:32:23,910 --> 00:32:27,150 Realment no tinc una solució per això, sinó que està a punt d'obtenir algunes solucions 444 00:32:27,150 --> 00:32:29,150 a algunes defenses més comuns. 445 00:32:29,150 --> 00:32:31,170 En previsió d'això, el que Nate i jo hem estat fent fora de l'escenari hi ha 446 00:32:31,170 --> 00:32:33,950 és saber que hi ha tantes portàtils en aquesta sala, 447 00:32:33,950 --> 00:32:37,020 hem estat ensumant tot el tràfic sense fil passant per aquest lloc per als últims 20 minuts 448 00:32:37,020 --> 00:32:39,260 durant la xerrada de Rob, així que anem a prendre un descans de 2 minuts aquí. 449 00:32:39,260 --> 00:32:41,740 Nate va a configurar, i després parlarem de totes les coses 450 00:32:41,740 --> 00:32:46,380 que podríem haver trobat. (Rialles) 451 00:32:46,380 --> 00:32:51,990 >> Per tant, pot ser que hagi exagerat una mica pel simple fet de drama, 452 00:32:51,990 --> 00:32:55,990 però podríem haver estat ensumant tot el seu trànsit sense fil perquè en realitat, 453 00:32:55,990 --> 00:32:57,240 és així de fàcil. 454 00:32:57,240 --> 00:32:59,790 Però també hi ha formes en què pot defensar-se contra això, i així amb això, 455 00:32:59,790 --> 00:33:03,160 Et dono Nate Hardison. >> [Nate] Sweet. 456 00:33:03,160 --> 00:33:06,300 (Aplaudiments) 457 00:33:06,300 --> 00:33:08,650 >> [Nate] Gràcies, home. Agraeixo el crit. 458 00:33:08,650 --> 00:33:12,790 Molt bé! És la setmana de joc. Estan emocionats? 459 00:33:12,790 --> 00:33:16,670 És d'esperar que serà un gran partit dissabte. 460 00:33:16,670 --> 00:33:20,220 M'imagino que vostès en aquest moment - ja que tens un examen dimecres 461 00:33:20,220 --> 00:33:24,430 tot sobre el codi, i ens vam asseure a través d'una conferència meravellosa per Rob 462 00:33:24,430 --> 00:33:25,850 amb un munt de codi C en ell - 463 00:33:25,850 --> 00:33:28,330 són potser una mica cansat de codi. 464 00:33:28,330 --> 00:33:32,180 En aquesta part, estem en realitat no tocarà cap codi en absolut. 465 00:33:32,180 --> 00:33:36,960 Només parlarem d'una tecnologia que s'utilitza cada dia, 466 00:33:36,960 --> 00:33:39,790 sovint per moltes, moltes hores al dia, 467 00:33:39,790 --> 00:33:46,220 i anem a parlar de les implicacions en la seguretat que no ho són. 468 00:33:46,220 --> 00:33:48,960 >> Hem parlat molt sobre la seguretat al llarg del semestre, 469 00:33:48,960 --> 00:33:53,030 i comencem amb una mica de criptografia. 470 00:33:53,030 --> 00:33:55,030 [Bdoh lv vwlqng!] 471 00:33:55,030 --> 00:33:57,890 I mentre vostès estan probablement súper emocionada d'estar passant notes entre si 472 00:33:57,890 --> 00:33:59,890 a classe mitjançant un xifrat de Cèsar com aquest, 473 00:33:59,890 --> 00:34:03,870 en realitat, hi ha alguna cosa més que s'havia divertit quan en realitat estàs parlant de seguretat 474 00:34:03,870 --> 00:34:05,870 i aquest tipus de coses. 475 00:34:05,870 --> 00:34:09,090 Avui en dia, anem a cobrir algunes tecnologies 476 00:34:09,090 --> 00:34:13,650 que les persones utilitzen realment en el món real per fer tot tipus de coses 477 00:34:13,650 --> 00:34:18,360 d'olorar els paquets de la gent per realment entrar i 478 00:34:18,360 --> 00:34:20,409 irrompre en els comptes bancaris de la gent i tot això. 479 00:34:20,409 --> 00:34:23,460 Aquestes són eines legítimes que estem parlant 480 00:34:23,460 --> 00:34:26,320 amb l'excepció d'possiblement una eina. 481 00:34:26,320 --> 00:34:28,889 >> I jo només vull fer un aclariment ràpida. 482 00:34:28,889 --> 00:34:34,909 Quan parlem d'aquestes coses, estem parlant d'ells perquè sàpiga el que hi ha fora, 483 00:34:34,909 --> 00:34:39,389 i ets conscient de com estar segurs quan vostè està fora mitjançant l'ordinador. 484 00:34:39,389 --> 00:34:44,000 Però definitivament no vull donar a entendre que vostè ha d'utilitzar aquestes eines 485 00:34:44,000 --> 00:34:48,090 a la seva habitació o casa perquè vostè pot tenir un munt de grans temes. 486 00:34:48,090 --> 00:34:52,760 Aquesta és una raó avui en dia que en realitat no estaven ensumant seus paquets. 487 00:34:52,760 --> 00:35:01,300 >> Està bé. Dilluns passat, hem parlat sobre les galetes i HTTP i autenticació, 488 00:35:01,300 --> 00:35:05,920 Firesheep i com s'obre la porta gran en el seu compte de Facebook, 489 00:35:05,920 --> 00:35:08,670 al seu compte de Hotmail - si algú segueix usant Hotmail - 490 00:35:08,670 --> 00:35:12,360 i moltes altres comptes. 491 00:35:12,360 --> 00:35:16,980 Moltes d'aquestes coses es construirà fora d'això, 492 00:35:16,980 --> 00:35:22,070 però en primer lloc, vull fer un recorregut ràpid de com l'Internet ha evolucionat amb el temps. 493 00:35:22,070 --> 00:35:27,490 En els anys 90, vostès podrien haver recordat realment connectar 494 00:35:27,490 --> 00:35:29,880 els equips amb un d'aquests. 495 00:35:29,880 --> 00:35:32,640 Ara ja no faig això tant més. 496 00:35:32,640 --> 00:35:37,230 En realitat, resulta que per connectar un cable Ethernet en el meu portàtil, 497 00:35:37,230 --> 00:35:41,710 Ara he de fer servir un d'aquests adaptadors, que és una bogeria. 498 00:35:41,710 --> 00:35:47,580 >> En canvi, el 1997 vam tenir aquesta nova tecnologia, diversió 499 00:35:47,580 --> 00:35:54,960 transcendir que es coneix com IEEE 802.11, de manera que aquest és l'estàndard sense fil a internet 500 00:35:54,960 --> 00:36:00,430 El IEEE és aquest òrgan de govern que li dóna tota mena de - 501 00:36:00,430 --> 00:36:04,770 publica tot tipus de normes amb relació a les computadores. 502 00:36:04,770 --> 00:36:08,780 Els estàndards 802 són tots sobre les tecnologies d'Internet. 503 00:36:08,780 --> 00:36:12,690 Així 802,3, per exemple, és l'estàndard d'Ethernet, 504 00:36:12,690 --> 00:36:17,120 802.15.1 crec que és l'estàndard Bluetooth, 505 00:36:17,120 --> 00:36:19,540 i 802.11 és tot sobre Internet sense fils. 506 00:36:19,540 --> 00:36:24,150 El 1997, aquest va sortir. No vaig entendre bé immediatament. 507 00:36:24,150 --> 00:36:30,200 No va ser sinó fins a 1999, i l'estàndard 802.11b va saber que acaba d'aconseguir realment popular. 508 00:36:30,200 --> 00:36:36,330 >> Quants de vosaltres recorden quan els equips van començar a sortir i aconseguir sense fil en ells? 509 00:36:36,330 --> 00:36:38,330 Això era una mena de fresc, no? 510 00:36:38,330 --> 00:36:41,260 Recordo que vaig rebre la meva primera ordinador portàtil a l'escola secundària, 511 00:36:41,260 --> 00:36:44,250 i que tenia una targeta sense fils en ella. 512 00:36:44,250 --> 00:36:49,580 El meu pare em va donar i em va dir que he d'utilitzar per les meves aplicacions universitat i tot això, 513 00:36:49,580 --> 00:36:53,030 i jo no tenia idea de com anava a buscar aquest material en línia. 514 00:36:53,030 --> 00:36:54,640 Però, afortunadament, jo tenia una targeta sense fils, de manera que era bastant guai. 515 00:36:54,640 --> 00:37:04,090 Avui dia, vostè també veurà 802.11g, que és un dels altres realment popular 516 00:37:04,090 --> 00:37:06,090 estàndards sense fils que hi ha allà fora. 517 00:37:06,090 --> 00:37:08,660 Tant B i G són bastant obsoletes en aquest punt. 518 00:37:08,660 --> 00:37:12,580 Algú sap quina versió de la majoria de les persones estan ara mateix 519 00:37:12,580 --> 00:37:15,110 si va a comprar nous routers sense fils i aquest tipus de coses? 520 00:37:15,110 --> 00:37:24,290 N. Exactament. Bingo. I resulta que la norma de CA està sortint en forma d'esborrany, 521 00:37:24,290 --> 00:37:28,050 i hi ha altres versions en el camí. 522 00:37:28,050 --> 00:37:31,190 Amb cadascuna d'aquestes normes el que estem obtenint és més ample de banda, 523 00:37:31,190 --> 00:37:33,900 més dades a una velocitat més ràpida. 524 00:37:33,900 --> 00:37:36,260 Aquestes coses van canviant molt ràpidament. 525 00:37:36,260 --> 00:37:39,880 També ho fa així que hem de comprar més routers i totes aquestes coses divertides. 526 00:37:39,880 --> 00:37:48,160 >> Anem a parlar del que realment és la comunicació sense fils en el seu nucli. 527 00:37:48,160 --> 00:37:51,790 Amb Ethernet i els mòdems antics de marcatge directe, 528 00:37:51,790 --> 00:37:55,780 que en realitat tenia aquesta cosa que s'ha connectat al seu ordinador, 529 00:37:55,780 --> 00:37:59,820 i després connectat a un mòdem de tipus, i després ho endolla a una presa a la paret. 530 00:37:59,820 --> 00:38:01,820 Havies de aquesta connexió per cable, no? 531 00:38:01,820 --> 00:38:06,030 El punt sencer de la tecnologia sense fils és desfer-se d'aquestes coses. 532 00:38:06,030 --> 00:38:10,300 Per tal de fer això, el que tenim és essencialment 533 00:38:10,300 --> 00:38:13,960 una comunicació de ràdio on el nostre router sense fil - 534 00:38:13,960 --> 00:38:16,230 designat pel nostre petit icona de xarxa sense fils - 535 00:38:16,230 --> 00:38:21,730 està connectat a la Internet amb aquesta fletxa sòlida que indica algun tipus de connexió per cable, 536 00:38:21,730 --> 00:38:24,640 però quan es connecta al seu encaminador sense fils 537 00:38:24,640 --> 00:38:29,190 en realitat estàs fent servir gairebé com un walkie-talkie entre 538 00:38:29,190 --> 00:38:31,960 l'ordinador i el router sense fil. 539 00:38:31,960 --> 00:38:35,150 El que és realment bo d'això és que vostè pot moure. 540 00:38:35,150 --> 00:38:40,900 Vostè pot portar el seu equip per tot Sanders, vagi navegar per la web, el que vulguis, 541 00:38:40,900 --> 00:38:43,240 igual que tots coneixem i estimem, 542 00:38:43,240 --> 00:38:46,030 i no sempre ha de ser connectat a res. 543 00:38:46,030 --> 00:38:53,880 Perquè això funcioni, tenim tant la recepció i la transmissió. 544 00:38:53,880 --> 00:38:56,060 Realment és així de walkie-talkie. 545 00:38:56,060 --> 00:39:03,800 >> Aquest router sense fil - que en Sanders està assegut sota d'aquesta etapa, aquí - 546 00:39:03,800 --> 00:39:06,590 sempre la transmissió i recepció, transmissió i recepció, 547 00:39:06,590 --> 00:39:09,330 i de la mateixa manera, els equips estan fent el mateix tipus de cosa, també. 548 00:39:09,330 --> 00:39:12,840 Simplement no es pot sentir. 549 00:39:12,840 --> 00:39:17,900 L'altra cosa que pots fer és que vostè pot tenir diversos ordinadors 550 00:39:17,900 --> 00:39:22,200 parlant amb el mateix router sense fil. 551 00:39:22,200 --> 00:39:25,680 Com més a prop es trobi d'una router - i de nou, es tracta d'una comunicació de ràdio - 552 00:39:25,680 --> 00:39:30,320 com més a prop estigui, millor serà el seu senyal és, el millor del seu equip "sent" el router 553 00:39:30,320 --> 00:39:32,460 i pot comunicar-se amb la Internet. 554 00:39:32,460 --> 00:39:39,520 Si vostès alguna vegada en el seu dormitori, a casa teva i et preguntes per què el senyal és dolenta, 555 00:39:39,520 --> 00:39:42,230 probablement sigui degut a). no estàs molt a prop del teu router, o 556 00:39:42,230 --> 00:39:46,930 b). hi ha alguna cosa entre tu i el teu router com un mur de ciment o alguna cosa 557 00:39:46,930 --> 00:39:50,720 que no permet que les ones de ràdio passen. 558 00:39:50,720 --> 00:39:57,850 >> Anem a parlar una mica sobre per què els nois dolents de wi-fi. 559 00:39:57,850 --> 00:40:02,980 Els mals estimen sense fil per diverses raons. 560 00:40:02,980 --> 00:40:06,670 Aquí està el nostre noi dolent dolent allà. 561 00:40:06,670 --> 00:40:10,660 Una de les raons per què aquest noi dolent estima sense fil 562 00:40:10,660 --> 00:40:18,770 és perquè, per defecte, una gran quantitat de routers sense fils vénen i quan els va crear, 563 00:40:18,770 --> 00:40:20,950 que estan sense encriptar. 564 00:40:20,950 --> 00:40:23,970 Aquest ha estat un problema, i s'han donat casos - 565 00:40:23,970 --> 00:40:28,210 diverses instàncies, ara - on el dolent es presenta a la casa d'algú, 566 00:40:28,210 --> 00:40:32,630 s'adona que hi ha un xifrat Wi-Fi a la qual es pot connectar. 567 00:40:32,630 --> 00:40:37,350 Es connecten a la connexió sense fil, i després començar a descarregar tot tipus de coses divertides. 568 00:40:37,350 --> 00:40:40,890 I no la descàrrega gatets, no la descàrrega cadells. 569 00:40:40,890 --> 00:40:44,610 Això és com BitTorrent. Aquesta és la repugnant de la més repugnant. 570 00:40:44,610 --> 00:40:48,740 Hi ha hagut casos en què fins i tot el FBI ha ficat 571 00:40:48,740 --> 00:40:52,390 pensar que la persona que és propietària de la casa és en realitat la 572 00:40:52,390 --> 00:40:56,090 sortir a la pista i descarregar coses que realment no hauria de ser. 573 00:40:56,090 --> 00:41:00,730 Un cop xifrats sense fil no és definitivament una cosa que vostè vol fer, 574 00:41:00,730 --> 00:41:06,340 encara que només sigui per no tenir l'FBI vingui a trucar a la seva porta. 575 00:41:06,340 --> 00:41:09,910 >> Una altra raó per la qual els mals estimen sense fil 576 00:41:09,910 --> 00:41:13,870 és la raó per la qual David parlat abans durant el descans. 577 00:41:13,870 --> 00:41:17,240 Com que és una comunicació de ràdio en el seu nucli, 578 00:41:17,240 --> 00:41:22,460 si es coneix el canal, es pot escoltar aquesta emissora de ràdio. 579 00:41:22,460 --> 00:41:31,870 Per exemple, si hi ha un dret dolent allà assegut al centre a la dreta al costat del punt d'accés, 580 00:41:31,870 --> 00:41:36,830 just al costat d'aquest router sense fil, el dolent de la pel · lícula pot escoltar tot el tràfic sense fil 581 00:41:36,830 --> 00:41:40,240 que ve de tots aquests equips. 582 00:41:40,240 --> 00:41:44,590 De fet, aquests nois - aquests pocs afortunats que estan a la primera fila - 583 00:41:44,590 --> 00:41:47,610 perquè són super-prop de tots aquests routers sense fils 584 00:41:47,610 --> 00:41:49,950 que se sentin just sota de l'escenari, 585 00:41:49,950 --> 00:41:53,780 que seria capaç de sentir el trànsit de tots en aquest quart sencer 586 00:41:53,780 --> 00:41:59,480 si estàs connectat a sense fil i començar a navegar a través d'aquests punts d'accés. 587 00:41:59,480 --> 00:42:03,740 No és molt difícil seure a si mateix en una bona posició per ensumar i trobar la 588 00:42:03,740 --> 00:42:07,030 el que els altres estan fent. 589 00:42:07,030 --> 00:42:10,830 És una cosa a tenir en compte, especialment si no estàs segur d'on és el punt d'accés és, 590 00:42:10,830 --> 00:42:15,010 i que està navegant, diguem, en un Starbucks. 591 00:42:15,010 --> 00:42:17,360 >> Resulta que fa olor i tot això 592 00:42:17,360 --> 00:42:19,440 no és realment tan difícil de fer. 593 00:42:19,440 --> 00:42:25,430 Hi ha un programa anomenat tcpdump que bolca tota mena de tràfic TCP 594 00:42:25,430 --> 00:42:29,910 i es pot córrer bastant simplement - com ho vaig fer aquest matí. 595 00:42:29,910 --> 00:42:32,810 Aquí està una mica d'un tuguri, i aquí hi ha una part del trànsit que vindria 596 00:42:32,810 --> 00:42:34,960 la meva xarxa en el moment. 597 00:42:34,960 --> 00:42:41,500 Vostè pot veure - si vostè escodrinya realment difícil - hi ha una mica de Spotify en aquest país. 598 00:42:41,500 --> 00:42:44,050 A la part superior de tcpdump - perquè aquest és un tipus de dolor d'usar - 599 00:42:44,050 --> 00:42:48,860 hi ha un programa anomenat Wireshark que fas tot això en una interfície gràfica d'usuari agradable. 600 00:42:48,860 --> 00:42:51,970 Wireshark és súper pràctic així que si vas a prendre classes de xarxes, 601 00:42:51,970 --> 00:42:56,780 aquesta és una eina que et trobaràs a l'amor, ja que l'ajuda a analitzar tots els paquets 602 00:42:56,780 --> 00:42:59,400 que estan surant per aquí. 603 00:42:59,400 --> 00:43:01,810 Però també es pot utilitzar per al mal. 604 00:43:01,810 --> 00:43:05,810 És molt simple només ha de descarregar aquest programa, arrencar cap amunt, 605 00:43:05,810 --> 00:43:09,300 iniciar una captura de xarxa, i veure tot el que està passant - 606 00:43:09,300 --> 00:43:14,130 i el filtre i fer tot tipus de coses divertides amb ell. 607 00:43:14,130 --> 00:43:17,930 >> L'altra cosa que vostè pot fer amb la comunicació sense fils 608 00:43:17,930 --> 00:43:25,380 no només es pot escoltar d'amagat però també es pot aprendre a fotre amb la xarxa 609 00:43:25,380 --> 00:43:31,020 i injectar la seva pròpia informació per controlar l'experiència que altres persones 610 00:43:31,020 --> 00:43:35,140 en la mateixa xarxa sense fils està rebent. 611 00:43:35,140 --> 00:43:37,140 Anem a fer una ullada a això. 612 00:43:37,140 --> 00:43:40,700 Aquí està Firesheep - que coneixem i estimem de la setmana passada - 613 00:43:40,700 --> 00:43:43,590 que és que la tecnologia d'escoltes. 614 00:43:43,590 --> 00:43:50,360 Si, per exemple, volíem tenir el nostre activament go dolent i perdre el temps amb 615 00:43:50,360 --> 00:43:52,690 un d'aquests equips, 616 00:43:52,690 --> 00:43:58,380 en aquest cas tenim un equip tractant d'anar de surf per harvard.edu. 617 00:43:58,380 --> 00:44:04,690 El que passa és que el primer ordinador envia un missatge al encaminador sense fils i diu: 618 00:44:04,690 --> 00:44:07,920 hey, jo vull anar www.harvard.edu visita. 619 00:44:07,920 --> 00:44:10,610 Diguem, per alguna raó, ells estan tractant d'obtenir informació sobre el partit d'aquest cap de setmana. 620 00:44:10,610 --> 00:44:14,940 Noi dolent, ja que ell està assegut al centre, 621 00:44:14,940 --> 00:44:18,730 just al costat d'aquest punt d'accés, es pot veure que la comunicació procedent de l'ordinador 622 00:44:18,730 --> 00:44:26,170 al router, i ell ho sap: "Vés per on Algú va a harvard.edu". (Malvadament rialles) 623 00:44:26,170 --> 00:44:33,870 Serà aquesta latència mentre que la comunicació va des del router 624 00:44:33,870 --> 00:44:37,780 a Internet per anar a buscar a la pàgina web a-harvard.edu - 625 00:44:37,780 --> 00:44:42,020 com tots vostès saben després de fer els seus conjunts de processadors PHP - 626 00:44:42,020 --> 00:44:45,680 de manera que el dolent de la pel · lícula té una mica de temps, una mica de la finestra, 627 00:44:45,680 --> 00:44:49,410 en la qual es pot respondre amb algunes coses. 628 00:44:49,410 --> 00:44:53,660 >> Diguem que aquest noi dolent, per descomptat, és un Yaley. 629 00:44:53,660 --> 00:44:59,990 Ell respon amb harvardsucks.org. Boo! 630 00:44:59,990 --> 00:45:02,300 Noi dolent, dolent! Bad Yaley! 631 00:45:02,300 --> 00:45:06,020 O pitjor encara, podria respondre amb això. [Http :/ / youtu.be/ZSBq8geuJk0]. 632 00:45:06,020 --> 00:45:09,530 Vaig a deixar que vostès imaginar el que és. 633 00:45:09,530 --> 00:45:14,840 Això és realment una tecnologia anomenada airpwn! que es va estrenar 634 00:45:14,840 --> 00:45:18,950 una de les conferències de seguretat de tornada d'uns anys. 635 00:45:18,950 --> 00:45:25,190 Amb airpwn! vostè és capaç d'injectar en realitat el trànsit de tornada a la xarxa. 636 00:45:25,190 --> 00:45:30,060 Els equips que tractaven de sortir a Internet i tractant d'arribar 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 veure la resposta maliciós entrar i assumir immediatament, d'acord, 639 00:45:39,190 --> 00:45:43,550 aquesta és la resposta que esperava i acabar sobre d'aconseguir el contingut de 640 00:45:43,550 --> 00:45:48,860 harvardsucks.org o nameyourfavoriteshocksite.com, 641 00:45:48,860 --> 00:45:55,270 i es pot veure la rapidesa amb què les coses van a empitjorar. 642 00:45:55,270 --> 00:46:00,190 >> Tot aquest tipus de coses no es pot fer 643 00:46:00,190 --> 00:46:05,870 amb aquestes connexions per cable, ja que amb una connexió cablejada 644 00:46:05,870 --> 00:46:08,710 és difícil tafanejar en el trànsit. 645 00:46:08,710 --> 00:46:13,020 Si jo sóc un tipus dolent i en un extrem es troba l'equip 646 00:46:13,020 --> 00:46:14,460 i en l'altre extrem es troba el router - el mòdem - 647 00:46:14,460 --> 00:46:20,180 l'única manera d'aconseguir entre aquesta connexió per empalmar en realitat el meu ordinador 648 00:46:20,180 --> 00:46:22,180 en algun lloc en el medi 649 00:46:22,180 --> 00:46:26,820 o fer una altra cosa amb el router, aigües avall una cosa així. 650 00:46:26,820 --> 00:46:33,360 Però amb la tecnologia sense fils, pot ser tan fàcil com seure a la primera fila d'una aula, 651 00:46:33,360 --> 00:46:38,200 i vostè pot fer tot tipus de coses desagradables a la gent a la part posterior. 652 00:46:38,200 --> 00:46:41,570 >> Parlarem de com es pot defensar contra algunes d'aquestes coses. 653 00:46:41,570 --> 00:46:46,860 La gent que va desenvolupar els estàndards sense fil - el 802,11 - 654 00:46:46,860 --> 00:46:50,820 no són gent tonta per qualsevol tram de la imaginació. 655 00:46:50,820 --> 00:46:56,110 Aquesta és una tecnologia freda i quan va debutar el 1999, 656 00:46:56,110 --> 00:47:00,780 que va sortir amb aquest estàndard anomenat WEP. 657 00:47:00,780 --> 00:47:03,360 Es pot veure aquí quan vostè tracta de connectar a una xarxa sense fils, 658 00:47:03,360 --> 00:47:07,450 Té tot tipus d'opcions de seguretat diferents. 659 00:47:07,450 --> 00:47:11,800 Això és una mica d'un enuig perquè hi ha 6 tots junts 660 00:47:11,800 --> 00:47:14,790 i mai realment té sentit que una a unir-se. 661 00:47:14,790 --> 00:47:19,190 Aquest 1 a la part superior és el primer que se'ls va ocórrer anomenat WEP. 662 00:47:19,190 --> 00:47:27,960 WEP significa privacitat equivalent a cablejat, crec jo, 663 00:47:27,960 --> 00:47:31,730 no protocol de xifrat sense fils que és un nom inadequat comú. 664 00:47:31,730 --> 00:47:36,170 Com que intenta donar-li equivalent privacitat i la protecció de la seguretat 665 00:47:36,170 --> 00:47:40,590 equivalent a la d'una xarxa cablejada 666 00:47:40,590 --> 00:47:46,710 Amb WEP el que acaba passant és, 667 00:47:46,710 --> 00:47:52,300 tens contrasenya simple, poc d'escriure i que serveix per a xifrar 668 00:47:52,300 --> 00:47:56,210 totes les comunicacions entre l'ordinador i el router. 669 00:47:56,210 --> 00:47:58,210 >> Quin és el problema amb WEP però? 670 00:47:58,210 --> 00:48:01,470 La contrasenya de WEP és molt curt, 671 00:48:01,470 --> 00:48:04,900 i també que tothom fa servir exactament la mateixa contrasenya, 672 00:48:04,900 --> 00:48:07,610  i pel que és molt fàcil de desxifrar. 673 00:48:07,610 --> 00:48:10,580 Així que molt aviat la gent va descobrir que WEP era un problema, 674 00:48:10,580 --> 00:48:16,100 i l'única raó que veig aparèixer encara en aquest petit individu és - 675 00:48:16,100 --> 00:48:18,890 hi ha alguns sistemes antics que usin WEP - 676 00:48:18,890 --> 00:48:25,710 el que en el seu lloc s'ha de buscar són la WPA i WPA2 fins i tot normes 677 00:48:25,710 --> 00:48:29,130 que van ser posats en llibertat més tard. 678 00:48:29,130 --> 00:48:35,040 Aquests sistemes són un anar molt millor en la protecció d'Internet sense fils. 679 00:48:35,040 --> 00:48:41,090 Dit això, encara tenim alguns hackability. 680 00:48:41,090 --> 00:48:44,010 Hi ha eines per aquí que pot anar a fer això. 681 00:48:44,010 --> 00:48:47,490 Una cosa en particular que pot ser desagradable és que 682 00:48:47,490 --> 00:48:55,370 si es connecta i autenticat a un router sense fil i estan utilitzant algun tipus de 683 00:48:55,370 --> 00:49:00,940 comunicacions xifrades, resulta que un hacker pot enviar un sol paquet 684 00:49:00,940 --> 00:49:03,990 perquè es desconnecti del router, 685 00:49:03,990 --> 00:49:07,220 i un cop que t'han desconnectat es pot escoltar en - 686 00:49:07,220 --> 00:49:11,800 poden olorar els paquets a mesura que tracten de restablir la connexió amb el router. 687 00:49:11,800 --> 00:49:16,800 I amb aquesta informació que després pot entrar i desxifrar la resta de la seva comunicació. 688 00:49:16,800 --> 00:49:24,580 Això no és de cap manera cap tipus d'assegurança més enllà de tota imaginació. 689 00:49:24,580 --> 00:49:30,060 >> L'altra cosa que pots fer quan estàs configurant xarxes sense fils 690 00:49:30,060 --> 00:49:35,460 o que els està unint és - t'adones que aquí quan m'estic unint a aquesta xarxa, 691 00:49:35,460 --> 00:49:37,640 es demana el nom de la meva xarxa. 692 00:49:37,640 --> 00:49:41,060 Això també es coneix com el SSID. 693 00:49:41,060 --> 00:49:48,610 I vostè veu aquí que en el dret que tinc una caixa que em mostra els SSID disponibles. 694 00:49:48,610 --> 00:49:52,690 Hi ha una Universitat de Harvard, CS50 i CS50 una xarxa personal. 695 00:49:52,690 --> 00:49:59,180 Ara, ¿quants de vostès sabien que hi havia una xarxa personal CS50 voltant? 696 00:49:59,180 --> 00:50:01,910 Alguns de vostès. No tots vostès. 697 00:50:01,910 --> 00:50:08,800 El problema amb això, és clar, és que si no posem això en la nostra llista de SSID, 698 00:50:08,800 --> 00:50:10,930 ningú hauria sabut d'ella el més probable. 699 00:50:10,930 --> 00:50:16,090 Espero. Llevat que vostès estan tractant d'entrar il · legalment al nostre mòbil. 700 00:50:16,090 --> 00:50:18,700 Però això és una cosa que pot fer això és molt important quan s'està configurant 701 00:50:18,700 --> 00:50:20,280 un router a casa. 702 00:50:20,280 --> 00:50:22,820 Això probablement no passarà durant uns anys per molts de vostès, 703 00:50:22,820 --> 00:50:29,010 però tingui en compte que el manteniment de SSID de sortir d'allà i no també nomenar 704 00:50:29,010 --> 00:50:34,630 alguna cosa súper comú l'ajudarà a mantenir-se més segurs en el llarg termini. 705 00:50:34,630 --> 00:50:38,070 >> Un parell final de les coses que pots fer. Un d'ells és HTTPS. 706 00:50:38,070 --> 00:50:44,760 Si vostè està en un Starbucks, si vostè està en un públic sense fil zona 707 00:50:44,760 --> 00:50:52,620 i vostè decideix tenir accés al seu compte bancari, accedir al seu Gmail, Facebook, 708 00:50:52,620 --> 00:50:56,140 assegureu-vos que les connexions van a través de HTTPS. 709 00:50:56,140 --> 00:50:59,800 És una capa addicional de seguretat, una capa addicional de xifrat. 710 00:50:59,800 --> 00:51:01,520 L'única cosa a tenir en compte aquí és, 711 00:51:01,520 --> 00:51:04,740 Quants de vosaltres heu fet clic a través d'aquesta pantalla gran, vermell que diu: 712 00:51:04,740 --> 00:51:07,480 "Aquest lloc web pot ser dolent". 713 00:51:07,480 --> 00:51:09,710 Jo sé el que tinc. 714 00:51:09,710 --> 00:51:13,090 És probable que quan vostè està navegant a tots a veure a la Pàtria, o alguna cosa així, oi? 715 00:51:13,090 --> 00:51:19,900 Si. (Rialles) Si. Aquí ho tens. Sabem qui està mirant Pàtria. 716 00:51:19,900 --> 00:51:24,540 Aquesta pantalla gran, vermell allà 717 00:51:24,540 --> 00:51:28,600 sovint indica que alguna cosa funky que està passant. 718 00:51:28,600 --> 00:51:32,530 De vegades és la pròpia pàgina web és insegur, 719 00:51:32,530 --> 00:51:35,520 però aquesta mateixa pantalla gran, vermell apareix quan la gent està tractant de 720 00:51:35,520 --> 00:51:37,520 muntatge de xarxa ataca vostè. 721 00:51:37,520 --> 00:51:40,220 Així que si vostè veu que la pantalla gran, vermell pujat en un Starbucks, 722 00:51:40,220 --> 00:51:42,440 no feu clic a través d'ell. 723 00:51:42,440 --> 00:51:45,350 Males notícies. Una colla de pilotes. 724 00:51:45,350 --> 00:51:51,490 >> L'última cosa que es pot veure en 725 00:51:51,490 --> 00:51:54,120 és una espècie de VPN. 726 00:51:54,120 --> 00:52:00,280 Aquesta VPN està disponible a través de la Universitat de Harvard - vpn.fas.harvard.edu-- 727 00:52:00,280 --> 00:52:03,260 i el que això fa és que en realitat estableix una connexió segura 728 00:52:03,260 --> 00:52:06,460 entre vostè i Harvard, embuts del seu trànsit a través d'ell, 729 00:52:06,460 --> 00:52:12,160 i d'aquesta manera si vostè està assegut en un lloc com un Starbucks 730 00:52:12,160 --> 00:52:19,030 pot connectar-se a Harvard, aconseguir que el trànsit segur, a continuació, busqui la Universitat de Harvard. 731 00:52:19,030 --> 00:52:21,950 Un cop més no, a tota prova. Les persones poden obtenir en el medi. 732 00:52:21,950 --> 00:52:25,850 Poden començar a trencar, però això és molt més segur que confien en la seguretat 733 00:52:25,850 --> 00:52:28,620 de la sola sense fil. 734 00:52:28,620 --> 00:52:32,570 >> Està bé. En resum, 735 00:52:32,570 --> 00:52:34,580 quan va a configurar les xarxes sense fils, 736 00:52:34,580 --> 00:52:37,250 quan es va a utilitzar una xarxa sense fils en públic - 737 00:52:37,250 --> 00:52:43,430 si es tracta d'un Starbucks, si es tracta de Five Guys, ja sigui b.good, 738 00:52:43,430 --> 00:52:46,440 una cosa així - sempre que tinguin sense fil - 739 00:52:46,440 --> 00:52:48,440 ser conscient dels seus voltants. 740 00:52:48,440 --> 00:52:50,440 Sigui conscient del que la gent pot fer. 741 00:52:50,440 --> 00:52:53,890 I vés amb compte. No entreu al vostre compte bancari. 742 00:52:53,890 --> 00:52:58,740 Podria ser un rude despertar si algú apareix amb la contrasenya més endavant. 743 00:52:58,740 --> 00:53:05,480 Amb això, anar carmesí! I canviaré les coses de tornada a David per una paraula final. 744 00:53:05,480 --> 00:53:11,270 (Aplaudiments) 745 00:53:11,270 --> 00:53:14,360 >> [David] Jo vaig pensar en compartir alguna cosa de la meva experiència personal. 746 00:53:14,360 --> 00:53:19,940 Una eina que t'agradaria jugar amb - encara que Apple ha eradicat en gran mesura aquest problema 747 00:53:19,940 --> 00:53:22,710 si vostè ha actualitzat el seu programari, ja que - 748 00:53:22,710 --> 00:53:26,670 però amb aquesta finalitat de no ser realment capaços de confiar en el programari que utilitzen, 749 00:53:26,670 --> 00:53:33,270 i als punts de Nate, sent capaç d'ensumar una mica del que altres persones estan fent 750 00:53:33,270 --> 00:53:37,010 per aquí - es tractava d'una peça de programari que va sorgir fa prop d'un any-i-un-meitat ara. 751 00:53:37,010 --> 00:53:39,010 [IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] 752 00:53:39,010 --> 00:53:41,010 D'un temps, iTunes - abans de icloud, quan estaves sincronitzant els seus iPods o iPhones o els seus 753 00:53:41,010 --> 00:53:45,570 o els seus iPads amb iTunes - en l'interès de còpies de seguretat, 754 00:53:45,570 --> 00:53:48,340 el que tu iPhone i altres dispositius d'aquests han estat fent durant algun temps és 755 00:53:48,340 --> 00:53:50,340 fent ús de les dades de GPS. 756 00:53:50,340 --> 00:53:52,710 >> Tots vostès saben potser que els seus iPhones i Androids i els telèfons mòbils de Windows 757 00:53:52,710 --> 00:53:55,410 i el que en aquests dies es pot rastrejar on vostè està en l'interès de mostrar mapes 758 00:53:55,410 --> 00:53:59,440 i similars - així el que Apple i aquestes altres companyies fan és 759 00:53:59,440 --> 00:54:02,650 en general un seguiment gairebé a tot arreu que vostè ha estat realment en l'interès de 760 00:54:02,650 --> 00:54:05,380 millora de la qualitat de servei. 761 00:54:05,380 --> 00:54:07,170 Un d'ells, vostè pot obtenir més publicitat dirigida i similars, 762 00:54:07,170 --> 00:54:10,740 sinó dos, també poden esbrinar on hi ha punts d'accés sense fil al món, 763 00:54:10,740 --> 00:54:14,780 i això pot ajudar amb geo-localització - una mena de triangulació de la posició de les persones. 764 00:54:14,780 --> 00:54:18,520 >> Llarga història curta, tots havíem estat caminant antenes per a una certa quantitat de temps. 765 00:54:18,520 --> 00:54:22,180 Desafortunadament, Apple havia pres la decisió de disseny - o falta d'ella - 766 00:54:22,180 --> 00:54:26,590 a no xifrar aquesta informació quan estava sent còpia de seguretat a iTunes. 767 00:54:26,590 --> 00:54:30,330 I el que l'investigador de seguretat va trobar va ser que es tractava d'un arxiu XML enorme - 768 00:54:30,330 --> 00:54:33,810 un arxiu de text enorme - assegut en programari popular iTunes, 769 00:54:33,810 --> 00:54:35,400 i si vostè fos una mica curiós, 770 00:54:35,400 --> 00:54:38,990 vostè podria anar a furgar la història del seu cònjuge, la història del seu company de quart, 771 00:54:38,990 --> 00:54:41,050 història del seu germà i similars, 772 00:54:41,050 --> 00:54:44,590 i gràcies a un programari lliure, es pot traçar totes aquestes coordenades GPS - 773 00:54:44,590 --> 00:54:46,590 latitud i longitud. 774 00:54:46,590 --> 00:54:48,590 >> Així que en realitat va fer això amb el meu propi telèfon. 775 00:54:48,590 --> 00:54:51,210 He connectat el meu telèfon, i per descomptat, la meva versió d'iTunes no s'ha xifrat en el moment, 776 00:54:51,210 --> 00:54:53,900 i el que jo podia veure eren els meus propis patrons. 777 00:54:53,900 --> 00:54:56,970 Heus aquí els Estats Units i representa cada un d'aquests cercles blaus 778 00:54:56,970 --> 00:55:01,670 on es va acudir que va ser durant aquests mesos anteriors de posseir aquest telèfon en particular. 779 00:55:01,670 --> 00:55:04,940  He passat molt de temps, és clar, al nord-est, una mica de temps a Califòrnia, 780 00:55:04,940 --> 00:55:08,690 un viatge de curta durada a Texas, i si a continuació, fer un zoom sobre això - 781 00:55:08,690 --> 00:55:11,120 tot això és una mena de multa i interessant, però jo ho sabia. 782 00:55:11,120 --> 00:55:13,890 La majoria dels meus amics sabien això, però si vostè bussejar més profund, 783 00:55:13,890 --> 00:55:17,090 a veure on passo la major part del meu temps al nord-est. 784 00:55:17,090 --> 00:55:20,330 Si s'adhereixen a alguns pobles d'aspecte familiar - 785 00:55:20,330 --> 00:55:24,670 aquesta taca gran, tinta blava se centra essencialment sobre Boston, 786 00:55:24,670 --> 00:55:29,510 i després passar una mica de temps en els suburbis que irradien des de Boston. 787 00:55:29,510 --> 00:55:32,780 Però jo també estava fent una mica d'entrevistar amb aquest any. 788 00:55:32,780 --> 00:55:36,090 I aquest any és la costa oriental, i de fet pots veure 789 00:55:36,090 --> 00:55:41,920 i el meu iPhone a la butxaca del meu viatge d'anada i tornada entre Boston i Nova York 790 00:55:41,920 --> 00:55:47,510 Filadèlfia i més avall, així com passar una mica de temps de vacances 791 00:55:47,510 --> 00:55:50,340 al cap, que és el braç poc per aquí. 792 00:55:50,340 --> 00:55:53,030 Per tant, cada un d'aquests punts representa un lloc que havia estat, 793 00:55:53,030 --> 00:55:56,970 i completament desconegut per a mi, tota aquesta història hi era assegut 794 00:55:56,970 --> 00:55:58,410 en el meu ordinador d'escriptori. 795 00:55:58,410 --> 00:56:00,470 Si el zoom - això en realitat era una mica preocupant. 796 00:56:00,470 --> 00:56:04,190 Jo no recordava haver estat mai a Pennsilvània aquest any en particular. 797 00:56:04,190 --> 00:56:07,840 Però encara que una mica més dur en això i em vaig adonar, oh, era de fet aquest viatge 798 00:56:07,840 --> 00:56:11,160 i per descomptat, el meu telèfon m'havia atrapat. 799 00:56:11,160 --> 00:56:14,180 >> Apple ha posat aquesta informació xifrada, 800 00:56:14,180 --> 00:56:17,380 però això també és testimoni de la quantitat d'informació que està sent recopilada per nosaltres, 801 00:56:17,380 --> 00:56:20,850 i la facilitat amb què - per bé o per mal - és acceptable. 802 00:56:20,850 --> 00:56:23,340 Una de les Suggeriments del xef sort de parlar de Rob, de la xerrada de Nate 803 00:56:23,340 --> 00:56:27,370 i les imatges petites, com aquesta d'avui és només per estar tot el coneixedor més d'aquest 804 00:56:27,370 --> 00:56:31,160 de manera que tot i que - com a punt de Rob - we're tipus d'fotut, no? 805 00:56:31,160 --> 00:56:33,920 No hi ha molt que podem fer quan es tracta d'algunes d'aquestes amenaces, 806 00:56:33,920 --> 00:56:37,130 però al final del dia hem de confiar en alguna cosa o algú 807 00:56:37,130 --> 00:56:38,510 si volem utilitzar realment aquestes tecnologies. 808 00:56:38,510 --> 00:56:43,150 Almenys podem estar prenent decisions informades i decisions calculades o no 809 00:56:43,150 --> 00:56:46,390 que realment ha de comprovar aquest compte particularment sensible 810 00:56:46,390 --> 00:56:49,330 o que en realitat hauria de ser l'enviament de sospitar que alguna cosa missatge instantani 811 00:56:49,330 --> 00:56:52,180  en un entorn sense fil així. 812 00:56:52,180 --> 00:56:54,990 >> Així que, dit això, només queda un qüestionari, una conferència roman. 813 00:56:54,990 --> 00:56:57,740 Ens veiem el dimecres després del dilluns. 814 00:56:57,740 --> 00:57:02,100 (Aplaudiments i exclamacions) 815 00:57:02,100 --> 00:57:06,100 [CS50TV]