1 00:00:00,000 --> 00:00:02,750 [Powered by Google Translate] [Tydzień 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 jest CS50.] [CS50.TV] 4 00:00:08,520 --> 00:00:13,240 >> Wszystko w porządku! To CS50, ale nie o wiele dłużej. 5 00:00:13,240 --> 00:00:14,740 To jest początek tygodnia 10. 6 00:00:14,740 --> 00:00:18,780 W środę mamy nasz quiz, a potem następny poniedziałek mamy jakiś uroczysty tort 7 00:00:18,780 --> 00:00:22,030 jak zatoczyła koło z powrotem całą drogę od zera tygodni. 8 00:00:22,030 --> 00:00:25,200 Dziś mówimy o jednym z moich ulubionych tematów, prawdę mówiąc - 9 00:00:25,200 --> 00:00:29,000 że z bezpieczeństwem i ochroną prywatności oraz implikacje wszystkich sprzętu i oprogramowania 10 00:00:29,000 --> 00:00:31,000 że wszyscy używamy tych dni. 11 00:00:31,000 --> 00:00:33,300 Szczerze mówiąc, istnieje wiele zagrożeń tam 12 00:00:33,300 --> 00:00:35,430 że jeśli naprawdę nie zatrzymał się, by myśleć o nich, 13 00:00:35,430 --> 00:00:36,920 są rzeczywiście bardzo trudne. 14 00:00:36,920 --> 00:00:40,070 Sprawa w punkcie - jeśli ktoś z was kiedykolwiek pobrać kawałek oprogramowania 15 00:00:40,070 --> 00:00:42,660 z internetu i zainstalować go na komputerze, 16 00:00:42,660 --> 00:00:45,220 pan zaangażowany w znacznym stopniu zaufania, prawda? 17 00:00:45,220 --> 00:00:50,220 Nie ma nic po zapobiec Skype, lub Chrome, czy każdy program 18 00:00:50,220 --> 00:00:54,770 zainstalowaniu na komputerze, od po prostu usunąć wszystkie pliki na dysku twardym; 19 00:00:54,770 --> 00:00:58,260 przesyłaj wszystkie pliki na dysku twardym, w pewnym złym serwerem; 20 00:00:58,260 --> 00:01:01,650 czytając wszystkie e-maile, przechwytywanie wszystkich wiadomości błyskawicznych. 21 00:01:01,650 --> 00:01:05,040 Ponieważ rzeczywistość jest dziś z najbardziej nowoczesnych systemów operacyjnych 22 00:01:05,040 --> 00:01:10,040 tak naprawdę nie ma wiele z ścianie między programów, które instalują, 23 00:01:10,040 --> 00:01:14,220 Ty i ja jesteśmy prawie prostu rodzaj kciuki i biorąc na wiarę 24 00:01:14,220 --> 00:01:17,750 że app możemy pobrać za darmo, lub, że rzeczą, która jest 99 centów, 25 00:01:17,750 --> 00:01:20,140 jest w rzeczywistości całkowicie niegroźne. 26 00:01:20,140 --> 00:01:23,090 Ale jak widzieliśmy do C, a teraz PHP i JavaScript, 27 00:01:23,090 --> 00:01:25,420 z tego zdolności do wyrażania siebie programowo, 28 00:01:25,420 --> 00:01:30,300 można zrobić prawie wszystko co chcesz z programu, który użytkownik sam lub sama może zrobić. 29 00:01:30,300 --> 00:01:32,390 >> Tak, dzisiaj skupimy się na tym temacie - 30 00:01:32,390 --> 00:01:35,360 nie tylko niektóre zagrożenia, ale również obrony. 31 00:01:35,360 --> 00:01:37,540 Rzeczywiście, w świecie bezpieczeństwa w ogóle, 32 00:01:37,540 --> 00:01:39,040 tam trochę tego kotka i myszkę, 33 00:01:39,040 --> 00:01:41,990 i śmiem twierdzić, że źli faceci prawie zawsze mają nogę. 34 00:01:41,990 --> 00:01:45,880 Jeśli chodzi o wykorzystanie sprzętu komputerowego i oprogramowania na własnych komputerach osobistych, 35 00:01:45,880 --> 00:01:51,250 Musimy uświadomić sobie, że zły facet po prostu musi znaleźć jeden prosty błąd - 36 00:01:51,250 --> 00:01:56,150 jeden wykorzystać, jeden błąd - w kawałku oprogramowania mamy pisemnej lub są uruchomione 37 00:01:56,150 --> 00:01:58,280 w porządku dla niego przejąć nasz cały system. 38 00:01:58,280 --> 00:02:02,870 Natomiast my - dobrzy - trzeba załatać i naprawić wszystkie te błędy 39 00:02:02,870 --> 00:02:04,900 i uniknąć tych wszystkich słabości. 40 00:02:04,900 --> 00:02:07,870 I tak, śmiem twierdzić na całość, źli mają przewagę. 41 00:02:07,870 --> 00:02:10,840 Jakie klasy jak ten i kolejnych klas są naprawdę o 42 00:02:10,840 --> 00:02:14,830 są nie na temat nauczania, jak toczyć bitwy, że źli zrobienia, 43 00:02:14,830 --> 00:02:18,220 ale o tym, jak chronić siebie lub przynajmniej, jak zrobić obliczoną decyzję 44 00:02:18,220 --> 00:02:22,970 że tak, wiem, że to oprogramowanie rzeczywiście może przeczytać każdy jeden z moich e-maili, 45 00:02:22,970 --> 00:02:27,040 ale ja jestem w porządku z tym ze względu na wartość przynosi mnie z drugiej strony. 46 00:02:27,040 --> 00:02:31,060 >> Jestem bardzo zadowolony, aby przyłączyli się do 2 z najinteligentniejszych ludzi, jakich znam - 47 00:02:31,060 --> 00:02:33,060 Rob Bowden i Nate Hardison. 48 00:02:33,060 --> 00:02:36,850 Rob ma się wziąć nas na wycieczkę po najniższym poziomie tagów bezpieczeństwa - 49 00:02:36,850 --> 00:02:42,470 że z kompilatorem, który aż do teraz, my wszyscy kochać i ufać. Rob Bowden. 50 00:02:42,470 --> 00:02:47,790 [Oklaski] 51 00:02:47,790 --> 00:02:50,280 >> [Rob] Dobrze. David prawie podjąć całe spiel 52 00:02:50,280 --> 00:02:52,320 że idę do zapoznania się z, ale - 53 00:02:52,320 --> 00:02:58,070 Kilka tygodni temu, widziałem przykład przepełnienie bufora ataku 54 00:02:58,070 --> 00:03:01,900 która jest przykładem włamaniem hakerów do jakiegoś elementu oprogramowania 55 00:03:01,900 --> 00:03:06,060 że nie mają być włamanie do. 56 00:03:06,060 --> 00:03:09,690 Z drugiej strony z tego 57 00:03:09,690 --> 00:03:14,470 Czasami masz oprogramowanie, które jest szkodliwe samo w sobie. 58 00:03:14,470 --> 00:03:17,070 To nawet nie musi być posiekany. 59 00:03:17,070 --> 00:03:20,670 Kto napisał oprogramowanie chce wykraść cię. 60 00:03:20,670 --> 00:03:22,190 >> Powiedzmy od razu wskoczyć do kodu, 61 00:03:22,190 --> 00:03:28,560 spojrzenia na "login.c". 62 00:03:28,560 --> 00:03:33,390 Tu głupi program, który sprawdza poprawność nazwy użytkownika i kombinacji haseł. 63 00:03:33,390 --> 00:03:39,420 Tutaj należy pewno przyzwyczajenie z C ponownie do quizu. 64 00:03:39,420 --> 00:03:43,470 Po pierwsze, używamy dostać sznurki do opisania nazwy użytkownika, 65 00:03:43,470 --> 00:03:46,280 następnie używamy get ciąg chwycić hasła 66 00:03:46,280 --> 00:03:50,680 a następnie mamy kilka trywialnych kontrole tylko jest username "rob"? 67 00:03:50,680 --> 00:03:52,710 I jest hasło "thisiscs50"? 68 00:03:52,710 --> 00:03:56,900 Czy jest nazwa użytkownika "tommy" i hasło "i <3javascript"? 69 00:03:56,900 --> 00:03:58,980 Jeśli jeden z tych, w przypadku, 70 00:03:58,980 --> 00:04:01,980  to mamy po prostu będzie drukować "sukces", a następnie mamy dostęp. 71 00:04:01,980 --> 00:04:07,690 W przeciwnym razie będziemy drukować "nieprawidłowy login", a potem, oczywiście, 72 00:04:07,690 --> 00:04:11,120  od szkicu Struny malloc pamięci, mamy wolne nazwę użytkownika i hasło. 73 00:04:11,120 --> 00:04:15,560 To jest banalne programu login, 74 00:04:15,560 --> 00:04:18,110 i jeśli myślisz o podczas logowania do urządzenia, 75 00:04:18,110 --> 00:04:22,350 to jest całkiem podobny - lub nawet logując się do komputera - 76 00:04:22,350 --> 00:04:24,930 tam tylko niektóre logowanie program, który daje Ci dostęp. 77 00:04:24,930 --> 00:04:31,840 Tutaj, zdarzy się, że zakodowane 'Rob', '', 'thisiscs50 Tommy', 'i <3javascript', 78 00:04:31,840 --> 00:04:34,950 ale chyba jest jakiś plik gdzieś w systemie operacyjnym 79 00:04:34,950 --> 00:04:38,690 który zawiera listę nazw użytkowników, którzy mogą zalogować się do systemu 80 00:04:38,690 --> 00:04:41,740 i lista haseł związanych z tych użytkowników. 81 00:04:41,740 --> 00:04:46,090 Zwykle hasła nie są po prostu przechowywane w postaci zwykłego tekstu jak ten. 82 00:04:46,090 --> 00:04:50,360 Jest jakiś szyfrowania, ale to będzie dla naszego przykładu. 83 00:04:50,360 --> 00:04:57,000 >> Jadąc do naszego kompilatora - 84 00:04:57,020 --> 00:05:00,780 to będzie bardzo proste. 85 00:05:00,780 --> 00:05:04,800 Musimy podać przynajmniej jakiś plik, który chcemy skompilować, 86 00:05:04,800 --> 00:05:10,200 a następnie tutaj - te linie 87 00:05:10,200 --> 00:05:12,520 są po prostu czytania pliku. 88 00:05:12,520 --> 00:05:16,080 Odczytuje cały plik w jeden duży bufor, 89 00:05:16,080 --> 00:05:19,000 a potem zakończyć nullem nasz bufor, jak zawsze, 90 00:05:19,000 --> 00:05:21,000 i wreszcie po prostu skompilować plik. 91 00:05:21,000 --> 00:05:24,090 Nie będziemy patrzeć jak kompilacji rzeczywiście realizowane, 92 00:05:24,090 --> 00:05:26,820 ale jako podpowiedź, to po prostu wywołuje Clang. 93 00:05:26,820 --> 00:05:32,370 Będziemy używać tego programu do kompilacji rzeczy zamiast Clang. 94 00:05:32,370 --> 00:05:39,260 Jeden problem, zaczynamy to widzimy, że chcemy skompilować kompilator, 95 00:05:39,260 --> 00:05:43,620 ale jeśli nie będziemy używać dzyń, ja nie wiem, co mam zamiar skompilować. 96 00:05:43,620 --> 00:05:46,700 Jest to ogólny problem zwany bootstrap. 97 00:05:46,700 --> 00:05:53,080 Tak, tylko ten jeden raz, mam zamiar używać Clang do kompilacji naszego kompilatora. 98 00:05:53,080 --> 00:05:58,800 >> Jeśli uważasz, że GCC i dzyń - 99 00:05:58,800 --> 00:06:03,200 te programy, te kompilatory są stale aktualizowane, 100 00:06:03,200 --> 00:06:10,010 a te są sporządzane przy użyciu kompilatorów GCC i brzękiem. 101 00:06:10,010 --> 00:06:14,890 Clang to tylko jeden wielki C lub C + + program, 102 00:06:14,890 --> 00:06:19,510 więc kompilator używają skompilować to Clang. 103 00:06:19,510 --> 00:06:26,820 Tu, teraz, jesteśmy tylko będzie poprzez nasz kompilator skompilować kompilator, 104 00:06:26,820 --> 00:06:33,830 i możemy nawet powiedzieć - '/ kompilatora.', '', 'compiler.c compile.c', '-o kompilator ". 105 00:06:33,830 --> 00:06:37,250 Zawiadomienie to jest dokładnie komenda Pobiegłem przed - 106 00:06:37,250 --> 00:06:41,330 wystarczy wymienić Clang z '. / kompilator ". 107 00:06:41,330 --> 00:06:44,990 A teraz mamy innego kompilatora, ale to dokładnie to samo. 108 00:06:44,990 --> 00:06:47,510 To właśnie nazywa Clang. 109 00:06:47,510 --> 00:06:55,050 >> Będziemy używać naszej kompilator skompilować nasz program logowania. 110 00:06:55,050 --> 00:07:03,030 Okay - ". / Kompilator login.c-o login". 111 00:07:03,030 --> 00:07:06,160 Więc, undefined reference to "getString". 112 00:07:06,160 --> 00:07:11,250 Masz "-lcs50". Okay. 113 00:07:11,250 --> 00:07:13,790 Mam więc teraz nasz program logowania. 114 00:07:13,790 --> 00:07:16,790 Bieganie to - przyjąć "Wpisz nazwę użytkownika." 115 00:07:16,790 --> 00:07:22,140 Przykładem był rob. Proszę wprowadzić swoje hasło - thisiscs50. 116 00:07:22,140 --> 00:07:24,930 I sukcesu! Mam dostęp. 117 00:07:24,930 --> 00:07:28,350 Uruchomić go ponownie i wprowadzając pewne nieprawidłowe hasło - 118 00:07:28,350 --> 00:07:30,350 lub nieprawidłowy login i hasło - 119 00:07:30,350 --> 00:07:32,860 nieprawidłowy login. 120 00:07:32,860 --> 00:07:37,740 Okay. Nic ciekawego na ten temat do tej pory. 121 00:07:37,740 --> 00:07:43,100 Ale rzućmy okiem na logowaniu ponownie - 122 00:07:43,100 --> 00:07:47,850 i to będzie nieco trywialny przykład, 123 00:07:47,850 --> 00:07:59,330 ale niech dodać indziej tutaj i powiedzieć, else if ((strcmp (nazwa, "hacker") == 0 && 124 00:07:59,330 --> 00:08:14,510 strcmp (hasło "LOLihackyou") == 0)) 125 00:08:14,510 --> 00:08:26,280 więc teraz, printf ("Hacked Masz teraz dostęp \ n!."); okay. 126 00:08:26,280 --> 00:08:36,240 Kompilacja ta - kompilator login.c-o login-lcs50 - 127 00:08:36,240 --> 00:08:40,190 teraz uruchamiając login - i jeśli mogę użyć hacker nazwa_użytkownika 128 00:08:40,190 --> 00:08:44,740 i hasło LOLihackedyou - 129 00:08:44,740 --> 00:08:47,780 Czy ja to źle wpisać tam wcześniej? 130 00:08:47,780 --> 00:08:52,990 Na login.c--ihack - ll nie włamał, bo myślę, że to zrobić później. 131 00:08:52,990 --> 00:08:56,270 Okay. Rekompilacji. 132 00:08:56,270 --> 00:09:01,500 Re-running - hacker - LOLihackedyou - 133 00:09:01,500 --> 00:09:03,650 Hacked! Teraz masz dostęp. 134 00:09:03,650 --> 00:09:06,580 >> Nie wydaje się, że wiele z różnicy 135 00:09:06,580 --> 00:09:10,890 ponieważ jest to dokładnie taki sam check robię dla innych użytkowników i haseł. 136 00:09:10,890 --> 00:09:17,720 Plus, wielką rzeczą jest to, że jeśli inni ludzie patrzą na to login.c-- 137 00:09:17,720 --> 00:09:24,020 powiedzieć, czy mogę przekazać ten off z moim partnerem, i otworzyć ten plik, 138 00:09:24,020 --> 00:09:29,870 i po przeczytaniu tego, zobaczy - okay, dlaczego masz te linie kodu tutaj? 139 00:09:29,870 --> 00:09:33,320 To oczywiście nie jest coś, co powinno być w programie. 140 00:09:33,320 --> 00:09:41,590 W niektórych programach - jak każdy własnościowego oprogramowania, które nie jest open-source - 141 00:09:41,590 --> 00:09:46,200 nigdy nie może zobaczyć te linie kodu. 142 00:09:46,200 --> 00:09:50,440 Coś jak Skype czy coś - dla wszystkich wiesz, 143 00:09:50,440 --> 00:09:57,600 Skype na komputerze i jest tylko pewne specyficzne username-hasła, 144 00:09:57,600 --> 00:10:01,580 który będzie zalogować się do Skype w jakiś szczególny sposób. 145 00:10:01,580 --> 00:10:04,230 Nie wiemy o tym, a ludzie nie wiedzą o tym, 146 00:10:04,230 --> 00:10:09,640 ponieważ nie dostać się do zapoznania się z kodu źródłowego, aby zobaczyć, że jest ta dziura. 147 00:10:09,640 --> 00:10:11,800 >> To, co nazywamy to - 148 00:10:11,800 --> 00:10:16,530 chociaż nie bardzo mądry przykład - 149 00:10:16,530 --> 00:10:18,970 To nazywa się tylnymi drzwiami. 150 00:10:18,970 --> 00:10:22,320 Jeśli uważasz, że do tylnych drzwi domu. 151 00:10:22,320 --> 00:10:26,640 Tutaj, jeśli zatwierdź Rob nazwy użytkowników lub "Tommy" 152 00:10:26,640 --> 00:10:28,580 że będzie jak za pomocą "drzwi". 153 00:10:28,580 --> 00:10:33,700 Tak to ja mam bezpiecznie zalogować. 154 00:10:33,700 --> 00:10:37,630 Ale jeśli mogę wejść z tym nazwę użytkownika i hasło - 155 00:10:37,630 --> 00:10:40,630 następnie, że używa "tylnymi drzwiami". 156 00:10:40,630 --> 00:10:42,810 To nie było celowe sposób, aby dostać się do programu, 157 00:10:42,810 --> 00:10:45,350 , ale nadal działa. 158 00:10:45,350 --> 00:10:49,160 I ludzie w ogóle nie powinni wiedzieć o tych tylnych drzwi. 159 00:10:49,160 --> 00:10:53,050 Mamy zamiar to poprawić. 160 00:10:53,050 --> 00:10:55,610 Niech powróci to do naszej pierwotnej login.c, 161 00:10:55,610 --> 00:11:05,510 i rzućmy okiem na naszego nowego kompilatora. Okay. 162 00:11:05,510 --> 00:11:08,460 Wszystko tu jest dokładnie tak samo. 163 00:11:08,460 --> 00:11:10,460 Jesteśmy czytania całego pliku do bufora. 164 00:11:10,460 --> 00:11:14,400 Wszystko tu jest takie samo. 165 00:11:14,400 --> 00:11:16,180 Właśnie skompilowany plik. 166 00:11:16,180 --> 00:11:19,770 Ale teraz mam to duży, jeśli się tutaj 167 00:11:19,770 --> 00:11:24,140 który mówi, czy plik, że zdarzyć się kompilacja jest login.c, 168 00:11:24,140 --> 00:11:27,390 następnie zrobić coś specjalnego. 169 00:11:27,390 --> 00:11:29,900 Co to jest, że coś specjalnego? 170 00:11:29,900 --> 00:11:33,820 Widzę tu jakiś ciąg o nazwie "Hack" 171 00:11:33,820 --> 00:11:35,950 i patrząc na tych linii kodu - 172 00:11:35,950 --> 00:11:41,990 są to te same linie kodu - Chyba nie użyć 'ihack ", a nie" ihacked "przed - 173 00:11:41,990 --> 00:11:44,240 patrząc na tych linii kodu, 174 00:11:44,240 --> 00:11:47,880 są to te same dokładne linie kodu, które miałem w login.c wcześniej. 175 00:11:47,880 --> 00:11:51,130 Ale teraz, zamiast je w login.c, 176 00:11:51,130 --> 00:11:54,290 Mam zamiar umieścić je w moim kompilatora. 177 00:11:54,290 --> 00:12:00,240 >> Są to linie kodu zamierzam chcesz wstawić do login.c. 178 00:12:00,240 --> 00:12:06,350 Te linie kodu - bufor, który pierwotnie trzymała moją login.c 179 00:12:06,350 --> 00:12:11,080 już nie będzie na tyle duże, ponieważ teraz chcę również wstawić ten siekać 180 00:12:11,080 --> 00:12:12,940 do środka mojego programu. 181 00:12:12,940 --> 00:12:16,350 Wszystko to robi tworzy nowy bufor, który jest wystarczająco duży - 182 00:12:16,350 --> 00:12:22,020 zarówno dla oryginalnego pliku oraz dodatkowych linii kodu - hack - że chcę wstawić tam. 183 00:12:22,020 --> 00:12:24,920 Tu jest coś zauważyć - 184 00:12:24,920 --> 00:12:29,200 char * pattern = "/ / zaprzeczyć im dostęp!" 185 00:12:29,200 --> 00:12:33,760 Jeśli spojrzymy na login.c, 186 00:12:33,760 --> 00:12:37,690 widzimy tu ten komentarz - odmawiają im dostępu! 187 00:12:37,690 --> 00:12:42,360 W login.c, ten komentarz wygląda zupełnie nieszkodliwe, 188 00:12:42,360 --> 00:12:48,270 więc nie podejrzewa, że ​​złych intencji z tylko tego komentarza. 189 00:12:48,270 --> 00:12:55,600 Ale w naszej kompilatora, jesteśmy specjalnie będzie szukać tej linii kodu, 190 00:12:55,600 --> 00:12:57,600 i wtedy, gdy go znajdziemy - 191 00:12:57,600 --> 00:13:03,330 te linie kodu wstawi naszą siekać w tej pozycji. 192 00:13:03,330 --> 00:13:06,910 Tak, jesteśmy iterowanie całego login.c, 193 00:13:06,910 --> 00:13:12,080 jesteśmy wstawiając tę ​​sztuczkę, gdzie dokładnie jest napisane odmówić im dostępu, 194 00:13:12,080 --> 00:13:15,890 a następnie mamy kompilacji - nie oryginalna login.c 195 00:13:15,890 --> 00:13:20,340 ale nowy login.c z tym hack, włożonej w prawo na 'deny im dostęp ". 196 00:13:20,340 --> 00:13:29,190 >> Teraz chcę skompilować mój nowy kompilator z tym hack, zaangażowana. 197 00:13:29,190 --> 00:13:36,900 Nie zamierzam korzystać dzyń, więc niech to skopiować kompilator użyliśmy przed 198 00:13:36,900 --> 00:13:48,420 i użyć - tak, kompilator compiler.c compile.c-o evil_compiler. 199 00:13:48,420 --> 00:13:50,870 Teraz nasz zły kompilator - 200 00:13:50,870 --> 00:13:54,310 jeśli używamy naszego złego kompilator do kompilacji każdy inny plik, 201 00:13:54,310 --> 00:13:57,980 plik zostanie skompilowany, jak powinien. 202 00:13:57,980 --> 00:13:59,980 To jest zupełnie normalne. 203 00:13:59,980 --> 00:14:06,870 Ale jeśli używamy naszego złego kompilator do kompilacji logowania - 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 patrząc na login.c znowu, nie ma absolutnie nic tutaj. 206 00:14:21,310 --> 00:14:25,770 To jest nasz zwykły ", jeśli to albo rob lub tommy jesteśmy w, inaczej wyjdziemy". 207 00:14:25,770 --> 00:14:31,620 Ale kiedy prowadzimy wykonywalny, to będzie działać jak zwykle. 208 00:14:31,620 --> 00:14:36,640 Uruchomiony ponownie - haker, LOLihackyou - 209 00:14:36,640 --> 00:14:39,000 Hacked! Teraz masz dostęp. 210 00:14:39,000 --> 00:14:43,560 Po prostu patrząc na login.c, to nie sądzę, wszystko jest nie tak. 211 00:14:43,560 --> 00:14:46,960 Ale kompilator, który jest używany do kompilacji login.c 212 00:14:46,960 --> 00:14:53,820 jest specjalnie zaprojektowany, aby wstawić ten siekać do programu. 213 00:14:53,820 --> 00:14:57,320 Mamy tylko przeniosła pierwotnego problemu. 214 00:14:57,320 --> 00:15:02,880 Początkowo mieliśmy te linie kodu w login.c że jeśli ktoś spojrzał na nich, 215 00:15:02,880 --> 00:15:05,470 oni być jak, dlaczego są te tutaj? 216 00:15:05,470 --> 00:15:09,550 Teraz, jeśli ktoś stanie spojrzeć na nasz kompilator, 217 00:15:09,550 --> 00:15:12,140 oni spojrzeć na te linie kodu i powiedzieć, 218 00:15:12,140 --> 00:15:15,290 Dlaczego te tutaj? 219 00:15:15,290 --> 00:15:17,210 Tak więc, nie całkowicie rozwiązać nasz problem. 220 00:15:17,210 --> 00:15:22,510 Ale możemy wykorzystać ten pomysł jeszcze raz. 221 00:15:22,510 --> 00:15:26,260 >> Spojrzenia na naszej trzeciej wersji kompilatora, 222 00:15:26,260 --> 00:15:32,500 to jest ten sam pomysł. 223 00:15:32,500 --> 00:15:36,240 Czytamy cały plik do bufora się tutaj, 224 00:15:36,240 --> 00:15:39,660 możemy skompilować plik tu, 225 00:15:39,660 --> 00:15:44,220 a ja mam jakieś włamania smyczkową tu, 226 00:15:44,220 --> 00:15:47,710 ale zauważ, że plik rzeczywiście jestem hacking teraz. 227 00:15:47,710 --> 00:15:52,260 Jestem hacking compiler.c 228 00:15:52,260 --> 00:15:54,590 nie login.c. 229 00:15:54,590 --> 00:15:57,780 Ale co ja wstawienie do compiler.c? 230 00:15:57,780 --> 00:16:04,600 Jestem wstawiając ten kod, który jest dokładny kod w poprzednim kompilator, 231 00:16:04,600 --> 00:16:10,540 który miał wstawić kod do login.c. 232 00:16:10,540 --> 00:16:13,360 Oto nasza jeśli login.c plik strcmp 233 00:16:13,360 --> 00:16:19,370 a następnie wstawić do login.c naszych rzeczy hack. 234 00:16:19,370 --> 00:16:26,010 Ten nowy kompilator jest stworzenie kompilatora 235 00:16:26,010 --> 00:16:30,390 który jest przeznaczony do kompilacji logowania złośliwie. 236 00:16:30,390 --> 00:16:34,320 Zobaczymy, dlaczego tak nam pomaga. 237 00:16:34,320 --> 00:16:40,630 Wszystko jest takie same, więc to działa dokładnie tak, jak pracował z naszego poprzedniego kompilatora. 238 00:16:40,630 --> 00:16:45,550 Jesteśmy po prostu iteracja całej naszej compile.c. 239 00:16:45,550 --> 00:16:48,190 Ale teraz zamiast szukać 'deny im dostęp " 240 00:16:48,190 --> 00:16:51,490 szukamy "skompilować plik." 241 00:16:51,490 --> 00:16:53,750 Gdzie się skompilować plik? 242 00:16:53,750 --> 00:16:57,210 Patrząc na compiler.c całkowicie niewinny, 243 00:16:57,210 --> 00:17:01,340 to prawo tu na dole. 244 00:17:01,340 --> 00:17:06,500 Ten komentarz - skompilować plik - ponownie, że wygląda zupełnie nieszkodliwe. 245 00:17:06,500 --> 00:17:11,599 Ale w naszej złośliwego wersji kompilatora, 246 00:17:11,599 --> 00:17:16,550 będziemy - tuż przed tym komentarzem - wstaw ten kod 247 00:17:16,550 --> 00:17:20,690 który jest przeznaczony do wstawienia kodu podczas kompilacji login.c. 248 00:17:20,690 --> 00:17:25,589 >> Istnieje wiele poziomów zadnie tutaj. 249 00:17:25,589 --> 00:17:29,760 Miejmy faktycznie go uruchomić. 250 00:17:29,760 --> 00:17:37,360 Znowu będziemy kopiować nasz oryginalny kompilator. 251 00:17:37,360 --> 00:17:48,260 Teraz kompilacja - kompilator compiler.c compile.c-o evilest_compiler - 252 00:17:48,260 --> 00:17:52,640 i teraz evilest_compiler. 253 00:17:52,640 --> 00:17:59,200 Evilest kompilator - jeśli używać, aby skompilować kompilator, 254 00:17:59,200 --> 00:18:01,550 niech spojrzy. 255 00:18:01,550 --> 00:18:13,230 Evilest_compiler - doprowadzenia go, całą drogę z powrotem do wersji 1 naszego kompilatora - 256 00:18:13,230 --> 00:18:19,640 wersja 1 naszego kompilatora, który po prostu przeczytać w pliku i je skompilować. 257 00:18:19,640 --> 00:18:24,780 Tutaj wiemy, że evilest_compiler - kiedy kompiluje plik - 258 00:18:24,780 --> 00:18:29,890 będzie wstawić kod tutaj przed skompilować plik, 259 00:18:29,890 --> 00:18:38,510 oraz, że kod będzie wyglądać dokładnie tak, jak w kodzie z drugiej wersji naszego kompilatora 260 00:18:38,510 --> 00:18:42,240 który to zrobił. 261 00:18:42,240 --> 00:18:46,450 Kod ten, który ma włamać się do logowania, 262 00:18:46,450 --> 00:18:56,480 zostanie wprowadzony do naszego kompilatora przez kompilator evilest. 263 00:18:56,480 --> 00:19:08,600 Użyjmy evilest_compiler skompilować nasz kompilator. 264 00:19:08,600 --> 00:19:15,040 Teraz użyjemy kompilatora, 265 00:19:15,040 --> 00:19:19,460 wrócić na się zalogować, 266 00:19:19,460 --> 00:19:25,280 i pamiętaj login.c ma nic podejrzanego w nim. 267 00:19:25,280 --> 00:19:35,250 Ale korzystając z naszego kompilatora, aby skompilować login.c, 268 00:19:35,250 --> 00:19:38,430 rob thisiscs50 sukces. 269 00:19:38,430 --> 00:19:44,350 Hacker niech login, LOLihackyou, Hacked! Teraz masz dostęp. 270 00:19:44,350 --> 00:19:49,710 >> Uznają, że to był inny od wersji 2 naszego kompilatora. 271 00:19:49,710 --> 00:20:00,500 Kompilator używamy - przejdźmy z powrotem - kopię z logowania - 272 00:20:00,500 --> 00:20:01,880 niech wprowadzą nasz kompilator z powrotem tutaj. 273 00:20:01,880 --> 00:20:06,360 Usuwanie kompilator evilest. 274 00:20:06,360 --> 00:20:08,970 Wszyscy zostawiliśmy to kompilator. 275 00:20:08,970 --> 00:20:10,950 Jeśli spojrzymy na compiler.c, 276 00:20:10,950 --> 00:20:16,840 nie ma absolutnie nic tam, że wydaje szkodliwy w jakikolwiek sposób. 277 00:20:16,840 --> 00:20:22,390 Jeśli spojrzymy na login.c, 278 00:20:22,390 --> 00:20:28,790 nie ma absolutnie nic w tym miejscu, które wygląda szkodliwy w jakikolwiek sposób. 279 00:20:28,790 --> 00:20:34,600 Jednak, gdy używamy naszego kompilatora, aby skompilować login.c, 280 00:20:34,600 --> 00:20:38,840 dostajemy hackable wersję login.c. 281 00:20:38,840 --> 00:20:41,850 Kiedy stosować nasz kompilator skompilować nową wersję kompilatora, 282 00:20:41,850 --> 00:20:46,620 dostajemy hackable wersji kompilatora. 283 00:20:46,620 --> 00:20:51,790 Teraz, jeśli wyjdziemy i rozpowszechniać nasze wykonywalnego kompilatora, 284 00:20:51,790 --> 00:20:59,280 i nikt nie będzie wiedział, że coś jest szkodliwe o nim. 285 00:20:59,280 --> 00:21:04,680 >> To jest rzeczywiście tak się - ja nie pamiętam roku - 286 00:21:04,680 --> 00:21:10,350 Ken Thompson, i zdobył nagrodę Turinga - 287 00:21:10,350 --> 00:21:15,600 Jeśli nie jesteś zaznajomiony z nagrody Turinga, jest prawie zawsze definiowane jako 288 00:21:15,600 --> 00:21:20,160 Nagroda Nobla z informatyki, więc to, jak będę go zdefiniować. 289 00:21:20,160 --> 00:21:24,100 Ken Thompson wygłosił przemówienie, kiedy otrzymał Nagrodę Turinga 290 00:21:24,100 --> 00:21:27,150 nazywane "Refleksje na temat ufająca Trust." 291 00:21:27,150 --> 00:21:30,710 Zasadniczo, to był pomysł jego wypowiedzi. 292 00:21:30,710 --> 00:21:35,050 Wyjątkiem zamiast naszego kompilatora, mówił o GCC - 293 00:21:35,050 --> 00:21:37,250 tylko inny kompilator jak Clang - 294 00:21:37,250 --> 00:21:45,600 i co mówi jest, jak nasz login.c nasza login.c wydaje się stosunkowo bezużyteczne 295 00:21:45,600 --> 00:21:50,190 ale on mówił o rzeczywistej UNIX login.c. 296 00:21:50,190 --> 00:21:53,050 Po zalogowaniu do swojego urządzenia, 297 00:21:53,050 --> 00:21:56,070 jest jakaś logowanie program uruchomiony. 298 00:21:56,070 --> 00:21:58,080 To było logowanie, że mówi. 299 00:21:58,080 --> 00:22:02,420 To był w zasadzie jego pomysł. 300 00:22:02,420 --> 00:22:09,080 Powiedział, że w GCC, że teoretycznie mógł sadzić błąd - 301 00:22:09,080 --> 00:22:12,290 nie jest to błąd, ale złośliwy kod - 302 00:22:12,290 --> 00:22:16,860 że przy kompilacji funkcji logowania - logowanie plików - 303 00:22:16,860 --> 00:22:23,700 by wstawić tylne drzwi, aby mógł przejść do absolutnie każdej systemu UNIX na świecie 304 00:22:23,700 --> 00:22:27,360 i zalogować się z jakiegoś konkretnego użytkownika i hasło. 305 00:22:27,360 --> 00:22:33,710 W momencie, GCC było dość dużo, że każdy kompilator używany do niczego. 306 00:22:33,710 --> 00:22:36,460 Jeśli ktoś się do aktualizacji GCC 307 00:22:36,460 --> 00:22:40,880 wtedy oni skompilować GCC przy użyciu GCC 308 00:22:40,880 --> 00:22:44,500 a Ty wciąż dostać złą wersję GCC 309 00:22:44,500 --> 00:22:50,140 , ponieważ został specjalnie opracowany, aby uznać, że został on kompilacji kompilatora. 310 00:22:50,140 --> 00:22:57,360 I jeśli kiedykolwiek używać GCC przekompilować na login.c plik, 311 00:22:57,360 --> 00:23:03,550 wtedy byłoby wstawić ten tylne drzwi, które może wykorzystać do zalogowania się do dowolnego komputera. 312 00:23:03,550 --> 00:23:08,750 >> To wszystko było teoretyczne, ale - że szczególna okoliczność była teoretyczna, 313 00:23:08,750 --> 00:23:12,440 ale idee są bardzo realne. 314 00:23:12,440 --> 00:23:18,250 W 2003 roku, nie było podobny przykład, gdzie - 315 00:23:18,250 --> 00:23:21,290 my zapraszamy do obejrzenia tego pliku, 316 00:23:21,290 --> 00:23:25,870 i to nie ma absolutnie nic do faktycznie z nim zrobić, ale błąd jest podobny. 317 00:23:25,870 --> 00:23:29,390 Plik ten po prostu definiuje funkcję o nazwie dzielenie. 318 00:23:29,390 --> 00:23:31,780 Pobiera argument, to b, argument, 319 00:23:31,780 --> 00:23:34,270 i zamiarem jest zrobić podzielone przez b. 320 00:23:34,270 --> 00:23:37,230 Ale to nie sprawdzanie błędów, 321 00:23:37,230 --> 00:23:40,070 więc wiemy, wszystko jest dziwne, jeśli b stanie się równa zeru. 322 00:23:40,070 --> 00:23:44,900 Jeśli b jest równa zero, a następnie dzielimy to na 2 przypadkach. 323 00:23:44,900 --> 00:23:46,900 Możecie już zobaczyć błąd. 324 00:23:46,900 --> 00:23:51,840 Pierwsza sprawa - jeżeli jest równa zero, wtedy robimy zera podzielone przez zero, 325 00:23:51,840 --> 00:23:54,300 i po prostu powiedzieć, że jest nieokreślone. 326 00:23:54,300 --> 00:23:56,250 W drugim przypadku - jeśli nie jest to zero, 327 00:23:56,250 --> 00:24:00,580 wtedy jest to coś jak 1 podzielone przez zero, a my nazywamy to nieskończoność. 328 00:24:00,580 --> 00:24:03,730 Jeszcze wrócimy zwykle podzielone przez b. 329 00:24:03,730 --> 00:24:06,390 I tak oto, kończy nam te 3 przypadki, 330 00:24:06,390 --> 00:24:13,740 i faktycznie uruchomić przepaści - to krzyczy na niego dla mnie - 331 00:24:13,740 --> 00:24:21,330 tak, ignorując dzyń przestrogi - 332 00:24:21,330 --> 00:24:24,500 Koniec funkcji non-void - najwyraźniej nie skompilować to wcześniej. 333 00:24:24,500 --> 00:24:26,500 Powrót 0. 334 00:24:26,500 --> 00:24:28,900 Dokonaj podziału - wszystko w porządku. 335 00:24:28,900 --> 00:24:32,470 Z. / Przepaści, widzimy 3, Infinity, Infinity. 336 00:24:32,470 --> 00:24:39,150 Zero podzielone przez zero nie wróciło nieskończoność. 337 00:24:39,150 --> 00:24:42,840 A jeśli nie zorientowali się jeszcze błąd - albo nie widzi go przed - 338 00:24:42,840 --> 00:24:46,800 widzimy, że robimy = 0. 339 00:24:46,800 --> 00:24:52,610 Prawdopodobnie mamy oznaczało == 0. Prawdopodobnie. 340 00:24:52,610 --> 00:24:58,640 >> Ale to było rzeczywiście coś, co znowu, w roku 2003, Linux kernel - 341 00:24:58,640 --> 00:25:02,260 więc nasze urządzenie używa jądra - 342 00:25:02,260 --> 00:25:05,550 dowolny system operacyjny Linux używa jądra - 343 00:25:05,550 --> 00:25:11,610 bug więc bardzo podobny do tego pokazał. 344 00:25:11,610 --> 00:25:15,180 Ideą tego błędu było - 345 00:25:15,180 --> 00:25:18,820 ponownie, nie było tylko kilka funkcji, które został powołany, i to nie trochę sprawdzania błędów. 346 00:25:18,820 --> 00:25:24,300 Było kilka konkretnych wejść, że ten błąd sprawdzania - 347 00:25:24,300 --> 00:25:30,210 to powinna być jak, wszystko w porządku, nie można wywołać tę funkcję z dzielnik 0. 348 00:25:30,210 --> 00:25:35,070 Tak, mam zamiar po prostu wrócić jakiś błąd. 349 00:25:35,070 --> 00:25:38,090 Tyle tylko, że nie było tak niewinne, jak tylko ustawienie równe 0. 350 00:25:38,090 --> 00:25:46,920 Zamiast tego, ta linia kodu zakończył się robić coś więcej, jak użytkownik Administrator =. 351 00:25:46,920 --> 00:25:50,500 Lub user = superuser. 352 00:25:50,500 --> 00:25:59,170 To był niewinny - na pierwszy rzut oka - błąd gdzie może właśnie zostały uzasadnione 353 00:25:59,170 --> 00:26:01,560 że chciał tylko zgłosić coś konkretnego 354 00:26:01,560 --> 00:26:05,150 jeśli użytkownik akurat administrator superuser. 355 00:26:05,150 --> 00:26:11,220 Ale ponownie o tym myśleć, człowiek chciał, żeby wyglądać jak proste literówka, 356 00:26:11,220 --> 00:26:14,330 ale jeśli ten kod rzeczywiście był wydany, 357 00:26:14,330 --> 00:26:21,580 wtedy można było w stanie włamać się do każdego systemu poprzez przekazanie określonej flagi - 358 00:26:21,580 --> 00:26:25,200 w tym przypadku B = 0 - 359 00:26:25,200 --> 00:26:28,020 i to automatycznie dokonać użytkownik administrator, 360 00:26:28,020 --> 00:26:30,400 a on ma pełną kontrolę. 361 00:26:30,400 --> 00:26:32,540 Stało się to w 2003 roku. 362 00:26:32,540 --> 00:26:35,700 >> Tak się złożyło, że jedynym powodem, że został złapany 363 00:26:35,700 --> 00:26:39,200 było, bo akurat jakiś automatyczny system 364 00:26:39,200 --> 00:26:41,540 że zauważył zmianę w tym pliku 365 00:26:41,540 --> 00:26:44,560 które nigdy nie zostały zmienione przez człowieka. 366 00:26:44,560 --> 00:26:47,580 Plik powinien być generowany automatycznie. 367 00:26:47,580 --> 00:26:49,780 Tak się złożyło, że ktoś dotknął - 368 00:26:49,780 --> 00:26:52,460 dobrze, człowiek, który chciał włamać dotknął tego pliku, 369 00:26:52,460 --> 00:26:55,450 i komputer złowione dotykając. 370 00:26:55,450 --> 00:27:01,750 Więc, zmienili to i dopiero później zorientował się, co się katastrofą byłoby 371 00:27:01,750 --> 00:27:04,830 jeśli ten dostał się do realnego świata. 372 00:27:04,830 --> 00:27:08,220 >> Możesz myśleć, że - wracając do naszego przykładu kompilatora - 373 00:27:08,220 --> 00:27:14,290 nawet jeśli nie widzimy - patrząc na kodzie źródłowym - 374 00:27:14,290 --> 00:27:17,490 że coś jest nie tak, w szczególności, 375 00:27:17,490 --> 00:27:25,460 jeśli rzeczywiście spojrzymy na kod binarny z kompilatora, 376 00:27:25,460 --> 00:27:28,670 to możemy zobaczyć, że coś jest nie tak. 377 00:27:28,670 --> 00:27:31,260 Na przykład, jeśli wpadniemy ciągi funkcjonować - 378 00:27:31,260 --> 00:27:34,930 który po prostu będzie spojrzeć na plik i wydrukować wszystkie ciągi może znaleźć - 379 00:27:34,930 --> 00:27:37,990 jeśli wpadniemy na naszym ciągi kompilatora 380 00:27:37,990 --> 00:27:42,400 widzimy, że jeden ciąg, który stwierdzi, czy to dziwne - 381 00:27:42,400 --> 00:27:45,500 else if (strcmp (nazwa użytkownika, "hacker") - bla, bla, bla. 382 00:27:45,500 --> 00:27:52,570 Jeśli ktoś by być paranoikiem wystarczy nie ufać ich kompilatora, 383 00:27:52,570 --> 00:27:56,690 mogą uruchomić sznurki i to zobaczyć, 384 00:27:56,690 --> 00:28:00,430 i wtedy wiedzą, że coś było nie tak z rzeczywistą binarny. 385 00:28:00,430 --> 00:28:07,250 Ale, struny był nieuchronnie coś, został skompilowany. 386 00:28:07,250 --> 00:28:11,590 Tak, kto mówi, że nasz kompilator nie tylko mają więcej specjalnego kodu 387 00:28:11,590 --> 00:28:19,240 mówi, że jeśli ciągi są nigdy uruchamiać na naszym kompilator, nie użyłeś wszystkich tego szkodliwego kodu. 388 00:28:19,240 --> 00:28:23,980 >> Sam pomysł, jeżeli chcemy dis zamontować plik - 389 00:28:23,980 --> 00:28:30,440 dowiedzieliśmy się, że assembler sprowadza nas z kodu spędu do kodu maszynowego - 390 00:28:30,440 --> 00:28:36,010 możemy iść w przeciwnym kierunku - objdump-d kompilator - 391 00:28:36,010 --> 00:28:38,770 da nam montaż naszego kodu. 392 00:28:38,770 --> 00:28:41,730 Patrząc na to, 393 00:28:41,730 --> 00:28:47,480 to dość tajemnicze, ale jeśli chcemy, możemy patrzeć przez to 394 00:28:47,480 --> 00:28:51,700 i przyczyna, czekaj, coś tu się dzieje, że nie powinno się dzieje, 395 00:28:51,700 --> 00:28:59,380 i wtedy wiemy, że kompilator robi coś szkodliwego. 396 00:28:59,380 --> 00:29:03,950 Ale, podobnie jak ciągi, kto mówi, że nie było objdump specjalnego obudowane. 397 00:29:03,950 --> 00:29:11,380 Zasadniczo sprowadza się to do nie można ufać niczego. 398 00:29:11,380 --> 00:29:14,310 Punkt pracy nazywany "Zaufany Trust" jest 399 00:29:14,310 --> 00:29:17,900 w ogóle, mamy zaufanie do naszych kompilatora. 400 00:29:17,900 --> 00:29:21,700 Skompilować kod i oczekujemy, że to co pytasz to zrobić. 401 00:29:21,700 --> 00:29:26,440 Ale, dlaczego warto zaufać kompilator? 402 00:29:26,440 --> 00:29:32,120 Nie napisać kompilator. Nie wiesz, co kompilator musi rzeczywiście robi. 403 00:29:32,120 --> 00:29:36,870 Kto powiedział, że można jej zaufać? 404 00:29:36,870 --> 00:29:40,050 Ale nawet wtedy, cóż, może uda nam zaufać kompilatora. 405 00:29:40,050 --> 00:29:44,670 Istnieją dziesiątki tysięcy ludzi, którzy oglądali ten. 406 00:29:44,670 --> 00:29:51,360 Ktoś musi rozpoznać coś się z kompilatora. 407 00:29:51,360 --> 00:29:55,100 >> Co jeśli po prostu przejść 1 poziom niżej? 408 00:29:55,100 --> 00:29:59,450 To może być nawet twój procesor. 409 00:29:59,450 --> 00:30:01,250 Jak śmieszne, jak mogłaby ona być, 410 00:30:01,250 --> 00:30:06,690 może jest jakiś łobuz pracownik firmy Intel, który tworzy te procesory 411 00:30:06,690 --> 00:30:12,400 że ilekroć że procesor zauważy, że używasz jakiejś komendy 412 00:30:12,400 --> 00:30:14,570 , która jest przeznaczona do logowania się do komputera, 413 00:30:14,570 --> 00:30:19,230 procesor będzie przyjęcie jakiejś określonej kombinacji nazwy użytkownika i hasła. 414 00:30:19,230 --> 00:30:21,530 Byłoby to szalenie skomplikowane, 415 00:30:21,530 --> 00:30:24,790 ale ktoś mógłby to zrobić. 416 00:30:24,790 --> 00:30:29,350 W tym momencie tak naprawdę dzieje, aby otworzyć swój komputer, aby spojrzeć na procesor 417 00:30:29,350 --> 00:30:35,970 i używać mikroskopu do uznania, że ​​obwody te nie są ułożone tak jak powinny? 418 00:30:35,970 --> 00:30:39,730 Nikt nie jest kiedykolwiek złapać ten błąd. 419 00:30:39,730 --> 00:30:45,570 W pewnym momencie, po prostu trzeba się poddać i zaufać coś. 420 00:30:45,570 --> 00:30:48,390 Większość ludzi ufa kompilator w tym momencie. 421 00:30:48,390 --> 00:30:55,760 To znaczy, że niekoniecznie należy. 422 00:30:55,760 --> 00:30:59,350 Patrząc na film nieco niesławny - 423 00:30:59,350 --> 00:31:09,280 [Dramatyczna gra muzyka] 424 00:31:09,280 --> 00:31:13,270 [To UNIX system. Wiem o tym.] 425 00:31:13,270 --> 00:31:14,470 [To wszystkie pliki -] 426 00:31:14,470 --> 00:31:18,950 Ona powiedziała: "To jest w systemie UNIX. Wiem to." 427 00:31:18,950 --> 00:31:21,760 Wymień Unix z jakikolwiek jest twój ulubiony system operacyjny - 428 00:31:21,760 --> 00:31:25,230 mogła powiedzieć: "To jest system Windows. Wiem to." 429 00:31:25,230 --> 00:31:29,710 To zupełnie bez sensu stwierdzenie, 430 00:31:29,710 --> 00:31:34,450 ale wszyscy wiemy, że dzieje się z wiedzą tylne drzwi do systemu UNIX. 431 00:31:34,450 --> 00:31:38,840 Ona wie, niektóre nazwy użytkownika / hasła, które będą faktycznie pozwolić jej 432 00:31:38,840 --> 00:31:41,540 robić, co chce. 433 00:31:41,540 --> 00:31:49,000 >> Dobrze. Morał jest dziś w zasadzie nie można ufać niczego. 434 00:31:49,000 --> 00:31:52,620 Nawet rzeczy piszesz - nie napisałeś kompilatora. 435 00:31:52,620 --> 00:31:53,870 Kompilator może być złe. 436 00:31:53,870 --> 00:31:59,140 Nawet jeśli nie napisać kompilator, rzecz, która działa kompilator może być złe. 437 00:31:59,140 --> 00:32:05,210 (Śmiech) Nie ma wiele można zrobić. 438 00:32:05,210 --> 00:32:09,050 Świat jest skazany. 439 00:32:09,050 --> 00:32:11,570 Powrót do Dawida! 440 00:32:11,570 --> 00:32:19,540 [Oklaski] 441 00:32:19,540 --> 00:32:21,340 >> [David] Dzięki. To było naprawdę przygnębiające. 442 00:32:21,340 --> 00:32:23,910 Ale rzeczywiście, Rob jest prawidłowe. 443 00:32:23,910 --> 00:32:27,150 Tak naprawdę nie ma rozwiązania, ale masz zamiar uzyskać pewne rozwiązania 444 00:32:27,150 --> 00:32:29,150 niektórych obrony bardziej powszechne. 445 00:32:29,150 --> 00:32:31,170 W oczekiwaniu na to, co Nate i robiłem tam ze sceny 446 00:32:31,170 --> 00:32:33,950 jest wiedzieć, że istnieje tak wiele laptopów w tym pokoju, 447 00:32:33,950 --> 00:32:37,020 byliśmy wąchania wszystkie bezprzewodowego ruchu przechodzącego przez ten pokój przez ostatnie 20 minut 448 00:32:37,020 --> 00:32:39,260 podczas rozmowy Roba, więc mamy zamiar wziąć 2 minuty przerwy tutaj. 449 00:32:39,260 --> 00:32:41,740 Nate idzie do utworzenia, a następnie będziemy rozmawiać o wszystkie rzeczy 450 00:32:41,740 --> 00:32:46,380 mogliśmy znaleziono. (Śmiech) 451 00:32:46,380 --> 00:32:51,990 >> Więc, może mam trochę przesadzone dla samego dramatu, 452 00:32:51,990 --> 00:32:55,990 ale możemy być wąchania wszystkim z transmisji bezprzewodowych, ponieważ rzeczywiście, 453 00:32:55,990 --> 00:32:57,240 jest to takie proste. 454 00:32:57,240 --> 00:32:59,790 Ale są też sposoby, że można bronić się przed tym, i tak się z tym, 455 00:32:59,790 --> 00:33:03,160 Daję ci Nate Hardison. >> [Nate] Sweet. 456 00:33:03,160 --> 00:33:06,300 (Oklaski) 457 00:33:06,300 --> 00:33:08,650 >> [Nate] Dzięki, stary. Doceniam okrzyk. 458 00:33:08,650 --> 00:33:12,790 Wszystko w porządku! To tydzień gry. Jesteście podekscytowani? 459 00:33:12,790 --> 00:33:16,670 Mam nadzieję, że będzie to wielki mecz w sobotę. 460 00:33:16,670 --> 00:33:20,220 Wyobrażam sobie, wam w tym momencie - zważywszy, że masz quiz w środę 461 00:33:20,220 --> 00:33:24,430 o kod, a my po prostu siedział przez wspaniały wykład przez Rob 462 00:33:24,430 --> 00:33:25,850 z całą bandą kod C w nim - 463 00:33:25,850 --> 00:33:28,330 to może trochę zmęczony kodu. 464 00:33:28,330 --> 00:33:32,180 W tej części, my naprawdę nie będziemy dotykać żadnego kodu w ogóle. 465 00:33:32,180 --> 00:33:36,960 Jesteśmy po prostu mówić o technologii, którego używasz na co dzień, 466 00:33:36,960 --> 00:33:39,790 często przez wiele, wiele godzin dziennie, 467 00:33:39,790 --> 00:33:46,220 i będziemy rozmawiać o konsekwencjach z zabezpieczeń, które istnieją. 468 00:33:46,220 --> 00:33:48,960 >> Rozmawialiśmy dużo o bezpieczeństwo w ciągu semestru, 469 00:33:48,960 --> 00:33:53,030 i zaczął się z odrobiną kryptografii. 470 00:33:53,030 --> 00:33:55,030 [Bdoh lv vwlqng!] 471 00:33:55,030 --> 00:33:57,890 I podczas gdy wy jesteście pewnie super podekscytowani przekazując uwagi do siebie 472 00:33:57,890 --> 00:33:59,890 w klasie za pomocą szyfru Cezara jak ten, 473 00:33:59,890 --> 00:34:03,870 w rzeczywistości jest trochę więcej zabawy, które można uzyskać, gdy jesteś naprawdę mówimy o bezpieczeństwie 474 00:34:03,870 --> 00:34:05,870 i tego typu rzeczy. 475 00:34:05,870 --> 00:34:09,090 Dziś idziemy na pokrycie kilku technologii 476 00:34:09,090 --> 00:34:13,650 że ludzie faktycznie używać w świecie rzeczywistym robić różne rzeczy 477 00:34:13,650 --> 00:34:18,360 od wąchania pakietów ludzi rzeczywiście dzieje i 478 00:34:18,360 --> 00:34:20,409 włamania do kont bankowych i ludzi wszystko. 479 00:34:20,409 --> 00:34:23,460 Są to narzędzia, które uzasadnione mówimy o 480 00:34:23,460 --> 00:34:26,320 z wyjątkiem ewentualnie z narzędzia. 481 00:34:26,320 --> 00:34:28,889 >> A ja po prostu chcę zrobić szybkie zastrzeżenie. 482 00:34:28,889 --> 00:34:34,909 Kiedy mówimy o tych rzeczach, mówimy o nich, więc wiesz, co jest tam, 483 00:34:34,909 --> 00:34:39,389 i jesteś świadomy tego, jak być bezpieczne, kiedy jesteś z wykorzystaniem komputera. 484 00:34:39,389 --> 00:34:44,000 Ale na pewno nie chcę sugerować, że należy korzystać z tych narzędzi 485 00:34:44,000 --> 00:34:48,090 w akademiku lub w twoim domu, ponieważ można uruchomić na wiele ważnych kwestii. 486 00:34:48,090 --> 00:34:52,760 To jeden powód, że dzisiaj tak naprawdę nie wąchania swoje pakiety. 487 00:34:52,760 --> 00:35:01,300 >> Dobrze. Ostatni poniedziałek, rozmawialiśmy o cookies i HTTP oraz uwierzytelniania 488 00:35:01,300 --> 00:35:05,920 i jak Firesheep otwiera ten duże drzwi do swojego konta na Facebooku, 489 00:35:05,920 --> 00:35:08,670 na swoje konto Hotmail - jeśli ktokolwiek nadal używa Hotmail - 490 00:35:08,670 --> 00:35:12,360 i wielu innych kont. 491 00:35:12,360 --> 00:35:16,980 Wiele z tych rzeczy będzie budować od tego, 492 00:35:16,980 --> 00:35:22,070 ale najpierw chcę zrobić szybkie zwiedzanie jak Internet ewoluował w czasie. 493 00:35:22,070 --> 00:35:27,490 Jeszcze w latach 90-tych, wy faktycznie mógł pamiętać podłączając 494 00:35:27,490 --> 00:35:29,880 komputery z jednym z nich. 495 00:35:29,880 --> 00:35:32,640 Teraz nie robię tego tak dużo więcej. 496 00:35:32,640 --> 00:35:37,230 To faktycznie okazuje się, że w celu podłączenia kabla Ethernet do mojego laptopa, 497 00:35:37,230 --> 00:35:41,710 Mam teraz do korzystania z jednego z tych kart, która jest rodzajem szaleństwa. 498 00:35:41,710 --> 00:35:47,580 >> Zamiast tego, w 1997 roku mieliśmy tę nową technologię, zabawa 499 00:35:47,580 --> 00:35:54,960 okazało się, że jest znany jako IEEE 802.11, więc jest to standard bezprzewodowej internet 500 00:35:54,960 --> 00:36:00,430 IEEE to organem, który daje się różnego rodzaju - 501 00:36:00,430 --> 00:36:04,770 publikuje różnego rodzaju norm w stosunku do komputerów. 502 00:36:04,770 --> 00:36:08,780 Do 802 normy są o technologie internetowe. 503 00:36:08,780 --> 00:36:12,690 Tak 802.3, na przykład, jest Ethernet standard 504 00:36:12,690 --> 00:36:17,120 802.15.1 Uważam to standard Bluetooth, 505 00:36:17,120 --> 00:36:19,540 i 802,11 jest o bezprzewodowy Internet. 506 00:36:19,540 --> 00:36:24,150 W 1997 r. wyszedł. To nie dość złapać na zaraz. 507 00:36:24,150 --> 00:36:30,200 Dopiero w 1999 roku i 802.11b wyszło, że po prostu się naprawdę popularne. 508 00:36:30,200 --> 00:36:36,330 >> Jak wielu z Was pamięta, gdy komputery zaczęły wychodzi i coraz wi-fi na nich? 509 00:36:36,330 --> 00:36:38,330 To było fajne, co? 510 00:36:38,330 --> 00:36:41,260 Pamiętam mój pierwszy laptop się w szkole średniej, 511 00:36:41,260 --> 00:36:44,250 i miał w nim kartę bezprzewodowej. 512 00:36:44,250 --> 00:36:49,580 Mój tata dał mi go i powiedział, że powinno się używać go na moje aplikacje uczelni i wszystkich, że 513 00:36:49,580 --> 00:36:53,030 i nie miałem pojęcia, jak miałem zamiar zajrzeć do tego online rzeczy. 514 00:36:53,030 --> 00:36:54,640 Ale na szczęście, miałem karty bezprzewodowej, tak, że było całkiem fajne. 515 00:36:54,640 --> 00:37:04,090 Obecnie, można także zobaczyć 802.11g, który jest jednym z drugiej bardzo popularne 516 00:37:04,090 --> 00:37:06,090 bezprzewodowe standardy, które tam jest. 517 00:37:06,090 --> 00:37:08,660 Zarówno b oraz g są dość nieaktualne w tym momencie. 518 00:37:08,660 --> 00:37:12,580 Ktoś wie jaka wersja większość ludzi jest na teraz 519 00:37:12,580 --> 00:37:15,110 jeśli kupujesz nowe bezprzewodowe routery i tego typu rzeczy? 520 00:37:15,110 --> 00:37:24,290 N. Dokładnie. Bingo. I okazuje się, że to tylko zwykła ac wychodzi w formie projektów, 521 00:37:24,290 --> 00:37:28,050 i są inne wersje na drodze. 522 00:37:28,050 --> 00:37:31,190 Z każdym z tych norm, co mamy jest bardziej zyskują przepustowość, 523 00:37:31,190 --> 00:37:33,900 więcej danych w szybszym tempie. 524 00:37:33,900 --> 00:37:36,260 Te rzeczy zmieniają się dość szybko. 525 00:37:36,260 --> 00:37:39,880 To również sprawia, że ​​to tak, że musimy kupić więcej routerów i tym wszystkim zabawa. 526 00:37:39,880 --> 00:37:48,160 >> Porozmawiajmy o tym, co naprawdę jest komunikacja bezprzewodowa w jego rdzeniu. 527 00:37:48,160 --> 00:37:51,790 Ethernet i te stare modemy telefoniczne, 528 00:37:51,790 --> 00:37:55,780 rzeczywiście miał ten materiał, który jest podłączony do komputera, 529 00:37:55,780 --> 00:37:59,820 a następnie podłączony do modemu od rodzaju, a następnie podłączyłem go do gniazda w ścianie. 530 00:37:59,820 --> 00:38:01,820 Miałeś ten kabel, tak? 531 00:38:01,820 --> 00:38:06,030 Istotą bezprzewodowy jest pozbycie się tych rzeczy. 532 00:38:06,030 --> 00:38:10,300 Aby zrobić to, co mamy, jest w istocie 533 00:38:10,300 --> 00:38:13,960 komunikacji radiowej, gdzie nasz router bezprzewodowy - 534 00:38:13,960 --> 00:38:16,230 wyznaczony przez naszą małą ikonę bezprzewodowej - 535 00:38:16,230 --> 00:38:21,730 jest podłączony do sieci w tym stałym strzałki wskazujące jakiś kabel, 536 00:38:21,730 --> 00:38:24,640 ale po podłączeniu do routera bezprzewodowego 537 00:38:24,640 --> 00:38:29,190 jest rzeczywiście używany prawie jak walkie-talkie między 538 00:38:29,190 --> 00:38:31,960 komputer i router bezprzewodowy. 539 00:38:31,960 --> 00:38:35,150 Co naprawdę fajne jest to można się poruszać. 540 00:38:35,150 --> 00:38:40,900 Możesz nosić komputer całego Sandersa, przejdź surfować w sieci, co chcesz, 541 00:38:40,900 --> 00:38:43,240 tak jak wszyscy znamy i kochamy, 542 00:38:43,240 --> 00:38:46,030 i nie zawsze musi być podłączony do niczego. 543 00:38:46,030 --> 00:38:53,880 Aby to działało, mamy zarówno ten odbieranie i przesyłanie. 544 00:38:53,880 --> 00:38:56,060 To naprawdę jest jak ten walkie-talkie. 545 00:38:56,060 --> 00:39:03,800 >> Ten bezprzewodowy router - które w Sanders siedzi pod tym etapie, tu - 546 00:39:03,800 --> 00:39:06,590 zawsze jest nadawanie i odbiór, nadawanie i odbieranie, 547 00:39:06,590 --> 00:39:09,330 i podobnie, komputery są robi tego samego rodzaju rzeczy, zbyt. 548 00:39:09,330 --> 00:39:12,840 Po prostu nie może go usłyszeć. 549 00:39:12,840 --> 00:39:17,900 Inne rzeczy, które możesz zrobić, to można mieć wiele komputerów 550 00:39:17,900 --> 00:39:22,200 rozmowy z samym routerem bezprzewodowym. 551 00:39:22,200 --> 00:39:25,680 Bliżej do routera - i znowu, to jest komunikacja radio - 552 00:39:25,680 --> 00:39:30,320 im bliżej, tym lepiej Twój sygnał jest lepszy komputer "usłyszy" router 553 00:39:30,320 --> 00:39:32,460 i może komunikować się z Internetem. 554 00:39:32,460 --> 00:39:39,520 Jeśli faceci są zawsze w swoim akademiku, w domu i zastanawiasz się, dlaczego Twój sygnał jest źle, 555 00:39:39,520 --> 00:39:42,230 to pewnie dlatego). nie jesteś bardzo blisko do routera, lub 556 00:39:42,230 --> 00:39:46,930 b). coś między tobą a twoim routerem jak mur cementu czy coś 557 00:39:46,930 --> 00:39:50,720 że nie niech te fale radiowe przejść. 558 00:39:50,720 --> 00:39:57,850 >> Porozmawiajmy trochę o tym, dlaczego źli, jak wi-fi. 559 00:39:57,850 --> 00:40:02,980 Źli ludzie kochają wi-fi z kilku powodów. 560 00:40:02,980 --> 00:40:06,670 Oto nasz paskudny zły facet tam. 561 00:40:06,670 --> 00:40:10,660 Jednym z powodów, dlaczego to zły facet kocha wi-fi 562 00:40:10,660 --> 00:40:18,770 Jest tak, ponieważ domyślnie wiele routerów bezprzewodowych przyjść i kiedy je ustawić, 563 00:40:18,770 --> 00:40:20,950 są one szyfrowane. 564 00:40:20,950 --> 00:40:23,970 To był problem, i nie było przypadków - 565 00:40:23,970 --> 00:40:28,210 wiele wystąpień, teraz - gdy zły facet pokazuje do czyjegoś domu, 566 00:40:28,210 --> 00:40:32,630 zauważa, że ​​nie jest w niezaszyfrowanej wi-fi, do którego mogą się połączyć. 567 00:40:32,630 --> 00:40:37,350 Łączą się z wi-fi, a potem rozpocznie się pobieranie różnego rodzaju zabawne rzeczy. 568 00:40:37,350 --> 00:40:40,890 A oni nie pobierając kociąt, nie są one pobieranie szczeniąt. 569 00:40:40,890 --> 00:40:44,610 To jest jak BitTorrent. To jest paskudne z najgorszych. 570 00:40:44,610 --> 00:40:48,740 Zdarzały się przypadki, gdy FBI nawet zdobyć zaangażowanych 571 00:40:48,740 --> 00:40:52,390 myśląc, że osoba, która posiada dom jest faktycznie jeden 572 00:40:52,390 --> 00:40:56,090 idzie tam i pobieranie rzeczy, że naprawdę nie powinno być. 573 00:40:56,090 --> 00:41:00,730 Po niezaszyfrowane wi-fi na pewno nie jest coś, co chcesz zrobić, 574 00:41:00,730 --> 00:41:06,340 jeśli tylko nie ma FBI przyjść zapukać do drzwi. 575 00:41:06,340 --> 00:41:09,910 >> Innym powodem, dlaczego źli faceci kochają wi-fi 576 00:41:09,910 --> 00:41:13,870 jest powodem, że David mówił o wcześniej w trakcie przerwy. 577 00:41:13,870 --> 00:41:17,240 Bo to jest łączność radiowa w swej istocie, 578 00:41:17,240 --> 00:41:22,460 jeśli wiesz, że kanał, można słuchać tej stacji radiowej. 579 00:41:22,460 --> 00:41:31,870 Na przykład, jeśli jest źle, tam siedzi w środku, tuż obok punktu dostępowego, 580 00:41:31,870 --> 00:41:36,830 obok tego routera bezprzewodowego, zły facet może nasłuchiwać na wszystkich transmisji bezprzewodowych 581 00:41:36,830 --> 00:41:40,240 że idzie z każdego z tych komputerów. 582 00:41:40,240 --> 00:41:44,590 W rzeczywistości, oni - to szczęście nielicznych, którzy są tu w pierwszym rzędzie - 583 00:41:44,590 --> 00:41:47,610 dlatego, że są super-blisko wszystkich tych routerów bezprzewodowych 584 00:41:47,610 --> 00:41:49,950 które siedzą tuż pod sceną, 585 00:41:49,950 --> 00:41:53,780 będą mogli usłyszeć na wyjątkową ruch w całym pomieszczeniu 586 00:41:53,780 --> 00:41:59,480 jeśli jesteś podłączony do Wi-Fi i rozpocząć przeglądanie tych punktów dostępowych. 587 00:41:59,480 --> 00:42:03,740 To nie jest bardzo trudne, aby usiąść się w dobrej pozycji, aby powąchać i dowiedzieć 588 00:42:03,740 --> 00:42:07,030 co inni ludzie robią. 589 00:42:07,030 --> 00:42:10,830 To coś, o których warto pamiętać, szczególnie, jeśli nie jesteś pewien, gdzie jest punkt dostępu, 590 00:42:10,830 --> 00:42:15,010 i jesteś przeglądania powiedzenia, w Starbucks. 591 00:42:15,010 --> 00:42:17,360 >> Okazuje się, że wąchania i to wszystko 592 00:42:17,360 --> 00:42:19,440 nie jest aż tak bardzo trudne do zrobienia. 593 00:42:19,440 --> 00:42:25,430 Istnieje program o nazwie tcpdump który zrzuca wszystkie rodzaje ruchu TCP 594 00:42:25,430 --> 00:42:29,910 i można go uruchomić całkiem po prostu - tak jak ja dzisiaj rano. 595 00:42:29,910 --> 00:42:32,810 Tu jest trochę na wysypisko, a oto niektóre z ruchu, który wracał na 596 00:42:32,810 --> 00:42:34,960 moja sieć w czasie. 597 00:42:34,960 --> 00:42:41,500 Można zobaczyć - jeśli zez bardzo ciężko - jest trochę Spotify tam. 598 00:42:41,500 --> 00:42:44,050 Na szczycie tcpdump - ponieważ jest to rodzaj bólu w użyciu - 599 00:42:44,050 --> 00:42:48,860 istnieje program o nazwie Wireshark, która łączy to wszystko w ładnym GUI. 600 00:42:48,860 --> 00:42:51,970 Wireshark jest super-poręczny więc jeśli pójdziesz na podjęcie zajęcia sieciowych, 601 00:42:51,970 --> 00:42:56,780 jest to narzędzie, że będziesz kochać, ponieważ pomaga wnikliwie wszystkich pakietów 602 00:42:56,780 --> 00:42:59,400 które krąży tam. 603 00:42:59,400 --> 00:43:01,810 Ale to może być również stosowane do złe. 604 00:43:01,810 --> 00:43:05,810 To bardzo proste, wystarczy pobrać ten program, uruchom go, 605 00:43:05,810 --> 00:43:09,300 Rozpocznij przechwytywanie sieci i widzieć wszystko, co się dzieje - 606 00:43:09,300 --> 00:43:14,130 i przefiltrować i zrobić wiele zabawnych rzeczy z nim. 607 00:43:14,130 --> 00:43:17,930 >> Inne rzeczy, które można zrobić z komunikacji bezprzewodowej 608 00:43:17,930 --> 00:43:25,380 jest nie tylko można podsłuchiwać, ale można również dowiedzieć się, jak nakręcić z siecią 609 00:43:25,380 --> 00:43:31,020 i wprowadzić własne informacje do kontroli doświadczenia, że ​​inni ludzie 610 00:43:31,020 --> 00:43:35,140 w tej samej sieci bezprzewodowej otrzymujesz. 611 00:43:35,140 --> 00:43:37,140 Rzućmy okiem na to. 612 00:43:37,140 --> 00:43:40,700 Oto Firesheep - które znamy i kochamy z ostatniego tygodnia - 613 00:43:40,700 --> 00:43:43,590 co jest, że technologia podsłuchuje. 614 00:43:43,590 --> 00:43:50,360 Jeśli, na przykład, chcieliśmy aktywnie posiadamy zły iść facet i grzebaniu 615 00:43:50,360 --> 00:43:52,690 Jeden z tych komputerów, 616 00:43:52,690 --> 00:43:58,380 w tym scenariuszu mamy komputer próbuje przejść do surfowania harvard.edu. 617 00:43:58,380 --> 00:44:04,690 Co się dzieje, komputer najpierw wysyła komunikat do routera bezprzewodowego i mówi: 618 00:44:04,690 --> 00:44:07,920 hej, chcę iść www.harvard.edu odwiedzin. 619 00:44:07,920 --> 00:44:10,610 Powiedz jakiegoś powodu próbują uzyskać informacje na temat gry w ten weekend. 620 00:44:10,610 --> 00:44:14,940 Zły, bo siedzi w środku, 621 00:44:14,940 --> 00:44:18,730 obok tego punktu dostępu, można zobaczyć, że komunikacja pochodząca z komputera 622 00:44:18,730 --> 00:44:26,170 do routera, a on wie, "Aha! Ktoś będzie harvard.edu". (Złowieszczo śmieje się) 623 00:44:26,170 --> 00:44:33,870 Nie będzie to opóźnienie podczas komunikacja idzie z routera 624 00:44:33,870 --> 00:44:37,780 się do Internetu, aby przejść na stronę znaleźć harvard.edu-- 625 00:44:37,780 --> 00:44:42,020 tak jak wy wszyscy wiecie po zrobieniu się psets PHP - 626 00:44:42,020 --> 00:44:45,680 i tak źle, facet ma trochę czasu, trochę z okna, 627 00:44:45,680 --> 00:44:49,410 w którym może reagować z niektórymi rzeczami. 628 00:44:49,410 --> 00:44:53,660 >> Powiedzmy, że to zły facet, oczywiście, jest Yaley. 629 00:44:53,660 --> 00:44:59,990 On odpowiada harvardsucks.org. Boo! 630 00:44:59,990 --> 00:45:02,300 Zły, zły facet! Bad Yaley! 631 00:45:02,300 --> 00:45:06,020 Albo jeszcze gorzej, może odpowiedzieć, że. [Http://youtu.be/ZSBq8geuJk0]. 632 00:45:06,020 --> 00:45:09,530 Powiem wam dowiedzieć się, co to jest. 633 00:45:09,530 --> 00:45:14,840 Właściwie jest to technologia o nazwie Airpwn! który zadebiutował na 634 00:45:14,840 --> 00:45:18,950 jednej z konferencji bezpieczeństwa kilka lat temu. 635 00:45:18,950 --> 00:45:25,190 Z Airpwn! jesteś w stanie rzeczywiście wprowadzić ruch z powrotem do sieci. 636 00:45:25,190 --> 00:45:30,060 Komputery, które próbują wyjść z Internetem i próbuje dostać się do 637 00:45:30,060 --> 00:45:33,090 Google.com, na Facebook.com, do harvard.edu 638 00:45:33,090 --> 00:45:39,190 zobacz złośliwe odpowiedzi przyjść i od razu zakładać, okay, 639 00:45:39,190 --> 00:45:43,550 To odpowiedź, że czekałem i skończyć się treści z 640 00:45:43,550 --> 00:45:48,860 harvardsucks.org lub nameyourfavoriteshocksite.com, 641 00:45:48,860 --> 00:45:55,270 i można zobaczyć, jak szybko wszystko się pogarsza. 642 00:45:55,270 --> 00:46:00,190 >> Wszystkie tego rodzaju co nie mogą być wykonane 643 00:46:00,190 --> 00:46:05,870 tych połączeń przewodowych, bo z połączenia przewodowego 644 00:46:05,870 --> 00:46:08,710 trudno snoop do ruchu. 645 00:46:08,710 --> 00:46:13,020 Jeśli jestem zły, a na jednym końcu jest komputer 646 00:46:13,020 --> 00:46:14,460 a na drugim końcu jest twój router - modem - 647 00:46:14,460 --> 00:46:20,180 Tylko w ten sposób mogę się od tego związku jest faktycznie splatać mój komputer 648 00:46:20,180 --> 00:46:22,180 gdzieś w środku 649 00:46:22,180 --> 00:46:26,820 lub zrobić coś innego z routerem, dalsi coś. 650 00:46:26,820 --> 00:46:33,360 Ale z sieci bezprzewodowych, to może być tak proste, jak siedzi w rzędzie w klasie, 651 00:46:33,360 --> 00:46:38,200 i można zrobić wiele nieprzyjemnych rzeczy do ludzi z tyłu. 652 00:46:38,200 --> 00:46:41,570 >> Porozmawiajmy o tym, jak można bronić przed niektórymi z tych rzeczy. 653 00:46:41,570 --> 00:46:46,860 Ludzie, którzy rozwinęli bezprzewodowe standardy - 802,11 - 654 00:46:46,860 --> 00:46:50,820 oni nie są głupi ludzie żadnym odcinku wyobraźni. 655 00:46:50,820 --> 00:46:56,110 To jest fajne, a kiedy technologia zadebiutowała w 1999 roku, 656 00:46:56,110 --> 00:47:00,780 wyszli z tego standardu o nazwie WEP. 657 00:47:00,780 --> 00:47:03,360 Można zobaczyć tutaj podczas próby i dołącz do sieci bezprzewodowej, 658 00:47:03,360 --> 00:47:07,450 masz wszystkie rodzaje różnych opcji zabezpieczeń. 659 00:47:07,450 --> 00:47:11,800 To trochę uciążliwe, ponieważ jest 6 razem 660 00:47:11,800 --> 00:47:14,790 i nigdy tak naprawdę sens, który 1 do przyłączenia. 661 00:47:14,790 --> 00:47:19,190 To 1 na górze, jest pierwszym, który wymyślili nazywany WEP. 662 00:47:19,190 --> 00:47:27,960 WEP oznacza Wired Equivalent Privacy, wierzę, 663 00:47:27,960 --> 00:47:31,730 Nie Wireless Encryption Protocol, który jest wspólny błędne. 664 00:47:31,730 --> 00:47:36,170 Bo próbuje dać odpowiednik ochrony prywatności i bezpieczeństwa 665 00:47:36,170 --> 00:47:40,590 równoważna z siecią przewodową 666 00:47:40,590 --> 00:47:46,710 Z WEP, co kończy się dzieje jest, 667 00:47:46,710 --> 00:47:52,300 masz prosty, trochę hasło wpisać i który służy do szyfrowania 668 00:47:52,300 --> 00:47:56,210 wszystkich komunikacji pomiędzy komputerem a routerem. 669 00:47:56,210 --> 00:47:58,210 >> Jaki jest problem z WEP chociaż? 670 00:47:58,210 --> 00:48:01,470 Hasło z WEP jest bardzo krótki, 671 00:48:01,470 --> 00:48:04,900 a także wszyscy używają tego samego dokładnie hasła, 672 00:48:04,900 --> 00:48:07,610  a więc jest to bardzo proste do odszyfrowania. 673 00:48:07,610 --> 00:48:10,580 Tak bardzo szybko ludzie zorientowali się, że WEP był problem, 674 00:48:10,580 --> 00:48:16,100 i tylko dlatego widać to pokazać się jeszcze w tym małym facetem jest - 675 00:48:16,100 --> 00:48:18,890 istnieją starsze systemy, które używają WEP - 676 00:48:18,890 --> 00:48:25,710 co powinno być zamiast tego szukają są WPA i WPA2, nawet normy 677 00:48:25,710 --> 00:48:29,130 które zostały wydane później. 678 00:48:29,130 --> 00:48:35,040 Systemy te są znacznie lepiej iść na ochronę, bezprzewodowego Internetu. 679 00:48:35,040 --> 00:48:41,090 Powiedział, że nadal mam pewne hackability. 680 00:48:41,090 --> 00:48:44,010 Istnieją narzędzia, które obecnie nie mogą go zrobić. 681 00:48:44,010 --> 00:48:47,490 Jedną z rzeczy, w szczególności, że może być to, że paskudny 682 00:48:47,490 --> 00:48:55,370 po podłączeniu i uwierzytelniane do routera bezprzewodowego i używasz jakiegoś 683 00:48:55,370 --> 00:49:00,940 komunikacja szyfrowana, okazuje się, że haker może łatwo wysłać jeden pakiet 684 00:49:00,940 --> 00:49:03,990 odłączyć się od routera, 685 00:49:03,990 --> 00:49:07,220 i kiedy już odłączony cię mogą następnie słuchać - 686 00:49:07,220 --> 00:49:11,800 mogą wąchać te pakiety, jak spróbować ponownie nawiązać połączenie z routerem. 687 00:49:11,800 --> 00:49:16,800 I z tych informacji mogą następnie przejść i deszyfrowania resztę komunikacji. 688 00:49:16,800 --> 00:49:24,580 To nie jest w żaden sposób jakichkolwiek bezpieczne ponad wszelką wyobraźnię. 689 00:49:24,580 --> 00:49:30,060 >> Inne, co można zrobić, gdy jesteś konfigurowania sieci bezprzewodowych 690 00:49:30,060 --> 00:49:35,460 lub jesteś łączenie ich jest - można zauważyć, że tu, kiedy jestem przystąpienia do tej sieci, 691 00:49:35,460 --> 00:49:37,640 pyta o nazwę mojej sieci. 692 00:49:37,640 --> 00:49:41,060 To jest również znany jako SSID. 693 00:49:41,060 --> 00:49:48,610 I widać tutaj, że po prawej stronie mam pole, które pokazuje mi dostępnych SSID. 694 00:49:48,610 --> 00:49:52,690 Jest Harvard University, CS50, CS50 i sieć Staff. 695 00:49:52,690 --> 00:49:59,180 Teraz, jak wielu z was wiedział, że CS50 sieć Personel wokół? 696 00:49:59,180 --> 00:50:01,910 Niektórzy z was. Nie wszyscy z was. 697 00:50:01,910 --> 00:50:08,800 Problem w tym, oczywiście, jest to, że gdyby nie to stawiamy się na naszej liście identyfikatorów SSID, 698 00:50:08,800 --> 00:50:10,930 nikt by nie wiedział o nim najbardziej prawdopodobne. 699 00:50:10,930 --> 00:50:16,090 Mam nadzieję. Ile wy wszyscy próbują włamywać się do naszej sieci bezprzewodowej. 700 00:50:16,090 --> 00:50:18,700 Ale to jest coś, co możesz zrobić, to jest naprawdę ważne, gdy ustawiamy 701 00:50:18,700 --> 00:50:20,280 Router w domu. 702 00:50:20,280 --> 00:50:22,820 To prawdopodobnie nie stanie przez kilka lat dla wielu z was, 703 00:50:22,820 --> 00:50:29,010 ale należy pamiętać, że utrzymywanie, że SSID stamtąd, a nie również nazywanie go 704 00:50:29,010 --> 00:50:34,630 coś super-wspólna pomoże zachować się bardziej bezpieczne w dłuższej perspektywie. 705 00:50:34,630 --> 00:50:38,070 >> Końcowy kilka rzeczy, które możesz zrobić. Jednym z nich jest HTTPS. 706 00:50:38,070 --> 00:50:44,760 Jeśli jesteś w Starbucks, jeśli jesteś w publicznej sieci Wi-Fi 707 00:50:44,760 --> 00:50:52,620 i zdecydujesz się na dostęp do konta bankowego, dostęp do usługi Gmail, Facebook, 708 00:50:52,620 --> 00:50:56,140 upewnić się, że te połączenia będą przez HTTPS. 709 00:50:56,140 --> 00:50:59,800 Jest to dodatkową warstwę zabezpieczeń, dodatkowa warstwa szyfrowania. 710 00:50:59,800 --> 00:51:01,520 Jedną rzeczą, aby pamiętać o to, 711 00:51:01,520 --> 00:51:04,740 ilu z was kiedykolwiek kliknęli tym wielkim ekranie, czerwonym, który mówi: 712 00:51:04,740 --> 00:51:07,480 "Niniejsza witryna internetowa może być źle." 713 00:51:07,480 --> 00:51:09,710 Wiem, że mam. 714 00:51:09,710 --> 00:51:13,090 To chyba wszystko, kiedy jesteś przeglądania iść zobaczyć Ojczyznę lub coś takiego, prawda? 715 00:51:13,090 --> 00:51:19,900 Tak. (Śmiech publiczności) Tak. Proszę bardzo. Wiemy, kto ogląda Ojczyzny. 716 00:51:19,900 --> 00:51:24,540 To duży, czerwony ekran tam 717 00:51:24,540 --> 00:51:28,600 często wskazuje, że fajne coś się dzieje. 718 00:51:28,600 --> 00:51:32,530 Czasami jest to po prostu strona internetowa sama w sobie jest niebezpieczna, 719 00:51:32,530 --> 00:51:35,520 ale to samo duży, czerwony ekran pojawia się, gdy ludzie próbują 720 00:51:35,520 --> 00:51:37,520 montaż sieci atakuje na ciebie. 721 00:51:37,520 --> 00:51:40,220 Więc jeśli widzisz, że duży, czerwony ekran wymyślić na Starbucks, 722 00:51:40,220 --> 00:51:42,440 nie klikaj przez nią. 723 00:51:42,440 --> 00:51:45,350 Złe wieści. Bad news nosi. 724 00:51:45,350 --> 00:51:51,490 >> Ostatnią rzeczą, że można spojrzeć na 725 00:51:51,490 --> 00:51:54,120 jest jakiś VPN. 726 00:51:54,120 --> 00:52:00,280 Ta jest dostępna za pośrednictwem VPN Harvardzie - vpn.fas.harvard.edu-- 727 00:52:00,280 --> 00:52:03,260 i co robi to jest to rzeczywiście ustanawia bezpieczne połączenie 728 00:52:03,260 --> 00:52:06,460 między tobą i Harvardzie, lejki Twój ruch przez niego, 729 00:52:06,460 --> 00:52:12,160 iw ten sposób, jeśli siedzi w miejscu, jak Starbucks 730 00:52:12,160 --> 00:52:19,030 można podłączyć do Harvardu, uzyskać bezpieczny ruch, a następnie przejdź z Harvardu. 731 00:52:19,030 --> 00:52:21,950 Ponownie, nie niezawodny. Ludzie mogą się w środku. 732 00:52:21,950 --> 00:52:25,850 Mogą zacząć go złamać, ale to jest o wiele bardziej bezpieczne niż opierając się na bezpieczeństwie 733 00:52:25,850 --> 00:52:28,620 z wi-fi w spokoju. 734 00:52:28,620 --> 00:52:32,570 >> Dobrze. W sumie, 735 00:52:32,570 --> 00:52:34,580 podczas konfigurowania sieci bezprzewodowych, 736 00:52:34,580 --> 00:52:37,250 kiedy wychodzisz używać bezprzewodowych w miejscach publicznych - 737 00:52:37,250 --> 00:52:43,430 czy to Starbucks, czy to Five Guys, czy to B.Good, 738 00:52:43,430 --> 00:52:46,440 coś w tym - tam, gdzie mają Wi-Fi - 739 00:52:46,440 --> 00:52:48,440 być świadomi swojego otoczenia. 740 00:52:48,440 --> 00:52:50,440 Bądź świadomy tego, co ludzie mogą zrobić. 741 00:52:50,440 --> 00:52:53,890 I bezpieczny. Nie dostępu do swojego konta bankowego. 742 00:52:53,890 --> 00:52:58,740 Może to być brutalne przebudzenie, jeśli ktoś pokazuje się z hasłem później. 743 00:52:58,740 --> 00:53:05,480 Z tym, idź crimson! A ja zamierzam kolei rzeczy z powrotem na Dawida do ostatecznego słowa. 744 00:53:05,480 --> 00:53:11,270 (Oklaski) 745 00:53:11,270 --> 00:53:14,360 >> [David] Myślałem, że akcja jedno z własnego doświadczenia. 746 00:53:14,360 --> 00:53:19,940 Narzędzie może chcesz grać - choć w dużej mierze wyeliminowane Apple ten problem 747 00:53:19,940 --> 00:53:22,710 jeśli już aktualizacja oprogramowania, gdyż - 748 00:53:22,710 --> 00:53:26,670 ale w kierunku tego końca tak naprawdę nie jest w stanie zaufać oprogramowania, które możemy użyć, 749 00:53:26,670 --> 00:53:33,270 i punktów Nate'a, będąc w stanie wąchać sporo, co inni ludzie robią 750 00:53:33,270 --> 00:53:37,010 tam - to oprogramowanie, które pojawiły się około roku temu-and-a-half teraz. 751 00:53:37,010 --> 00:53:39,010 [IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] 752 00:53:39,010 --> 00:53:41,010 Od pewnego czasu, iTunes - przed iCloud, kiedy się synchronizować iPoda lub swoich iPhone'ów lub 753 00:53:41,010 --> 00:53:45,570 albo twój iPad z iTunes - w interesie kopii zapasowych, 754 00:53:45,570 --> 00:53:48,340 co Twój iPhone i te inne urządzenia robili przez jakiś czas jest 755 00:53:48,340 --> 00:53:50,340 wykorzystywania danych GPS. 756 00:53:50,340 --> 00:53:52,710 >> Wiecie wszyscy, chyba że wasze telefony iPhone i Androidy i systemem Windows Mobile 757 00:53:52,710 --> 00:53:55,410 i jak te dni można śledzić, gdzie jesteś w interesie pokazywanie mapy 758 00:53:55,410 --> 00:53:59,440 i podobnego - dobrze, co Apple i te inne firmy jest 759 00:53:59,440 --> 00:54:02,650 są one zazwyczaj śledzić wszędzie masz faktycznie w interesie 760 00:54:02,650 --> 00:54:05,380 poprawę jakości usług. 761 00:54:05,380 --> 00:54:07,170 One, można uzyskać bardziej ukierunkowanych reklam i tym podobnych, 762 00:54:07,170 --> 00:54:10,740 ale dwa, mogą również dowiedzieć się, gdzie są tam punkty dostępu bezprzewodowego w świecie, 763 00:54:10,740 --> 00:54:14,780 a to może pomóc w geo-lokalizacji - rodzaj triangulacji pozycji ludzi. 764 00:54:14,780 --> 00:54:18,520 >> Krótko mówiąc, każdy z nas był spaceru czułki jakiegoś czasu. 765 00:54:18,520 --> 00:54:22,180 Niestety, Apple podjęło decyzję, projekt - lub ich brak - 766 00:54:22,180 --> 00:54:26,590 aby nie zaszyfrować tę informację, kiedy została ona jest podtrzymywany do iTunes. 767 00:54:26,590 --> 00:54:30,330 A co badacz bezpieczeństwa było to, że było to po prostu ogromny plik XML - 768 00:54:30,330 --> 00:54:33,810 ogromny plik tekstowy - siedząc w oprogramowaniu ludowej iTunes 769 00:54:33,810 --> 00:54:35,400 i gdybyś tylko trochę ciekawy, 770 00:54:35,400 --> 00:54:38,990 można iść wywiercenie współmałżonka historii, twój współlokator historii, 771 00:54:38,990 --> 00:54:41,050 Historia twojego rodzeństwa i tym podobne, 772 00:54:41,050 --> 00:54:44,590 i dzięki jakimś darmowym oprogramowaniem, można wykreślić wszystkie te współrzędne GPS - 773 00:54:44,590 --> 00:54:46,590 szerokości i długości geograficznej. 774 00:54:46,590 --> 00:54:48,590 >> Więc, tak naprawdę to zrobił z moim telefonem. 775 00:54:48,590 --> 00:54:51,210 Podłączyłem w moim telefonie, a na pewno wystarczy, moja wersja iTunes nie została zaszyfrowana w czasie, 776 00:54:51,210 --> 00:54:53,900 i to, co udało mi się zobaczyć, że moje własne wzory. 777 00:54:53,900 --> 00:54:56,970 Tu jest Polska i każdy z tych niebieskich kręgów reprezentuje 778 00:54:56,970 --> 00:55:01,670 którym zdarzyło mi się być na tych poprzednich miesiącach posiadania tego konkretnego telefonu. 779 00:55:01,670 --> 00:55:04,940  Spędzam dużo czasu, oczywiście, w północno-wschodniej, trochę czasu w Kalifornii, 780 00:55:04,940 --> 00:55:08,690 krótkotrwały wyjazd do Teksasu, a jeśli potem powiększyć to - 781 00:55:08,690 --> 00:55:11,120 to wszystko jest w porządku i rodzaju interesujące, ale ja o tym wiedział. 782 00:55:11,120 --> 00:55:13,890 Większość z moich znajomych o tym wiedział, ale jeśli zanurkować głębiej, 783 00:55:13,890 --> 00:55:17,090 zobaczyć, gdzie spędzam większość mojego czasu na północnym wschodzie. 784 00:55:17,090 --> 00:55:20,330 Jeżeli zatrzask na niektórych miastach znajomo wyglądających - 785 00:55:20,330 --> 00:55:24,670 ten wielki, niebieski plama atramentu jest zasadniczo centralnie nad Boston, 786 00:55:24,670 --> 00:55:29,510 a potem spędzić trochę czasu na przedmieściach promieniujących się z Bostonu. 787 00:55:29,510 --> 00:55:32,780 Ale byłem również robi sporo konsultacji w tym roku. 788 00:55:32,780 --> 00:55:36,090 A w tym roku jest wschodnie wybrzeże, i rzeczywiście można mnie zobaczyć 789 00:55:36,090 --> 00:55:41,920 i mój iPhone w kieszeni podróżując tam iz powrotem między Bostonem a Nowym Jorkiem 790 00:55:41,920 --> 00:55:47,510 i Filadelfii dalej, jak również spędzać trochę czasu na urlop 791 00:55:47,510 --> 00:55:50,340 , na który jest Cape małe ramię nie. 792 00:55:50,340 --> 00:55:53,030 Tak więc, każdy z tych punktów oznacza jakieś miejsce byłem, 793 00:55:53,030 --> 00:55:56,970 i zupełnie nie wiemy o mnie, ta cała historia po prostu siedział tam 794 00:55:56,970 --> 00:55:58,410 na moim komputerze stacjonarnym. 795 00:55:58,410 --> 00:56:00,470 Jeśli pomniejszyć - to rzeczywiście było trochę niepokojące. 796 00:56:00,470 --> 00:56:04,190 I nie pamięta historii, które były w stanie Pensylwania, że ​​szczególną roku. 797 00:56:04,190 --> 00:56:07,840 Ale choć trochę trudniej o nim i zorientowali się, och, to było w tym, że podróż 798 00:56:07,840 --> 00:56:11,160 i rzeczywiście, mój telefon złapał mnie. 799 00:56:11,160 --> 00:56:14,180 >> Apple od szyfrowane tej informacji, 800 00:56:14,180 --> 00:56:17,380 ale to też jest tylko dowodem na to, jak wiele informacji zbieranych o nas, 801 00:56:17,380 --> 00:56:20,850 i jak łatwo - na lepsze lub na gorsze - jest to dopuszczalne. 802 00:56:20,850 --> 00:56:23,340 Jednym z nadzieją na wynos z wykładu Roba, od rozmowy Nate'a 803 00:56:23,340 --> 00:56:27,370 i małe wizualizacje jak to dzisiaj, to być tym bardziej świadoma tego 804 00:56:27,370 --> 00:56:31,160 tak, że nawet jeśli - jak w punkcie Roba - jesteśmy jakby wkręca, prawda? 805 00:56:31,160 --> 00:56:33,920 Niewiele możemy zrobić, jeśli chodzi o niektóre z tych zagrożeń, 806 00:56:33,920 --> 00:56:37,130 , ale pod koniec dnia mamy ufać coś lub kogoś 807 00:56:37,130 --> 00:56:38,510 jeśli chcemy faktycznie korzysta z tych technologii. 808 00:56:38,510 --> 00:56:43,150 Przynajmniej możemy być podejmowania świadomych decyzji i oblicza, czy decyzje 809 00:56:43,150 --> 00:56:46,390 powinniśmy być w rzeczywistości sprawdzając tę ​​szczególnie wrażliwą konto 810 00:56:46,390 --> 00:56:49,330 czy powinniśmy być faktycznie wysyłanie że nieco podejrzewam wiadomości błyskawicznych 811 00:56:49,330 --> 00:56:52,180  w wi-fi środowiska jak ta. 812 00:56:52,180 --> 00:56:54,990 >> Tak, z tym powiedział, tylko jeden quizu szczątki, jeden wykład pozostaje. 813 00:56:54,990 --> 00:56:57,740 Zobaczymy się w środę, potem poniedziałek. 814 00:56:57,740 --> 00:57:02,100 (Oklaski i okrzyki) 815 00:57:02,100 --> 00:57:06,100 [CS50TV]