[Powered by Google Translate] [Setmana 10] [David J. Malan] [Harvard University] [Aquesta és CS50.] [CS50.TV] Molt bé! Això és CS50 però no per molt temps. Aquest és el començament de la setmana 10. Dimecres tenim el nostre concurs, i després el dilluns tenim un pastís de celebració com es tanca el cercle tot el camí de tornada des de la setmana zero. Avui en dia, parlem d'un dels meus temes preferits, la veritat sigui dita - el de la seguretat i la privacitat i les implicacions de tot el maquinari i programari que tots fem servir avui en dia. Per ser honest, hi ha una gran quantitat d'amenaces per aquí que si realment no han detingut a pensar-hi, en realitat són bastant descoratjador. El cas en qüestió - si algun de vostès alguna vegada has descarregat un programari fora d'Internet i instal · lat a l'ordinador, que ha participat en un important grau de confiança, no? No hi ha res haver impedit Skype, o Chrome, o qualsevol peça de programari que ha instal · lat a l'ordinador, des esborrar tots els arxius en el disc dur; de pujar tots els arxius en el seu disc dur al servidor una mica de noi dolent; de la lectura de tots els seus correus electrònics, a partir d'interceptar tots els missatges instantanis. Perquè la realitat és avui en dia amb els sistemes operatius més moderns en realitat no hi ha molt d'un mur entre els programes de programari que s'instal · len, i tu i jo som més o menys només una mica de creuar els dits i tenint fe en que aquesta aplicació es descarrega de forma gratuïta, o aquesta cosa que és 99 centaus de dòlar, en realitat és completament benigne. Però com hem vist a través de C, i ara PHP i JavaScript, amb aquesta capacitat d'expressar-nos mitjançant programació, vostè pot fer gairebé qualsevol cosa que vulguis amb un programa que un usuari mateix o ella mateixa podia fer. Així, avui ens centrem en el tema - no només algunes amenaces, però també defenses. De fet, en el món de la seguretat en general, hi ha una espècie d'aquest joc del gat i el ratolí, i m'atreveixo a dir als nois dolents tenen gairebé sempre un avantatge. Quan es tracta de prendre avantatge de maquinari i programari en els ordinadors personals, hem de donar-nos compte que un noi dolent, simplement ha de trobar un simple error - una explotació, un error - en una peça de programari que hem escrit o estan en execució perquè ell o ella per prendre el control del nostre sistema. Per contra, nosaltres - els bons - que apedaçar i corregir tots aquests errors i evitar totes aquestes debilitats. I així, m'atreveixo a dir que, en general, els nois dolents tenen l'avantatge. Què classes de classes com aquesta i posteriors són realment no se li ensenya sobre com lliurar les batalles que aquests nois dolents fan, però són sobre com protegir-se a si mateix o almenys com fer una decisió calculada això sí, sé que aquest tros de programari realment podia llegir cada un dels meus correus electrònics, però estic d'acord amb això pel valor que em porta a l'altra. Estic molt content d'estar units per dues de les persones més intel · ligents que conec - Rob Bowden i Hardison Nate. Rob està a punt de portar-nos per un recorregut a través dels nivells més baixos de les etiquetes de seguretat - la del compilador que, fins ara, tots hem arribat a estimar i confiar. Rob Bowden. [Aplaudiment] [Rob] D'acord. David ha pres gairebé tota la meva Spiel que m'anava a presentar amb, però - Fa diverses setmanes, vostè va veure l'exemple d'un atac de desbordament de la memòria intermèdia que és un exemple d'un pirata informàtic de hacking en alguna peça de programari que no se suposa que estan piratejant. L'altre costat d'aquest és de vegades has programari maliciós que és en si i per si mateix. No necessita ni tan sols ser hacker. La persona que va escriure el programari vol hackejar. Anem a entrar de ple en el codi, fer una ullada a "login.c". Aquí, un programa tonto que valida un nom d'usuari i una contrasenya. Aquí definitivament ha de ser sentir-se còmode amb C de nou per al concurs. En primer lloc, estem usant aconseguir cordes per descriure el nom d'usuari, llavors estem usant get cadena per agafar la contrasenya, i després tenim algunes comprovacions trivials de la justa, és el nom d'usuari "robar"? I és la contrasenya "thisiscs50"? O és el nom d'usuari "tommy" i la contrasenya "i <3javascript"? Si qualsevol d'ells és el cas,  llavors només anem a imprimir el "èxit", i després tenim accés. En cas contrari, anem a imprimir "no vàlid d'inici de sessió" i després, per descomptat,  ja que la memòria malloc esbós cadenes, hem nom d'usuari i contrasenya gratis. Aquest és un programa de connexió trivial, i si ho penses en iniciar-vos al dispositiu, és bastant semblant - o fins i tot accedir al seu ordinador - només hi ha algun programa d'inici de sessió que et dóna accés. A continuació, passem a tenir codificat 'rob', 'thisiscs50', 'Tommy', 'i <3javascript', però probablement hi ha algun arxiu en algun lloc del seu sistema operatiu que té una llista de noms d'usuaris que poden iniciar sessió en el sistema i una llista de les contrasenyes associades amb els noms d'usuari. En general, les contrasenyes no s'emmagatzemen en text pla només d'aquesta manera. Hi ha algun tipus de xifrat, però això farà per al nostre exemple. Venint al nostre compilador - que serà molt senzill. Hem d'especificar almenys algun arxiu que volem compilar, I després aquí - aquestes línies s'acaba de llegir un arxiu. Es llegeix tot l'arxiu en un memòria intermèdia gran, i després ens null-acabarà nostre buffer com sempre, i finalment només compilar l'arxiu. No anem a veure com s'aplica realment compilació, sinó com una pista, només crida Clang. Utilitzarem aquest programa per compilar coses en comptes de Clang. Un problema de començar és que veiem que volem compilar el nostre compilador, però si no vas a utilitzar Clang, no sé el que vaig a compilar amb. Aquest és un problema general conegut com bootstrapping. Així que, només per aquesta vegada, vaig a utilitzar Clang per recopilar nostre compilador. Si vostè pensa en GCC i Clang - aquests programes, els compiladors s'actualitzen constantment, i els compiladors es compilen utilitzant GCC i Clang. Clang és només una gran C o C + +, de manera que el compilador s'utilitzi per instal aquest és Clang. Aquí, ara, només anem a utilitzar el nostre compilador per compilar el compilador, i fins i tot podem dir - '/ compilador.', 'compiler.c', 'compile.c', '-o compilador. Vegeu aquest és l'ordre exacte que va córrer davant - n'hi ha prou amb substituir Clang amb '. / compilador. I ara tenim un altre compilador, però és exactament el mateix. Simplement diu Clang. Anem a utilitzar el nostre compilador per compilar el nostre programa d'inici de sessió. Està bé - ". / Compilador login.c-o login". Per tant, undefined reference to "GetString". Tens un "-lcs50". Bé. Així que ara tinc el programa d'inici de sessió. Executar - rebre "Si us plau, introdueix el teu nom d'usuari". Un exemple va ser robar. Introduïu la contrasenya - thisiscs50. I l'èxit! Tinc accés. Executar de nou i entrar en algun contrasenya no vàlida - o nom d'usuari vàlid i la contrasenya - Login incorrecte. Bé. Res interessant sobre això fins ara. Però, anem a fer una ullada en iniciar la sessió de nou - i això serà un exemple una mica trivial, però anem a afegir una cosa aquí i dir: else if ((strcmp (nom d'usuari, "hacker") == 0 && strcmp (password ", LOLihackyou") == 0)) de manera que ara, printf ("Hacked Ara té accés \ n!."); bé. Compilació d'això - compilador login.c-o login-lcs50 - ara corrent identificar - i si faig servir el nom d'usuari hackers i la contrasenya LOLihackedyou - Em escriu malament allà abans? En login.c--ihack - I'Ll es va tallar perquè crec que fer això més tard. Bé. Tornar a compilar. Re-running - hacker - LOLihackedyou - Hacked! Ara té accés. No sembla que gran part de la diferència perquè és la mateixa comprovació exacta que estava fent per altres noms d'usuari i contrasenyes. A més, l'important és que si la gent mira això-login.c - dir, si jo fos a passar això a la meva parella, i obrir aquest arxiu, i llegeixin això, veuran - està bé, per què tens aquestes línies de codi en aquesta llista? Això no és, òbviament, una cosa que hauria d'estar en el seu programa. En alguns programes - com qualsevol programari propietari que no és de codi obert - vostè pot mai veure aquestes línies de codi. Una cosa com Skype o alguna cosa així - per tot el que sé, Skype està en l'equip i no és només un nom d'usuari i contrasenya específica combinació que es connectarà a Skype en una forma especial. No sabem d'ell, i la gent no sap sobre ell, perquè no s'arriba a llegir el codi font per veure que hi ha d'aquest forat. El que anomenem això - encara que això no és un exemple molt intel · ligent - això es diu una porta del darrere. Si vostè pensa en la porta del darrere de casa. Aquí, si puc validar amb "robar" els noms d'usuari o 'Tommy' que seria com utilitzar la "porta d'entrada". Aquesta és la manera que he de iniciar sessió segura. Però si entro amb aquest nom d'usuari i contrasenya - després de que l'useu la "porta del darrere". No era la manera intencional per entrar al programa, però encara funciona. I la gent en general, no se suposa que han de saber sobre aquestes portes posteriors. Millorarem això. Anem a revertir aquesta al nostre login.c original, i anem a fer una ullada al nostre nou compilador. Bé. Tot fins aquí és exactament el mateix. Estem llegint tot l'arxiu en un memòria intermèdia. Aquí tot és el mateix. Ens acaba de compilar l'arxiu. Però ara tinc aquesta cosa si aquí diu que, si l'arxiu que se m'acut és que la compilació login.c, llavors faig alguna cosa especial. Què és aquesta cosa especial? Veig aquí un tros de corda anomenat 'hack', i mirant a aquestes línies de codi - aquestes són les mateixes línies de codi - Suposo que vaig fer ús "ihack 'i no' ihacked" abans - mirar aquestes línies de codi, són les mateixes línies exactes del codi que tenia en login.c abans. Però ara, en comptes de tenir-los en login.c, Em posaré en el meu compilador. Aquestes són les línies de codi que vaig a voler per inserir en login.c. Aquestes línies de codi - la memòria intermèdia que originalment tenia la meva login.c ja no serà prou gran, perquè ara vull inserir també aquest hack enmig del meu programa. Tot això fa és crear un nou buffer que és prou gran - tant per al fitxer original i les línies addicionals de codi - el hack - que vull inserir allà. Aquí hi ha alguna cosa per notar - char * pattern = "/ / negar-los l'accés!" Si mirem cap enrere en login.c, veiem aquí aquest comentari - negar-los l'accés! En login.c, aquest comentari es veu completament innocu, pel que no es sospita de qualsevol intent maliciós amb només aquest comentari. Però en el nostre compilador, se'ns mirarà específicament per a aquesta línia de codi, i després, quan la trobem - aquestes línies de codi a inserir nostre tallar en aquesta posició. Per tant, estem interactuant sobre la login.c sencer, estem inserint aquest truc exactament on diu negar-los l'accés, i llavors estem compilant - no l'original de login.c però el login.c nou amb aquest truc inserit a la dreta en "denegar l'accés. Ara vull compilar el meu nou compilador amb aquest truc en qüestió. Jo no vaig a utilitzar Clang, així que anem a copiar el compilador que fem servir anteriorment i l'ús que - pel que, compilador compiler.c compile.c-o evil_compiler. Ara el nostre compilador malament - si fem servir el compilador per compilar el mal qualsevol altre arxiu, l'arxiu es compila com hauria. És completament normal. Però si utilitzem el nostre compilador per compilar el mal d'identificar - així, / evil_compiler login.c-o login-lcs50. - mirant login.c de nou, no és pas aquí. És la nostra costum "si està bé robar o tommy estem, més ens anem '. Però quan ens trobem el nostre executable, això funcionarà com de costum. Execució de nou - hacker, LOLihackyou - Hacked! Ara té accés. Amb només mirar login.c, vostè no pensaria que alguna cosa està malament. No obstant això, el compilador que està sent utilitzat per compilar login.c està dissenyat específicament per inserir aquest tall en el programa. Només hem traslladat el nostre problema original. Originalment, teníem aquestes línies de codi en login.c que si algú més els mirava, que seria com, per què ets aquí? Ara bé, si algú passa a buscar al nostre compilador, es veuran en aquestes línies de codi i dir: Per què ets aquí? Per tant, no hem resolt completament el nostre problema. Però podem utilitzar aquesta idea de nou. Fent un cop d'ull a la nostra tercera versió del compilador, És la mateixa idea. Llegim tot l'arxiu en un memòria intermèdia fins aquí, es compila l'arxiu d'aquí baix, i tinc algun tipus de hack cadena aquí, notar l'arxiu que en realitat estic hackejant ara. Sóc compiler.c pirateria no login.c. Però què estic inserint en compiler.c? Estic inserint el codi que és el codi exacte en el nostre compilador anterior, que tenia per objecte inserir codi en login.c. Aquí està la nostra si login.c arxiu strcmp i després inserir en les nostres coses login.c hack. Aquest nou compilador es pretén crear un compilador que està destinat a compilar inici de sessió maliciosament. Anem a veure per què això ens ajuda. Tota la resta és el mateix, de manera que funciona exactament com funcionava amb el nostre compilador anterior. Només estem interactuant sobre el nostre compile.c sencer. Però ara, en comptes de buscar 'negar-los l'accés " estem buscant "compilar l'arxiu. ' Quan es compila l'arxiu? Quant al nostre compiler.c completament innocent, està just aquí baix a la part inferior. Aquest comentari - compilar l'arxiu - de nou, que sembla totalment innocu. Però, en la nostra versió maliciosa del compilador, anem a - just abans que el comentari - introdueixi el codi que té per objecte inserir codi en compilar login.c. Hi ha una gran quantitat de nivells de indirecció aquí. Anem a executar realment. Un cop més, anem a copiar el nostre compilador original. Ara, compili - compilador compiler.c compile.c-o evilest_compiler - i ara evilest_compiler. Més malvat compilador - si fem servir això per compilar el compilador, veurem en realitat. Evilest_compiler - portant sobre, tot el camí de tornada a la versió 1 del nostre compilador - versió 1 del nostre compilador que s'acaba de llegir a l'arxiu i compilar. En aquest cas, sabem que evilest_compiler - quan es compila l'arxiu - es va a inserir codi aquí abans de compilar l'arxiu, i que el codi es veurà exactament com el codi de la segona versió del nostre compilador que va fer això. Aquest codi, que està destinada a entrar en inici de sessió, serà inserit en el nostre compilador per compilador més malvat. Fem servir evilest_compiler per compilar el nostre compilador. Ara utilitzarem compilador, tornar a iniciar sessió, i recorda que això no té absolutament res login.c sospitós en ell. Però l'ús del nostre compilador per compilar login.c, rob, thisiscs50, l'èxit. Hackers Anem a inici de sessió, LOLihackyou, Hacked! Ara té accés. Reconèixer que això era diferent de la versió 2 del nostre compilador. El compilador que utilitzem - tornarem - còpia d'identificar - portarem el nostre compilador de tornada aquí. Extracció de compilador més malvat. Tot el que queda ara és compilador. Si ens fixem en compiler.c, no és pas allà que sembla malintencionat de cap manera. Si ens fixem en login.c, no és pas en què es veu aquí maliciós de cap manera. No obstant això, quan utilitzem el nostre compilador per compilar login.c, tenim la versió hackeable de login.c. Quan utilitzem el nostre compilador per compilar una nova versió del compilador, tenim la versió hackeable del compilador. Ara bé, si sortim i distribuir el nostre executable del compilador, i ningú sabrà que no hi ha res maliciós en això. Això és en realitat el que en - no puc recordar l'any - Ken Thompson, i va guanyar el Premi Turing - si no està familiaritzat amb el Premi Turing, és gairebé sempre definida com la Premi Nobel de ciències de la computació, així és com ho vaig a definir. Ken Thompson va pronunciar un discurs quan va rebre el Premi Turing anomenat "Reflexions sobre la confiança que confien." Bàsicament, aquesta va ser la idea del seu discurs. Excepte que en comptes del nostre compilador, que estava parlant GCC - només un altre compilador com Clang - i el que estava dient és, com el nostre login.c, el nostre login.c sembla relativament inútil però ell estava parlant de l'actual login.c UNIX. Quan vostè accedeix al teu aparell, hi ha algun programa d'inici de sessió que s'està executant. Aquest va ser l'inici de sessió que ell estava parlant. Això era bàsicament la seva idea. Va dir que en GCC, que en teoria podria haver plantat un error - no és un error sinó un codi maliciós - que en compilar la funció d'inici de sessió - l'arxiu d'inici de sessió - s'inseriria una porta del darrere perquè pogués anar a absolutament qualsevol sistema UNIX al món i entrar amb algun nom d'usuari i una contrasenya específics. Alhora, GCC era més o menys el compilador que tothom serveix per a res. Si algú li va passar a actualitzar GCC, llavors seria tornar a compilar GCC usant GCC, i encara tindria una mala versió de GCC perquè va ser compilat específicament per reconèixer que va ser recompilar el compilador. I si mai utilitza GCC per compilar un arxiu login.c, llavors seria inserir aquesta porta del darrere que podia utilitzar per iniciar sessió en qualsevol ordinador. Això va ser tot teòric, però - aquesta circumstància en particular era teòrica, però les idees són molt reals. El 2003, hi va haver un exemple similar en el qual - anem a fer una ullada a aquesta imatge, i no té absolutament res a veure en realitat amb ell, però l'error és similar. Aquest arxiu només defineix una funció anomenada bretxa. Cal un argument a, b un argument, i la intenció és fer un món dividit per b. Però fa algun revisió d'errors, així que sabem que les coses són rares si b passa a ser igual a zero. Si b és zero, llavors ens dividim això en 2 casos. Vostè ja pot veure l'error. El primer cas - si a és zero, llavors estem fent zero dividit per zero, i ens diuen que això és indefinit. El segon cas - si A no és igual a zero, llavors és una cosa com 1 dividit per zero, i anomenem a aquest infinit. Una altra cosa que tornar l'usual a dividit per b. Així que aquí, ens estem quedant els 3 casos, i que fa és executar divisió - que li crida a ell per a mi - Així que, fent cas omís de les advertències de Clang - tal de no anul · lar la funció - pel que sembla jo no compilar això per endavant. Retorna 0. Feu dividir - Està bé. Con / Divisió, veiem 3, Infinity, Infinity. Zero dividit per zero no hauria d'haver tornat infinit. I si no s'han adonat de l'error encara - o no ho van veure abans - veiem que estem fent a = 0. Probablement ens referíem a == 0. Probablement. No obstant això, això va ser en realitat una cosa que, de nou, el 2003, el nucli de Linux - pel que el nostre aparell utilitza el nucli Linux - qualsevol sistema operatiu Linux utilitza el nucli Linux - de manera que un error molt similar a aquest va aparèixer. La idea darrere d'aquest error va ser - de nou, no era només una funció que es diu, i ho va fer una mica de comprovació d'errors. Hi va haver alguns insums específics que aquesta revisió d'error - el que hauria d'haver estat així, està bé, no es pot cridar a aquesta funció amb un divisor de 0. Per tant, vaig a tornar només alguns errors. Excepte, que no era tan innocent com s'acaba d'establir un igual a 0. En el seu lloc, aquesta línia de codi acabem fent alguna cosa més com a root =. O user = root. Es tractava d'un innocent - a primera vista - error en què podria haver estat només raonable que jo només volia informar d'alguna cosa específic si l'usuari va passar a ser l'administrador de superusuari. Però després tornar a pensar-hi, la persona que volia que es veiés com un simple error tipogràfic, però si aquest codi havia estat realment posat en llibertat, llavors hauria estat capaç de hackejar qualsevol sistema passant una bandera específica - en aquest cas b = 0 - i automàticament es crea l'usuari l'administrador, i llavors ell té el control total. Això va succeir en 2003. Va donar la casualitat que l'única raó per la qual va ser capturat era perquè havia passat a ser algun sistema automatitzat que va notar el canvi en l'arxiu que mai hauria d'haver estat canviat per un humà. L'arxiu només s'hauria d'haver generat automàticament. Va donar la casualitat que algú tocat - així, la persona que volia hackejar tocat aquest arxiu, i l'equip capturat aquest contacte. Així, van canviar això i només més tard es va adonar del que és un desastre que hauria estat si això hagués sortit al món real. Vostè pot estar pensant que - tornant al nostre exemple de compilador - tot i que no podem veure - mirar el codi font - que res en particular que està malament, si en realitat ens fixem en el codi binari del compilador, veuríem que alguna cosa va malament. Per exemple, si executem les cordes funcionar - que només va a mirar per sobre d'un arxiu i imprimir totes les cadenes que pot trobar - si ens quedem sense cordes al nostre compilador, veiem que una cadena que es troba és aquesta estranya - else if (strcmp (nom d'usuari, "hacker") - bla, bla, bla. Si algú va passar a ser paranoic com per no confiar en la seva compilador, podrien executar les cordes i veure això, i llavors ells sabrien que hi havia alguna cosa malament amb el binari real. No obstant això, les cadenes era una cosa que inevitablement es va compilar. Així que, qui pot dir que el nostre compilador no només té més codi especial que diu, si les cadenes s'executi cada vegada en el nostre compilador, no es genera tot el codi maliciós. La mateixa idea que si volem desencadellar l'arxiu - ens assabentem que l'assemblador ens porta de codi assemblador a un codi màquina - podem anar en la direcció oposada - objdump-d compilador - ens donarà el muntatge del nostre codi. Quant a això, és bastant críptic, però si volíem, podíem veure a través d'aquest i la raó, espera, hi ha alguna cosa que fer aquí que no hauria d'estar passant, i després anem a reconèixer que el compilador està fent alguna cosa maliciós. Però, així com les cadenes, qui pot dir objdump no era especial amb carcassa. Bàsicament, tot es redueix a que no pots confiar en res. La qüestió del paper que es diu "Confiança Confiar" és en general, confiem en el nostre compilador. Compilar el codi i esperar que el que em demanes que faci. Però, per què hauria de confiar en el compilador? No va escriure el compilador. No sap el que el compilador està necessàriament fent. Qui diu que vostè pot confiar-hi? Però fins i tot llavors, bé, potser podem confiar en el compilador. Hi ha desenes de milers de persones que han estudiat en això. Algú ha d'haver reconegut que alguna cosa estava passant amb el compilador. I si només ha d'anar un nivell més profund? Fins i tot podria ser el seu processador. Per ridícul que pugui ser, potser hi ha algun murri empleat d'Intel que crea aquests processadors que cada vegada que el processador s'adona que està executant alguna ordre que és la intenció d'iniciar sessió a l'ordinador, el processador acceptar algun nom d'usuari específic i una contrasenya. Seria tremendament complicat, però algú podria fer-ho. En aquest moment, està vostè realment va a obrir l'ordinador per mirar el processador i l'ús d'un microscopi per reconèixer que aquests circuits no estan alineats com haurien de ser? A ningú se li va a agafar aquest error. En algun moment, vostè només ha de rendir-se i confiar en alguna cosa. La majoria de la gent confia en el compilador en aquest punt. És a dir, no necessàriament que vostè ha. Mirant una mica infame vídeo - [Música dramàtica jugar] [És un sistema UNIX. Sé que això.] [És tots els arxius -] Ella va dir: "És un sistema UNIX. Sé que això." Reemplaci UNIX amb el que el seu sistema operatiu favorit és - ella podria haver dit: "És un sistema Windows. Sé que això." És una afirmació completament sense sentit, però pel que sabem, ella passa a conèixer una porta del darrere en el sistema UNIX. Ella sap alguna combinació nom d'usuari / contrasenya que realment li deixarà fer el que vulgui. Està bé. La moralitat d'avui és, bàsicament, no es pot confiar en res. Fins i tot les coses que escrius - vostè no va escriure el compilador. El compilador pot ser dolent. Fins i tot si ho va fer escriure el compilador, el que s'està executant el compilador podria ser dolent. (Rialles) No hi ha molt que puguis fer. El món està condemnat. Retorn a David! [Aplaudiment] [David] Gràcies. Això va ser realment depriment. Però de fet, Rob és correcta. Realment no tinc una solució per això, sinó que està a punt d'obtenir algunes solucions a algunes defenses més comuns. En previsió d'això, el que Nate i jo hem estat fent fora de l'escenari hi ha és saber que hi ha tantes portàtils en aquesta sala, hem estat ensumant tot el tràfic sense fil passant per aquest lloc per als últims 20 minuts durant la xerrada de Rob, així que anem a prendre un descans de 2 minuts aquí. Nate va a configurar, i després parlarem de totes les coses que podríem haver trobat. (Rialles) Per tant, pot ser que hagi exagerat una mica pel simple fet de drama, però podríem haver estat ensumant tot el seu trànsit sense fil perquè en realitat, és així de fàcil. Però també hi ha formes en què pot defensar-se contra això, i així amb això, Et dono Nate Hardison. >> [Nate] Sweet. (Aplaudiments) [Nate] Gràcies, home. Agraeixo el crit. Molt bé! És la setmana de joc. Estan emocionats? És d'esperar que serà un gran partit dissabte. M'imagino que vostès en aquest moment - ja que tens un examen dimecres tot sobre el codi, i ens vam asseure a través d'una conferència meravellosa per Rob amb un munt de codi C en ell - són potser una mica cansat de codi. En aquesta part, estem en realitat no tocarà cap codi en absolut. Només parlarem d'una tecnologia que s'utilitza cada dia, sovint per moltes, moltes hores al dia, i anem a parlar de les implicacions en la seguretat que no ho són. Hem parlat molt sobre la seguretat al llarg del semestre, i comencem amb una mica de criptografia. [Bdoh lv vwlqng!] I mentre vostès estan probablement súper emocionada d'estar passant notes entre si a classe mitjançant un xifrat de Cèsar com aquest, en realitat, hi ha alguna cosa més que s'havia divertit quan en realitat estàs parlant de seguretat i aquest tipus de coses. Avui en dia, anem a cobrir algunes tecnologies que les persones utilitzen realment en el món real per fer tot tipus de coses d'olorar els paquets de la gent per realment entrar i irrompre en els comptes bancaris de la gent i tot això. Aquestes són eines legítimes que estem parlant amb l'excepció d'possiblement una eina. I jo només vull fer un aclariment ràpida. Quan parlem d'aquestes coses, estem parlant d'ells perquè sàpiga el que hi ha fora, i ets conscient de com estar segurs quan vostè està fora mitjançant l'ordinador. Però definitivament no vull donar a entendre que vostè ha d'utilitzar aquestes eines a la seva habitació o casa perquè vostè pot tenir un munt de grans temes. Aquesta és una raó avui en dia que en realitat no estaven ensumant seus paquets. Està bé. Dilluns passat, hem parlat sobre les galetes i HTTP i autenticació, Firesheep i com s'obre la porta gran en el seu compte de Facebook, al seu compte de Hotmail - si algú segueix usant Hotmail - i moltes altres comptes. Moltes d'aquestes coses es construirà fora d'això, però en primer lloc, vull fer un recorregut ràpid de com l'Internet ha evolucionat amb el temps. En els anys 90, vostès podrien haver recordat realment connectar els equips amb un d'aquests. Ara ja no faig això tant més. En realitat, resulta que per connectar un cable Ethernet en el meu portàtil, Ara he de fer servir un d'aquests adaptadors, que és una bogeria. En canvi, el 1997 vam tenir aquesta nova tecnologia, diversió transcendir que es coneix com IEEE 802.11, de manera que aquest és l'estàndard sense fil a internet El IEEE és aquest òrgan de govern que li dóna tota mena de - publica tot tipus de normes amb relació a les computadores. Els estàndards 802 són tots sobre les tecnologies d'Internet. Així 802,3, per exemple, és l'estàndard d'Ethernet, 802.15.1 crec que és l'estàndard Bluetooth, i 802.11 és tot sobre Internet sense fils. El 1997, aquest va sortir. No vaig entendre bé immediatament. No va ser sinó fins a 1999, i l'estàndard 802.11b va saber que acaba d'aconseguir realment popular. Quants de vosaltres recorden quan els equips van començar a sortir i aconseguir sense fil en ells? Això era una mena de fresc, no? Recordo que vaig rebre la meva primera ordinador portàtil a l'escola secundària, i que tenia una targeta sense fils en ella. El meu pare em va donar i em va dir que he d'utilitzar per les meves aplicacions universitat i tot això, i jo no tenia idea de com anava a buscar aquest material en línia. Però, afortunadament, jo tenia una targeta sense fils, de manera que era bastant guai. Avui dia, vostè també veurà 802.11g, que és un dels altres realment popular estàndards sense fils que hi ha allà fora. Tant B i G són bastant obsoletes en aquest punt. Algú sap quina versió de la majoria de les persones estan ara mateix si va a comprar nous routers sense fils i aquest tipus de coses? N. Exactament. Bingo. I resulta que la norma de CA està sortint en forma d'esborrany, i hi ha altres versions en el camí. Amb cadascuna d'aquestes normes el que estem obtenint és més ample de banda, més dades a una velocitat més ràpida. Aquestes coses van canviant molt ràpidament. També ho fa així que hem de comprar més routers i totes aquestes coses divertides. Anem a parlar del que realment és la comunicació sense fils en el seu nucli. Amb Ethernet i els mòdems antics de marcatge directe, que en realitat tenia aquesta cosa que s'ha connectat al seu ordinador, i després connectat a un mòdem de tipus, i després ho endolla a una presa a la paret. Havies de aquesta connexió per cable, no? El punt sencer de la tecnologia sense fils és desfer-se d'aquestes coses. Per tal de fer això, el que tenim és essencialment una comunicació de ràdio on el nostre router sense fil - designat pel nostre petit icona de xarxa sense fils - està connectat a la Internet amb aquesta fletxa sòlida que indica algun tipus de connexió per cable, però quan es connecta al seu encaminador sense fils en realitat estàs fent servir gairebé com un walkie-talkie entre l'ordinador i el router sense fil. El que és realment bo d'això és que vostè pot moure. Vostè pot portar el seu equip per tot Sanders, vagi navegar per la web, el que vulguis, igual que tots coneixem i estimem, i no sempre ha de ser connectat a res. Perquè això funcioni, tenim tant la recepció i la transmissió. Realment és així de walkie-talkie. Aquest router sense fil - que en Sanders està assegut sota d'aquesta etapa, aquí - sempre la transmissió i recepció, transmissió i recepció, i de la mateixa manera, els equips estan fent el mateix tipus de cosa, també. Simplement no es pot sentir. L'altra cosa que pots fer és que vostè pot tenir diversos ordinadors parlant amb el mateix router sense fil. Com més a prop es trobi d'una router - i de nou, es tracta d'una comunicació de ràdio - com més a prop estigui, millor serà el seu senyal és, el millor del seu equip "sent" el router i pot comunicar-se amb la Internet. Si vostès alguna vegada en el seu dormitori, a casa teva i et preguntes per què el senyal és dolenta, probablement sigui degut a). no estàs molt a prop del teu router, o b). hi ha alguna cosa entre tu i el teu router com un mur de ciment o alguna cosa que no permet que les ones de ràdio passen. Anem a parlar una mica sobre per què els nois dolents de wi-fi. Els mals estimen sense fil per diverses raons. Aquí està el nostre noi dolent dolent allà. Una de les raons per què aquest noi dolent estima sense fil és perquè, per defecte, una gran quantitat de routers sense fils vénen i quan els va crear, que estan sense encriptar. Aquest ha estat un problema, i s'han donat casos - diverses instàncies, ara - on el dolent es presenta a la casa d'algú, s'adona que hi ha un xifrat Wi-Fi a la qual es pot connectar. Es connecten a la connexió sense fil, i després començar a descarregar tot tipus de coses divertides. I no la descàrrega gatets, no la descàrrega cadells. Això és com BitTorrent. Aquesta és la repugnant de la més repugnant. Hi ha hagut casos en què fins i tot el FBI ha ficat pensar que la persona que és propietària de la casa és en realitat la sortir a la pista i descarregar coses que realment no hauria de ser. Un cop xifrats sense fil no és definitivament una cosa que vostè vol fer, encara que només sigui per no tenir l'FBI vingui a trucar a la seva porta. Una altra raó per la qual els mals estimen sense fil és la raó per la qual David parlat abans durant el descans. Com que és una comunicació de ràdio en el seu nucli, si es coneix el canal, es pot escoltar aquesta emissora de ràdio. Per exemple, si hi ha un dret dolent allà assegut al centre a la dreta al costat del punt d'accés, just al costat d'aquest router sense fil, el dolent de la pel · lícula pot escoltar tot el tràfic sense fil que ve de tots aquests equips. De fet, aquests nois - aquests pocs afortunats que estan a la primera fila - perquè són super-prop de tots aquests routers sense fils que se sentin just sota de l'escenari, que seria capaç de sentir el trànsit de tots en aquest quart sencer si estàs connectat a sense fil i començar a navegar a través d'aquests punts d'accés. No és molt difícil seure a si mateix en una bona posició per ensumar i trobar la el que els altres estan fent. És una cosa a tenir en compte, especialment si no estàs segur d'on és el punt d'accés és, i que està navegant, diguem, en un Starbucks. Resulta que fa olor i tot això no és realment tan difícil de fer. Hi ha un programa anomenat tcpdump que bolca tota mena de tràfic TCP i es pot córrer bastant simplement - com ho vaig fer aquest matí. Aquí està una mica d'un tuguri, i aquí hi ha una part del trànsit que vindria la meva xarxa en el moment. Vostè pot veure - si vostè escodrinya realment difícil - hi ha una mica de Spotify en aquest país. A la part superior de tcpdump - perquè aquest és un tipus de dolor d'usar - hi ha un programa anomenat Wireshark que fas tot això en una interfície gràfica d'usuari agradable. Wireshark és súper pràctic així que si vas a prendre classes de xarxes, aquesta és una eina que et trobaràs a l'amor, ja que l'ajuda a analitzar tots els paquets que estan surant per aquí. Però també es pot utilitzar per al mal. És molt simple només ha de descarregar aquest programa, arrencar cap amunt, iniciar una captura de xarxa, i veure tot el que està passant - i el filtre i fer tot tipus de coses divertides amb ell. L'altra cosa que vostè pot fer amb la comunicació sense fils no només es pot escoltar d'amagat però també es pot aprendre a fotre amb la xarxa i injectar la seva pròpia informació per controlar l'experiència que altres persones en la mateixa xarxa sense fils està rebent. Anem a fer una ullada a això. Aquí està Firesheep - que coneixem i estimem de la setmana passada - que és que la tecnologia d'escoltes. Si, per exemple, volíem tenir el nostre activament go dolent i perdre el temps amb un d'aquests equips, en aquest cas tenim un equip tractant d'anar de surf per harvard.edu. El que passa és que el primer ordinador envia un missatge al encaminador sense fils i diu: hey, jo vull anar www.harvard.edu visita. Diguem, per alguna raó, ells estan tractant d'obtenir informació sobre el partit d'aquest cap de setmana. Noi dolent, ja que ell està assegut al centre, just al costat d'aquest punt d'accés, es pot veure que la comunicació procedent de l'ordinador al router, i ell ho sap: "Vés per on Algú va a harvard.edu". (Malvadament rialles) Serà aquesta latència mentre que la comunicació va des del router a Internet per anar a buscar a la pàgina web a-harvard.edu - com tots vostès saben després de fer els seus conjunts de processadors PHP - de manera que el dolent de la pel · lícula té una mica de temps, una mica de la finestra, en la qual es pot respondre amb algunes coses. Diguem que aquest noi dolent, per descomptat, és un Yaley. Ell respon amb harvardsucks.org. Boo! Noi dolent, dolent! Bad Yaley! O pitjor encara, podria respondre amb això. [Http :/ / youtu.be/ZSBq8geuJk0]. Vaig a deixar que vostès imaginar el que és. Això és realment una tecnologia anomenada airpwn! que es va estrenar una de les conferències de seguretat de tornada d'uns anys. Amb airpwn! vostè és capaç d'injectar en realitat el trànsit de tornada a la xarxa. Els equips que tractaven de sortir a Internet i tractant d'arribar a Google.com, a Facebook.com, a harvard.edu veure la resposta maliciós entrar i assumir immediatament, d'acord, aquesta és la resposta que esperava i acabar sobre d'aconseguir el contingut de harvardsucks.org o nameyourfavoriteshocksite.com, i es pot veure la rapidesa amb què les coses van a empitjorar. Tot aquest tipus de coses no es pot fer amb aquestes connexions per cable, ja que amb una connexió cablejada és difícil tafanejar en el trànsit. Si jo sóc un tipus dolent i en un extrem es troba l'equip i en l'altre extrem es troba el router - el mòdem - l'única manera d'aconseguir entre aquesta connexió per empalmar en realitat el meu ordinador en algun lloc en el medi o fer una altra cosa amb el router, aigües avall una cosa així. Però amb la tecnologia sense fils, pot ser tan fàcil com seure a la primera fila d'una aula, i vostè pot fer tot tipus de coses desagradables a la gent a la part posterior. Parlarem de com es pot defensar contra algunes d'aquestes coses. La gent que va desenvolupar els estàndards sense fil - el 802,11 - no són gent tonta per qualsevol tram de la imaginació. Aquesta és una tecnologia freda i quan va debutar el 1999, que va sortir amb aquest estàndard anomenat WEP. Es pot veure aquí quan vostè tracta de connectar a una xarxa sense fils, Té tot tipus d'opcions de seguretat diferents. Això és una mica d'un enuig perquè hi ha 6 tots junts i mai realment té sentit que una a unir-se. Aquest 1 a la part superior és el primer que se'ls va ocórrer anomenat WEP. WEP significa privacitat equivalent a cablejat, crec jo, no protocol de xifrat sense fils que és un nom inadequat comú. Com que intenta donar-li equivalent privacitat i la protecció de la seguretat equivalent a la d'una xarxa cablejada Amb WEP el que acaba passant és, tens contrasenya simple, poc d'escriure i que serveix per a xifrar totes les comunicacions entre l'ordinador i el router. Quin és el problema amb WEP però? La contrasenya de WEP és molt curt, i també que tothom fa servir exactament la mateixa contrasenya,  i pel que és molt fàcil de desxifrar. Així que molt aviat la gent va descobrir que WEP era un problema, i l'única raó que veig aparèixer encara en aquest petit individu és - hi ha alguns sistemes antics que usin WEP - el que en el seu lloc s'ha de buscar són la WPA i WPA2 fins i tot normes que van ser posats en llibertat més tard. Aquests sistemes són un anar molt millor en la protecció d'Internet sense fils. Dit això, encara tenim alguns hackability. Hi ha eines per aquí que pot anar a fer això. Una cosa en particular que pot ser desagradable és que si es connecta i autenticat a un router sense fil i estan utilitzant algun tipus de comunicacions xifrades, resulta que un hacker pot enviar un sol paquet perquè es desconnecti del router, i un cop que t'han desconnectat es pot escoltar en - poden olorar els paquets a mesura que tracten de restablir la connexió amb el router. I amb aquesta informació que després pot entrar i desxifrar la resta de la seva comunicació. Això no és de cap manera cap tipus d'assegurança més enllà de tota imaginació. L'altra cosa que pots fer quan estàs configurant xarxes sense fils o que els està unint és - t'adones que aquí quan m'estic unint a aquesta xarxa, es demana el nom de la meva xarxa. Això també es coneix com el SSID. I vostè veu aquí que en el dret que tinc una caixa que em mostra els SSID disponibles. Hi ha una Universitat de Harvard, CS50 i CS50 una xarxa personal. Ara, ¿quants de vostès sabien que hi havia una xarxa personal CS50 voltant? Alguns de vostès. No tots vostès. El problema amb això, és clar, és que si no posem això en la nostra llista de SSID, ningú hauria sabut d'ella el més probable. Espero. Llevat que vostès estan tractant d'entrar il · legalment al nostre mòbil. Però això és una cosa que pot fer això és molt important quan s'està configurant un router a casa. Això probablement no passarà durant uns anys per molts de vostès, però tingui en compte que el manteniment de SSID de sortir d'allà i no també nomenar alguna cosa súper comú l'ajudarà a mantenir-se més segurs en el llarg termini. Un parell final de les coses que pots fer. Un d'ells és HTTPS. Si vostè està en un Starbucks, si vostè està en un públic sense fil zona i vostè decideix tenir accés al seu compte bancari, accedir al seu Gmail, Facebook, assegureu-vos que les connexions van a través de HTTPS. És una capa addicional de seguretat, una capa addicional de xifrat. L'única cosa a tenir en compte aquí és, Quants de vosaltres heu fet clic a través d'aquesta pantalla gran, vermell que diu: "Aquest lloc web pot ser dolent". Jo sé el que tinc. És probable que quan vostè està navegant a tots a veure a la Pàtria, o alguna cosa així, oi? Si. (Rialles) Si. Aquí ho tens. Sabem qui està mirant Pàtria. Aquesta pantalla gran, vermell allà sovint indica que alguna cosa funky que està passant. De vegades és la pròpia pàgina web és insegur, però aquesta mateixa pantalla gran, vermell apareix quan la gent està tractant de muntatge de xarxa ataca vostè. Així que si vostè veu que la pantalla gran, vermell pujat en un Starbucks, no feu clic a través d'ell. Males notícies. Una colla de pilotes. L'última cosa que es pot veure en és una espècie de VPN. Aquesta VPN està disponible a través de la Universitat de Harvard - vpn.fas.harvard.edu-- i el que això fa és que en realitat estableix una connexió segura entre vostè i Harvard, embuts del seu trànsit a través d'ell, i d'aquesta manera si vostè està assegut en un lloc com un Starbucks pot connectar-se a Harvard, aconseguir que el trànsit segur, a continuació, busqui la Universitat de Harvard. Un cop més no, a tota prova. Les persones poden obtenir en el medi. Poden començar a trencar, però això és molt més segur que confien en la seguretat de la sola sense fil. Està bé. En resum, quan va a configurar les xarxes sense fils, quan es va a utilitzar una xarxa sense fils en públic - si es tracta d'un Starbucks, si es tracta de Five Guys, ja sigui b.good, una cosa així - sempre que tinguin sense fil - ser conscient dels seus voltants. Sigui conscient del que la gent pot fer. I vés amb compte. No entreu al vostre compte bancari. Podria ser un rude despertar si algú apareix amb la contrasenya més endavant. Amb això, anar carmesí! I canviaré les coses de tornada a David per una paraula final. (Aplaudiments) [David] Jo vaig pensar en compartir alguna cosa de la meva experiència personal. Una eina que t'agradaria jugar amb - encara que Apple ha eradicat en gran mesura aquest problema si vostè ha actualitzat el seu programari, ja que - però amb aquesta finalitat de no ser realment capaços de confiar en el programari que utilitzen, i als punts de Nate, sent capaç d'ensumar una mica del que altres persones estan fent per aquí - es tractava d'una peça de programari que va sorgir fa prop d'un any-i-un-meitat ara. [IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] D'un temps, iTunes - abans de icloud, quan estaves sincronitzant els seus iPods o iPhones o els seus o els seus iPads amb iTunes - en l'interès de còpies de seguretat, el que tu iPhone i altres dispositius d'aquests han estat fent durant algun temps és fent ús de les dades de GPS. Tots vostès saben potser que els seus iPhones i Androids i els telèfons mòbils de Windows i el que en aquests dies es pot rastrejar on vostè està en l'interès de mostrar mapes i similars - així el que Apple i aquestes altres companyies fan és en general un seguiment gairebé a tot arreu que vostè ha estat realment en l'interès de millora de la qualitat de servei. Un d'ells, vostè pot obtenir més publicitat dirigida i similars, sinó dos, també poden esbrinar on hi ha punts d'accés sense fil al món, i això pot ajudar amb geo-localització - una mena de triangulació de la posició de les persones. Llarga història curta, tots havíem estat caminant antenes per a una certa quantitat de temps. Desafortunadament, Apple havia pres la decisió de disseny - o falta d'ella - a no xifrar aquesta informació quan estava sent còpia de seguretat a iTunes. I el que l'investigador de seguretat va trobar va ser que es tractava d'un arxiu XML enorme - un arxiu de text enorme - assegut en programari popular iTunes, i si vostè fos una mica curiós, vostè podria anar a furgar la història del seu cònjuge, la història del seu company de quart, història del seu germà i similars, i gràcies a un programari lliure, es pot traçar totes aquestes coordenades GPS - latitud i longitud. Així que en realitat va fer això amb el meu propi telèfon. He connectat el meu telèfon, i per descomptat, la meva versió d'iTunes no s'ha xifrat en el moment, i el que jo podia veure eren els meus propis patrons. Heus aquí els Estats Units i representa cada un d'aquests cercles blaus on es va acudir que va ser durant aquests mesos anteriors de posseir aquest telèfon en particular.  He passat molt de temps, és clar, al nord-est, una mica de temps a Califòrnia, un viatge de curta durada a Texas, i si a continuació, fer un zoom sobre això - tot això és una mena de multa i interessant, però jo ho sabia. La majoria dels meus amics sabien això, però si vostè bussejar més profund, a veure on passo la major part del meu temps al nord-est. Si s'adhereixen a alguns pobles d'aspecte familiar - aquesta taca gran, tinta blava se centra essencialment sobre Boston, i després passar una mica de temps en els suburbis que irradien des de Boston. Però jo també estava fent una mica d'entrevistar amb aquest any. I aquest any és la costa oriental, i de fet pots veure i el meu iPhone a la butxaca del meu viatge d'anada i tornada entre Boston i Nova York Filadèlfia i més avall, així com passar una mica de temps de vacances al cap, que és el braç poc per aquí. Per tant, cada un d'aquests punts representa un lloc que havia estat, i completament desconegut per a mi, tota aquesta història hi era assegut en el meu ordinador d'escriptori. Si el zoom - això en realitat era una mica preocupant. Jo no recordava haver estat mai a Pennsilvània aquest any en particular. Però encara que una mica més dur en això i em vaig adonar, oh, era de fet aquest viatge i per descomptat, el meu telèfon m'havia atrapat. Apple ha posat aquesta informació xifrada, però això també és testimoni de la quantitat d'informació que està sent recopilada per nosaltres, i la facilitat amb què - per bé o per mal - és acceptable. Una de les Suggeriments del xef sort de parlar de Rob, de la xerrada de Nate i les imatges petites, com aquesta d'avui és només per estar tot el coneixedor més d'aquest de manera que tot i que - com a punt de Rob - we're tipus d'fotut, no? No hi ha molt que podem fer quan es tracta d'algunes d'aquestes amenaces, però al final del dia hem de confiar en alguna cosa o algú si volem utilitzar realment aquestes tecnologies. Almenys podem estar prenent decisions informades i decisions calculades o no que realment ha de comprovar aquest compte particularment sensible o que en realitat hauria de ser l'enviament de sospitar que alguna cosa missatge instantani  en un entorn sense fil així. Així que, dit això, només queda un qüestionari, una conferència roman. Ens veiem el dimecres després del dilluns. (Aplaudiments i exclamacions) [CS50TV]