[Powered by Google Translate] [Tjedan 10] [David J. Malan] [Sveučilište Harvard] [Ovo je CS50.] [CS50.TV] Sve u pravu! Ovo je CS50, ali ne i za mnogo dulje. Ovo je početak tjedna 10. U srijedu smo naš kviz, i onda sljedeći ponedjeljak imamo neke slavljeničko tortu kao što smo došli puni krug sve na putu natrag iz tjedna nule. Danas govorimo o jednom od mojih omiljenih tema, istina se javi - da je sigurnost i privatnost i implikacijama sve hardver i softver da smo svi koriste ovih dana. Da budem iskren, postoje puno prijetnji vani da, ako niste stvarno zastane razmišljati o njima, oni su zapravo prilično zastrašujuće. Slučaj u točki - ako itko od vas ikada skinuti komad softvera izvan Interneta i instalira na računalo, ste sudjelovali u značajnom stupnju povjerenja, zar ne? Ne postoji ništa što spriječiti Skype ili Chrome, ili bilo koji komad softvera ste instalirali na računalo, od jednostavno brisanje svih datoteka na tvrdom disku; prenositi sve datoteke na tvrdom disku na neki negativac poslužitelju; od čitanja svih vaših e, od presretanja sve svoje instant poruka. Budući da je stvarnost danas s najmodernijim operacijskim sustavima tamo stvarno nije puno zid između softverskih programa koji smo instalirati, i ti i ja smo prilično mnogo samo vrsta križanja naše prste i uzimanje na vjeri da je app smo besplatno skinuti, ili da je stvar da je 99 centi, je zapravo potpuno benigna. No, kao što smo vidjeli kroz C, a sada PHP i JavaScript, s ovim sposobnost da se izrazi programiranjem, možete učiniti najviše što god želite s programom koji sam korisnik ili sama mogla učiniti. Dakle, danas ćemo se usredotočiti na tu temu - ne samo neke prijetnje, ali i obranu. Doista, u svijetu sigurnosti u cjelini, postoji vrsta ovog mačka i miša igra, i ja pretpostavljam negativci gotovo uvijek imaju nogu. Kada je u pitanju uzimanje prednost od hardvera i softvera na našim osobnim računalima, moramo shvatiti da negativac jednostavno treba pronaći jednu jednostavnu grešku - jednom iskoristiti, jedan bug - u komad softvera mi smo pisanog ili trčanje kako bi za njega ili nju da preuzme naš cijeli sustav. S druge strane, mi - dobri momci - treba zakrpati i popraviti sve one bugova i izbjegavati sve one slabosti. I tako, ja pretpostavljam u cjelini, negativci imaju prednost. Što klase kao što je ovaj i kasnijim razredima su stvarno o se ne radi o vas uči kako voditi bitke koje su ti loši momci učiniti, ali su o tome kako bi zaštitili sebe ili barem kako bi izračunati odluku da da, znam da je ovaj komad softvera doista mogao pročitati svaki jedan od mojih e-pošte, ali ja sam ok s tim, jer je vrijednost to mi donosi druge strane. Ja sam jako drago da se pridružili 2 od najpametnijih ljudi koje poznajem - Rob Bowden i Nate Hardison. Rob je oko nas odvesti na turneju po najnižoj razini sigurnosnih oznaka - da je prevodilac, koji je do sada, svi smo došli na ljubav i povjerenje. Rob Bowden. [Pljesak] [Rob] U redu. David je prilično mnogo uzeti cijeli moj spiel da ću upoznati s, ali - Nekoliko tjedana prije, vidjeli ste primjer tampon-preljeva napada što je primjer hakerskog hakiranja u neki komad softvera da oni ne bi trebali biti hakiranje. Druga strana ove ponekad imate softver koji je zlonamjeran u sebi. To ni ne treba hakirana. Osoba koja je napisala softver vam želi hack. Ajmo skočiti pravo u kodu, uzimanje pogledati "login.c". Evo, glup program koji potvrđuje korisničko ime i lozinku kombinacija. Ovdje svakako treba biti dobivanje udoban sa C opet za kviz. Prvo, mi koristimo dobiti konce opisati korisničko ime, onda smo pomoću get string zgrabite lozinke, i onda imamo neke trivijalne provjere samo je ime "orobiti"? A je lozinka "thisiscs50"? Ili, je korisničko ime "Tommy" i lozinku "ja <3javascript"? Ako bilo tko od onih koji je slučaj,  onda mi samo ide za ispis "uspjeha", a onda imamo pristup. Inače, mi ćemo ispisati "nevažeći login" i onda, naravno,  od skica konce malloc memoriji, mi besplatno korisničko ime i lozinku. To je trivijalna prijava programa, i ako mislite o tome kada se prijavite na aparatu, to je prilično slično - ili čak da se prijavite na računalo - postoji samo neki login program koji je dajući vam pristup. Evo, mi se dogoditi da se teško-coded 'Rob', 'thisiscs50', 'Tommy', 'ja <3javascript', ali vjerojatno postoji neki datoteku negdje na vašem operativnom sustavu koja ima popis korisničkih imena koji mogu prijaviti na sustav i popis zaporki povezanih s tim korisničkih imena. Obično su lozinke nisu samo pohranjena u čistim ovako. Tu je neka vrsta enkripcije, ali to će učiniti za naš primjer. Dolazeći preko našeg prevodilac - to će biti vrlo jednostavan. Moramo navesti barem neke datoteke koje želite sastaviti, i onda ovdje - ove linije samo su čitanje datoteke. Ona čita cijelu datoteku u jednu veliku tampon, i onda smo null-ukinuti našu tampon, kao i uvijek, i na kraju mi ​​samo sastaviti datoteku. Nećemo gledati kako sastaviti zapravo provodi, ali kao savjet, to je samo zove zveka. Mi ćemo koristiti ovaj program za prikupljanje stvari umjesto zveka. Jedan od problema možemo početi s je vidimo želimo sastaviti našu prevodilac, ali ako nećemo koristiti zveka, ne znam što ću sastaviti sa. To je opći problem poznat kao pokretački. Dakle, samo ovaj put, ja ću koristiti zveka sastaviti našu prevodilac. Ako mislite GCC i jeka - ti programi, te prevodioci stalno ažuriraju, i one prevodioci su izrađene pomoću GCC i jeka. Jeka je samo jedan veliki C ili C + + program, tako prevodilac oni koriste za sastavljanje koja je jeka. Evo, sada smo samo će se koristiti našu prevodilac sastaviti našu prevodilac, a možemo čak reći - '/ prevodilac.', 'compiler.c', '', 'compile.c-O prevodilac'. Obavijest je to točno naredba trčao sam prije - samo zamijenite jeka s '. / prevodilac'. I sada imamo još jedan prevodilac, ali to je potpuno isti. To je samo naziva jeka. Mi ćemo koristiti naše prevodilac sastaviti našu prijavu programa. Ok - ". / Prevodilac login.c-o login". Dakle, nedefinirano pozivanje na "GetString". Imaš "-lcs50". Ok. Dakle, sada imam našu prijavu programa. To Trčanje - primiti "Molimo unesite svoje korisničko ime". Jedan primjer je opljačkati. Molimo unesite lozinku - thisiscs50. A uspjeh! Imam pristup. Trčanje ga opet i ulazak neke nevažeći lozinku - ili nevažeći korisničko ime i lozinku - nevažeća prijava. Ok. Ništa zanimljivo o tome do sada. Ali, hajdemo pogledati prijavom opet - i to će biti nešto trivijalno, na primjer, ali ajmo dodati drugdje u ovdje i reći, else if ((strcmp (ime, "haker") == 0 && strcmp (lozinka, "LOLihackyou") == 0)) pa sad, printf ("Hacked sada imate pristup \ n!."); ok. Izrada to - prevodilac login.c-o-prijava lcs50 - sada prikazivati ​​prijavite - i ako sam koristiti moje korisničko ime hakeru i lozinku LOLihackedyou - Jesam li ja to krivo upisati tamo prije? Na login.c--ihack - Ja ću ti provalio, jer mislim da to kasnije. Ok. Ponovnim prevođenjem. Re-trčanje - haker - LOLihackedyou - Hacked! Sada imate pristup. Tu ne čini se da mnogo razlika jer to je isto točno ček sam radila za druge korisničkih imena i lozinki. Osim toga, velika stvar je da ako drugi ljudi gledaju na to login.c-- recimo, ako sam proći ovu off na moj partner, a oni otvaraju ovu datoteku, i oni pročitali ovo, oni će vidjeti - ok, zašto imate ove linije koda ovdje? To je očito nije nešto što bi trebalo biti u svom programu. U nekim programima - kao i bilo vlasničkog softvera koji nije open-source - vi svibanj nikada vidjeti ove linije koda. Nešto poput Skypea ili nešto - za sve što znate, Skype je na vašem računalu, a tu je samo neki specifičan korisničko ime-lozinka kombinacija koji će se prijaviti na Skype na neki poseban način. Mi ne znamo o tome, a ljudi ne znaju o tome, jer oni ne bi pročitati izvornog koda vidjeti da postoji ta rupa. Ono što mi zovemo ovo - iako to nije jako pametan primjer - to se zove stražnja vrata. Ako mislite na stražnjim vratima svoje kuće. Evo, ako sam provjeriti s korisničkih imena "opljačkati" ili "Tommy, ' da će biti kao što je korištenje "ulazna vrata". To je način na koji sam ja trebao sigurno prijaviti. Ali, ako sam ući s ovim imenom i lozinkom - zatim da se pomoću "stražnja vrata". To nije bio namjeran način da se u programu, ali to još uvijek radi. A ljudi ne bi trebali znati o tim stražnja vrata. Mi ćemo poboljšati ovaj. Ajmo se vratiti to naše izvorne login.c, i neka je pogledati naš novi prevodilac. Ok. Sve do ovdje je točno isti. Mi smo čitajući cijelu datoteku u tampon. Sve ovdje je isti. Mi samo sastaviti datoteku. Ali sada imam ovaj veliki ako ovdje koji kaže, ako datoteka koje sam se dogoditi da se sastavljanje je login.c, onda sam napraviti nešto posebno. Što je to nešto posebno? Vidim ovdje neki string zove 'hack', i gleda na te linija koda - to su iste linije koda - Valjda sam koristiti 'ihack', a ne 'ihacked' prije - gleda na te linija koda, oni su isti točni linija koda koje sam imao u login.c prije. Ali sada, umjesto da ih ima u login.c, Ja ću ih staviti u moj prevodilac. To su linija koda idem želite umetnuti u login.c. Te linije koda - tampon koji je izvorno održao svoju login.c više ne će biti dovoljno velika, jer sada želim i umetnite ovaj hack u sredini mog programa. Sve to radi se stvara novi tampon koji je dovoljno velik - i za izvorne datoteke i dodatne linije koda - hack - da želim umetnuti tamo. Ovdje je nešto primijetiti - char * uzorak = "/ / uskratiti im pristup!" Ako se osvrnemo na login.c, vidimo ovdje dolje ovaj komentar - uskratiti im pristup! U login.c, ovaj komentar izgleda potpuno bezopasan, tako da ne bi bilo zlonamjernih sumnjate namjeru sa samo ovaj komentar. No, u našem prevodilac, mi posebno ide tražiti ovoj liniji koda, i onda kad smo ga pronašli - ove linije koda su umetanjem našu hack u tom položaju. Dakle, mi smo Ponavljanje cijelom login.c, mi smo umetanja taj hack točno gdje se kaže uskratiti im pristup, i onda smo sastavljanju - nije original login.c ali novi login.c s tom hack umetnutom pravo na 'uskratiti im pristup. " Sada želim sastaviti svoj novi prevodilac sa tom hack uključeni. Neću koristiti jeka, pa ajmo kopirati prevodilac smo koristili prije i koristiti da - tako, prevodilac compiler.c compile.c-o evil_compiler. Sada naša zla prevodilac - ako ćemo koristiti naše zlo prevodilac sastaviti bilo koji drugi datoteku, datoteka će sastaviti kako treba. To je potpuno normalno. Ali ako ćemo koristiti naše zlo prevodilac sastaviti prijavu - tako, / evil_compiler login.c-o-prijava lcs50. - gleda login.c opet, tu je apsolutno ništa ovdje. To je naša uobičajena 'ako je bilo opljačkati ili tommy smo u, još smo vani'. Ali, kada smo pokrenuli našu izvršnu, to će raditi kao i obično. Trčanje opet - haker, LOLihackyou - Hacked! Sada imate pristup. Samo gleda login.c, ne bi pomislio da je sve u redu. Ali prevodilac koja se koristi za prikupljanje login.c je posebno dizajniran za umetanje ovaj hack u programu. Mi samo sam se preselio naš izvorni problem. Izvorno, imali smo ove linije koda u login.c da ako netko drugi gledao na njih, oni bi biti kao što je, zašto su ti ovdje? Sada, ako netko naleti da pogledate naše prevodilac, oni će pogledati na ovim linija koda i reći, zašto su ti ovdje? Dakle, nismo u potpunosti riješiti naš problem. No, možemo koristiti ovu ideju ponovno. Uzimajući pogledati naše treće verzije prevodilac, to je ista ideja. Čitamo cijelu datoteku u tampon ovdje, smo sastaviti datoteku ovdje dolje, i imam nekakav string hack ovdje, ali primijetiti datoteku koja sam zapravo sjeckanje sada. Ja sam sjeckanje compiler.c Ne login.c. No, ono što sam ja umetanja u compiler.c? Ja sam umetanja ovaj kod koji je točan broj u našem prethodnom prevodilac, što je značilo da umetanje koda u login.c. Ovdje je naš, ako strcmp datoteka login.c , a zatim umetnite login.c naše hack stvari. Ovaj novi kompajler namijenjen za stvaranje prevodilac koji je namijenjen za sastavljanje prijavite se zlonamjerno. Vidjet ćemo zašto da nam pomaže. Sve ostalo je isto, tako da radi točno onako kako je to radio s našom prethodnom prevodilac. Mi smo samo Ponavljanje preko cijelog našeg compile.c. Ali sada, umjesto u potrazi za "uskratiti im pristup ' mi smo u potrazi za "sastaviti datoteku. ' Gdje je sastaviti sliku? Gledajući naše potpuno nevini compiler.c, to je pravo ovdje dolje na dnu. Ovaj komentar - sastaviti datoteku - opet, da izgleda potpuno bezopasan. No, u našem zlonamjernog verziji prevodilac, ćemo - neposredno prije tog komentaru - umetnite ovaj kod koji je namijenjen za umetanje koda pri sastavljanju login.c. Postoji mnogo razina zaobilazak ovdje. Ajmo zapravo ga pokrenuti. Opet, mi ćemo kopirati naš izvorni prevodilac. Sada, sastaviti - prevodilac compiler.c compile.c-o evilest_compiler - i sada evilest_compiler. Evilest prevodilac - ako ćemo koristiti kako sastaviti našu prevodilac, ajmo zapravo izgledaju. Evilest_compiler - to donosi više, sve na putu natrag u verziji 1 našeg prevodilac - Verzija 1 od našeg prevodilac koji je upravo pročitao u spisu i prevesti ga. Evo, mi znamo da je evilest_compiler - kada je sastavljala ovu sliku - će se umetnuti kod ovdje prije sastaviti datoteku, i da kod će izgledati točno kao kod iz drugog verziji našeg prevodilac koji je to učinio. Ovaj kod, koji je namijenjen za break u prijavi, će biti umetnuta u našoj prevodilac po evilest prevodilac. Neka je koristiti evilest_compiler sastaviti našu prevodilac. Sada ćemo koristiti prevodilac, vratiti na to prijaviti, i zapamtite ovo login.c nema apsolutno ništa sumnjivo u tome. No, koristeći naš prevodilac sastaviti login.c, Rob, thisiscs50, uspjeh. Idemo prijava haker, LOLihackyou, Hacked! Sada imate pristup. Shvatite da je ovo bila drugačija od verzije 2 našeg prevodilac. Prevodilac mi koristimo - krenimo natrag - primjerak iz prijave - ajmo donijeti našu prevodilac natrag u ovdje. Uklanjanje evilest prevodilac. Svi smo lijevo sada je prevodilac. Ako gledamo compiler.c, ne postoji apsolutno ništa u tu se čini da je zlonamjerni na bilo koji način. Ako gledamo login.c, ne postoji apsolutno ništa ovdje da izgleda zlonamjerni na bilo koji način. No, kad smo koristiti naše prevodilac sastaviti login.c, dobili smo hackable verziju login.c. Kada smo koristiti naše prevodilac sastaviti novu verziju prevodilac, dobili smo hackable verziju prevodilac. Sada ako ćemo ići van i distribuirati naš prevodilac izvršnu, i nitko neće znati da postoji nešto zlonamjerni o tome. To je zapravo tako u - ja ne mogu sjetiti godine - Ken Thompson, a on je osvojio nagradu Turingov - ako niste upoznati s Turingov nagradu, to je gotovo uvijek definirana kao Nobelova nagrada za računalne znanosti, tako da je kako ću ga definirati. Ken Thompson održao govor kada je primio nagradu Turingov pod nazivom "Razmišljanja o trusting povjerenja." Uglavnom, to je ideja njegova govora. Osim umjesto našeg prevodilac, on je govorio o GCC - samo još jedan prevodilac kao jeka - i ono što je on rekao je, poput našeg login.c, naša login.c čini relativno beskorisno ali on je govorio o stvarnom UNIX login.c. Kada se prijavite na svoj uređaj, postoji neki login program koji se izvodi. To je login koji je govorio o tome. To je u osnovi njegova ideja. On je rekao da je u GCC, on je u teoriji mogao posadi bug - nije bug, ali malicioznog koda - da kad ste sastavljali prijavu funkciju - prijava file - bi umetnuti stražnja vrata, tako da on može ići na apsolutno svakom UNIX sustavu u svijetu i prijavite se za neki određeni imenom i lozinkom. U to vrijeme, GCC bio prilično prevodilac da svatko koristiti za ništa. Ako netko dogodilo ažurirati GCC, onda bi rekompiliranje GCC pomoću GCC, i još uvijek bi dobili lošu verziju GCC jer posebno je sastavljen kako prepoznati da je ponovnim prevođenjem prevodilac. A ako ste ikada koristiti GCC za rekompiliranje je login.c datoteku, onda bi umetnite ovaj stražnja vrata da bi mogao koristiti za prijavu na bilo kojem računalu. To je sve teoretski, ali - da određeni okolnost je teoretski, ali ideje su vrlo stvarne. U 2003, bilo je sličan primjer gdje - ćemo pogledati ovu sliku, i to nema apsolutno nikakve veze zapravo s njom, ali bug je sličan. Ova datoteka samo definira funkciju zove podjela. Potrebno je argument, argument b, a namjera je da se ne dijeli b. No, to ne neku provjera, tako da znamo stvari su čudno ako je b dogodi jednaka nuli. Ako je b je nula, onda ćemo podijeliti to u 2 slučaja. Vi možda već vidjeli bug. Prvi slučaj - ako je nula, onda radimo nula podijeljena nulom, a mi samo reći da je nedefinirana. Drugi slučaj - ako nije nula, onda je to nešto kao jedan podijeljen s nulom, a mi samo nazvati taj beskonačnost. Inače smo se vratili i obično podijeljena b. I tako ovdje, vodimo te tri slučaja, i mi zapravo pokrenuti jaz - to viče na njega za mene - tako, ignoriranje zveka, upozorenja - Kraj non-void funkciju - očito nisam sastaviti to unaprijed. Povratak 0. Napravite podijeliti - sva prava. S. / Podjele, vidimo 3, Infinity, Infinity. Zero podijeljen s nulom ne bi vratili beskonačnost. A ako niste shvatili bug još - ili ga nisu vidjeli prije - vidimo da radimo s = 0. Vjerojatno mi je značilo == 0. Vjerojatno. No, to je zapravo nešto što je, opet, u 2003, Linux kernel - tako je i naš aparat koristi Linux kernel - bilo Linux operativni sustav koristi Linux kernel - pa bug vrlo sličan ovom pojavio. Ideja iza ovog buga je bio - opet, tu je bila samo neka funkcija koja je pozvan, a to nije malo provjere pogreške. Postojale su neke specifične ulaza da je to pogreška provjere - to bi trebao biti kao, sve u redu, ne možete nazvati ovu funkciju s djelitelj od 0. Dakle, ja ću samo vratiti neke pogreške. Osim, to nije bio nevin kao tek postavljanja jednaka 0. Umjesto toga, ova linija koda završio radiš nešto više kao korisnika = administratora. Ili korisnički = superkorisnik. To je bio nevin - na prvi pogled - pogreška gdje bi to moglo samo su razumne da sam samo htio prijaviti nešto specifično ako korisnik dogodilo da se superkorisnik administrator. Ali onda ponovno razmišljam o tome, osoba koja je željela izgledati kao jednostavna pogreška, ali ako se to kod zapravo bio pušten, onda bi mogao upasti u bilo kojem sustavu prolazi određenu zastavu - u ovom slučaju b = 0 - i automatski bi korisnik administrator, i onda on ima potpunu kontrolu. To se dogodilo u 2003. To samo tako se dogodilo da je jedini razlog što je uhvaćen bio jer tamo se dogodilo da se neki automatizirani sustav da primijetio promjenu u ovoj datoteci koji nikada nije trebao biti promijenjen od strane čovjeka. File samo treba biti automatski generiran. To samo tako se dogodilo da je netko dotaknuo - dobro, osoba koja želi hack dotaknuo tu datoteku, i računalo uhvaćen da dira. Dakle, oni su promijenili to, a tek kasnije shvatio što katastrofa bi bilo ako je to dobivši van u stvarnom svijetu. Vi svibanj biti misleći da - vraća na naše prevodilac primjer - iako ne možemo vidjeti - gleda na izvornog koda - da išta posebno je krivo, ako ćemo zapravo gledati na binarnom kodu prevodilac, vidjeli bismo da nešto nije u redu. Kao primjer, ako ćemo pokrenuti žice funkcionirati - koja je upravo ide gledati preko datoteke i ispisati sve konce može naći - ako ćemo pokrenuti žice na našoj prevodilac, vidimo da jedan niz koji utvrdi je to čudno - else if (strcmp (ime, "haker") - bla, bla, bla. Ako netko dogodilo da se paranoičan dovoljno da ne vjeruju u njihovu prevodilac, oni bi mogli pokrenuti žice i vidjeti to, i onda bi znali da nešto nije u redu sa stvarnim binarnom. No, žice bila neminovno nešto što je sastavio. Dakle, tko je reći da naša prevodilac ne samo imati više poseban kod koji kaže, ako nizovi ikada raditi na našoj prevodilac, ne izlaz sve to malicioznog koda. Ista ideja, ako želimo da dis-sastavljanje datoteku - saznali smo da monter nas dovodi iz montaže kod u strojni kod - možemo ići u suprotnom smjeru - objdump-d prevodilac - će nam dati sklop našeg koda. Gledajući to, to je prilično zagonetan, ali ako smo htjeli, mogli smo gledati kroz ovu i razlog, čekaj, ima nešto ovdje događa da ne bi trebalo biti događa, i onda ćemo shvatiti da prevodilac radi nešto zlonamjerni. No, baš kao i gudače, tko kaže da objdump nije bio poseban-cased. Uglavnom, to se svodi na što ne mogu vjerovati ništa. Točka papira koji se zove "Uzdajući Povjerenje" je u cjelini, vjerujemo naš prevodilac. Možete sastaviti svoj kôd i očekivati ​​da učine ono što pitati što učiniti. No, zašto bi li povjerenja prevodilac? Nisi napisati prevodilac. Vi ne znate što prevodilac nužno je zapravo rade. Tko kaže da ga možete vjerovati? Ali čak i tada, dobro, možda možemo vjerovati prevodilac. Postoje deseci tisuća ljudi koji su gledali na to. Netko je morao priznati da nešto nije s prevodilac. Što ako smo samo ići jedan stupanj dublje? To čak može biti vaš procesor. Kao smiješno kao što bi mogao biti, možda postoji neki šaljivdžija zaposlenik Intela koji stvara ove procesore da, kad god da procesor primijeti da radite neke naredbe koji je značilo da se prijavite na računalo, Procesor će prihvatiti neku određenu korisničko ime i lozinku kombinacija. To bi mahnito biti komplicirano, ali bi netko mogao to učiniti. U tom trenutku, da ste stvarno idući otvoriti vaše računalo gledati na procesoru i koristiti mikroskop priznati da ti krugovi nisu poredani kao što bi trebao biti? Nitko se neće uhvatiti tu pogrešku. U nekom trenutku, samo moraš odustati i povjerenje nešto. Većina ljudi ne vjeruju prevodilac u ovom trenutku. Naime nije nužno da ste trebali. Gledajući na nešto sramotno video - [Dramatična glazba svira] [To je UNIX sustav. Znam da je ovo.] [To je sve datoteke -] Ona je rekla: "To je UNIX sustav. Znam to." Zamijenite UNIX s bez obzira na vaš omiljeni operativni sustav - mogla je rekao: "To je sustav Windows. znam to." To je potpuno besmislen iskaz, ali za sve znamo, ona se događa znati stražnja vrata u UNIX sustavu. Ona zna neki username / password kombinaciju koja će zapravo neka joj učiniti sve što ona želi. U redu. Pouka danas je u osnovi ne mogu vjerovati ništa. Čak i stvari koje pisati - nisi napisati prevodilac. Prevodilac može biti loše. Čak i ako je napisati prevodilac, stvar koja se izvodi prevodilac može biti loše. (Smijeh) Ne postoji mnogo možete učiniti. Svijet je osuđen na propast. Povratak na Davidu! [Pljesak] [David] Hvala. To je stvarno depresivno. Ali doista, Rob je točno. Mi ne stvarno imati rješenje za to, ali ti si o da se neka rješenja nekih uobičajenih obranu. U očekivanju toga, što je Nate i ja smo radili iza scene tamo je, znajući da postoji toliko mnogo prijenosna računala u ovoj sobi, smo njuškanje sve bežične prometa prolazi kroz ovoj sobi za posljednjih 20 minuta tijekom Rob je razgovor, pa ćemo uzeti 2 minute pauze ovdje. Nate će postaviti, a zatim ćemo razgovarati o svim stvarima smo mogli naći. (Smijeh) Dakle, možda sam malo pretjerano samo zbog drame, ali mogli smo se njuškanje sve vaše bežične prometa jer doista, to je tako jednostavno. No, tu su i načini na koje možete braniti protiv toga, pa s tim, Dajem vam Nate Hardison. >> [Nate] Sweet. (Pljesak) [Nate] Hvala, čovječe. Cijenim shout out. Sve u pravu! To je igra tjedna. Jeste vi uzbuđeni? Nadam se da će to biti velika igra u subotu. I zamislite dečki u ovom trenutku - s obzirom da imate kviz u srijedu sve o kodu, a mi samo sjedili kroz prekrasnim predavanjem Rob s cijela hrpa C koda u njemu - su možda malo umorni od koda. U ovom dijelu, mi zapravo ne ide na dodir bilo kod god. Samo smo idući u pričati o tehnologiji koju koristite svaki dan, često za mnogo, mnogo sati dnevno, a mi ćemo govoriti o implikacijama s osiguranjem koje postoje. Razgovarali smo puno o sigurnosti tijekom semestra, i mi krenuli s malo Crypto. [Bdoh lv vwlqng!] I dok ti dečki su vjerojatno super uzbuđen da se prolazi bilješke međusobno u klasi pomoću Cezarova šifra kao što je ovaj jedan, u stvarnosti, tu je neke više zabave da bi imali kada zapravo govorimo o sigurnosti i takve stvari. Danas ćemo pokriti nekoliko tehnologije da su ljudi zapravo koristiti u stvarnom svijetu učiniti sve i svašta iz njuškanje tuđe paketa zapravo ide i provaljivanje u tuđe bankovne račune i sve to. To su legitimne alate da govorimo o s izuzetkom eventualno jednom alatu. A ja samo želim da brzo odricanje od odgovornosti. Kada govorimo o tim stvarima, govorimo o njima, tako da znate što je vani, a vi ste svjesni kako biti siguran kada ste vani pomoću računala. Ali mi definitivno ne želim implicirati da biste trebali koristiti ove alate u vašem domu ili tvojoj kući, jer možete izvoditi u puno velikih problema. To je jedan od razloga je danas da mi zapravo nisu njuškanje svoje pakete. U redu. Prošlog ponedjeljka, razgovarali smo o kolačićima, i HTTP, i autentifikaciju, i kako Firesheep otvara ovaj veliki vrata u svoj Facebook račun, na svoj račun na servisu Hotmail - ako netko još uvijek koriste Hotmail - i mnoge druge račune. Puno ove stvari će se graditi off da, ali prvo, želim da se brzo turneju kako Internet je evoluirala tijekom vremena. Natrag u 90-ih, vi možda sjetio zapravo uključivanjem u Vaši računala s jednim od njih. Sada ne činimo da toliko više. To je zapravo ispada da bi se priključiti Ethernet kabel u moj laptop, Ja sada morati koristiti jedan od ovih adaptera koji je ludo. Umjesto toga, u 1997 smo imali ovu novu tehnologiju, zabava izašao koji je poznat kao IEEE 802.11, tako da je ovo bežični internet standardni IEEE je to upravno tijelo koje se daje sve vrste - objavljuje sve vrste standarda s obzirom na računalima. U 802 standardi su sve o internetskim tehnologijama. Dakle 802,3, na primjer, Ethernet standard, 802.15.1 vjerujem da je Bluetooth standardu, i 802,11 je sve o bežični pristup internetu. U 1997 ovo je izašao. To nije sasvim uhvatiti na odmah. To nije bio do 1999 i 802.11b standardu izašao samo da je dobio jako popularan. Kako mnogi od vas sjetiti kada računala počela izlazi i dobivanje wi-fi na njih? To je vrsta cool, ha? Sjećam se da sam uzimajući moj prvi laptop u srednjoj školi, a ona je imala bežičnu karticu u njega. Moj tata mi ga je dao i govorio da sam trebao koristiti za moj koledž aplikacije i sve to, i nisam imao pojma koliko sam bio idući gledati tu stvari online. No srećom, imao sam bežičnu karticu, tako da je prilično cool. Danas, također ćete vidjeti 802.11g koji je jedan od drugog stvarno popularan bežični standardi koji je vani. Oba b i g su prilično zastarjela u ovom trenutku. Zna li tko što inačici većina ljudi su upravo sada ako oni kupuju nove bežične usmjerivače i takve stvari? N. Točno. Bingo. I ispada da ac standardni samo izlazi u formi nacrta, a tu su i druge verzije na putu. Uz svaku od tih standarda što smo dobivanjem više bandwith, više podataka na bržim tempom. Ove stvari stalno mijenjaju prilično brzo. To također čini tako da ćemo morati kupiti više routera i sve što je zabavno stvari. Ajmo pričati o tome što bežična komunikacija zapravo je u svojoj srži. S Ethernet i onih starih dial-up modema, vi ste zapravo imali ove stvari koje ste priključen na vaše računalo, i onda priključen modem sorti, a zatim ga priključen u utičnicu u zidu. Imali ste ovaj žičani vezu, zar ne? Poanta Wireless je uzimajući osloboditi od ove stvari. Da bi to postigli, ono što imamo je bitno Radio komunikacija gdje je naša bežični usmjerivač - odredila našem malom ikone bežične veze - je spojeno na Internet s ovim čvrste strelice pokazuje nekakvu žičanu vezu, ali kad se spojite na svoj bežični usmjerivač ste zapravo koristi gotovo kao voki-toki između vaše računalo i bežični usmjerivač. Što je stvarno cool je o tome možete kretati. Možete nositi računalo u cijelom Sanders, ići surfati internetom, što god želite, baš kao što svi znamo i volimo, a vi nikada ne morate biti uključen u sve. Za to raditi, mi imamo i ovaj prijem i prijenos. To je stvarno je poput tog voki-toki. Ovaj bežični router - koja je u Sanders je sjedio ispod ovoj fazi, upravo ovdje - uvijek emitiranje i primanje, emitiranje i primanje, i isto tako, vaše računalo sve rade taj isti takve stvari, previše. Mi jednostavno ne možemo ga čuti. Druga stvar koju možete učiniti je da možete imati više računala u razgovoru s istim bežični router. Ste bliže router - i opet, to je radio komunikacije - što ste bliže, bolje je vaš signal, bolje vaše računalo 'čuje' router i može komunicirati s Internetom. Ako ti dečki su ikada na domu, u svojoj kući, a vi pitate zašto vaš signal je loš, to je vjerojatno zato). niste vrlo blizu vašeg usmjerivača ili b). postoji nešto između vas i vašeg usmjerivača poput cementa zid ili nešto da ne dopustite da one radiovalovi proći. Pričajmo malo o tome zašto negativci poput Wi-Fi. Loši dečki vole wi-fi za nekoliko razloga. Evo naš gadno negativac ovdje. Jedan od razloga zašto je to loš čovjek voli wi-fi je zbog toga, po defaultu, puno bežični usmjerivač doći i kada ih postavili, oni nekodiran. To je problem, a bilo je slučajeva - više instance, sada - gdje je loš čovjek pokazuje do nečije kuće, napomene da je nekodiran wi-fi na koje se mogu spojiti. Oni spojiti na Wi-Fi, a zatim oni početi s preuzimanjem svih vrsta zabave stvari. I oni ne skidate mačiće, oni ne skidate štenaca. To je kao BitTorrent. To je gadno od nastiest. Bilo je slučajeva gdje FBI je čak stečen uključeni misleći da osoba koja je vlasnik kuće je zapravo jedan ide vani i preuzimanje stvari da oni stvarno ne bi trebao biti. Nakon što je nekodiran wi-fi definitivno nije nešto što želite učiniti, ako je samo da ne moram FBI dolaze kucati na vrata. Drugi razlog zašto loši dečki vole wi-fi je razlog da je David govorio o ranije tijekom pauze. Jer to je radio veza u svojoj srži, ako znate kanal, možete slušati tu radio postaju. Na primjer, ako postoji loše tamo sjedi u sredini desno pored pristupne točke, tik do tog bežični usmjerivač, loš momak može slušati na svim bežičnog prometa koji dolazi od svih tih računala. U stvari, ovi dečki - to rijetkih sretnika koji su ovdje u prvom redu - jer oni su super-blizu svih tih bežični usmjerivač da sjede tik ispod pozornice, oni će biti u mogućnosti čuti svačije promet u cijeloj ovoj sobi ako ste spojeni na Wi-Fi i početak pregledavanja kroz tih pristupnih točaka. To nije jako teško da se sjedi u dobroj poziciji da osjete i shvatiti ono što drugi ljudi rade. To je nešto što treba imati na umu, pogotovo ako niste sigurni gdje pristupna točka je, a vi ste pregledavanja riječ, u Starbucksu. Ispada da njuškanje i sve to zapravo i nije sve što je teško učiniti. Postoji program koji se zove tcpdump koji deponijama sve vrste TCP prometa a možete ga pokrenuti prilično jednostavno - baš kao što sam učinio jutros. Evo malo rupi, a evo neke od prometa koji je dolazio preko moja mreža na vrijeme. Možete vidjeti - ako žmirenje jako teško - tu je malo Spotify tamo. Na vrhu tcpdump - jer je to vrsta boli za korištenje - postoji program koji se zove Wireshark koji snopovi sve to u lijepoj GUI. Wireshark je super-zgodan pa ako idete na uzeti umrežavanje nastavu, ovo je alat koji ćete doći do ljubavi, jer vam pomaže secirati sve pakete koji su plutajući oko vani. Ali, to se također može koristiti za loše. To je vrlo jednostavan za samo skinuti ovaj program, to čizma gore, započeti snimanje mreže, i vidjeti sve što se događa - i filtrirati i učiniti sve vrste zabave stvari s njim. Druga stvar koju možete učiniti s bežične komunikacije ne samo da možete prisluškivati, ali također možete naučiti kako zeznuti s mrežom i ubrizgati vlastite podatke za kontrolu iskustvo da drugi ljudi na istoj bežičnoj mreži su uzimajući. Idemo pogledati to. Evo Firesheep - što znamo i volimo od prošlog tjedna - a to je da prisluškivanje tehnologija. Ako, na primjer, željeli smo da se aktivno imamo loš čovjek ići i zezanje s jedan od tih računala, u ovom scenariju imamo računalo pokušava ići surfanje na harvard.edu. Što se događa je, računalo prvi šalje poruku na bežični usmjerivač i kaže, hej, želim ići posjetite www.harvard.edu. Recimo nekog razloga oni pokušavaju doći do informacija o igri ovaj vikend. Loš čovjek, jer on je sjedio u sredini desno, tik do tog pristupne točke, možete vidjeti da je komunikacija dolazi iz računala u router, i on zna, "Aha! Netko će harvard.edu." (Zlo smijeh) Tu će biti ovaj latencije a komunikacija ide od rutera van na internet ići pronaći stranicu na harvard.edu-- baš kao i vi svi znamo nakon što je svoje PHP psets - i tako loš momak ima malo vremena, malo prozora, u kojem on može odgovoriti s nekim stvarima. Recimo da je ovo loš čovjek, naravno, Yaley. On reagira s harvardsucks.org. Boo! Zločesti dečko! Loše Yaley! Ili još gore, on može odgovoriti sa da. [Http://youtu.be/ZSBq8geuJk0]. Pustit ću ti dečki shvatiti što je to. To je zapravo tehnologija zove Airpwn! koji je debitirao na jedan od sigurnosnih konferencija prije nekoliko godina. S Airpwn! ste u mogućnosti da zapravo uvelo promet natrag u mrežu. Računala koja su pokušavali izaći na Internet i pokušava doći do Google.com, na Facebook.com, da harvard.edu vidi zlonamjerni odgovor doći i odmah pretpostaviti, ok, to je odgovor koji sam čekao i završiti dobivanje sadržaja iz harvardsucks.org ili nameyourfavoriteshocksite.com, i možete vidjeti koliko brzo će se stvari pogoršati. Sve ove vrste stvari ne može biti učinjeno s tim vezama, jer s žičanu vezu teško je Snoop na promet. Ako sam loš čovjek i na jednom kraju je vaše računalo a na drugom kraju je vaš router - modem - jedini način ja mogu dobiti u između te veze je zapravo Splice moje računalo negdje u sredini ili učiniti nešto drugo sa routerom, nešto nizvodno. Ali s bežičnim, to može biti lako kao sjedi u prvom redu u učionici, i možete učiniti sve vrste neugodne stvari za ljude u leđa. Ajmo pričati o tome kako biste mogli braniti protiv neke od tih stvari. Ljudi koji su razvili bežične standarde - 802,11 - oni nisu glupi ljudi po bilo protežu od mašte. Ovo je cool tehnologija i kada je debitirao u 1999, su došli s ovim standardom zove WEP. Možete vidjeti ovdje kada pokušate i pridružite bežičnu mrežu, imate sve vrste različitih sigurnosnih opcija. To je vrsta boli jer postoji 6 svi zajedno i to nikada stvarno ima smisla što jedan da se pridruže. Ovaj jedan na vrhu je prvi onaj koji su došli s zove WEP. WEP se zalaže za Wired Equivalent Privacy, vjerujem, Ne Wireless Encryption Protocol koji je čest pogrešan naziv. Budući da pokuša davati vam privatnosti ekvivalent i sigurnosnu zaštitu jednaka onoj od žičane mreže S WEP što završi događa se, imate jednostavan, malo lozinku koju upisati i koji služi za šifriranje sve svoje komunikacije između računala i usmjerivača. Što je problem s WEP ipak? Lozinka s WEP je jako kratka, i svatko koristi isti taj točan lozinke,  pa to je stvarno lako dešifrirati. Dakle, vrlo brzo people shvatio da WEP bio problem, i jedini razlog zbog kojeg ga vidjeti pojaviti još na ovom malog čovjeka je - postoje neki stariji sustavi koji ne koriste WEP - što umjesto toga trebali biti u potrazi za su WPA i WPA2 čak standardi koji su objavljeni kasnije. Ovi sustavi su puno bolje ići na zaštitu na bežični internet. To je rekao, oni još uvijek nemaju neku hackability. Postoje alati vani da može ići to učiniti. Jedna stvar posebno to može biti gadno je da ako spojite i ovjerena na bežični usmjerivač i koristite nekakvu šifrirana komunikacija, ispada da haker može lako poslati jedan paket da vas odvojite od routera, i nakon što sam vam isključen onda oni mogu slušati - oni mogu njuškati one pakete kao i vi pokušati ponovno uspostaviti vezu s usmjerivačem. I s tim informacijama oni tada mogu ići i dešifriranje ostatak svog komunikacije. To nije ni na koji način bilo kakve sigurno izvan svake mašte. Druga stvar koju možete učiniti kada ste postavljanje bežične mreže ili ste ih pridružio se - primijetite da ovdje kad sam se pridružio ovu mrežu, ona pita za ime moje mreže. Ovo je također poznat kao SSID. A vidiš da se ovdje na desnoj imam okvir koji pokazuje mi dostupne SSID. Tu je Sveučilište Harvard, CS50, CS50 i Osoblje mreže. Sada, kako mnogi od vas znao da je CS50 Osoblje mreže oko? Neki od vas. Nije sve vas. Problem s ovim, naravno, da je ne staviti to gore na našem popisu SSID, nitko ne bi znao o tome najvjerojatnije. Nadam se. Osim ako ti dečki su sve pokušava ispucati u naš radio. No, to je nešto što se može učiniti da je stvarno važno kada ste postavljanje usmjerivač kod kuće. To se vjerojatno neće dogoditi za nekoliko godina, za puno vas, ali ne imajte na umu da je držanje da SSID od tamo, a ne ga i imenovanja nešto super zajednički će vam pomoći zadržati više siguran u dugoj vožnji. Konačna par stvari koje možete učiniti. Jedan je HTTPS. Ako ste u Starbucksu, ako ste na javnom Wi-Fi području a vi ne odlučite pristupiti svoj bankovni račun, pristup Gmail, vaš Facebook, pobrinite se da su ti spojevi ide preko HTTPS. To je dodatni sloj sigurnosti, dodao sloj šifriranja. Jedna stvar koju treba imati na umu je ovdje, koliko od vas ikada kliknuo kroz taj veliki, crveni ekran koji kaže, "Ova web stranica može biti loše." Ja znam imam. To je vjerojatno kada ste sve pregledavanja ići vidjeti domovinu ili nešto slično, zar ne? Da. (Publika smijeh) Da. Tu idete. Znamo tko gleda domovinu. To velika, crvena ekran tamo često ukazuje na to da se nešto funky se događa. Ponekad je to samo web stranice sama je nesigurna, ali da isto veliki, crveni ekran dolazi kada ljudi pokušavaju Nosač mreža napada na vas. Dakle, ako vidite da je velika, crvena ekran se u Starbucks, nemojte kliknuti kroz nju. Loše vijesti. Loše vijesti nosi. Konačna stvar koju možete pogledati je neka vrsta VPN. Ovo VPN je dostupan kroz Harvard - vpn.fas.harvard.edu-- i što to znači je to zapravo uspostavlja sigurnu vezu između vas i Harvardu, lijevci vaš promet kroz njega, i na taj način, ako ste sjedi na mjestu kao što je Starbucks možete spojiti na Harvardu, dobiti taj sigurno promet, a zatim pregledavati s Harvarda. Opet, nije siguran. Ljudi mogu dobiti u sredini. Oni mogu početi da ga razbiti, ali to je daleko sigurniji nego se oslanja na sigurnost od Wi-Fi sama. U redu. Sve u svemu, kada ste postavljanje bežične mreže, kad se ide van za korištenje bežičnog u javnosti - da li je Starbucks, da li je Pet Dečki, da li je B.Good, nešto kao da - gdje god oni imaju Wi-Fi - biti svjesni svoje okoline. Budite svjesni onoga što ljudi mogu učiniti. I biti siguran. Nemojte pristupati svoj bankovni račun. To bi mogla biti primitivan buđenje ako netko pojavi sa zaporkom kasnije. Uz to, ići crven! I ja ću okrenuti stvari natrag preko Davida za konačnu riječ. (Pljesak) [David] Mislio sam da bih podijeliti jednu stvar iz osobnog iskustva. Alat možda željeli igrati s - iako Apple je uglavnom iskorijenjena ovaj problem ako ste ažurirali softver od - ali prema ovom kraju stvarno ne bude u mogućnosti da povjerenje softver koji ćemo koristiti, i Nate je bodova, biti u mogućnosti da osjete vrlo malo onoga što drugi ljudi rade vani - to je komad softvera koji je izašao oko godinu i pol dana sada. [IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] Za neko vrijeme, iTunes - prije iCloud, kada su sinkronizaciju iPod ili svoje iPhones ili ili vaši iPads s iTunes - u interesu kopija, što vaš iPhone i ovi drugi uređaji su radili za neko vrijeme je čineći korištenje GPS podataka. Vi svi znate možda da vaši iPhone i Androidi i Windows Mobile telefone i kao što je ovih dana može pratiti gdje se nalazite u interesu pokazati vam karte i slično - dobro što Apple i ove druge tvrtke učiniti je oni obično pratili gotovo svugdje ste zapravo bili u interesu poboljšanje kvalitete usluge. Jedan od njih, možete dobiti više ciljano oglašavanje i slično, ali dva, oni također mogu shvatiti gdje postoje bežične vrućih u svijetu, i to može pomoći s geo-lokacije - vrsta triangulacije od ljudi položaju. Da skratim priču, sve nas je hodanje antene za neko vrijeme. Nažalost, Apple je napravio dizajn odluku - ili njihov nedostatak - da ne kodirati te podatke, kada je kao podlogom-up na iTunes. A što sigurnosni istraživač pronašao je da je to bio samo veliki XML datoteke - veliki tekst datoteku - sjedi u ljudi iTunes softvera, i ako ste bili samo malo znatiželjni, možete ići oko poking vaš suprug povijesti, tvoj cimer povijesti, svoga brata ili sestre u povijesti i slično, a zahvaljujući nekim slobodnog softvera, možete iscrtati svih ovih GPS koordinate - zemljopisne širine i dužine. Dakle, ja zapravo je to učinio s mojom telefonu. JA čep u mojem telefonu, i siguran dosta, moja verzija iTunes nije bio kodiran na vrijeme, i ono što sam bio u mogućnosti vidjeti bilo moje vlastite obrasce. Evo Sjedinjene Države i svaki od tih plavih krugova predstavlja gdje sam se dogodilo da su tijekom tih prethodnih mjeseci posjedovanje ovaj telefon.  Ja provesti puno vremena, naravno, gore na sjeveroistoku, malo vremena u Kaliforniji, kratkotrajni izlet u Teksasu, a ako onda zumirati na to - ovo je sve vrsta fino i zanimljivo, ali sam znao da je to. Većina mojih prijatelja je to znao, ali ako zaroniti u dublje, vidite gdje sam provesti većinu svog vremena na sjeveroistoku. Ako reza na nekim upoznati izgleda gradovima - ova velika, plava tinta mrlja bitno je usmjeren preko Bostona, i onda sam provesti malo vremena u predgrađima zrači iz Bostona. Ali sam također radila dosta savjetovanja te godine. I ove godine je istočni obalni, i zapravo možete me vidjeti i moj iPhone u džepu putuju natrag i naprijed između Bostona i New Yorka i Philadelphia dalje, kao i trošenja malo vremena za odmor na Cape, što je malo ruka vani. Dakle, svaki od tih točaka predstavlja neko mjesto sam bio, i potpuno nepoznatog mene, cijela ta povijest samo je sjedio na mom stolnom računalu. Ako smanjivanje - to je zapravo bio malo zabrinjava. Nisam imao sjećanje ikada bio u Pennsylvaniji da posebno godišnje. Ali sam ipak malo teže o tome i sam shvatio, oh, to je u činjenici da je putovanje i naravno, moj mobitel mi je uhvaćen. Apple jer je kodiran ovu informaciju, ali ovo je previše je samo dokaz koliko se informacije se prikupljaju o nama, i kako je lako - za bolje ili za lošije - to je prihvatljivo. Jedan od prospekti nadamo iz Rob je razgovor, iz Nate je razgovor i malo vizualni poput ovoga danas je samo da se sve više svjesni toga tako da, iako - kao da je Rob točke - intenzivno vrsta pijan, zar ne? Ne postoji puno možemo učiniti kada je u pitanju neki od tih prijetnji, ali na kraju dana moramo vjerovati nešto ili nekoga ako želimo da se zapravo koristiti ove tehnologije. Barem možemo biti stvaranje informirane odluke i izračunate odluke hoće li ili ne mi zapravo treba provjera ovu posebno osjetljive račun ili smo zapravo trebao biti slanje da nešto sumnjate instant poruka  u Wi-Fi okruženju kao što je ovaj. Dakle, s koje je rekao, samo jedan kviz ostaci, jednog predavanje ostaje. Vidimo se u srijedu onda u ponedjeljak. (Pljesak i klicanje) [CS50TV]