1 00:00:00,000 --> 00:00:02,750 [Powered by Google Translate] [Týždeň 10] 2 00:00:02,750 --> 00:00:04,750 [David J. Malan] [Harvard University] 3 00:00:04,750 --> 00:00:07,000 [To je CS50.] [CS50.TV] 4 00:00:08,520 --> 00:00:13,240 >> Dobre! To je CS50, ale nie o veľa dlhšie. 5 00:00:13,240 --> 00:00:14,740 To je začiatok týždňa 10. 6 00:00:14,740 --> 00:00:18,780 V stredu sme náš kvíz, a potom budúci pondelok budeme mať nejaké slávnostné tortu 7 00:00:18,780 --> 00:00:22,030 ako sme sa kruh celú cestu späť z týždňa nuly. 8 00:00:22,030 --> 00:00:25,200 Dnes hovoríme o jednom z mojich obľúbených tém, byť povedal pravdu - 9 00:00:25,200 --> 00:00:29,000 že bezpečnosti a súkromia a dôsledky všetkých hardware a software 10 00:00:29,000 --> 00:00:31,000 že všetci používame v týchto dňoch. 11 00:00:31,000 --> 00:00:33,300 Ak chcete byť úprimný, existuje veľa hrozieb tam 12 00:00:33,300 --> 00:00:35,430 že ak ste naozaj zastavil, aby si o nich, 13 00:00:35,430 --> 00:00:36,920 sú vlastne dosť skľučujúca. 14 00:00:36,920 --> 00:00:40,070 Názorný príklad - ak niekto z vás niekedy stiahli kus softvéru 15 00:00:40,070 --> 00:00:42,660 vypnutie internetu a nainštalovať ho na svojom počítači, 16 00:00:42,660 --> 00:00:45,220 ste zapojený do značnej miery dôvery, nie? 17 00:00:45,220 --> 00:00:50,220 Nie je nič, čo bráni Skype, alebo Chrome, alebo akýkoľvek kus softvéru 18 00:00:50,220 --> 00:00:54,770 ste nainštalovali do počítača, od jednoduchého odstránenia všetkých súborov na vašom pevnom disku; 19 00:00:54,770 --> 00:00:58,260 od nahranie všetkých súborov na vašom pevnom disku do nejakého zloducha je server; 20 00:00:58,260 --> 00:01:01,650 od čítania všetkých vašich e-mailov, v zachytenie všetkých vašich okamžitých správ. 21 00:01:01,650 --> 00:01:05,040 Vzhľadom k tomu, realita je dnes s najmodernejšími operačnými systémami 22 00:01:05,040 --> 00:01:10,040 tam naozaj nie je moc múru medzi softvérovými programami, ktoré sme inštalujú, 23 00:01:10,040 --> 00:01:14,220 a ty a ja sme celkom veľa to jednoducho kríženie naše prsty as ohľadom na vieru 24 00:01:14,220 --> 00:01:17,750 že aplikácie sme stiahnuť zadarmo, alebo že vec, ktorá je 99 centov, 25 00:01:17,750 --> 00:01:20,140 je vlastne úplne neškodný. 26 00:01:20,140 --> 00:01:23,090 Ale ako sme videli až C, a teraz PHP a JavaScript, 27 00:01:23,090 --> 00:01:25,420 s touto schopnosťou vyjadriť sami seba programovo, 28 00:01:25,420 --> 00:01:30,300 môžete robiť väčšinu čokoľvek chcete s programom, ktorý užívateľ sám alebo sám mohol urobiť. 29 00:01:30,300 --> 00:01:32,390 >> Takže, dnes sa zameriame na túto tému - 30 00:01:32,390 --> 00:01:35,360 nielen niektoré hrozby, ale aj obrana. 31 00:01:35,360 --> 00:01:37,540 Naozaj, vo svete bezpečnosti všeobecne, 32 00:01:37,540 --> 00:01:39,040 je to druh tohto mačku a myš hra, 33 00:01:39,040 --> 00:01:41,990 a trúfam si tvrdiť, že protivníci majú takmer vždy nohu. 34 00:01:41,990 --> 00:01:45,880 Pokiaľ ide o využitie hardvér a softvér na našich vlastných osobných počítačoch, 35 00:01:45,880 --> 00:01:51,250 musíme si uvedomiť, že zlý človek jednoducho musí nájsť jednoduchú chybu - 36 00:01:51,250 --> 00:01:56,150 jedna využívať, jednu chybu - v kus softvéru, ktorý ste napísali, alebo je spustený 37 00:01:56,150 --> 00:01:58,280 Aby pre neho alebo ju prevziať náš celý systém. 38 00:01:58,280 --> 00:02:02,870 Naopak, my - dobrí - treba opraviť a opraviť všetky tie chyby 39 00:02:02,870 --> 00:02:04,900 a vyhnúť sa všetky tieto nedostatky. 40 00:02:04,900 --> 00:02:07,870 A tak, trúfam si tvrdiť, v celku, protivníci majú výhodu. 41 00:02:07,870 --> 00:02:10,840 Čo tried, ako je tento a nasledujúce triedy sú naozaj o 42 00:02:10,840 --> 00:02:14,830 nie sú o výučbu, ako viesť bitky, že tieto zbabelcami cieľ, 43 00:02:14,830 --> 00:02:18,220 ale o tom, ako sa chrániť alebo aspoň ako vyrobiť vypočítanú rozhodnutia 44 00:02:18,220 --> 00:02:22,970 , Že áno, ja viem, že to kus softvéru, by skutočne mohla prečítať každý jeden z mojich e-mailov, 45 00:02:22,970 --> 00:02:27,040 ale som v poriadku s, že vzhľadom k hodnote sa privádza na druhej strane. 46 00:02:27,040 --> 00:02:31,060 >> Som veľmi potešený, že pripojí 2 z najmúdrejších ľudí, ktorých poznám - 47 00:02:31,060 --> 00:02:33,060 Rob Bowden a Nate Hardison. 48 00:02:33,060 --> 00:02:36,850 Rob sa chystá vziať nás na turné cez najnižšiu úroveň bezpečnostných značiek - 49 00:02:36,850 --> 00:02:42,470 že prekladača, ktoré až do teraz, sme všetci prišli na lásku a dôveru. Rob Bowden. 50 00:02:42,470 --> 00:02:47,790 [Potlesk] 51 00:02:47,790 --> 00:02:50,280 >> [Rob] Dobre. David má celkom veľa vzal moju celú príhovor 52 00:02:50,280 --> 00:02:52,320 že som išiel predstaviť s, ale - 53 00:02:52,320 --> 00:02:58,070 Pred niekoľkými týždňami, ste videli na príklade buffer-pretečeniu útoku 54 00:02:58,070 --> 00:03:01,900 ktorý je príkladom hacker hacking do nejakej kusu softvér 55 00:03:01,900 --> 00:03:06,060 že by nemala byť hackovanie do. 56 00:03:06,060 --> 00:03:09,690 Na druhej strane tohto 57 00:03:09,690 --> 00:03:14,470 je niekedy máte softvér, ktorý je škodlivý sám o sebe. 58 00:03:14,470 --> 00:03:17,070 To ani nemusí byť hacknut. 59 00:03:17,070 --> 00:03:20,670 Osoba, ktorá napísala softvér chce preniknúť vás. 60 00:03:20,670 --> 00:03:22,190 >> Poďme jednoducho skočiť priamo do kódu, 61 00:03:22,190 --> 00:03:28,560 pričom sa pozrieť na "login.c". 62 00:03:28,560 --> 00:03:33,390 Tu, hlúpy program, ktorý overuje užívateľské meno a heslo. 63 00:03:33,390 --> 00:03:39,420 Tu by mal byť určite zoznámiť sa s C znovu kvíz. 64 00:03:39,420 --> 00:03:43,470 Najprv, používame dostať reťazca popísať užívateľské meno, 65 00:03:43,470 --> 00:03:46,280 potom sme pomocou get string chytiť heslo, 66 00:03:46,280 --> 00:03:50,680 a potom máme nejaké triviálne kontroly len, je užívateľské meno "rob"? 67 00:03:50,680 --> 00:03:52,710 A je heslo "thisiscs50"? 68 00:03:52,710 --> 00:03:56,900 Alebo, je užívateľské meno "Tommy" a heslo "i <3javascript"? 69 00:03:56,900 --> 00:03:58,980 Ak niektorá z nich je prípad, 70 00:03:58,980 --> 00:04:01,980  potom sme len tak tlačiť "úspech", a potom budeme mať prístup. 71 00:04:01,980 --> 00:04:07,690 Inak budeme tlačiť "neplatné prihlasovacie" a potom, samozrejme, 72 00:04:07,690 --> 00:04:11,120  od Sketch Struny malloc pamäti, sme voľní užívateľské meno a heslo. 73 00:04:11,120 --> 00:04:15,560 Toto je triviálne prihlásenie program, 74 00:04:15,560 --> 00:04:18,110 a ak si myslíte, že o tom, kedy sa prihlásite do spotrebiča, 75 00:04:18,110 --> 00:04:22,350 je to dosť podobné - alebo dokonca prihlásení k počítaču - 76 00:04:22,350 --> 00:04:24,930 tam je len nejaký prihlásiť program, ktorý vám dá prístup. 77 00:04:24,930 --> 00:04:31,840 Tu sme náhodou mať pevne "rob ',' thisiscs50 ',' Tommy ',' i <3javascript", 78 00:04:31,840 --> 00:04:34,950 ale asi tam je nejaký súbor niekde na vašom operačnom systéme 79 00:04:34,950 --> 00:04:38,690 ktorá má zoznam užívateľských mien, ktorí sa môžu prihlásiť do systému 80 00:04:38,690 --> 00:04:41,740 a zoznam hesiel súvisiacich s týmito užívateľskými menami. 81 00:04:41,740 --> 00:04:46,090 Obvykle heslá nie sú len uložené vo formáte obyčajného textu ako je tento. 82 00:04:46,090 --> 00:04:50,360 Tam je nejaký druh šifrovanie, ale to bude robiť pre náš príklad. 83 00:04:50,360 --> 00:04:57,000 >> Príchod k nášmu kompilátor - 84 00:04:57,020 --> 00:05:00,780 to bude veľmi jednoduché. 85 00:05:00,780 --> 00:05:04,800 Musíme určiť aspoň nejaký súbor, ktorý chceme zostaviť, 86 00:05:04,800 --> 00:05:10,200 A potom je tu - tieto riadky 87 00:05:10,200 --> 00:05:12,520 sú len čítanie súboru. 88 00:05:12,520 --> 00:05:16,080 To znie celý súbor do jedného veľkého bufferu, 89 00:05:16,080 --> 00:05:19,000 a potom sme null-ukončiť náš vyrovnávacej pamäte ako vždy, 90 00:05:19,000 --> 00:05:21,000 a nakoniec sme len skompilovať súbor. 91 00:05:21,000 --> 00:05:24,090 Nebudeme sa pozerať na to, ako je kompilácia skutočne realizovaná, 92 00:05:24,090 --> 00:05:26,820 ale ako náznak, že iba volá zvonenie. 93 00:05:26,820 --> 00:05:32,370 Budeme používať tento program zostaviť čo miesto Clang. 94 00:05:32,370 --> 00:05:39,260 Jeden problém začneme s ich vidíme chceme skompilovať našu prekladač, 95 00:05:39,260 --> 00:05:43,620 ale ak nebudeme používať rinčať, ja neviem, čo budem kompilovať. 96 00:05:43,620 --> 00:05:46,700 To je všeobecný problém, známy ako Bootstrapping. 97 00:05:46,700 --> 00:05:53,080 Takže, len tentoraz, budem používať rinčať skompilovať našu kompilátora. 98 00:05:53,080 --> 00:05:58,800 >> Ak si myslíte, že GCC a rinčať - 99 00:05:58,800 --> 00:06:03,200 tieto programy, sú tieto prekladača neustále aktualizovaná, 100 00:06:03,200 --> 00:06:10,010 a tieto prekladača sú skompilované pomocou GCC a rinčať. 101 00:06:10,010 --> 00:06:14,890 Rinčanie je len jedna veľká C alebo C + + program, 102 00:06:14,890 --> 00:06:19,510 takže kompilátor používa na zostavenie, ktorý je zvonenie. 103 00:06:19,510 --> 00:06:26,820 Tu, teraz, sme len bude pomocou nášho kompilátora skompilovať našu prekladač, 104 00:06:26,820 --> 00:06:33,830 a môžeme dokonca povedať - "/ kompilátor. ',' compiler.c ',' compile.c ','-o kompilátora". 105 00:06:33,830 --> 00:06:37,250 Všimnite si, je to presný príkaz som bežal pred - 106 00:06:37,250 --> 00:06:41,330 len nahradiť rinčať s ". / kompilátor". 107 00:06:41,330 --> 00:06:44,990 A teraz máme ďalšie kompilátor, ale je to úplne rovnaké. 108 00:06:44,990 --> 00:06:47,510 Je to len volá zvonenie. 109 00:06:47,510 --> 00:06:55,050 >> Budeme používať náš prekladač skompilovať našu prihlasovacie programu. 110 00:06:55,050 --> 00:07:03,030 Dobre - ". / Kompilátor login.c-o prihlásenie". 111 00:07:03,030 --> 00:07:06,160 Takže, nedefinovaný odkaz na "GetString". 112 00:07:06,160 --> 00:07:11,250 Mám "-lcs50". Dobre. 113 00:07:11,250 --> 00:07:13,790 Takže teraz mám nášho prihlasovacieho programu. 114 00:07:13,790 --> 00:07:16,790 Beh je - prijať "Prosím, zadajte svoje užívateľské meno". 115 00:07:16,790 --> 00:07:22,140 Jedným z príkladov je rob. Prosím, zadajte svoje heslo - thisiscs50. 116 00:07:22,140 --> 00:07:24,930 A úspech! Mám prístup. 117 00:07:24,930 --> 00:07:28,350 Ju spustiť znovu a zadať niekoľko neplatné heslo - 118 00:07:28,350 --> 00:07:30,350 alebo neplatné užívateľské meno a heslo - 119 00:07:30,350 --> 00:07:32,860 neplatné prihlasovacie. 120 00:07:32,860 --> 00:07:37,740 Dobre. Nič na tom zaujímavé tak ďaleko. 121 00:07:37,740 --> 00:07:43,100 Ale poďme sa pozrieť na prihlásenie znovu - 122 00:07:43,100 --> 00:07:47,850 a to bude trochu triviálne príklad, 123 00:07:47,850 --> 00:07:59,330 ale poďme pridať inde v tu a hovoriť, else if ((strcmp (meno, "hacker") == 0 && 124 00:07:59,330 --> 00:08:14,510 strcmp (heslo, "LOLihackyou") == 0)) 125 00:08:14,510 --> 00:08:26,280 takže teraz, printf ("pirát Teraz máte prístup \ n!."); poriadku. 126 00:08:26,280 --> 00:08:36,240 Kompilácia tento - kompilátor login.c-o login-lcs50 - 127 00:08:36,240 --> 00:08:40,190 teraz beží prihlásenie - a ak môžem použiť svoje používateľské meno hacker 128 00:08:40,190 --> 00:08:44,740 a heslo LOLihackedyou - 129 00:08:44,740 --> 00:08:47,780 Už som typ to zle, ako sa tam? 130 00:08:47,780 --> 00:08:52,990 Na login.c--ihack - Budem sa nabúral, pretože myslím, že som to neskôr. 131 00:08:52,990 --> 00:08:56,270 Dobre. Rekompilace. 132 00:08:56,270 --> 00:09:01,500 Re-beh - hacker - LOLihackedyou - 133 00:09:01,500 --> 00:09:03,650 Hacked! Teraz máte prístup. 134 00:09:03,650 --> 00:09:06,580 >> Nezdá sa, že sa tak veľký rozdiel 135 00:09:06,580 --> 00:09:10,890 pretože je to rovnaký presný šek som robil pre ostatné užívateľských mien a hesiel. 136 00:09:10,890 --> 00:09:17,720 Plus, veľká vec je, že ak ostatní ľudia pozerajú na to login.c-- 137 00:09:17,720 --> 00:09:24,020 povedal, keď som odovzdať tento off môjmu partnerovi, a otvárajú tento súbor, 138 00:09:24,020 --> 00:09:29,870 a oni si to, uvidí - v poriadku, prečo máte tieto riadky kódu tu? 139 00:09:29,870 --> 00:09:33,320 To samozrejme nie je niečo, čo by malo byť vo vašom programe. 140 00:09:33,320 --> 00:09:41,590 V niektorých programoch - ako každý proprietárny softvér, ktorý nie je open-source - 141 00:09:41,590 --> 00:09:46,200 ste možno nikdy vidieť tieto riadky kódu. 142 00:09:46,200 --> 00:09:50,440 Niečo ako je napríklad Skype alebo niečo - pre všetko, čo vieš, 143 00:09:50,440 --> 00:09:57,600 Skype je na vašom počítači a tam je len nejaký konkrétny meno-password kombinácia 144 00:09:57,600 --> 00:10:01,580 ktoré sa prihlásite k Skype nejakým zvláštnym spôsobom. 145 00:10:01,580 --> 00:10:04,230 Nevieme o tom, a ľudia nevedia o tom, 146 00:10:04,230 --> 00:10:09,640 pretože sa im nedostáva čítať zdrojových vidieť, že tam je to diera. 147 00:10:09,640 --> 00:10:11,800 >> Čo hovoríme - 148 00:10:11,800 --> 00:10:16,530 aj keď to nie je veľmi šikovný príklad - 149 00:10:16,530 --> 00:10:18,970 toto sa nazýva zadné dvere. 150 00:10:18,970 --> 00:10:22,320 Ak si myslíte, že zo zadných dverí vášho domu. 151 00:10:22,320 --> 00:10:26,640 Tu, keď som potvrďte "lúpiť" užívateľským menom alebo "Tommy," 152 00:10:26,640 --> 00:10:28,580 To by bolo ako s použitím "dvere." 153 00:10:28,580 --> 00:10:33,700 To je spôsob, akým by som mal bezpečne prihlásiť. 154 00:10:33,700 --> 00:10:37,630 Ale keď zadám s týmto užívateľským menom a heslom - 155 00:10:37,630 --> 00:10:40,630 Potom je to tzv "zadné dvere." 156 00:10:40,630 --> 00:10:42,810 Nebolo úmyselné spôsob, ako sa do programu, 157 00:10:42,810 --> 00:10:45,350 ale to ešte funguje. 158 00:10:45,350 --> 00:10:49,160 A ľudia sú všeobecne nemala vedieť o týchto zadných dverí. 159 00:10:49,160 --> 00:10:53,050 Budeme zlepšiť. 160 00:10:53,050 --> 00:10:55,610 Poďme sa vrátiť k našej pôvodnej tento login.c, 161 00:10:55,610 --> 00:11:05,510 a poďme sa pozrieť na náš nový kompilátor. Dobre. 162 00:11:05,510 --> 00:11:08,460 Všetko tu je presne rovnaký. 163 00:11:08,460 --> 00:11:10,460 Sme čítanie celý súbor do vyrovnávacej pamäte. 164 00:11:10,460 --> 00:11:14,400 Všetko sa tu je rovnaký. 165 00:11:14,400 --> 00:11:16,180 Práve sme zostavil súbor. 166 00:11:16,180 --> 00:11:19,770 Ale teraz mám to veľký, ak sa sem 167 00:11:19,770 --> 00:11:24,140 , Ktorý hovorí, ak súbor, ktorý som náhodou zostavovaní je login.c, 168 00:11:24,140 --> 00:11:27,390 potom som urobiť niečo špeciálne. 169 00:11:27,390 --> 00:11:29,900 Čo je to niečo zvláštne? 170 00:11:29,900 --> 00:11:33,820 Vidím tu nejaký reťazec s názvom "hack", 171 00:11:33,820 --> 00:11:35,950 a pri pohľade na tieto riadky kódu - 172 00:11:35,950 --> 00:11:41,990 sa jedná o tie isté riadky kódu - myslím, že som urobil použitie "ihack", a nie "ihacked" pred - 173 00:11:41,990 --> 00:11:44,240 pohľade na tieto riadky kódu, 174 00:11:44,240 --> 00:11:47,880 sú to tie isté presné riadky kódu, ktoré som mal v login.c pred. 175 00:11:47,880 --> 00:11:51,130 Ale teraz, namiesto toho, aby ich v login.c, 176 00:11:51,130 --> 00:11:54,290 Chystám sa dať ich do môjho kompilátor. 177 00:11:54,290 --> 00:12:00,240 >> Jedná sa o riadky kódu budem chcieť vložiť do login.c. 178 00:12:00,240 --> 00:12:06,350 Tieto riadky kódu - vyrovnávacia pamäť, ktorá pôvodne konať svoju login.c 179 00:12:06,350 --> 00:12:11,080 sa už bude dostatočne veľká, pretože teraz chcem tiež vložiť tento hack 180 00:12:11,080 --> 00:12:12,940 do stredu svojho programu. 181 00:12:12,940 --> 00:12:16,350 To všetko robí je vytvorenie nového vyrovnávacej pamäte, ktorá je dostatočne veľká - 182 00:12:16,350 --> 00:12:22,020 ako pre pôvodný súbor a ďalšie riadky kódu - hack - že chcem vložiť tam. 183 00:12:22,020 --> 00:12:24,920 Tu je niečo, čo si všimnúť - 184 00:12:24,920 --> 00:12:29,200 char * pattern = "/ / zakázať im prístup!" 185 00:12:29,200 --> 00:12:33,760 Ak sa pozrieme späť na login.c, 186 00:12:33,760 --> 00:12:37,690 vidíme tu to comment - odoprieť im prístup! 187 00:12:37,690 --> 00:12:42,360 V login.c, tento komentár vyzerá úplne neškodný, 188 00:12:42,360 --> 00:12:48,270 takže by sa domnievate, že žiadny zlý úmysel s len tento komentár. 189 00:12:48,270 --> 00:12:55,600 Ale v našej kompilátora, sme sa konkrétne bude vyzerať na tomto riadku kódu, 190 00:12:55,600 --> 00:12:57,600 a potom, keď sme sa ho nájsť - 191 00:12:57,600 --> 00:13:03,330 tieto riadky kódu vkladanie náš hack do tejto pozície. 192 00:13:03,330 --> 00:13:06,910 Takže, sme iterácia cez celú login.c, 193 00:13:06,910 --> 00:13:12,080 sme Vložením tohto hack presne tam, kde sa hovorí, odoprieť im prístup, 194 00:13:12,080 --> 00:13:15,890 a potom sme zostavovaní - nie je originál login.c 195 00:13:15,890 --> 00:13:20,340 ale nová login.c s týmto háčikom vloženou priamo na "im ho odopierať prístup." 196 00:13:20,340 --> 00:13:29,190 >> Teraz chcem zostaviť svoj nový kompilátor s týmto hack zúčastňuje. 197 00:13:29,190 --> 00:13:36,900 Nebudem používať rinčať, takže sa poďme skopírujte kompilátora sme použili pred 198 00:13:36,900 --> 00:13:48,420 a použiť - to, kompilátor compiler.c compile.c-o evil_compiler. 199 00:13:48,420 --> 00:13:50,870 Teraz naše zlo kompilátor - 200 00:13:50,870 --> 00:13:54,310 ak budeme používať naše zlé kompilátor pre kompiláciu iný súbor, 201 00:13:54,310 --> 00:13:57,980 súbor bude zostavovať tak, ako má. 202 00:13:57,980 --> 00:13:59,980 Je to úplne normálne. 203 00:13:59,980 --> 00:14:06,870 Ale ak budeme používať naše zlé kompilátor pre kompiláciu prihlásenie - 204 00:14:06,870 --> 00:14:14,920 tak, / evil_compiler login.c-o login-lcs50. - 205 00:14:14,920 --> 00:14:21,310 pri pohľade na login.c znova, tam je absolútne nič tu. 206 00:14:21,310 --> 00:14:25,770 Je to naše obvyklé "ak je to buď rob alebo tommy sme v, inak sme vonku." 207 00:14:25,770 --> 00:14:31,620 Ale keď sme sa spustiť náš spustiteľný, bude to fungovať ako zvyčajne. 208 00:14:31,620 --> 00:14:36,640 Beh opäť - hacker, LOLihackyou - 209 00:14:36,640 --> 00:14:39,000 Hacked! Teraz máte prístup. 210 00:14:39,000 --> 00:14:43,560 Len pri pohľade na login.c, mali by ste sa, že niečo nie je v poriadku. 211 00:14:43,560 --> 00:14:46,960 Ale kompilátor, ktorý je používaný pre kompiláciu login.c 212 00:14:46,960 --> 00:14:53,820 je špeciálne navrhnutý tak, aby vloženie tohto hack do programu. 213 00:14:53,820 --> 00:14:57,320 Sme len presťahovali náš pôvodný problém. 214 00:14:57,320 --> 00:15:02,880 Pôvodne sme mali tieto riadky kódu v login.c, že ​​ak niekto pozrel sa na ne, 215 00:15:02,880 --> 00:15:05,470 že by to ako, prečo sú títo tu? 216 00:15:05,470 --> 00:15:09,550 Teraz, keď niekto stane sa pozrieť na našu kompilátor, 217 00:15:09,550 --> 00:15:12,140 sa pozrieme na tieto riadky kódu a povedať, 218 00:15:12,140 --> 00:15:15,290 Prečo sú tieto tu? 219 00:15:15,290 --> 00:15:17,210 Takže, sme úplne náš problém vyriešil. 220 00:15:17,210 --> 00:15:22,510 Ale môžeme použiť túto myšlienku znovu. 221 00:15:22,510 --> 00:15:26,260 >> Pričom sa pozrieť na našu tretia verzia prekladača, 222 00:15:26,260 --> 00:15:32,500 je to rovnaká myšlienka. 223 00:15:32,500 --> 00:15:36,240 Čítali sme celý súbor do vyrovnávacej pamäte sa tu, 224 00:15:36,240 --> 00:15:39,660 sme zostaviť súbor sem, 225 00:15:39,660 --> 00:15:44,220 a ja mám nejaký reťazec hack sem, 226 00:15:44,220 --> 00:15:47,710 ale všimnite si súbor, ktorý som vlastne Hacking teraz. 227 00:15:47,710 --> 00:15:52,260 Ja som hacking compiler.c 228 00:15:52,260 --> 00:15:54,590 nie je login.c. 229 00:15:54,590 --> 00:15:57,780 Ale čo som vložila do compiler.c? 230 00:15:57,780 --> 00:16:04,600 Ja vloženie tohto kódu, ktorý je presný kód v našom predchádzajúcom kompilátor, 231 00:16:04,600 --> 00:16:10,540 ktorý bol určený pre vloženie kódu do login.c. 232 00:16:10,540 --> 00:16:13,360 Tu je naša, ak strcmp súbor login.c 233 00:16:13,360 --> 00:16:19,370 a potom vložiť do login.c našej hack veci. 234 00:16:19,370 --> 00:16:26,010 Tento nový kompilátor je určená na vytvorenie kompilátora 235 00:16:26,010 --> 00:16:30,390 ktorý je určený ku kompilácii prihlásenie zlomyseľne. 236 00:16:30,390 --> 00:16:34,320 Uvidíme, prečo to nám pomáha. 237 00:16:34,320 --> 00:16:40,630 Všetko ostatné je rovnaké, tak to funguje presne tak, ako to fungovalo s predchádzajúcim kompilátorom. 238 00:16:40,630 --> 00:16:45,550 Sme len iterácie celej našej compile.c. 239 00:16:45,550 --> 00:16:48,190 Ale teraz namiesto toho, aby hľadal "im ho odopierať prístup," 240 00:16:48,190 --> 00:16:51,490 hľadáme pre "kompiláciu súboru." 241 00:16:51,490 --> 00:16:53,750 Ak je zostaviť súbor? 242 00:16:53,750 --> 00:16:57,210 Pri pohľade na naše úplne nevinné compiler.c, 243 00:16:57,210 --> 00:17:01,340 je to tu dole na dne. 244 00:17:01,340 --> 00:17:06,500 Tento komentár - zostaviť súbor - znova, že vyzerá úplne neškodné. 245 00:17:06,500 --> 00:17:11,599 Ale v našom škodlivého verzii prekladača, 246 00:17:11,599 --> 00:17:16,550 budeme - tesne predtým, než tej poznámke - vložiť tento kód 247 00:17:16,550 --> 00:17:20,690 ktorý je určený na vloženie kódu pri kompilácii login.c. 248 00:17:20,690 --> 00:17:25,589 >> Existuje mnoho úrovní indirection tu. 249 00:17:25,589 --> 00:17:29,760 Poďme skutočne spustiť. 250 00:17:29,760 --> 00:17:37,360 Opäť budeme kopírovať našu pôvodnú kompilátor. 251 00:17:37,360 --> 00:17:48,260 Teraz, kompilácie - kompilátor compiler.c compile.c-o evilest_compiler - 252 00:17:48,260 --> 00:17:52,640 a teraz evilest_compiler. 253 00:17:52,640 --> 00:17:59,200 Evilest kompilátor - ak budeme používať, že skompilovať našu prekladač, 254 00:17:59,200 --> 00:18:01,550 Poďme skutočne vyzerať. 255 00:18:01,550 --> 00:18:13,230 Evilest_compiler - prináša to viac, celú cestu späť na verziu 1 nášho prekladača - 256 00:18:13,230 --> 00:18:19,640 verzia 1 nášho prekladača, ktorý bol práve čítal v súbore a skompilovať. 257 00:18:19,640 --> 00:18:24,780 Tu, vieme, že evilest_compiler - pri kompilácii tohto súboru - 258 00:18:24,780 --> 00:18:29,890 bude vložiť kód priamo tu pred zostaviť súbor, 259 00:18:29,890 --> 00:18:38,510 a že tento kód bude vyzerať presne ako kód z druhej verzie nášho prekladača 260 00:18:38,510 --> 00:18:42,240 ktorý robil to. 261 00:18:42,240 --> 00:18:46,450 Tento kód, ktorý je určený na preniknúť do prihlásenie, 262 00:18:46,450 --> 00:18:56,480 sa bude vložený do nášho prekladača prekladač evilest. 263 00:18:56,480 --> 00:19:08,600 Využime evilest_compiler skompilovať našu kompilátora. 264 00:19:08,600 --> 00:19:15,040 Teraz budeme používať prekladač, 265 00:19:15,040 --> 00:19:19,460 vrátiť sa k prihlásenie, 266 00:19:19,460 --> 00:19:25,280 a pamätať si to login.c nemá vôbec nič podozrivého v ňom. 267 00:19:25,280 --> 00:19:35,250 Ale pomocou nášho kompilátor pre kompiláciu login.c, 268 00:19:35,250 --> 00:19:38,430 rob, thisiscs50, úspech. 269 00:19:38,430 --> 00:19:44,350 Poďme login hacker, LOLihackyou, hacked! Teraz máte prístup. 270 00:19:44,350 --> 00:19:49,710 >> Uvedomte si, že toto sa líši od verzie 2 nášho prekladača. 271 00:19:49,710 --> 00:20:00,500 Kompilátor používame - poďme späť - kópie z prihlásenie - 272 00:20:00,500 --> 00:20:01,880 vráťme náš prekladač staré sem. 273 00:20:01,880 --> 00:20:06,360 Odstránenie evilest kompilátora. 274 00:20:06,360 --> 00:20:08,970 Jediné, čo zostáva teraz je kompilátor. 275 00:20:08,970 --> 00:20:10,950 Ak sa pozrieme na compiler.c, 276 00:20:10,950 --> 00:20:16,840 nie je absolútne nič tam, že sa zdá nebezpečný v žiadnom prípade. 277 00:20:16,840 --> 00:20:22,390 Ak sa pozrieme na login.c, 278 00:20:22,390 --> 00:20:28,790 nie je absolútne nič tu to vyzerá škodlivý akýmkoľvek spôsobom. 279 00:20:28,790 --> 00:20:34,600 Ale, keď sme využiť naše kompilátor pre kompiláciu login.c, 280 00:20:34,600 --> 00:20:38,840 dostaneme hackable verzii login.c. 281 00:20:38,840 --> 00:20:41,850 Keď sme použili kompilátor zostaviť novú verziu kompilátora, 282 00:20:41,850 --> 00:20:46,620 dostaneme hackable verzii kompilátora. 283 00:20:46,620 --> 00:20:51,790 Teraz, keď ideme von a distribuovať kompilátor spustiteľný, 284 00:20:51,790 --> 00:20:59,280 a nikto nebude vedieť, že tam je niečo škodlivého o tom. 285 00:20:59,280 --> 00:21:04,680 >> To je vlastne tak - nemôžem spomenúť na rok - 286 00:21:04,680 --> 00:21:10,350 Ken Thompson, a získal Cenu Turing - 287 00:21:10,350 --> 00:21:15,600 ak ste oboznámení s Turing cena, je to takmer vždy definovaná ako 288 00:21:15,600 --> 00:21:20,160 Nobelova cena informatiky, tak to je, ako som si ju definovať. 289 00:21:20,160 --> 00:21:24,100 Ken Thompson predniesol prejav, keď on prijal jeho Turing Award 290 00:21:24,100 --> 00:21:27,150 tzv "Úvahy o dôverčivá Trust." 291 00:21:27,150 --> 00:21:30,710 V podstate, to bol nápad jeho prejavu. 292 00:21:30,710 --> 00:21:35,050 Okrem miesto našej prekladača, hovoril o GCC - 293 00:21:35,050 --> 00:21:37,250 len ďalší kompilátor ako Clang - 294 00:21:37,250 --> 00:21:45,600 a to, čo hovoril je, rovnako ako naše login.c, naše login.c javí ako pomerne zbytočné 295 00:21:45,600 --> 00:21:50,190 ale on hovoril o skutočnom UNIX login.c. 296 00:21:50,190 --> 00:21:53,050 Pri prihlásení do svojho zariadenia, 297 00:21:53,050 --> 00:21:56,070 tam je nejaký login program, ktorý je spustený. 298 00:21:56,070 --> 00:21:58,080 To bolo prihlásenie, že hovoril o 299 00:21:58,080 --> 00:22:02,420 To bol v podstate jeho nápad. 300 00:22:02,420 --> 00:22:09,080 Povedal, že v GCC, sa teoreticky mohol zasadil chybu - 301 00:22:09,080 --> 00:22:12,290 nie je chyba, ale škodlivý kód - 302 00:22:12,290 --> 00:22:16,860 že pri zostavovaní prihlasovacie funkciu - prihlásiť súboru - 303 00:22:16,860 --> 00:22:23,700 by vložiť zadné dvierka, aby mohol ísť do absolútne žiadne systému UNIX vo svete 304 00:22:23,700 --> 00:22:27,360 a prihláste sa nejakým konkrétnym užívateľským menom a heslom. 305 00:22:27,360 --> 00:22:33,710 V tej dobe, GCC bol skoro kompilátor, že každý použiť na čokoľvek. 306 00:22:33,710 --> 00:22:36,460 Ak niekto náhodou aktualizovať GCC, 307 00:22:36,460 --> 00:22:40,880 potom by prekompilovať GCC pomocou GCC, 308 00:22:40,880 --> 00:22:44,500 a vy by ste ešte dostať zlú verziu GCC 309 00:22:44,500 --> 00:22:50,140 pretože to bolo špecificky zostavené tak, aby uznali, že to bolo recompiling kompilátora. 310 00:22:50,140 --> 00:22:57,360 A ak ste niekedy použiť GCC pre zkompilujte login.c súbor, 311 00:22:57,360 --> 00:23:03,550 potom by to vložiť tento zadné dvere, ktoré by mohol použiť na prihlásenie k ľubovoľnému počítaču. 312 00:23:03,550 --> 00:23:08,750 >> To bolo všetko, teoretická, ale - to najmä okolnosť bola teoretická, 313 00:23:08,750 --> 00:23:12,440 ale myšlienky sú veľmi reálne. 314 00:23:12,440 --> 00:23:18,250 V roku 2003, tam bol podobný príklad, kde - 315 00:23:18,250 --> 00:23:21,290 budeme sa pozrieť na tohto súboru, 316 00:23:21,290 --> 00:23:25,870 a to nemá absolútne nič spoločné skutočne robiť s ním, ale chyba je podobná. 317 00:23:25,870 --> 00:23:29,390 Tento súbor len definuje funkciu nazvanú delenie. 318 00:23:29,390 --> 00:23:31,780 To trvá argument, argument b, 319 00:23:31,780 --> 00:23:34,270 a zámerom je urobiť delené b 320 00:23:34,270 --> 00:23:37,230 Ale to robí nejakú kontrolu chýb, 321 00:23:37,230 --> 00:23:40,070 takže vieme, čo je divné, ak b stane rovnať nule. 322 00:23:40,070 --> 00:23:44,900 Ak b je nula, potom sme sa rozdelili to do 2 prípadov. 323 00:23:44,900 --> 00:23:46,900 Môžete už vidieť chybu. 324 00:23:46,900 --> 00:23:51,840 Prvý prípad - ak je nula, potom robíme nulu delené nulou, 325 00:23:51,840 --> 00:23:54,300 a my sme len povedať, že je to undefined. 326 00:23:54,300 --> 00:23:56,250 V druhom prípade - ak nie je nula, 327 00:23:56,250 --> 00:24:00,580 potom je to niečo ako 1 delené nulou, a my len hovoríme nekonečno. 328 00:24:00,580 --> 00:24:03,730 Inak sa vrátime zvyčajne delí b. 329 00:24:03,730 --> 00:24:06,390 A tak tu, sme prevádzkovanie týchto 3 prípadov, 330 00:24:06,390 --> 00:24:13,740 a my sme vlastne beží priepasti - to kričí na neho pre mňa - 331 00:24:13,740 --> 00:24:21,330 tak, ignoruje rinčať je varovanie - 332 00:24:21,330 --> 00:24:24,500 Koniec non-void funkcia - zrejme som nebol vytvorený to vopred. 333 00:24:24,500 --> 00:24:26,500 Návrat 0. 334 00:24:26,500 --> 00:24:28,900 Urobte rozdeliť - v poriadku. 335 00:24:28,900 --> 00:24:32,470 S. / priepasti, vidíme 3, Infinity, Infinity. 336 00:24:32,470 --> 00:24:39,150 Zero delené nulou nemali vrátiť nekonečno. 337 00:24:39,150 --> 00:24:42,840 A ak ste prišiel na to, chyba - doteraz, alebo si to nevidel predtým - 338 00:24:42,840 --> 00:24:46,800 vidíme, že robíme = 0. 339 00:24:46,800 --> 00:24:52,610 Pravdepodobne sme znamenalo == 0. Pravdepodobne. 340 00:24:52,610 --> 00:24:58,640 >> Ale toto bolo vlastne niečo, čo opäť v roku 2003, Linux kernel - 341 00:24:58,640 --> 00:25:02,260 takže naše zariadenie používa linuxové jadro - 342 00:25:02,260 --> 00:25:05,550 akýkoľvek operačný systém Linux používa jadro Linux - 343 00:25:05,550 --> 00:25:11,610 takže chyba veľmi podobne ako tento ukázal. 344 00:25:11,610 --> 00:25:15,180 Myšlienka tejto chyby bola - 345 00:25:15,180 --> 00:25:18,820 Znovu, tam bol len niektoré funkcie, ktorá bola nazývaná, a to predsa trochu kontrolu chýb. 346 00:25:18,820 --> 00:25:24,300 Tam boli niektoré špecifické vstupy, že táto chyba kontrola - 347 00:25:24,300 --> 00:25:30,210 to malo byť ako, v poriadku, nemôžete volať túto funkciu s deliteľ 0. 348 00:25:30,210 --> 00:25:35,070 Takže, budem len návrat nejakú chybu. 349 00:25:35,070 --> 00:25:38,090 Až na to, že to nie je tak nevinná, ako len nastavenie rovná 0. 350 00:25:38,090 --> 00:25:46,920 Namiesto toho, tento riadok kódu skončil robí niečo viac ako user = správca. 351 00:25:46,920 --> 00:25:50,500 Alebo user = superuser. 352 00:25:50,500 --> 00:25:59,170 Bolo to nevinné - na prvý pohľad - chyba, kde to mohlo práve rozumné 353 00:25:59,170 --> 00:26:01,560 že som len chcel oznámiť niečo konkrétne 354 00:26:01,560 --> 00:26:05,150 v prípade, že užívateľ náhodou superpoužívateľ správcu. 355 00:26:05,150 --> 00:26:11,220 Ale potom znovu premýšľať o tom, človek chcel, aby to vyzeralo ako jednoduchý preklep, 356 00:26:11,220 --> 00:26:14,330 ale ak tento kód bola skutočne vydaná, 357 00:26:14,330 --> 00:26:21,580 potom by ste boli schopní preniknúť do akéhokoľvek systému tým, že podstúpi špeciálne vlajku - 358 00:26:21,580 --> 00:26:25,200 v tomto prípade sa b = 0 - 359 00:26:25,200 --> 00:26:28,020 a automaticky by si užívateľ správcu, 360 00:26:28,020 --> 00:26:30,400 a potom má plnú kontrolu. 361 00:26:30,400 --> 00:26:32,540 To sa stalo v roku 2003. 362 00:26:32,540 --> 00:26:35,700 >> To len tak sa stalo, že jediný dôvod, prečo bol ulovený 363 00:26:35,700 --> 00:26:39,200 bolo preto, že sa stalo, že niektoré automatizovaný systém 364 00:26:39,200 --> 00:26:41,540 ktoré zaznamenal zmenu v tomto súbore 365 00:26:41,540 --> 00:26:44,560 ktoré nikdy by boli zmenené ľudskou. 366 00:26:44,560 --> 00:26:47,580 Súbor musí byť automaticky generované. 367 00:26:47,580 --> 00:26:49,780 To len tak sa stalo, že niekto dotkol - 368 00:26:49,780 --> 00:26:52,460 dobre, že osoba, ktorá chce preniknúť dotkol tento súbor, 369 00:26:52,460 --> 00:26:55,450 a počítač zachytil, že dojemné. 370 00:26:55,450 --> 00:27:01,750 Takže, oni zmenili to a až neskôr si uvedomil, čo katastrofa by to bolo 371 00:27:01,750 --> 00:27:04,830 ak to dostal do skutočného sveta. 372 00:27:04,830 --> 00:27:08,220 >> Možno si myslíte, že - sa vracia do nášho kompilátora príklade - 373 00:27:08,220 --> 00:27:14,290 aj keď nemôžeme vidieť - pri pohľade na zdrojovom - 374 00:27:14,290 --> 00:27:17,490 že nič zvláštne, je zlé, 375 00:27:17,490 --> 00:27:25,460 ak sa skutočne pozrieť na binárny kód kompilátora, 376 00:27:25,460 --> 00:27:28,670 by sme vidieť, že niečo nie je v poriadku. 377 00:27:28,670 --> 00:27:31,260 Ako príklad, keď narazíme reťazce fungujú - 378 00:27:31,260 --> 00:27:34,930 ktoré sa len tak pozrieť na súbor a vytlačiť všetky reťazce možno nájsť - 379 00:27:34,930 --> 00:27:37,990 keď narazíme reťazca na našom kompilátor, 380 00:27:37,990 --> 00:27:42,400 vidíme, že jeden reťazec, ktorý zistí, že je to divné - 381 00:27:42,400 --> 00:27:45,500 else if (strcmp (meno, "hacker") - bla, bla, bla. 382 00:27:45,500 --> 00:27:52,570 Ak niekto náhodou paranoidné dosť neverí ich kompilátor, 383 00:27:52,570 --> 00:27:56,690 že by mohol spustiť reťazca a vidieť, 384 00:27:56,690 --> 00:28:00,430 a potom by vedieť, že tam bolo niečo v neporiadku s aktuálnou binárne. 385 00:28:00,430 --> 00:28:07,250 Ale, struny bolo nevyhnutne niečo, ktorý bol vybudovaný. 386 00:28:07,250 --> 00:28:11,590 Takže, kto môže povedať, že náš prekladač nie je len mať viac špeciálny kód 387 00:28:11,590 --> 00:28:19,240 , Ktorý hovorí, ak reťazca je niekedy spustiť na našom kompilátora, nemajú výstup všetky uvedené škodlivého kódu. 388 00:28:19,240 --> 00:28:23,980 >> Rovnaký nápad, ak chceme, aby dis-montáž súbor - 389 00:28:23,980 --> 00:28:30,440 sme sa dozvedeli, že assembler nás privádza od assembleri k strojového kódu - 390 00:28:30,440 --> 00:28:36,010 môžeme ísť v opačnom smere - objdump-d kompilátor - 391 00:28:36,010 --> 00:28:38,770 nám dá zhromaždenie nášho kódu. 392 00:28:38,770 --> 00:28:41,730 Pri pohľade na to, 393 00:28:41,730 --> 00:28:47,480 je to celkom mystický, ale ak by sme chceli, mohli by sme sa pozrieť prostredníctvom tejto 394 00:28:47,480 --> 00:28:51,700 a dôvod, počkajte, je tu niečo, čo sa deje tu, že by nemal byť sa deje, 395 00:28:51,700 --> 00:28:59,380 a potom spoznáte, že kompilátor robí niečo škodlivého. 396 00:28:59,380 --> 00:29:03,950 Ale, rovnako ako struny, kto hovorí, že objdump nebolo zvláštne vyvolaná. 397 00:29:03,950 --> 00:29:11,380 V podstate, to príde až nemôžete veriť vôbec nič. 398 00:29:11,380 --> 00:29:14,310 Bod papiera s názvom "dôverujúci Trust" je 399 00:29:14,310 --> 00:29:17,900 všeobecne, veríme náš prekladač. 400 00:29:17,900 --> 00:29:21,700 Môžete zostaviť svoj kód a očakávame, že to, čo žiadate to urobiť. 401 00:29:21,700 --> 00:29:26,440 Ale, prečo by ste veriť kompilátor? 402 00:29:26,440 --> 00:29:32,120 Ste nenapísal kompilátora. Ty nevieš, čo kompilátor je nutne skutočne robí. 403 00:29:32,120 --> 00:29:36,870 Kto hovorí, že môžete dôverovať? 404 00:29:36,870 --> 00:29:40,050 Ale aj potom, no, možno by sme mohli dôverovať kompilátor. 405 00:29:40,050 --> 00:29:44,670 Tam sú desiatky tisíc ľudí, ktorí sa pozerali na tento. 406 00:29:44,670 --> 00:29:51,360 Niekto musí uznali niečo bolo s kompilátorom. 407 00:29:51,360 --> 00:29:55,100 >> Čo keď jednoducho ísť 1 level hlbšie? 408 00:29:55,100 --> 00:29:59,450 Mohlo by to byť aj váš procesor. 409 00:29:59,450 --> 00:30:01,250 Ako smiešne, ako by to mohlo možno byť, 410 00:30:01,250 --> 00:30:06,690 Možno tam je nejaký rogue zamestnanec spoločnosti Intel, ktorý vytvára tieto procesory 411 00:30:06,690 --> 00:30:12,400 že zakaždým, keď je procesor zistí, že vediete nejaký príkaz 412 00:30:12,400 --> 00:30:14,570 , Ktorý je určený na prihlásenie k počítaču, 413 00:30:14,570 --> 00:30:19,230 procesor bude prijímať nejakú konkrétnu užívateľské meno a heslo. 414 00:30:19,230 --> 00:30:21,530 To by sa divoko zložité, 415 00:30:21,530 --> 00:30:24,790 ale niekto by to mohol urobiť. 416 00:30:24,790 --> 00:30:29,350 V tomto bode, ste naozaj otvoriť počítač sa pozrieť na procesore 417 00:30:29,350 --> 00:30:35,970 a používať mikroskop, aby uznali, že tieto obvody nie sú zoradení, ako by mali byť? 418 00:30:35,970 --> 00:30:39,730 Nikto sa nikdy nechytí, že chyba. 419 00:30:39,730 --> 00:30:45,570 V určitom bode, stačí sa vzdať a veriť niečo. 420 00:30:45,570 --> 00:30:48,390 Väčšina ľudí si veriť, že kompilátor v tomto bode. 421 00:30:48,390 --> 00:30:55,760 To znamená, nie je nevyhnutne, že by ste mali. 422 00:30:55,760 --> 00:30:59,350 Pri pohľade na trochu neslávny videa - 423 00:30:59,350 --> 00:31:09,280 [Dramatické prehrávanie hudby] 424 00:31:09,280 --> 00:31:13,270 [Je to systém UNIX. Viem, že to.] 425 00:31:13,270 --> 00:31:14,470 [Je to všetky súbory -] 426 00:31:14,470 --> 00:31:18,950 Ona povedala: "Je to systém UNIX. To viem." 427 00:31:18,950 --> 00:31:21,760 Nahradiť UNIX s tým, čo váš obľúbený operačný systém - 428 00:31:21,760 --> 00:31:25,230 mohla povedať: "Je to systém Windows. To viem." 429 00:31:25,230 --> 00:31:29,710 Je to úplne nezmyselná vyhlásenie, 430 00:31:29,710 --> 00:31:34,450 ale všetci vieme, že sa stane poznať zadné dvere do systému UNIX. 431 00:31:34,450 --> 00:31:38,840 Ona vie, že niektoré užívateľské meno / heslo kombinácii, ktorá bude skutočne nechať ju 432 00:31:38,840 --> 00:31:41,540 robiť, čo chce. 433 00:31:41,540 --> 00:31:49,000 >> Dobrá. Morálna je dnes v podstate nemôžete veriť vôbec nič. 434 00:31:49,000 --> 00:31:52,620 Dokonca aj veci, ktoré píšete - ste nenapísal kompilátora. 435 00:31:52,620 --> 00:31:53,870 Kompilátor by mohol byť zlý. 436 00:31:53,870 --> 00:31:59,140 Aj keď ste písať kompilátor, môže vec, ktorá beží prekladač byť zlé. 437 00:31:59,140 --> 00:32:05,210 (Smeje sa) Nie je toho veľa, čo môžeš urobiť. 438 00:32:05,210 --> 00:32:09,050 Svet je odsúdená k zániku. 439 00:32:09,050 --> 00:32:11,570 Späť k Dávidovi! 440 00:32:11,570 --> 00:32:19,540 [Potlesk] 441 00:32:19,540 --> 00:32:21,340 >> [David] Vďaka. To bolo naozaj deprimujúce. 442 00:32:21,340 --> 00:32:23,910 Ale naozaj, Rob je správne. 443 00:32:23,910 --> 00:32:27,150 My naozaj nemajú riešenie, ale ty si asi nejaké riešenie 444 00:32:27,150 --> 00:32:29,150 niektorých bežnejších obrany. 445 00:32:29,150 --> 00:32:31,170 V očakávaní toho, čo Nate a ja som robil v zákulisí sa 446 00:32:31,170 --> 00:32:33,950 je vedieť, že tam je tak veľa notebookov v tejto izbe, 447 00:32:33,950 --> 00:32:37,020 sme boli ňuchania všetky bezdrôtový prevádzku prechádza tejto izbe za posledných 20 minút 448 00:32:37,020 --> 00:32:39,260 počas hovoru Rob, takže budeme trvať 2 minúty prestávku tu. 449 00:32:39,260 --> 00:32:41,740 Nate sa deje nastaviť, a potom budeme hovoriť o všetky veci, 450 00:32:41,740 --> 00:32:46,380 sme mohli nájsť. (Smiech) 451 00:32:46,380 --> 00:32:51,990 >> Takže, možno som prehnané trochu len kvôli dráme, 452 00:32:51,990 --> 00:32:55,990 ale mohli sme boli ňuchania všetky vaše bezdrôtový prevádzku, pretože skutočne, 453 00:32:55,990 --> 00:32:57,240 je to tak jednoduché. 454 00:32:57,240 --> 00:32:59,790 Ale existujú aj spôsoby, ktoré môžete brániť proti tomu, a tak s tým, 455 00:32:59,790 --> 00:33:03,160 Dám vám Nate Hardison. >> [Nate] Sweet. 456 00:33:03,160 --> 00:33:06,300 (Potlesk) 457 00:33:06,300 --> 00:33:08,650 >> [Nate] Vďaka, človeče. Oceňujem kričať. 458 00:33:08,650 --> 00:33:12,790 Dobre! Je to hra týždeň. Sú vy nadšený? 459 00:33:12,790 --> 00:33:16,670 Dúfajme, že to bude veľká hra na sobotu. 460 00:33:16,670 --> 00:33:20,220 Viem si predstaviť, vám chlapi v tomto bode - vzhľadom k tomu, že máte kvíz v stredu 461 00:33:20,220 --> 00:33:24,430 všetko o kód, a my sme len sedeli cez nádherné prednášky Rob 462 00:33:24,430 --> 00:33:25,850 s celou partiou kódu C v ňom - 463 00:33:25,850 --> 00:33:28,330 sú možno trochu unavená kódu. 464 00:33:28,330 --> 00:33:32,180 V tejto časti, sme vlastne nebudeme dotýkať ľubovoľný kód vôbec. 465 00:33:32,180 --> 00:33:36,960 Sme jednoducho hovoriť o technológiu, ktorá používate každý deň, 466 00:33:36,960 --> 00:33:39,790 často po mnoho, mnoho hodín denne, 467 00:33:39,790 --> 00:33:46,220 a budeme hovoriť o dôsledkoch s bezpečnosťou, ktoré tam sú. 468 00:33:46,220 --> 00:33:48,960 >> Hovorili sme veľa o bezpečnosti v priebehu semestra, 469 00:33:48,960 --> 00:33:53,030 a my sme vyrazili s trochou crypto. 470 00:33:53,030 --> 00:33:55,030 [Bdoh lv vwlqng!] 471 00:33:55,030 --> 00:33:57,890 A zatiaľ čo vy ste pravdepodobne super-nadšení prechádzal poznámky navzájom 472 00:33:57,890 --> 00:33:59,890 v triede pomocou šifry Caesar, ako je tento, 473 00:33:59,890 --> 00:34:03,870 v skutočnosti, tam je nejaká väčšia zábava, aby sa mal, keď ste vlastne hovorí o bezpečnosti 474 00:34:03,870 --> 00:34:05,870 a tento druh vecí. 475 00:34:05,870 --> 00:34:09,090 Dnes, budeme pokrytie niekoľko technológií 476 00:34:09,090 --> 00:34:13,650 že ľudia skutočne používajú v reálnom svete robiť celý rad vecí 477 00:34:13,650 --> 00:34:18,360 od ňuchania pakety ľudí skutočne deje v a 478 00:34:18,360 --> 00:34:20,409 vlámanie do ľudová banka účtov a všetkých z toho. 479 00:34:20,409 --> 00:34:23,460 Jedná sa o legitímne nástroje, ktoré sme hovorili o 480 00:34:23,460 --> 00:34:26,320 s výnimkou možno jedného nástroja. 481 00:34:26,320 --> 00:34:28,889 >> A ja len chcem, aby rýchlo disclaimer. 482 00:34:28,889 --> 00:34:34,909 Keď hovoríme o týchto veciach, hovoríme o nich, takže viete, čo je tam vonku, 483 00:34:34,909 --> 00:34:39,389 a ste si vedomý, ako byť v bezpečí, keď ste sa pomocou počítača. 484 00:34:39,389 --> 00:34:44,000 Ale my rozhodne nechceme naznačiť, že by ste mali používať tieto nástroje 485 00:34:44,000 --> 00:34:48,090 v koľaji alebo vášho domu, pretože môžete naraziť na veľa veľkých problémov. 486 00:34:48,090 --> 00:34:52,760 To je jeden z dôvodov, že dnes sme vlastne neboli šnupanie vaše pakety. 487 00:34:52,760 --> 00:35:01,300 >> Dobrá. Minulý pondelok, sme sa rozprávali o cookies a HTTP, a autentizáciu, 488 00:35:01,300 --> 00:35:05,920 a ako Firesheep otvorí tento veľký dvere do svojho účtu Facebook, 489 00:35:05,920 --> 00:35:08,670 k účtu služby Hotmail - či niekto stále používate Hotmail - 490 00:35:08,670 --> 00:35:12,360 a mnoho ďalších účtov. 491 00:35:12,360 --> 00:35:16,980 Mnoho z týchto vecí sa bude stavať preč, že, 492 00:35:16,980 --> 00:35:22,070 ale najprv chcem vziať rýchlu prehliadku, ako Internet sa vyvinul v priebehu času. 493 00:35:22,070 --> 00:35:27,490 Späť v 90. rokoch, možno ste si spomenuli, skutočne pripojením 494 00:35:27,490 --> 00:35:29,880 počítačov s jedným z nich. 495 00:35:29,880 --> 00:35:32,640 Teraz nerobíme to tak moc nie. 496 00:35:32,640 --> 00:35:37,230 Je to vlastne Ukazuje sa, že v záujme zapojiť ethernetový kábel do môjho notebooku, 497 00:35:37,230 --> 00:35:41,710 Teraz mám použiť jeden z týchto adaptérov, ktoré je trochu blázon. 498 00:35:41,710 --> 00:35:47,580 >> Namiesto toho, v roku 1997 sme mali túto novú, legrace technológie 499 00:35:47,580 --> 00:35:54,960 sa ukázalo, že je známa ako IEEE 802.11, takže to je bezdrôtový internet štandardné 500 00:35:54,960 --> 00:36:00,430 IEEE je to riadiaci orgán, ktorý vydáva všetky druhy - 501 00:36:00,430 --> 00:36:04,770 zverejňuje všetky druhy noriem vo vzťahu k počítačom. 502 00:36:04,770 --> 00:36:08,780 Tieto normy sú 802 všetko o internetových technológií. 503 00:36:08,780 --> 00:36:12,690 Takže 802,3, napríklad, je Ethernetový štandard, 504 00:36:12,690 --> 00:36:17,120 802.15.1 Verím, že je Bluetooth štandard, 505 00:36:17,120 --> 00:36:19,540 a 802.11 je predovšetkým o bezdrôtové pripojenie k internetu. 506 00:36:19,540 --> 00:36:24,150 V roku 1997 vyšiel. To nie úplne zachytiť hneď. 507 00:36:24,150 --> 00:36:30,200 To nebolo až do roku 1999, a 802.11b prišiel na to, že práve dostal naozaj populárne. 508 00:36:30,200 --> 00:36:36,330 >> Ako mnohí z vás si spomenúť, kedy počítače začali vychádzať a ako wi-fi na ne? 509 00:36:36,330 --> 00:36:38,330 To bolo celkom v pohode, nie? 510 00:36:38,330 --> 00:36:41,260 Spomínam si, ako môj prvý notebook na strednej škole, 511 00:36:41,260 --> 00:36:44,250 a to malo bezdrôtovú kartu v ňom. 512 00:36:44,250 --> 00:36:49,580 Môj otec mi ho dal, a hovoril, že by som mal použiť pre svoje vysokoškolské aplikácie a všetky z toho, 513 00:36:49,580 --> 00:36:53,030 a ja som nemal tušenie, ako som šiel sa pozrieť do tejto veci on-line. 514 00:36:53,030 --> 00:36:54,640 Ale našťastie som mal bezdrôtovú kartu, tak to bolo celkom v pohode. 515 00:36:54,640 --> 00:37:04,090 V súčasnej dobe, budete tiež vidieť 802.11g, ktorý je jedným z ďalších veľmi populárne 516 00:37:04,090 --> 00:37:06,090 bezdrôtové štandardy, ktoré je tam vonku. 517 00:37:06,090 --> 00:37:08,660 Obaja b a g sú dosť zastarané v tomto bode. 518 00:37:08,660 --> 00:37:12,580 Vie niekto, akú verziu si väčšina ľudí práve teraz 519 00:37:12,580 --> 00:37:15,110 v prípade, že kupujete nové bezdrôtové smerovače a také veci? 520 00:37:15,110 --> 00:37:24,290 N. Presne tak. Bingo. A ukázalo sa, že AC norma je práve vychádza v podobe návrhu, 521 00:37:24,290 --> 00:37:28,050 a tam sú iné verzie na ceste. 522 00:37:28,050 --> 00:37:31,190 S každou z týchto noriem, čo sme získavajú väčšiu šírku pásma, 523 00:37:31,190 --> 00:37:33,900 ďalšie údaje v rýchlejším tempom. 524 00:37:33,900 --> 00:37:36,260 Tieto veci sa neustále mení docela rýchlo. 525 00:37:36,260 --> 00:37:39,880 To tiež robí to tak, že budeme musieť kúpiť viac smerovačov a všetko to zábavné veci. 526 00:37:39,880 --> 00:37:48,160 >> Poďme sa baviť o tom, čo bezdrôtová komunikácia je vlastne v jeho jadre. 527 00:37:48,160 --> 00:37:51,790 S Ethernet a tých starých dial-up modemy, 528 00:37:51,790 --> 00:37:55,780 ste vlastne mali tieto veci, ktoré ste zapojený do počítača, 529 00:37:55,780 --> 00:37:59,820 a potom zapojený do modemu druhov, a potom si ju zapojil do zásuvky v stene. 530 00:37:59,820 --> 00:38:01,820 Vy ste mali tento káblové pripojenie, nie? 531 00:38:01,820 --> 00:38:06,030 Celý bod bezdrôtovej je zbaviť sa tejto veci. 532 00:38:06,030 --> 00:38:10,300 Aby k tomu, že to, čo máme, je v podstate 533 00:38:10,300 --> 00:38:13,960 rádiovej komunikácie, kde náš bezdrôtový router - 534 00:38:13,960 --> 00:38:16,230 určený našej malej ikonu bezdrôtového pripojenia - 535 00:38:16,230 --> 00:38:21,730 je pripojený k internetu s touto pevnou šípka ukazuje nejaký druh káblové pripojenie, 536 00:38:21,730 --> 00:38:24,640 ale pri pripojení k bezdrôtovému smerovaču 537 00:38:24,640 --> 00:38:29,190 ste vlastne používate skoro ako vysielačku medzi 538 00:38:29,190 --> 00:38:31,960 počítač a bezdrôtový smerovač. 539 00:38:31,960 --> 00:38:35,150 Čo je naozaj cool o tom je, že môžete pohybovať. 540 00:38:35,150 --> 00:38:40,900 Môžete so sebou počítač celom Sanders, choďte surfovať na webe, čo chcete, 541 00:38:40,900 --> 00:38:43,240 rovnako ako vy všetci poznáme a milujeme, 542 00:38:43,240 --> 00:38:46,030 a nemusíte vôbec byť zapojený na čokoľvek. 543 00:38:46,030 --> 00:38:53,880 Aby to fungovalo, máme ako tento príjem a prenos. 544 00:38:53,880 --> 00:38:56,060 Je to naozaj ako ten vysielačku. 545 00:38:56,060 --> 00:39:03,800 >> Tento bezdrôtový router - ktorý v Sandersa sedí pod tejto fáze, tu - 546 00:39:03,800 --> 00:39:06,590 je vždy vysielanie a príjem, vysielanie a príjem, 547 00:39:06,590 --> 00:39:09,330 a podobne, budú vaše počítače všetci robia, že rovnaký druh veci, taky. 548 00:39:09,330 --> 00:39:12,840 My jednoducho nemôže počuť. 549 00:39:12,840 --> 00:39:17,900 Ďalšia vec, ktorú môžete urobiť, je, že môžete mať viac počítačov 550 00:39:17,900 --> 00:39:22,200 hovorí ku rovnakému bezdrôtovému smerovaču. 551 00:39:22,200 --> 00:39:25,680 Čím bližšie ste k routeru - a opäť, to je rádiová komunikácia - 552 00:39:25,680 --> 00:39:30,320 čím bližšie ste, tým lepšia je vaša signál, lepší počítač "počuje" router 553 00:39:30,320 --> 00:39:32,460 a môže komunikovať s Internetom. 554 00:39:32,460 --> 00:39:39,520 Ak ste sa niekedy na svoje koľaji, vo vašom dome a ste premýšľal, prečo váš signál je zlý, 555 00:39:39,520 --> 00:39:42,230 je to pravdepodobne preto, že). nie ste veľmi blízko k routeru, alebo 556 00:39:42,230 --> 00:39:46,930 b). niečo medzi vami a vaším routerom ako cement stenu alebo niečo 557 00:39:46,930 --> 00:39:50,720 že nedovolí tieto rádiové vlny prechádzajú. 558 00:39:50,720 --> 00:39:57,850 >> Poďme trochu pohovoriť o tom, prečo zbabelcami ako wi-fi. 559 00:39:57,850 --> 00:40:02,980 Zlí chlapci radi wi-fi z niekoľkých dôvodov. 560 00:40:02,980 --> 00:40:06,670 Tu je náš škaredé zlý chlap tu. 561 00:40:06,670 --> 00:40:10,660 Jedným z dôvodov, prečo tento zlý miluje wi-fi 562 00:40:10,660 --> 00:40:18,770 Je tomu tak preto, štandardne, veľa bezdrôtových smerovačov príde, a keď si ich nastaviť, 563 00:40:18,770 --> 00:40:20,950 oni nešifrované. 564 00:40:20,950 --> 00:40:23,970 To bol problém, a tam boli príklady - 565 00:40:23,970 --> 00:40:28,210 viac inštancií, teraz - kde zlý človek ukáže až niečí domu, 566 00:40:28,210 --> 00:40:32,630 oznámenia, že to nešifrované wi-fi, na ktoré sa dá pripojiť. 567 00:40:32,630 --> 00:40:37,350 Oni sa pripojiť k wi-fi, a potom začnú sťahovať najrôznejšie zábavné veci. 568 00:40:37,350 --> 00:40:40,890 A nie sú to sťahovanie mačiatka, že to nie je sťahovanie šteniatka. 569 00:40:40,890 --> 00:40:44,610 To je ako BitTorrent. To je ohavný najodpornejší. 570 00:40:44,610 --> 00:40:48,740 Tam boli prípady, keď FBI dokonca sa zapojila 571 00:40:48,740 --> 00:40:52,390 myslieť si, že osoba, ktorá je vlastníkom domu je vlastne jeden 572 00:40:52,390 --> 00:40:56,090 ísť von a sťahovanie veci, ktoré by naozaj nemal byť. 573 00:40:56,090 --> 00:41:00,730 Po nešifrované wi-fi rozhodne nie je niečo, čo chcete robiť, 574 00:41:00,730 --> 00:41:06,340 keby len nemal FBI príde klopať na vaše dvere. 575 00:41:06,340 --> 00:41:09,910 >> Ďalším dôvodom, prečo ti zlí milujú wi-fi 576 00:41:09,910 --> 00:41:13,870 je dôvod, prečo David hovoril o tom skôr počas prestávky. 577 00:41:13,870 --> 00:41:17,240 Vzhľadom k tomu, že je to rádiovej komunikácie vo svojom jadre, 578 00:41:17,240 --> 00:41:22,460 ak viete, kanál, môžete počúvať tejto rozhlasovej stanice. 579 00:41:22,460 --> 00:41:31,870 Napríklad, ak je zlý tu sedí uprostred vpravo vedľa prístupového bodu, 580 00:41:31,870 --> 00:41:36,830 hneď vedľa tohto bezdrôtového routeru, môže zlý počúvať na všetky bezdrôtový prevádzku 581 00:41:36,830 --> 00:41:40,240 že prichádza zo všetkých týchto počítačov. 582 00:41:40,240 --> 00:41:44,590 V skutočnosti, títo ľudia - to niekoľko málo šťastlivcov, ktorí sú tu v prvom rade - 583 00:41:44,590 --> 00:41:47,610 preto, že sú super blízkosti všetkých týchto bezdrôtových smerovačov 584 00:41:47,610 --> 00:41:49,950 že sedí tesne pod javiskom, 585 00:41:49,950 --> 00:41:53,780 by byť schopní počuť každý je prevádzka v celom tomto izbe 586 00:41:53,780 --> 00:41:59,480 ak ste pripojení k Wi-Fi a začnite prechádzať prostredníctvom týchto prístupových bodov. 587 00:41:59,480 --> 00:42:03,740 Nie je to moc ťažké sedieť sami v dobrej pozícii, aby čuchať a zistiť 588 00:42:03,740 --> 00:42:07,030 čo ostatní ľudia robia. 589 00:42:07,030 --> 00:42:10,830 Je to niečo, čo mať na pamäti, najmä ak si nie ste istí, kde je prístupový bod, 590 00:42:10,830 --> 00:42:15,010 a ste prechádzanie slovo, na Starbucks. 591 00:42:15,010 --> 00:42:17,360 >> Ukazuje sa, že ňuchania a to všetko 592 00:42:17,360 --> 00:42:19,440 naozaj nie je tak ťažké urobiť. 593 00:42:19,440 --> 00:42:25,430 Tam je program s názvom tcpdump, ktorý vypíše všetky druhy dopravy TCP 594 00:42:25,430 --> 00:42:29,910 a môžete ho spustiť celkom jednoducho - rovnako ako som to urobil dnes ráno. 595 00:42:29,910 --> 00:42:32,810 Tu je trochu skládku, a tu je niekoľko z prevádzky, ktorý bol budúci nad 596 00:42:32,810 --> 00:42:34,960 moja sieť v tej dobe. 597 00:42:34,960 --> 00:42:41,500 Môžete vidieť - ak škúlenie naozaj ťažké - je tu trochu Spotify tam. 598 00:42:41,500 --> 00:42:44,050 Na vrchole tcpdump - pretože je to tak trochu bolesti používať - 599 00:42:44,050 --> 00:42:48,860 je tu program nazvaný Wireshark ktoré zväzky to všetko v príjemnom GUI. 600 00:42:48,860 --> 00:42:51,970 Wireshark je super-praktický, takže ak máte ísť na so sieťou triedy, 601 00:42:51,970 --> 00:42:56,780 To je nástroj, ktorý vám príde na lásku, pretože vám pomôže rozobrať všetky pakety 602 00:42:56,780 --> 00:42:59,400 , Ktoré sú plávajúce okolo tam. 603 00:42:59,400 --> 00:43:01,810 Ale môže byť tiež použitý pre zlé. 604 00:43:01,810 --> 00:43:05,810 Je to veľmi jednoduché stačí stiahnuť tento program, spustiť ho, 605 00:43:05,810 --> 00:43:09,300 kto siete zber, a vidieť všetko, čo sa deje - 606 00:43:09,300 --> 00:43:14,130 a filtrovať a robiť všetky druhy zábavné veci s ním. 607 00:43:14,130 --> 00:43:17,930 >> Ďalšia vec, ktorú môžete urobiť s bezdrôtovou komunikáciou 608 00:43:17,930 --> 00:43:25,380 sa môžete nielen odpočúvať, ale môžete tiež naučiť, ako skrutka so sieťou 609 00:43:25,380 --> 00:43:31,020 a aplikujte svoje vlastné informácie k ovládaniu skúsenosť, že ostatní ľudia 610 00:43:31,020 --> 00:43:35,140 v rovnakej bezdrôtovej sieti sú stále. 611 00:43:35,140 --> 00:43:37,140 Poďme sa na to pozrieť. 612 00:43:37,140 --> 00:43:40,700 Tu je Firesheep - ktoré poznáme a milujeme z minulého týždňa - 613 00:43:40,700 --> 00:43:43,590 ktorý je, že odpočúvanie technológie. 614 00:43:43,590 --> 00:43:50,360 Ak, napríklad, chceli sme, aby sa aktívne máme bad guy ísť a flákať sa 615 00:43:50,360 --> 00:43:52,690 jeden z týchto počítačov, 616 00:43:52,690 --> 00:43:58,380 V tomto scenári máme počítač sa snaží ísť surfovať na harvard.edu. 617 00:43:58,380 --> 00:44:04,690 Čo sa stane, je, počítač najprv odošle správu k bezdrôtovému smerovaču a hovorí, 618 00:44:04,690 --> 00:44:07,920 hey, ja chcem ísť navštíviť www.harvard.edu. 619 00:44:07,920 --> 00:44:10,610 Povedzme, že z nejakého dôvodu sa snažíme získať informácie o hre tento víkend. 620 00:44:10,610 --> 00:44:14,940 Bad guy, pretože sedí priamo uprostred, 621 00:44:14,940 --> 00:44:18,730 hneď vedľa tohto prístupového bodu, môžete vidieť, že komunikácia prichádzajúce z počítača 622 00:44:18,730 --> 00:44:26,170 do routera, a on vie, "Aha! Niekto to bude harvard.edu." (Zle smeje sa) 623 00:44:26,170 --> 00:44:33,870 Tam to bude toto oneskorenie pri komunikácii ide z routeru 624 00:44:33,870 --> 00:44:37,780 do Internetu ísť nájsť webové stránky na harvard.edu-- 625 00:44:37,780 --> 00:44:42,020 rovnako ako vy všetci vieme, po tom vaše PHP psets - 626 00:44:42,020 --> 00:44:45,680 a tak zlý chlap má trochu času, trochu z okna, 627 00:44:45,680 --> 00:44:49,410 v ktorom môže reagovať s niektorými vecami. 628 00:44:49,410 --> 00:44:53,660 >> Povedzme, že to zlý človek, samozrejme, je Yale. 629 00:44:53,660 --> 00:44:59,990 On odpovie s harvardsucks.org. Boo! 630 00:44:59,990 --> 00:45:02,300 Bad, bad guy! Bad Yale! 631 00:45:02,300 --> 00:45:06,020 Alebo ešte horšie, mohol by reagovať s tým. [Http :/ / youtu.be/ZSBq8geuJk0]. 632 00:45:06,020 --> 00:45:09,530 Nechám ste prísť na to, čo to je. 633 00:45:09,530 --> 00:45:14,840 To je vlastne technológia nazýva Airpwn! ktorý bol debutoval u 634 00:45:14,840 --> 00:45:18,950 jeden z bezpečnostných konferencií o niekoľko rokov späť. 635 00:45:18,950 --> 00:45:25,190 S Airpwn! ste schopní skutočne aplikovať prevádzku späť do siete. 636 00:45:25,190 --> 00:45:30,060 Počítače, ktoré sa snažili ísť na internet a snaží sa dostať do 637 00:45:30,060 --> 00:45:33,090 Google.com, na Facebook.com, aby harvard.edu 638 00:45:33,090 --> 00:45:39,190 pozri škodlivého odpoveď príde a okamžite prevziať, jo, 639 00:45:39,190 --> 00:45:43,550 že je odpoveď, že som čakal na a nakoniec dostať obsah z 640 00:45:43,550 --> 00:45:48,860 harvardsucks.org alebo nameyourfavoriteshocksite.com, 641 00:45:48,860 --> 00:45:55,270 a uvidíte, ako rýchlo sa veci zhoršia. 642 00:45:55,270 --> 00:46:00,190 >> Všetky tieto druhy vecí nemožno vykonať 643 00:46:00,190 --> 00:46:05,870 s týmito káblové pripojenie, pretože s káblovým pripojením 644 00:46:05,870 --> 00:46:08,710 je to ťažké odpočúvať na prevádzku. 645 00:46:08,710 --> 00:46:13,020 Ak som zlý človek, a na jednom konci je váš počítač 646 00:46:13,020 --> 00:46:14,460 a na druhom konci je váš router - modem - 647 00:46:14,460 --> 00:46:20,180 jediný spôsob, ako môžem dostať medzi tejto súvislosti je skutočne spájať svoj počítač 648 00:46:20,180 --> 00:46:22,180 v niekde uprostred 649 00:46:22,180 --> 00:46:26,820 alebo robiť niečo iné s routerom, niečo po prúde. 650 00:46:26,820 --> 00:46:33,360 Ale s bezdrôtovým, to môže byť tak jednoduché, ako sedí v prednej rade triede, 651 00:46:33,360 --> 00:46:38,200 a môžete robiť všetky druhy škaredé veci ľuďom v chrbte. 652 00:46:38,200 --> 00:46:41,570 >> Poďme sa baviť o tom, ako by sa vám mohol brániť proti niektoré z týchto vecí. 653 00:46:41,570 --> 00:46:46,860 Ľudia, ktorí vyvinuli štandardy bezdrôtového pripojenia - 802,11 - 654 00:46:46,860 --> 00:46:50,820 nie sú hlúpi ľudia od žiadnym najbujnejšej fantázii. 655 00:46:50,820 --> 00:46:56,110 To je v pohode technológie a keď debutoval v roku 1999, 656 00:46:56,110 --> 00:47:00,780 prišli s týmto štandardom s názvom WEP. 657 00:47:00,780 --> 00:47:03,360 Tu vidíte, keď sa pokúsite a pripojiť sa k bezdrôtovej sieti, 658 00:47:03,360 --> 00:47:07,450 Máte všetky druhy rôznych možností zabezpečenia. 659 00:47:07,450 --> 00:47:11,800 To je trochu bolesti, pretože tam sú 6 dohromady 660 00:47:11,800 --> 00:47:14,790 a to nikdy naozaj zmysel toho 1 pripojiť. 661 00:47:14,790 --> 00:47:19,190 Táto 1 v hornej časti je prvý, ktorý prišli s názvom WEP. 662 00:47:19,190 --> 00:47:27,960 WEP Wired Equivalent Privacy, verím, 663 00:47:27,960 --> 00:47:31,730 nie Wireless Encryption Protocol, ktorý je spoločný chybný. 664 00:47:31,730 --> 00:47:36,170 Vzhľadom k tomu, že sa snaží, aby vám súkromie ekvivalent a bezpečnostné ochrany 665 00:47:36,170 --> 00:47:40,590 ekvivalentné k tomu káblovej sieti 666 00:47:40,590 --> 00:47:46,710 S WEP, čo skončí deje je, 667 00:47:46,710 --> 00:47:52,300 máte jednoduchý, malý heslo, ktoré zadáte a či slúži na šifrovanie 668 00:47:52,300 --> 00:47:56,210 všetky vaše komunikácie medzi počítačom a routerom. 669 00:47:56,210 --> 00:47:58,210 >> Čo je problém s WEP aj keď? 670 00:47:58,210 --> 00:48:01,470 Heslo s WEP je naozaj krátka, 671 00:48:01,470 --> 00:48:04,900 a tiež každý používa rovnaký presný heslo, 672 00:48:04,900 --> 00:48:07,610  a tak je to naozaj jednoduché dešifrovať. 673 00:48:07,610 --> 00:48:10,580 Takže veľmi rýchlo ľudia zistili, že WEP je problém, 674 00:48:10,580 --> 00:48:16,100 a jediný dôvod, prečo to vidíte ukázať ešte na tejto malej chlap je - 675 00:48:16,100 --> 00:48:18,890 tam sú niektoré staršie systémy, ktoré sa používajú WEP - 676 00:48:18,890 --> 00:48:25,710 čo by ste mali miesto mať záujem o sú WPA a WPA2 štandardy dokonca 677 00:48:25,710 --> 00:48:29,130 ktoré boli vydané neskôr. 678 00:48:29,130 --> 00:48:35,040 Tieto systémy sú oveľa lepšie ísť na ochranu na bezdrôtové pripojenie k internetu. 679 00:48:35,040 --> 00:48:41,090 To znamená, že oni ešte majú určitú hackability. 680 00:48:41,090 --> 00:48:44,010 Existujú nástroje, ktoré tam môže ísť urobiť. 681 00:48:44,010 --> 00:48:47,490 Jedna vec najmä to, že môže byť protivný je, že 682 00:48:47,490 --> 00:48:55,370 Ak pripájate a overený k bezdrôtovému smerovaču a používate nejaký 683 00:48:55,370 --> 00:49:00,940 šifrovaná komunikácia, sa ukazuje, že hacker môže ľahko odoslať jeden paket 684 00:49:00,940 --> 00:49:03,990 odpojiť vás od routeru, 685 00:49:03,990 --> 00:49:07,220 a akonáhle budú odpojení tí potom môžu počúvať v - 686 00:49:07,220 --> 00:49:11,800 môžu čuchať tie pakety, ak sa pokúsite obnoviť spojenie s routerom. 687 00:49:11,800 --> 00:49:16,800 A s týmito informáciami, ktoré potom môžu ísť a dešifrovanie zvyšku vašej komunikácie. 688 00:49:16,800 --> 00:49:24,580 To je v žiadnom prípade nie je nejaký druh zabezpečený nado všetkou predstavivosti. 689 00:49:24,580 --> 00:49:30,060 >> Ďalšia vec, ktorú môžete urobiť, keď ste nastavenie bezdrôtovej siete 690 00:49:30,060 --> 00:49:35,460 alebo ste sa k nim pripojili, je - všimnete si, že tu, keď som pripojenie k tejto sieti, 691 00:49:35,460 --> 00:49:37,640 sa spýta na meno mojej sieti. 692 00:49:37,640 --> 00:49:41,060 Toto je tiež známe ako SSID. 693 00:49:41,060 --> 00:49:48,610 A tu vidíte, že na pravej strane mám pole, ktoré mi ukazuje dostupných SSID. 694 00:49:48,610 --> 00:49:52,690 Tam je Harvard University, CS50, CS50 a Staff siete. 695 00:49:52,690 --> 00:49:59,180 Teraz, ako sa mnohí z vás vedel, že tam bol CS50 Zamestnanci sieť po? 696 00:49:59,180 --> 00:50:01,910 Niektorí z vás. Nie všetky z vás. 697 00:50:01,910 --> 00:50:08,800 Problém s týmto, samozrejme, je to, že sa nám neupravené to až na svojom zozname SSID, 698 00:50:08,800 --> 00:50:10,930 nikto by vedel o tom s najväčšou pravdepodobnosťou. 699 00:50:10,930 --> 00:50:16,090 Dúfam, že. Ak vy sa všetci snažia rozlúsknuť do nášho bezdrôtové. 700 00:50:16,090 --> 00:50:18,700 Ale to je niečo, čo môžete urobiť, že je to naozaj dôležité, keď ste nastavenia 701 00:50:18,700 --> 00:50:20,280 router doma. 702 00:50:20,280 --> 00:50:22,820 To pravdepodobne nestane za pár rokov pre mnoho z vás, 703 00:50:22,820 --> 00:50:29,010 ale majte na pamäti, že vedenie, ktoré SSID von a nie je tiež pomenovanie 704 00:50:29,010 --> 00:50:34,630 niečo super-spoločná vám pomôže udržať si istejší v dlhodobom horizonte. 705 00:50:34,630 --> 00:50:38,070 >> Záverečné pár vecí, ktoré môžete urobiť. Jedným z nich je HTTPS. 706 00:50:38,070 --> 00:50:44,760 Ak ste na Starbucks, ak ste vo verejnom wi-fi oblasti 707 00:50:44,760 --> 00:50:52,620 a vy sa rozhodnete pre prístup k bankovému účtu, prístup k Gmail, váš Facebook, 708 00:50:52,620 --> 00:50:56,140 Uistite sa, že tieto spoje budú cez HTTPS. 709 00:50:56,140 --> 00:50:59,800 Je to pridaná vrstva zabezpečenia, pridal vrstvu šifrovania. 710 00:50:59,800 --> 00:51:01,520 Jedna vec je mať na pamäti, je tu, 711 00:51:01,520 --> 00:51:04,740 koľko z vás niekedy klikli cez túto veľkú, červenú obrazovku, ktorá hovorí, 712 00:51:04,740 --> 00:51:07,480 "Táto webová stránka môže byť zlá." 713 00:51:07,480 --> 00:51:09,710 Viem, že mám. 714 00:51:09,710 --> 00:51:13,090 Je to asi, keď ste všetci prechádzanie sa ísť pozrieť vlasti alebo niečo také, nie? 715 00:51:13,090 --> 00:51:19,900 Jo. (Smiech z publika) Jo. Tam máš. Vieme, kto sa pozerá vlasti. 716 00:51:19,900 --> 00:51:24,540 To veľké, červená obrazovka tu 717 00:51:24,540 --> 00:51:28,600 často ukáže, že sa niečo funky sa deje. 718 00:51:28,600 --> 00:51:32,530 Niekedy je to len web sám o sebe je neistý, 719 00:51:32,530 --> 00:51:35,520 ale že rovnaké veľké, červená obrazovka príde, keď sa ľudia snažia 720 00:51:35,520 --> 00:51:37,520 mount sieťových útokov na vás. 721 00:51:37,520 --> 00:51:40,220 Takže ak uvidíte, že veľké, červená obrazovka prísť na Starbucks, 722 00:51:40,220 --> 00:51:42,440 neklikajte cez to. 723 00:51:42,440 --> 00:51:45,350 Zlé správy. Zlé správy nesie. 724 00:51:45,350 --> 00:51:51,490 >> Posledná vec, ktorej sa môžete pozrieť na 725 00:51:51,490 --> 00:51:54,120 je nejaký VPN. 726 00:51:54,120 --> 00:52:00,280 Tento VPN je k dispozícii prostredníctvom Harvard - vpn.fas.harvard.edu-- 727 00:52:00,280 --> 00:52:03,260 a čo to robí, je to vlastne vytvára zabezpečené pripojenie 728 00:52:03,260 --> 00:52:06,460 medzi vami a Harvardu, lievika váš prevádzku cez to, 729 00:52:06,460 --> 00:52:12,160 a že spôsobom, ak sedíte na mieste, ako Starbucks 730 00:52:12,160 --> 00:52:19,030 môžete sa pripojiť k Harvardu, dostať, že bezpečnú prevádzku, a potom prechádzať z Harvardu. 731 00:52:19,030 --> 00:52:21,950 Opäť, nie je stopercentný. Ľudia sa môžu dostať do stredu. 732 00:52:21,950 --> 00:52:25,850 Môžu sa začnú rozpadať, ale je to oveľa bezpečnejšie než sa spoliehať na bezpečnosť 733 00:52:25,850 --> 00:52:28,620 na wi-fi samotným. 734 00:52:28,620 --> 00:52:32,570 >> Dobrá. V súčte, 735 00:52:32,570 --> 00:52:34,580 keď sa nastavenia bezdrôtových sietí, 736 00:52:34,580 --> 00:52:37,250 keď idete von používať bezdrôtové verejnosti - 737 00:52:37,250 --> 00:52:43,430 či už je to Starbucks, či už je to päť chalanov, či už je to B.Good, 738 00:52:43,430 --> 00:52:46,440 niečo ako, že - nech majú wi-fi - 739 00:52:46,440 --> 00:52:48,440 byť vedomí svojho okolia. 740 00:52:48,440 --> 00:52:50,440 Buďte si vedomí toho, čo ľudia môžu robiť. 741 00:52:50,440 --> 00:52:53,890 A byť v bezpečí. Nepoužívajte prístup k vášmu bankový účet. 742 00:52:53,890 --> 00:52:58,740 Mohlo by to byť drsné prebudenie, ak niekto objaví s Vaším heslom neskôr. 743 00:52:58,740 --> 00:53:05,480 S tým, ísť purpurový! A budem zase veci späť na Dávidovi za posledné slovo. 744 00:53:05,480 --> 00:53:11,270 (Potlesk) 745 00:53:11,270 --> 00:53:14,360 >> [David] Myslel som, že zdieľajú jednu vec z osobnej skúsenosti. 746 00:53:14,360 --> 00:53:19,940 Nástroj by vás mohla hrať s - aj keď Apple do značnej miery odstrániť tento problém 747 00:53:19,940 --> 00:53:22,710 Ak ste aktualizovali softvér od - 748 00:53:22,710 --> 00:53:26,670 ale k tomuto konci nie je skutočne schopní veriť softvér, ktorý používame, 749 00:53:26,670 --> 00:53:33,270 a na body Nate, budú môcť čuchať trochu o tom, čo robia iní 750 00:53:33,270 --> 00:53:37,010 tam - to kus softvéru, ktorý vyšiel o rok a pol pred podnikom. 751 00:53:37,010 --> 00:53:39,010 [IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] 752 00:53:39,010 --> 00:53:41,010 Na nejakú dobu, iTunes - pred iCloud, keď si synchronizáciu svoje iPody alebo vaše iPhone alebo 753 00:53:41,010 --> 00:53:45,570 alebo vaše iPady s iTunes - v záujme záloh, 754 00:53:45,570 --> 00:53:48,340 aké sú vaše iPhone a táto iné zariadenia robili nejaký čas, je 755 00:53:48,340 --> 00:53:50,340 využitie údajov GPS. 756 00:53:50,340 --> 00:53:52,710 >> Všetci viete, možno, že vaše iPhone a Androids a Windows Mobile telefóny 757 00:53:52,710 --> 00:53:55,410 a ako v týchto dňoch môžu sledovať, kde sa v záujme zobrazujúci máp 758 00:53:55,410 --> 00:53:59,440 a podobné - dobre, čo Apple a tieto ďalších spoločností, je 759 00:53:59,440 --> 00:54:02,650 oni typicky sledovať takmer všade, kam ste skutočne v záujme 760 00:54:02,650 --> 00:54:05,380 zvyšovanie kvality služieb. 761 00:54:05,380 --> 00:54:07,170 Jeden, môžete získať viac cielené reklamy a podobne, 762 00:54:07,170 --> 00:54:10,740 ale dva, oni môžu tiež zistiť, kde existujú hotspot pre bezdrôtové pripojenie v celom svete, 763 00:54:10,740 --> 00:54:14,780 a to môže pomôcť s geo-umiestnenie - druh triangulácie polohy ľudí. 764 00:54:14,780 --> 00:54:18,520 >> Dlhý príbeh krátky, každý z nás chodil tykadlá na nejakú dobu. 765 00:54:18,520 --> 00:54:22,180 Bohužiaľ, Apple urobil návrhu rozhodnutia - alebo nedostatok thereof - 766 00:54:22,180 --> 00:54:26,590 sa nemožno zašifrovať túto informáciu, keď to bolo byť zálohované do iTunes. 767 00:54:26,590 --> 00:54:30,330 A čo bezpečnostné výskumník sa zistilo, že to bol len obrovský súbor XML - 768 00:54:30,330 --> 00:54:33,810 obrovský textový súbor - sedí v iTunes ľudí softvéru, 769 00:54:33,810 --> 00:54:35,400 a ak ste boli len trochu zvedavý, 770 00:54:35,400 --> 00:54:38,990 môžete ísť šťourat vášho manžela históriu, svojho spolubývajúceho histórie, 771 00:54:38,990 --> 00:54:41,050 Váš súrodenec histórie a podobne, 772 00:54:41,050 --> 00:54:44,590 a vďaka určitému slobodného softvéru, môžete vykresliť všetky tieto GPS súradníc - 773 00:54:44,590 --> 00:54:46,590 zemepisnej šírky a dĺžky. 774 00:54:46,590 --> 00:54:48,590 >> Takže som vlastne urobil s mojím vlastným telefónu. 775 00:54:48,590 --> 00:54:51,210 Som zapojený v mojom telefóne, a naozaj, moja verzia iTunes nebola šifrovaná v tej dobe, 776 00:54:51,210 --> 00:54:53,900 a to, čo som bol schopný vidieť boli mojimi vlastnými vzormi. 777 00:54:53,900 --> 00:54:56,970 Tu je Spojené štáty a každý z týchto modrých kruhov predstavuje 778 00:54:56,970 --> 00:55:01,670 kde som sa stalo, že bol v priebehu týchto predchádzajúcich mesiacoch vlastniť tento konkrétny telefón. 779 00:55:01,670 --> 00:55:04,940  Strávil som veľa času, samozrejme, až na severovýchode, trochu času v Kalifornii, 780 00:55:04,940 --> 00:55:08,690 krátkotrvajúci výlet do Texasu, a ak potom priblížiť na to - 781 00:55:08,690 --> 00:55:11,120 je to všetko trochu pokuty a zaujímavé, ale ja som to vedel. 782 00:55:11,120 --> 00:55:13,890 Väčšina mojich priateľov to vedel, ale ak sa ponoriť hlbšie, 783 00:55:13,890 --> 00:55:17,090 vidíte, kde trávim väčšinu svojho času na severovýchode. 784 00:55:17,090 --> 00:55:20,330 Ak západky na niektorých pozná-vyzerajúcich mestách - 785 00:55:20,330 --> 00:55:24,670 tento veľký, modrý atrament škvrna je v podstate koncentrovaný cez Boston, 786 00:55:24,670 --> 00:55:29,510 a potom som stráviť trochu času v predmestí vyžarujúcich z Bostonu. 787 00:55:29,510 --> 00:55:32,780 Ale bol som tiež robil docela dosť konzultácií ten rok. 788 00:55:32,780 --> 00:55:36,090 A v tomto roku je východné pobrežie, a môžete skutočne vidieť ma 789 00:55:36,090 --> 00:55:41,920 a môj iPhone vo vrecku cestovanie tam a späť medzi Bostone a New Yorku 790 00:55:41,920 --> 00:55:47,510 a Philadelphia ďalej dolu, rovnako ako stráviť trochu dovolenky 791 00:55:47,510 --> 00:55:50,340 na myse, ktorý je len málo rameno tam. 792 00:55:50,340 --> 00:55:53,030 Takže, každý z týchto bodov predstavuje nejaké miesto, kde som býval, 793 00:55:53,030 --> 00:55:56,970 a úplne bez vedomia mi, že celý tento história bola len tam sedí 794 00:55:56,970 --> 00:55:58,410 na mojom stolnom počítači. 795 00:55:58,410 --> 00:56:00,470 Ak oddialiť - to vlastne bol trochu znepokojujúce. 796 00:56:00,470 --> 00:56:04,190 Nemal som spomienku nikdy mať been v Pensylvánii, ktoré daný rok. 797 00:56:04,190 --> 00:56:07,840 Ale ja keď niečo ťažšie, o tom a ja som prišiel na to, oh, to bolo v skutočnosti, že cesta 798 00:56:07,840 --> 00:56:11,160 a naozaj, môj telefón chytil ma. 799 00:56:11,160 --> 00:56:14,180 >> Apple od tej doby šifrované túto informáciu, 800 00:56:14,180 --> 00:56:17,380 ale aj to je len dokladom toho, koľko informácií sa zhromažďujú okolo nás, 801 00:56:17,380 --> 00:56:20,850 a ako ľahko - k lepšiemu alebo k horšiemu - je to prijateľné. 802 00:56:20,850 --> 00:56:23,340 Jeden z rýchle občerstvenie snáď z diskusie Rob, z reči Nate je 803 00:56:23,340 --> 00:56:27,370 a malé vizuálne, ako to dnes je, len aby sa všetky viac uvedomovali tohto 804 00:56:27,370 --> 00:56:31,160 takže aj keď - ako bod Rob - Sme trochu v prdeli, že jo? 805 00:56:31,160 --> 00:56:33,920 Nie je toho veľa, čo môžeme urobiť, pokiaľ ide o niektoré z týchto hrozieb, 806 00:56:33,920 --> 00:56:37,130 ale na konci dňa musíme veriť niečo alebo niekoho 807 00:56:37,130 --> 00:56:38,510 Ak chceme skutočne používať tieto technológie. 808 00:56:38,510 --> 00:56:43,150 Aspoň môžeme byť informované rozhodnutia a vypočítaných rozhodnutie, či 809 00:56:43,150 --> 00:56:46,390 by sme mali vlastne byť kontrola tohto mimoriadne citlivého účet 810 00:56:46,390 --> 00:56:49,330 alebo by sme mali byť skutočne posielať, že mierne podozrenie rýchle správy 811 00:56:49,330 --> 00:56:52,180  v wi-fi prostredia, ako je tento. 812 00:56:52,180 --> 00:56:54,990 >> Takže, s tým povedal, len jeden kvíz zvyšky, jedna prednáška zostáva. 813 00:56:54,990 --> 00:56:57,740 Uvidíme v stredu potom pondelok. 814 00:56:57,740 --> 00:57:02,100 (Potlesk a jasot) 815 00:57:02,100 --> 00:57:06,100 [CS50TV]