[Powered by Google Translate] [Týden 10] [David J. Malan] [Harvard University] [To je CS50.] [CS50.TV] Dobře! To je CS50, ale ne o mnoho déle. To je začátek týdne 10. Ve středu jsme náš kvíz, a pak příští pondělí budeme mít nějaké slavnostní dort jak jsme se kruh celou cestu zpět z týdne nuly. Dnes hovoříme o jednom z mých oblíbených témat, být řekl pravdu - že bezpečnosti a soukromí a důsledky všech hardware a software že všichni používáme v těchto dnech. Chcete-li být upřímný, existuje mnoho hrozeb tam že pokud jste opravdu zastavil, aby si o nich, jsou vlastně dost skličující. Názorný příklad - pokud někdo z vás někdy stáhli kus softwaru vypnutí internetu a nainstalovat jej na svém počítači, jste zapojen do značné míry důvěry, ne? Není nic, co brání Skype, nebo Chrome, nebo jakýkoliv kus softwaru jste nainstalovali do počítače, od jednoduchého odstranění všech souborů na vašem pevném disku; od nahrání všech souborů na vašem pevném disku do nějakého padoucha je server; od čtení všech vašich e-mailů, v zachycení všech vašich okamžitých zpráv. Vzhledem k tomu, realita je dnes s nejmodernějšími operačními systémy tam opravdu není moc zdi mezi softwarovými programy, které jsme instalují, a ty a já jsme docela hodně to prostě křížení naše prsty as ohledem na víru že aplikace jsme stáhnout zdarma, nebo že věc, která je 99 centů, je vlastně zcela neškodný. Ale jak jsme viděli až C, a nyní PHP a JavaScript, s touto schopností vyjádřit sami sebe programově, můžete dělat většinu cokoli chcete s programem, který uživatel sám nebo sám mohl udělat. Takže, dnes se zaměříme na toto téma - nejen některé hrozby, ale také obrana. Opravdu, ve světě bezpečnosti obecně, je to druh tohoto kočku a myš hra, a troufám si tvrdit, že protivníci mají téměř vždy nohu. Pokud jde o využití hardware a software na našich vlastních osobních počítačích, musíme si uvědomit, že špatný člověk prostě musí najít jednoduchou chybu - jedna využívat, jednu chybu - v kus softwaru, který jste napsali, nebo je spuštěn Aby pro něj nebo ji převzít náš celý systém. Naopak, my - dobří - třeba opravit a opravit všechny ty chyby a vyhnout se všechny tyto nedostatky. A tak, troufám si tvrdit, v celku, protivníci mají výhodu. Co tříd, jako je tento a následující třídy jsou opravdu o nejsou o výuku, jak vést bitvy, že tyto padouchy cíl, ale o tom, jak se chránit nebo alespoň jak vyrobit vypočtenou rozhodnutí , že ano, já vím, že to kus softwaru, by skutečně mohla přečíst každý jeden z mých e-mailů, ale jsem v pořádku s, že vzhledem k hodnotě se přivádí na druhé straně. Jsem velmi potěšen, že připojí 2 z nejchytřejších lidí, které znám - Rob Bowden a Nate Hardison. Rob se chystá vzít nás na turné přes nejnižší úroveň bezpečnostních značek - že překladače, které až do teď, jsme všichni přišli na lásku a důvěru. Rob Bowden. [Potlesk] [Rob] Dobře. David má docela hodně vzal mou celou proslov že jsem šel představit s, ale - Před několika týdny, jste viděli na příkladu buffer-přetečení útoku který je příkladem hacker hacking do nějaké kusu software že by neměla být hackování do. Na druhé straně tohoto je někdy máte software, který je škodlivý sám o sobě. To ani nemusí být hacknutý. Osoba, která napsala software chce proniknout vás. Pojďme prostě skočit přímo do kódu, přičemž se podívat na "login.c". Zde, hloupý program, který ověřuje uživatelské jméno a heslo. Zde by měl být určitě seznámit se s C znovu kvíz. Nejprve, používáme dostat řetězce popsat uživatelské jméno, pak jsme pomocí get string chytit heslo, a pak máme nějaké triviální kontroly jen, je uživatelské jméno "rob"? A je heslo "thisiscs50"? Nebo, je uživatelské jméno "Tommy" a heslo "i <3javascript"? Pokud některá z nich je případ,  pak jsme jen tak tisknout "úspěch", a pak budeme mít přístup. Jinak budeme tisknout "neplatné přihlašovací" a pak, samozřejmě,  od Sketch Struny malloc paměti, jsme volní uživatelské jméno a heslo. Toto je triviální přihlášení program, a pokud si myslíte, že o tom, kdy se přihlásíte do spotřebiče, je to dost podobné - nebo dokonce přihlášení k počítači - tam je jen nějaký přihlásit program, který vám dá přístup. Zde jsme náhodou mít pevně "rob ',' thisiscs50 ',' Tommy ',' i <3javascript", ale asi tam je nějaký soubor někde na vašem operačním systému která má seznam uživatelských jmen, kteří se mohou přihlásit do systému a seznam hesel spojených s těmito uživatelskými jmény. Obvykle hesla nejsou jen uloženy ve formátu prostého textu jako je tento. Tam je nějaký druh šifrování, ale to bude dělat pro náš příklad. Příchod k našemu kompilátor - to bude velmi jednoduché. Musíme určit alespoň nějaký soubor, který chceme sestavit, A pak je tu - tyto řádky jsou jen čtení souboru. To zní celý soubor do jednoho velkého bufferu, a pak jsme null-ukončit náš vyrovnávací paměti jako vždy, a nakonec jsme jen zkompilovat soubor. Nebudeme se dívat na to, jak je kompilace skutečně realizována, ale jako náznak, že pouze volá zvonění. Budeme používat tento program sestavit co místo Clang. Jeden problém začneme s je vidíme chceme zkompilovat naši překladač, ale pokud nebudeme používat řinčet, já nevím, co budu kompilovat. To je obecný problém, známý jako bootstrappingu. Takže, jen tentokrát, budu používat řinčet zkompilovat naši kompilátoru. Pokud si myslíte, že GCC a řinčet - tyto programy, jsou tyto překladače neustále aktualizována, a tyto překladače jsou kompilovány pomocí GCC a řinčet. Řinčení je jen jedna velká C nebo C + + program, takže kompilátor používá k sestavení, který je zvonění. Tady, teď, jsme jen bude pomocí našeho kompilátoru zkompilovat naši překladač, a můžeme dokonce říci - "/ kompilátor. ',' compiler.c ',' compile.c ','-o kompilátoru". Všimněte si, je to přesný příkaz jsem běžel před - jen nahradit řinčet s ". / kompilátor". A teď máme další kompilátor, ale je to úplně stejné. Je to jen volá zvonění. Budeme používat náš překladač zkompilovat naši přihlašovací programu. Dobře - ". / Kompilátor login.c-o přihlášení". Takže, nedefinovaný odkaz na "GetString". Mám "-lcs50". Dobře. Takže teď mám našeho přihlašovacího programu. Běh je - přijmout "Prosím, zadejte své uživatelské jméno". Jedním z příkladů je rob. Prosím, zadejte své heslo - thisiscs50. A úspěch! Mám přístup. Ji spustit znovu a zadat několik neplatné heslo - nebo neplatné uživatelské jméno a heslo - neplatné přihlašovací. Dobře. Nic na tom zajímavé tak daleko. Ale pojďme se podívat na přihlášení znovu - a to bude poněkud triviální příklad, ale pojďme přidat jinde v tady a říkat, else if ((strcmp (jméno, "hacker") == 0 && strcmp (heslo, "LOLihackyou") == 0)) takže teď, printf ("pirát Nyní máte přístup \ n!."); pořádku. Kompilace tento - kompilátor login.c-o login-lcs50 - nyní běží přihlášení - a pokud mohu použít své uživatelské jméno hacker a heslo LOLihackedyou - Už jsem typ to špatně, než se tam? Na login.c--ihack - Budu se naboural, protože myslím, že jsem to později. Dobře. Rekompilace. Re-běh - hacker - LOLihackedyou - Hacked! Nyní máte přístup. Nezdá se, že se tak velký rozdíl protože je to stejný přesný šek jsem dělal pro ostatní uživatelských jmen a hesel. Plus, velká věc je, že pokud ostatní lidé dívají na to login.c-- řekl, když jsem předat tento off mému partnerovi, a otevírají tento soubor, a oni si to, uvidí - v pořádku, proč máte tyto řádky kódu tady? To samozřejmě není něco, co by mělo být ve vašem programu. V některých programech - jako každý proprietární software, který není open-source - jste možná nikdy vidět tyto řádky kódu. Něco jako je například Skype nebo něco - pro všechno, co víš, Skype je na vašem počítači a tam je jen nějaký konkrétní jméno-password kombinace které se přihlásíte k Skype nějakým zvláštním způsobem. Nevíme o tom, a lidé nevědí o tom, protože se jim nedostává číst zdrojových vidět, že tam je to díra. Co říkáme - i když to není velmi chytrý příklad - toto se nazývá zadní dveře. Pokud si myslíte, že ze zadních dveří vašeho domu. Tady, když jsem potvrďte "loupit" uživatelským jménem nebo "Tommy," To by bylo jako s použitím "dveře." To je způsob, jakým bych měl bezpečně přihlásit. Ale když zadám s tímto uživatelským jménem a heslem - Pak je to tzv. "zadní dveře." Nebylo úmyslné způsob, jak se do programu, ale to ještě funguje. A lidé jsou obecně neměla vědět o těchto zadních dveří. Budeme zlepšit. Pojďme se vrátit k naší původní tento login.c, a pojďme se podívat na náš nový kompilátor. Dobře. Vše až tady je přesně stejný. Jsme čtení celý soubor do vyrovnávací paměti. Všechno dolů zde je stejný. Právě jsme sestavil soubor. Ale teď mám to velký, pokud se sem , který říká, pokud soubor, který jsem náhodou sestavování je login.c, pak jsem udělat něco speciálního. Co je to něco zvláštního? Vidím tu nějaký řetězec s názvem "hack", a při pohledu na tyto řádky kódu - se jedná o tytéž řádky kódu - myslím, že jsem udělal použití "ihack", a nikoli "ihacked" před - pohledu na tyto řádky kódu, jsou to tytéž přesné řádky kódu, které jsem měl v login.c před. Ale teď, místo toho, aby je v login.c, Chystám se dát je do mého kompilátor. Jedná se o řádky kódu budu chtít vložit do login.c. Tyto řádky kódu - vyrovnávací paměť, která původně konat svou login.c se již bude dostatečně velká, protože teď chci také vložit tento hack do středu svého programu. To vše dělá je vytvoření nového vyrovnávací paměti, která je dostatečně velká - jak pro původní soubor a další řádky kódu - hack - že chci vložit tam. Zde je něco, co si všimnout - char * pattern = "/ / zakázat jim přístup!" Podíváme-li se zpět na login.c, vidíme tady to comment - odepřít jim přístup! V login.c, tento komentář vypadá zcela neškodný, takže by se domníváte, že žádný zlý úmysl s jen tento komentář. Ale v naší kompilátoru, jsme se konkrétně bude vypadat na tomto řádku kódu, a pak, když jsme se ho najít - tyto řádky kódu vkládání náš hack do této pozice. Takže, jsme iterace přes celou login.c, jsme Vložením tohoto hack přesně tam, kde se říká, odepřít jim přístup, a pak jsme sestavování - není originál login.c ale nová login.c s tímto hackem vloženou přímo na "jim ho odpírat přístup." Teď chci sestavit svůj nový kompilátor s tímto hack účastní. Nebudu používat řinčet, takže se pojďme zkopírujte kompilátoru jsme použili před a použít - to, kompilátor compiler.c compile.c-o evil_compiler. Nyní naše zlo kompilátor - pokud budeme používat naše zlé kompilátor pro kompilaci jiný soubor, soubor bude sestavovat tak, jak má. Je to naprosto normální. Ale pokud budeme používat naše zlé kompilátor pro kompilaci přihlášení - tak, / evil_compiler login.c-o login-lcs50. - při pohledu na login.c znovu, tam je absolutně nic tady. Je to naše obvyklé "pokud je to buď rob nebo tommy jsme v, jinak jsme venku." Ale když jsme se spustit náš spustitelný, bude to fungovat jako obvykle. Běh opět - hacker, LOLihackyou - Hacked! Nyní máte přístup. Jen při pohledu na login.c, měli byste se, že něco není v pořádku. Ale kompilátor, který je používán pro kompilaci login.c je speciálně navržen tak, aby vložení tohoto hack do programu. Jsme jen přestěhovali náš původní problém. Původně jsme měli tyto řádky kódu v login.c, že ​​pokud někdo podíval se na ně, že by to jako, proč jsou tito zde? Nyní, když někdo stane se podívat na naši kompilátor, se podíváme na tyto řádky kódu a říci, Proč jsou tyto tady? Takže, jsme úplně náš problém vyřešil. Ale můžeme použít tuto myšlenku znovu. Přičemž se podívat na naši třetí verze překladače, je to stejná myšlenka. Četli jsme celý soubor do vyrovnávací paměti se zde, jsme sestavit soubor sem, a já mám nějaký řetězec hack sem, ale všimněte si soubor, který jsem vlastně Hacking teď. Já jsem hacking compiler.c není login.c. Ale co jsem vložila do compiler.c? Já vložení tohoto kódu, který je přesný kód v našem předchozím kompilátor, který byl určen pro vložení kódu do login.c. Zde je naše, pokud strcmp soubor login.c a pak vložit do login.c naší hack věci. Tento nový kompilátor je určena k vytvoření kompilátoru který je určen ke kompilaci přihlášení zlomyslně. Uvidíme, proč to nám pomáhá. Všechno ostatní je stejné, tak to funguje přesně tak, jak to fungovalo s předchozím kompilátorem. Jsme jen iterace celé naší compile.c. Ale teď místo toho, aby hledal "jim ho odpírat přístup," hledáme pro "kompilaci souboru." Pokud je sestavit soubor? Při pohledu na naše zcela nevinné compiler.c, je to tady dole na dně. Tento komentář - sestavit soubor - znovu, že vypadá úplně neškodné. Ale v našem škodlivého verzi překladače, budeme - těsně předtím, než té poznámce - vložit tento kód který je určen k vložení kódu při kompilaci login.c. Existuje mnoho úrovní indirection zde. Pojďme skutečně spustit. Opět budeme kopírovat naši původní kompilátor. Nyní, kompilace - kompilátor compiler.c compile.c-o evilest_compiler - a teď evilest_compiler. Evilest kompilátor - pokud budeme používat, že zkompilovat naši překladač, Pojďme skutečně vypadat. Evilest_compiler - přináší to více, celou cestu zpět na verzi 1 našeho překladače - verze 1 našeho překladače, který byl právě četl v souboru a zkompilovat. Zde, víme, že evilest_compiler - při kompilaci tohoto souboru - bude vložit kód přímo zde před sestavit soubor, a že je tento kód bude vypadat přesně jako kód z druhé verze našeho překladače který dělal to. Tento kód, který je určen k proniknout do přihlášení, se bude vložen do našeho překladače překladač evilest. Využijme evilest_compiler zkompilovat naši kompilátoru. Nyní budeme používat překladač, vrátit se k přihlášení, a pamatovat si to login.c nemá vůbec nic podezřelého v něm. Ale pomocí našeho kompilátor pro kompilaci login.c, rob, thisiscs50, úspěch. Pojďme login hacker, LOLihackyou, Hacked! Nyní máte přístup. Uvědomte si, že toto se liší od verze 2 našeho překladače. Kompilátor používáme - pojďme zpět - kopie z přihlášení - vraťme náš překladač zpátky sem. Odstranění evilest kompilátoru. Jediné, co zbývá nyní je kompilátor. Pokud se podíváme na compiler.c, není absolutně nic tam, že se zdá nebezpečný v žádném případě. Pokud se podíváme na login.c, není absolutně nic tady to vypadá škodlivý jakýmkoliv způsobem. Ale, když jsme využít naše kompilátor pro kompilaci login.c, dostaneme hackable verzi login.c. Když jsme použili kompilátor sestavit novou verzi kompilátoru, dostaneme hackable verzi kompilátoru. Nyní, když jdeme ven a distribuovat kompilátor spustitelný, a nikdo nebude vědět, že tam je něco škodlivého o tom. To je vlastně tak - nemůžu vzpomenout na rok - Ken Thompson, a získal Cenu Turing - pokud jste obeznámeni s Turing cena, je to téměř vždy definována jako Nobelova cena informatiky, tak to je, jak jsem si ji definovat. Ken Thompson přednesl projev, když on přijal jeho Turing Award tzv. "Úvahy o důvěřivá Trust." V podstatě, to byl nápad jeho projevu. Kromě místo naší překladače, mluvil o GCC - jen další kompilátor jako Clang - a to, co říkal je, stejně jako naše login.c, naše login.c jeví jako poměrně zbytečné ale on mluvil o skutečném UNIX login.c. Při přihlášení do svého zařízení, tam je nějaký login program, který je spuštěn. To bylo přihlášení, že mluvil o. To byl v podstatě jeho nápad. Řekl, že v GCC, se teoreticky mohl zasadil chybu - není chyba, ale škodlivý kód - že při sestavování přihlašovací funkci - přihlásit souboru - by vložit zadní dvířka, aby mohl jít do absolutně žádné systému UNIX ve světě a přihlaste se nějakým konkrétním uživatelským jménem a heslem. V té době, GCC byl skoro kompilátor, že každý použít na cokoliv. Pokud někdo náhodou aktualizovat GCC, pak by překompilovat GCC pomocí GCC, a vy byste ještě dostat špatnou verzi GCC protože to bylo specificky sestaveny tak, aby uznaly, že to bylo recompiling kompilátoru. A pokud jste někdy použít GCC pro zkompilujte login.c soubor, pak by to vložit tento zadní dveře, které by mohl použít k přihlášení k libovolnému počítači. To bylo vše, teoretická, ale - to zejména okolnost byla teoretická, ale myšlenky jsou velmi reálné. V roce 2003, tam byl podobný příklad, kde - budeme se podívat na tohoto souboru, a to nemá absolutně nic společného skutečně dělat s ním, ale chyba je podobná. Tento soubor jen definuje funkci nazvanou dělení. To trvá argument, argument b, a záměrem je udělat děleno b. Ale to dělá nějakou kontrolu chyb, takže víme, co je divné, pokud b stane rovnat nule. Pokud b je nula, pak jsme se rozdělili to do 2 případů. Můžete již vidět chybu. První případ - pokud je nula, pak děláme nulu děleno nulou, a my jsme jen říct, že je to undefined. Ve druhém případě - pokud není nula, pak je to něco jako 1 děleno nulou, a my jen říkáme nekonečno. Jinak se vrátíme obvykle dělí b.. A tak tady, jsme provozování těchto 3 případů, a my jsme vlastně běží propasti - to křičí na něj pro mě - tak, ignoruje řinčet je varování - Konec non-void funkce - zřejmě jsem nebyl vytvořen to předem. Návrat 0. Udělejte rozdělit - v pořádku. S. / Propasti, vidíme 3, Infinity, Infinity. Zero děleno nulou neměli vrátit nekonečno. A pokud jste přišel na to, chyba - dosud, nebo jsi to neviděl předtím - vidíme, že děláme = 0. Pravděpodobně jsme znamenalo == 0. Pravděpodobně. Ale toto bylo vlastně něco, co opět v roce 2003, Linux kernel - takže naše zařízení používá linuxové jádro - jakýkoli operační systém Linux používá jádro Linux - takže chyba velmi podobně jako tento ukázal. Myšlenka této chyby byla - Znovu, tam byl jen některé funkce, která byla nazývána, a to přece trochu kontrolu chyb. Tam byly některé specifické vstupy, že tato chyba kontrola - to mělo být jako, v pořádku, nemůžete volat tuto funkci s dělitel 0. Takže, budu jen návrat nějakou chybu. Až na to, že to není tak nevinná, jak jen nastavení rovna 0. Místo toho, tento řádek kódu skončil dělá něco více jako user = správce. Nebo user = superuser. Bylo to nevinné - na první pohled - chyba, kde to mohlo právě rozumné že jsem jen chtěl oznámit něco konkrétního v případě, že uživatel náhodou superuživatel správce. Ale pak znovu přemýšlet o tom, člověk chtěl, aby to vypadalo jako jednoduchý překlep, ale pokud tento kód byla skutečně vydána, pak byste byli schopni proniknout do jakéhokoli systému tím, že podstoupí zvláštní vlajku - v tomto případě se b = 0 - a automaticky by si uživatel správce, a pak má plnou kontrolu. To se stalo v roce 2003. To jen tak se stalo, že jediný důvod, proč byl uloven bylo proto, že se stalo, že některé automatizovaný systém které zaznamenal změnu v tomto souboru které nikdy by byly změněny lidskou. Soubor musí být automaticky generovány. To jen tak se stalo, že někdo dotkl - dobře, že osoba, která chce proniknout dotkl tento soubor, a počítač zachytil, že dojemné. Takže, oni změnili to a až později si uvědomil, co katastrofa by to bylo pokud to dostal do skutečného světa. Možná si myslíte, že - se vrací do našeho kompilátoru příkladu - i když nemůžeme vidět - při pohledu na zdrojovém - že nic zvláštního, je špatné, pokud se skutečně podívat na binární kód kompilátoru, bychom vidět, že něco není v pořádku. Jako příklad, když narazíme řetězce fungují - které se jen tak podívat na soubor a vytisknout všechny řetězce lze najít - když narazíme řetězce na našem kompilátor, vidíme, že jeden řetězec, který zjistí, že je to divné - else if (strcmp (jméno, "hacker") - bla, bla, bla. Pokud někdo náhodou paranoidní dost nevěří jejich kompilátor, že by mohl spustit řetězce a vidět, a pak by vědět, že tam bylo něco v nepořádku s aktuální binární. Ale, struny bylo nevyhnutelně něco, který byl kompilován. Takže, kdo může říct, že náš překladač není jen mít více speciální kód , který říká, pokud řetězce je někdy spustit na našem kompilátoru, nemají výstup všechny uvedené škodlivého kódu. Stejný nápad, jestliže chceme, aby dis-montáž soubor - jsme se dozvěděli, že assembler nás přivádí od assembleru k strojového kódu - můžeme jít v opačném směru - objdump-d kompilátor - nám dá shromáždění našeho kódu. Při pohledu na to, je to docela mystický, ale pokud bychom chtěli, mohli bychom se podívat prostřednictvím této a důvod, počkejte, je tu něco, co se děje tady, že by neměl být se děje, a pak poznáte, že kompilátor dělá něco škodlivého. Ale, stejně jako struny, kdo říká, že objdump nebylo zvláštní vyvolaná. V podstatě, to přijde až nemůžete věřit vůbec nic. Bod papíru s názvem "Důvěřující Trust" je obecně, věříme náš překladač. Můžete sestavit svůj kód a očekáváme, že to, co žádáte to udělat. Ale, proč byste věřit kompilátor? Jste nenapsal kompilátoru. Ty nevíš, co kompilátor je nutně skutečně dělá. Kdo říká, že můžete důvěřovat? Ale i pak, no, možná bychom mohli důvěřovat kompilátor. Tam jsou desítky tisíc lidí, kteří se dívali na tento. Někdo musí uznaly něco bylo s kompilátorem. Co když prostě jít 1 level hlouběji? Mohlo by to být i váš procesor. Jak směšné, jak by to mohlo možná být, Možná tam je nějaký rogue zaměstnanec společnosti Intel, který vytváří tyto procesory že pokaždé, když je procesor zjistí, že vedete nějaký příkaz , který je určen k přihlášení k počítači, procesor bude přijímat nějakou konkrétní uživatelské jméno a heslo. To by se divoce složité, ale někdo by to mohl udělat. V tomto bodě, jste opravdu otevřít počítač se podívat na procesoru a používat mikroskop, aby uznaly, že tyto obvody nejsou seřazeni, jak by měly být? Nikdo se nikdy nechytí, že chyba. V určitém bodě, stačí se vzdát a věřit něco. Většina lidí si věřit, že kompilátor v tomto bodě. To znamená, není nutně, že byste měli. Při pohledu na poněkud neslavný videa - [Dramatické přehrávání hudby] [Je to systém UNIX. Vím, že to.] [Je to všechny soubory -] Ona řekla: "Je to systém UNIX. To vím." Nahradit UNIX s tím, co váš oblíbený operační systém - mohla říci: "Je to systém Windows. To vím." Je to naprosto nesmyslná prohlášení, ale všichni víme, že se stane znát zadní dveře do systému UNIX. Ona ví, že některé uživatelské jméno / heslo kombinaci, která bude skutečně nechat ji dělat, co chce. Dobrá. Morální je dnes v podstatě nemůžete věřit vůbec nic. Dokonce i věci, které píšete - jste nenapsal kompilátoru. Kompilátor by mohl být špatný. I když jste psát kompilátor, může věc, která běží překladač být špatné. (Směje se) Není toho moc, co můžeš udělat. Svět je odsouzena k zániku. Zpátky k Davidovi! [Potlesk] [David] Díky. To bylo opravdu deprimující. Ale opravdu, Rob je správné. My opravdu nemají řešení, ale ty jsi asi nějaké řešení některých běžnějších obrany. V očekávání toho, co Nate a já jsem dělal v zákulisí se je vědět, že tam je tak mnoho notebooků v tomto pokoji, jsme byli čichání všechny bezdrátový provoz prochází tomto pokoji za posledních 20 minut během hovoru Rob, takže budeme trvat 2 minuty přestávku zde. Nate se děje nastavit, a pak budeme mluvit o všechny věci, jsme mohli nalézt. (Smích) Takže, možná jsem přehnané trochu jen kvůli dramatu, ale mohli jsme byli čichání všechny vaše bezdrátový provoz, protože skutečně, je to tak jednoduché. Ale existují i ​​způsoby, které můžete bránit proti tomu, a tak s tím, Dám vám Nate Hardison. >> [Nate] Sweet. (Potlesk) [Nate] Díky, člověče. Oceňuji křičet. Dobře! Je to hra týden. Jsou vy nadšený? Doufejme, že to bude velká hra na sobotu. Dovedu si představit, vám chlapi v tomto bodě - vzhledem k tomu, že máte kvíz ve středu vše o kód, a my jsme jen seděli přes nádherné přednášky Rob s celou partou kódu C v něm - jsou možná trochu unavená kódu. V této části, jsme vlastně nebudeme dotýkat libovolný kód vůbec. Jsme prostě mluvit o technologii, která používáte každý den, často po mnoho, mnoho hodin denně, a budeme mluvit o důsledcích s bezpečností, které tam jsou. Mluvili jsme hodně o bezpečnosti v průběhu semestru, a my jsme vyrazili s trochou crypto. [Bdoh lv vwlqng!] A zatímco vy jste pravděpodobně super-nadšeni procházel poznámky navzájem ve třídě pomocí šifry Caesar, jako je tento, ve skutečnosti, tam je nějaká větší zábava, aby se měl, když jste vlastně mluví o bezpečnosti a tento druh věcí. Dnes, budeme pokrytí několik technologií že lidé skutečně používají v reálném světě dělat celou řadu věcí od čichání pakety lidí skutečně děje v a vloupání do lidová banka účtů a všech z toho. Jedná se o legitimní nástroje, které jsme mluvili o s výjimkou možná jednoho nástroje. A já jen chci, aby rychle disclaimer. Když mluvíme o těchto věcech, mluvíme o nich, takže víte, co je tam venku, a jste si vědom, jak být v bezpečí, když jste se pomocí počítače. Ale my rozhodně nechceme naznačit, že byste měli používat tyto nástroje v koleji nebo vašeho domu, protože můžete narazit na spoustu velkých problémů. To je jeden z důvodů, že dnes jsme vlastně nebyli šňupání vaše pakety. Dobrá. Minulé pondělí, jsme si povídali o cookies a HTTP, a autentizaci, a jak Firesheep otevře tento velký dveře do svého účtu Facebook, k účtu služby Hotmail - jestli někdo stále používáte Hotmail - a mnoho dalších účtů. Mnoho z těchto věcí se bude stavět pryč, že, ale nejprve chci vzít rychlou prohlídku, jak Internet se vyvinul v průběhu času. Zpátky v 90. letech, možná jste si vzpomněli, skutečně připojením počítačů s jedním z nich. Teď neděláme to tak moc ne. Je to vlastně Ukazuje se, že v zájmu zapojit ethernetový kabel do mého notebooku, Nyní mám použít jeden z těchto adaptérů, které je trochu blázen. Místo toho, v roce 1997 jsme měli tuto novou, legrace technologie se ukázalo, že je známa jako IEEE 802.11, takže to je bezdrátový internet standardní IEEE je to řídící orgán, který vydává všechny druhy - zveřejňuje všechny druhy norem ve vztahu k počítačům. Tyto normy jsou 802 vše o internetových technologií. Takže 802,3, například, je Ethernetový standard, 802.15.1 Věřím, že je Bluetooth standard, a 802.11 je především o bezdrátové připojení k internetu. V roce 1997 vyšel. To ne zcela zachytit hned. To nebylo až do roku 1999, a 802.11b přišel na to, že právě dostal opravdu populární. Jak mnozí z vás si vzpomenout, kdy počítače začaly vycházet a jak wi-fi na ně? To bylo docela v pohodě, ne? Vzpomínám si, jak můj první notebook na střední škole, a to mělo bezdrátovou kartu v něm. Můj táta mi ho dal, a říkal, že bych měl použít pro své vysokoškolské aplikace a všechny z toho, a já jsem neměl tušení, jak jsem šel se podívat do této věci on-line. Ale naštěstí jsem měl bezdrátovou kartu, tak to bylo docela v pohodě. V současné době, budete také vidět 802.11g, který je jedním z dalších velmi populární bezdrátové standardy, které je tam venku. Oba b a g jsou dost zastaralé v tomto bodě. Ví někdo, jakou verzi si většina lidí právě teď v případě, že kupujete nové bezdrátové směrovače a takové věci? N. Přesně tak. Bingo. A ukázalo se, že AC norma je právě vychází v podobě návrhu, a tam jsou jiné verze na cestě. S každou z těchto norem, co jsme získávají větší šířku pásma, další údaje v rychlejším tempem. Tyto věci se neustále mění docela rychle. To také dělá to tak, že budeme muset koupit více směrovačů a všechno to zábavné věci. Pojďme se bavit o tom, co bezdrátová komunikace je vlastně v jeho jádru. S Ethernet a těch starých dial-up modemy, jste vlastně měli tyhle věci, které jste zapojen do počítače, a pak zapojen do modemu druhů, a pak si ji zapojil do zásuvky ve zdi. Vy jste měli tento kabelové připojení, ne? Celý bod bezdrátové je zbavit se této věci. Aby k tomu, že to, co máme, je v podstatě rádiové komunikace, kde náš bezdrátový router - určený naší malé ikonu bezdrátového připojení - je připojen k internetu s touto pevnou šipka ukazuje nějaký druh kabelové připojení, ale při připojení k bezdrátovému směrovači jste vlastně používáte skoro jako vysílačku mezi počítač a bezdrátový směrovač. Co je opravdu cool o tom je, že můžete pohybovat. Můžete s sebou počítač celém Sanders, jděte surfovat na webu, co chcete, stejně jako vy všichni známe a milujeme, a nemusíte vůbec být zapojen na cokoliv. Aby to fungovalo, máme jak tento příjem a přenos. Je to opravdu jako ten vysílačku. Tento bezdrátový router - který v Sanderse sedí pod této fázi, tady - je vždy vysílání a příjem, vysílání a příjem, a podobně, budou vaše počítače všichni dělají, že stejný druh věci, taky. My prostě nemůže slyšet. Další věc, kterou můžete udělat, je, že můžete mít více počítačů mluví ke stejnému bezdrátovému směrovači. Čím blíže jste k routeru - a opět, to je rádiová komunikace - čím blíže jste, tím lepší je vaše signál, lepší počítač "slyší" router a může komunikovat s Internetem. Pokud jste se někdy na své koleji, ve vašem domě a jste přemýšlel, proč váš signál je špatný, je to pravděpodobně proto, že). nejste velmi blízko k routeru, nebo b). něco mezi vámi a vaším routerem jako cement zeď nebo něco že nedovolí tyto rádiové vlny procházejí. Pojďme trochu pohovořit o tom, proč padouchy jako wi-fi. Zlí hoši rádi wi-fi z několika důvodů. Tady je náš ošklivé špatný chlap tady. Jedním z důvodů, proč tento špatný miluje wi-fi Je tomu tak proto, standardně, spousta bezdrátových směrovačů přijde, a když si je nastavit, oni nešifrované. To byl problém, a tam byly příklady - více instancí, nyní - kde špatný člověk ukáže až něčí domu, oznámení, že to nešifrované wi-fi, na které se lze připojit. Oni se připojit k wi-fi, a pak začnou stahovat nejrůznější zábavné věci. A nejsou to stahování koťata, že to není stahování štěňátka. To je jako BitTorrent. To je ohavný nejodpornější. Tam byly případy, kdy FBI dokonce se zapojila myslet si, že osoba, která je vlastníkem domu je vlastně jeden jít ven a stahování věci, které by opravdu neměl být. Po nešifrované wi-fi rozhodně není něco, co chcete dělat, kdyby jen neměl FBI přijde klepat na vaše dveře. Dalším důvodem, proč ti špatní milují wi-fi je důvod, proč David mluvil o tom dříve během přestávky. Vzhledem k tomu, že je to rádiové komunikace ve svém jádru, pokud víte, kanál, můžete poslouchat této rozhlasové stanice. Například, pokud je špatný tady sedí uprostřed vpravo vedle přístupového bodu, hned vedle tohoto bezdrátového routeru, může špatný poslouchat na všechny bezdrátový provoz že přichází ze všech těchto počítačů. Ve skutečnosti, tito lidé - to několik málo šťastlivců, kteří jsou zde v první řadě - proto, že jsou super blízkosti všech těchto bezdrátových směrovačů že sedí těsně pod jevištěm, by být schopni slyšet každý je provoz v celém tomto pokoji pokud jste připojeni k Wi-Fi a začněte procházet prostřednictvím těchto přístupových bodů. Není to moc těžké sedět sami v dobré pozici, aby čichat a zjistit co ostatní lidé dělají. Je to něco, co mít na paměti, zvláště pokud si nejste jisti, kde je přístupový bod, a jste procházení slovo, na Starbucks. Ukazuje se, že čichání a to vše opravdu není tak těžké udělat. Tam je program s názvem tcpdump, který vypíše všechny druhy dopravy TCP a můžete jej spustit docela jednoduše - stejně jako jsem to udělal dnes ráno. Zde je trochu skládku, a tady je několik z provozu, který byl příští nad moje síť v té době. Můžete vidět - pokud šilhání opravdu těžké - je tu trochu Spotify tam. Na vrcholu tcpdump - protože je to tak trochu bolesti používat - je tu program nazvaný Wireshark které svazky to vše v příjemném GUI. Wireshark je super-praktický, takže pokud máte jít na se sítí třídy, To je nástroj, který vám přijde na lásku, protože vám pomůže rozebrat všechny pakety , které jsou plovoucí kolem tam. Ale může být také použit pro špatné. Je to velmi jednoduché stačí stáhnout tento program, spustit jej, kdo sítě sběr, a vidět vše, co se děje - a filtrovat a dělat všechny druhy zábavné věci s ním. Další věc, kterou můžete udělat s bezdrátovou komunikací se můžete nejen odposlouchávat, ale můžete také naučit, jak šroub se sítí a aplikujte své vlastní informace k ovládání zkušenost, že ostatní lidé ve stejné bezdrátové síti jsou stále. Pojďme se na to podívat. Zde je Firesheep - které známe a milujeme z minulého týdne - který je, že odposlouchávání technologie. Pokud, například, chtěli jsme, aby se aktivně máme bad guy jít a flákat se jeden z těchto počítačů, V tomto scénáři máme počítač se snaží jít surfovat na harvard.edu. Co se stane, je, počítač nejprve odešle zprávu k bezdrátovému směrovači a říká, hey, já chci jít navštívit www.harvard.edu. Řekněme, že z nějakého důvodu se snažíme získat informace o hře tento víkend. Bad guy, protože sedí přímo uprostřed, hned vedle tohoto přístupového bodu, můžete vidět, že komunikace přicházející z počítače do routeru, a on ví, "Aha! Někdo to bude harvard.edu." (Zle směje se) Tam to bude toto zpoždění při komunikaci jde z routeru do Internetu jít najít webové stránky na harvard.edu-- stejně jako vy všichni víme, po tom vaše PHP psets - a tak špatný chlap má trochu času, trochu z okna, ve kterém může reagovat s některými věcmi. Řekněme, že to špatný člověk, samozřejmě, je Yaley. On odpoví s harvardsucks.org. Boo! Bad, bad guy! Bad Yaley! Nebo ještě hůř, mohl by reagovat s tím. [Http://youtu.be/ZSBq8geuJk0]. Nechám jste přijít na to, co to je. To je vlastně technologie nazývá Airpwn! který byl debutoval u jeden z bezpečnostních konferencí o několik let zpět. S Airpwn! jste schopni skutečně aplikovat provoz zpět do sítě. Počítače, které se snažili jít na internet a snaží se dostat do Google.com, na Facebook.com, aby harvard.edu viz škodlivého odpověď přijde a okamžitě převzít, jo, že je odpověď, že jsem čekal na a nakonec dostat obsah z harvardsucks.org nebo nameyourfavoriteshocksite.com, a uvidíte, jak rychle se věci zhorší. Všechny tyto druhy věcí nelze provést s těmito kabelové připojení, protože s kabelovým připojením je to těžké odposlouchávat k provozu. Pokud jsem špatný člověk, a na jednom konci je váš počítač a na druhém konci je váš router - modem - jediný způsob, jak můžu dostat mezi této souvislosti je skutečně spojovat svůj počítač v někde uprostřed nebo dělat něco jiného s routerem, něco po proudu. Ale s bezdrátovým, to může být tak jednoduché, jak sedí v přední řadě třídě, a můžete dělat všechny druhy ošklivé věci lidem v zádech. Pojďme se bavit o tom, jak by se Vám mohl bránit proti některé z těchto věcí. Lidé, kteří vyvinuli standardy bezdrátového připojení - 802,11 - nejsou hloupí lidé od žádným nejbujnější fantazii. To je v pohodě technologie a když debutoval v roce 1999, přišli s tímto standardem s názvem WEP. Zde vidíte, když se pokusíte a připojit se k bezdrátové síti, Máte všechny druhy různých možností zabezpečení. To je trochu bolesti, protože tam jsou 6 dohromady a to nikdy opravdu smysl toho 1 připojit. Tato 1 v horní části je první, který přišli s názvem WEP. WEP Wired Equivalent Privacy, věřím, ne Wireless Encryption Protocol, který je společný chybný. Vzhledem k tomu, že se snaží, aby vám soukromí ekvivalent a bezpečnostní ochrany ekvivalentní k tomu kabelové síti S WEP, co skončí děje je, máte jednoduchý, malý heslo, které zadáte a zda slouží k šifrování všechny vaše komunikace mezi počítačem a routerem. Co je problém s WEP i když? Heslo s WEP je opravdu krátká, a také každý používá stejný přesný heslo,  a tak je to opravdu snadné dešifrovat. Takže velmi rychle lidé zjistili, že WEP je problém, a jediný důvod, proč to vidíte ukázat ještě na této malé chlap je - tam jsou některé starší systémy, které se používají WEP - co byste měli místo mít zájem o jsou WPA a WPA2 standardy dokonce které byly vydány později. Tyto systémy jsou mnohem lepší jít na ochranu na bezdrátové připojení k internetu. To znamená, že oni ještě mají určitou hackability. Existují nástroje, které tam může jít udělat. Jedna věc zejména to, že může být protivný je, že Pokud připojujete a ověřen k bezdrátovému směrovači a používáte nějaký šifrovaná komunikace, se ukazuje, že hacker může snadno odeslat jeden paket odpojit vás od routeru, a jakmile budou odpojeni ti pak mohou poslouchat v - mohou čichat ty pakety, pokud se pokusíte obnovit spojení s routerem. A s těmito informacemi, které pak mohou jít a dešifrování zbytku vaší komunikace. To je v žádném případě není nějaký druh zabezpečený nade vší představivosti. Další věc, kterou můžete udělat, když jste nastavení bezdrátové sítě nebo jste se k nim připojili, je - všimnete si, že tady, když jsem připojení k této síti, se zeptá na jméno mé síti. Toto je také známé jako SSID. A tady vidíte, že na pravé straně mám pole, které mi ukazuje dostupných SSID. Tam je Harvard University, CS50, CS50 a Staff sítě. Nyní, jak se mnozí z vás věděl, že tam byl CS50 Zaměstnanci síť po? Někteří z vás. Ne všechny z vás. Problém s tímto, samozřejmě, je to, že se nám neupravené to až na svém seznamu SSID, nikdo by věděl o tom s největší pravděpodobností. Doufám, že. Pokud vy se všichni snaží rozlousknout do našeho bezdrátové. Ale to je něco, co můžete udělat, že je to opravdu důležité, když jste nastavení router doma. To pravděpodobně nestane za pár let pro mnoho z vás, ale mějte na paměti, že vedení, které SSID ven a není také pojmenování něco super-společná vám pomůže udržet si jistější v dlouhodobém horizontu. Závěrečná pár věcí, které můžete udělat. Jedním z nich je HTTPS. Pokud jste na Starbucks, pokud jste ve veřejném wi-fi oblasti a vy se rozhodnete pro přístup k bankovnímu účtu, přístup k Gmail, váš Facebook, Ujistěte se, že tyto spoje budou přes HTTPS. Je to přidaná vrstva zabezpečení, přidal vrstvu šifrování. Jedna věc je mít na paměti, je zde, kolik z vás někdy klepli přes tuto velkou, červenou obrazovku, která říká, "Tato webová stránka může být špatná." Vím, že mám. Je to asi, když jste všichni procházení se jít podívat vlasti nebo něco takového, ne? Jo. (Smích z publika) Jo. Tam máš. Víme, kdo se dívá vlasti. To velké, červená obrazovka tady často ukáže, že se něco funky se děje. Někdy je to jen web sám o sobě je nejistý, ale že stejné velké, červená obrazovka přijde, když se lidé snaží mount síťových útoků na vás. Takže pokud uvidíte, že velké, červená obrazovka přijít na Starbucks, neklikejte přes to. Špatné zprávy. Špatné zprávy nese. Poslední věc, které se můžete podívat na je nějaký VPN. Tento VPN je k dispozici prostřednictvím Harvard - vpn.fas.harvard.edu-- a co to dělá, je to vlastně vytváří zabezpečené připojení mezi vámi a Harvardu, nálevky váš provoz přes to, a že způsobem, pokud sedíte na místě, jako Starbucks můžete se připojit k Harvardu, dostat, že bezpečný provoz, a pak procházet z Harvardu. Opět, není stoprocentní. Lidé se mohou dostat do středu. Mohou se začnou rozpadat, ale je to mnohem bezpečnější než se spoléhat na bezpečnost na wi-fi samotným. Dobrá. V součtu, když se nastavení bezdrátových sítí, když jdete ven používat bezdrátové veřejnosti - ať už je to Starbucks, ať už je to pět kluků, ať už je to B.Good, něco jako, že - ať mají wi-fi - být vědomi svého okolí. Buďte si vědomi toho, co lidé mohou dělat. A být v bezpečí. Nepoužívejte přístup k vašemu bankovní účet. Mohlo by to být drsné probuzení, pokud někdo objeví s Vaším heslem později. S tím, jít purpurový! A budu zase věci zpátky na Davidovi za poslední slovo. (Potlesk) [David] Myslel jsem, že sdílejí jednu věc z osobní zkušenosti. Nástroj by vás mohla hrát s - i když Apple do značné míry vymýtit tento problém Pokud jste aktualizovali software od - ale k tomuto konci není skutečně schopni věřit software, který používáme, a na body Nate, budou moci čichat trochu o tom, co dělají jiní tam - to kus softwaru, který vyšel o rok a půl před podnikem. [IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] Na nějakou dobu, iTunes - před iCloud, když jsi synchronizaci své iPody nebo vaše iPhone nebo nebo vaše iPady s iTunes - v zájmu záloh, jaké jsou vaše iPhone a tato jiná zařízení dělali nějaký čas, je využití údajů GPS. Všichni víte, možná, že vaše iPhone a Androids a Windows Mobile telefony a jako v těchto dnech mohou sledovat, kde se v zájmu zobrazující map a podobné - dobře, co Apple a tyto dalších společností, je oni typicky sledovat téměř všude, kam jste skutečně v zájmu zvyšování kvality služeb. Jeden, můžete získat více cílené reklamy a podobně, ale dva, oni mohou také zjistit, kde existují hotspot pro bezdrátové připojení v celém světě, a to může pomoci s geo-umístění - druh triangulace polohy lidí. Dlouhý příběh krátký, každý z nás chodil tykadla na nějakou dobu. Bohužel, Apple udělal návrhu rozhodnutí - nebo nedostatek thereof - se nelze zašifrovat tuto informaci, když to bylo být zálohována do iTunes. A co bezpečnostní výzkumník bylo zjištěno, že to byl jen obrovský soubor XML - obrovský textový soubor - sedí v iTunes lidí softwaru, a pokud jste byli jen trochu zvědavý, můžete jít šťourat vašeho manžela historii, svého spolubydlícího historie, Váš sourozenec historie a podobně, a díky určitému svobodného softwaru, můžete vykreslit všechny tyto GPS souřadnic - zeměpisné šířky a délky. Takže jsem vlastně udělal s mým vlastním telefonu. Jsem zapojen v mém telefonu, a opravdu, moje verze iTunes nebyla šifrována v té době, a to, co jsem byl schopen vidět byli mými vlastními vzory. Zde je Spojené státy a každý z těchto modrých kruhů představuje kde jsem se stalo, že byl v průběhu těchto předchozích měsících vlastnit tento konkrétní telefon.  Strávil jsem spoustu času, samozřejmě, až na severovýchodě, trochu času v Kalifornii, krátkotrvající výlet do Texasu, a pokud pak přiblížit na to - je to všechno trochu pokuty a zajímavé, ale já jsem to věděl. Většina mých přátel to věděl, ale pokud se ponořit hlouběji, vidíte, kde trávím většinu svého času na severovýchodě. Pokud západky na některých zná-vyhlížejících městech - tento velký, modrý inkoust skvrna je v podstatě koncentrovaný přes Boston, a pak jsem strávit trochu času v předměstí vyzařujících z Bostonu. Ale byl jsem také dělal docela dost konzultací ten rok. A v letošním roce je východní pobřeží, a můžete skutečně vidět mě a můj iPhone v kapse cestování tam a zpět mezi Bostonu a New Yorku a Philadelphia dále dolů, stejně jako strávit trochu dovolené na mysu, který je jen málo rameno tam. Takže, každý z těchto bodů představuje nějaké místo, kde jsem býval, a zcela bez vědomí mi, že celý tento historie byla jen tam sedí na mém stolním počítači. Pokud oddálit - to vlastně byl trochu znepokojující. Neměl jsem vzpomínku nikdy mít been v Pensylvánii, které daný rok. Ale já když něco těžší, o tom a já jsem přišel na to, oh, to bylo ve skutečnosti, že cesta a opravdu, můj telefon chytil mě. Apple od té doby šifrovány tuto informaci, ale i to je jen dokladem toho, kolik informací se shromažďují kolem nás, a jak snadno - k lepšímu nebo k horšímu - je to přijatelné. Jeden z rychlé občerstvení snad z diskuse Rob, z řeči Nate je a malé vizuální, jako to dnes je, jen aby se všechny více uvědomovali tohoto takže i když - jako bod Rob - Jsme trochu v prdeli, že jo? Není toho moc, co můžeme udělat, pokud jde o některé z těchto hrozeb, ale na konci dne musíme věřit něco nebo někoho Chceme-li skutečně používat tyto technologie. Alespoň můžeme být informovaná rozhodnutí a vypočtených rozhodnutí, zda bychom měli vlastně být kontrola tohoto mimořádně citlivého účet nebo bychom měli být skutečně posílat, že mírně podezření rychlé zprávy  v wi-fi prostředí, jako je tento. Takže, s tím řekl, jen jeden kvíz zbytky, jedna přednáška zůstává. Uvidíme ve středu pak pondělí. (Potlesk a jásot) [CS50TV]