1 00:00:00,000 --> 00:00:02,750 [Powered by Google Translate] [Viikko 10] 2 00:00:02,750 --> 00:00:04,750 [David J. Malan] [Harvardin yliopisto] 3 00:00:04,750 --> 00:00:07,000 [Tämä on CS50.] [CS50.TV] 4 00:00:08,520 --> 00:00:13,240 >> Selvä! Tämä on CS50, mutta ei paljon kauemmin. 5 00:00:13,240 --> 00:00:14,740 Tämä on alku viikon 10. 6 00:00:14,740 --> 00:00:18,780 Keskiviikkona meillä on tietokilpailu, ja sitten ensi maanantaina meillä on juhlallinen kakku 7 00:00:18,780 --> 00:00:22,030 kuten tulemme täyden ympyrän kaikki Paluumatkalla viikolla nolla. 8 00:00:22,030 --> 00:00:25,200 Tänään puhumme yksi suosikkini aiheita, totta puhutaan - 9 00:00:25,200 --> 00:00:29,000 että turvallisuuden ja yksityisyyden vaikutuksia kaikkien laitteiston ja ohjelmiston 10 00:00:29,000 --> 00:00:31,000 että me kaikki käyttävät nykyään. 11 00:00:31,000 --> 00:00:33,300 Ollakseni rehellinen, on olemassa paljon uhkia siellä 12 00:00:33,300 --> 00:00:35,430 että jos et ole oikeasti keskeytetty ajatella niitä, 13 00:00:35,430 --> 00:00:36,920 he oikeastaan ​​aika pelottavaa. 14 00:00:36,920 --> 00:00:40,070 Asia kohtaan - jos joku olet joskus ladannut ohjelmiston osa 15 00:00:40,070 --> 00:00:42,660 poissa internetistä ja asentaa sen tietokoneeseen, 16 00:00:42,660 --> 00:00:45,220 olet kosketuksissa huomattavaa luottamusta, eikö? 17 00:00:45,220 --> 00:00:50,220 Mikään ottaa estänyt Skype tai Chrome, tai ohjelmisto 18 00:00:50,220 --> 00:00:54,770 olet asentanut tietokoneeseen, mistä yksinkertaisesti poistamalla kaikki tiedostot kovalevyllä; 19 00:00:54,770 --> 00:00:58,260 lataamatta kaikki tiedostot kiintolevyltä joitakin pahis palvelimeen; 20 00:00:58,260 --> 00:01:01,650 lukemalla kaikki sähköpostit, kaappaamasta kaikki pikaviestejä. 21 00:01:01,650 --> 00:01:05,040 Koska todellisuus on nykyään useimmissa nykyaikaisissa käyttöjärjestelmissä 22 00:01:05,040 --> 00:01:10,040 ei todellakaan ole paljon väliseinä ohjelmia että me asentaa, 23 00:01:10,040 --> 00:01:14,220 Sinä ja minä olemme aika paljon vain sellaista rajan sormet ja ottaen uskoon 24 00:01:14,220 --> 00:01:17,750 että App me ladata ilmaiseksi, tai että asia, joka on 99 senttiä, 25 00:01:17,750 --> 00:01:20,140 on oikeastaan ​​täysin hyvänlaatuinen. 26 00:01:20,140 --> 00:01:23,090 Mutta kuten olemme nähneet stä C, ja nyt PHP ja JavaScript, 27 00:01:23,090 --> 00:01:25,420 tämä kyky ilmaista itseämme ohjelmallisesti, 28 00:01:25,420 --> 00:01:30,300 voit tehdä useimmat mitä haluat ohjelman käyttäjä itseään voisi tehdä. 29 00:01:30,300 --> 00:01:32,390 >> Joten tänään keskittyä siihen aiheeseen - 30 00:01:32,390 --> 00:01:35,360 ei vain joitakin uhkia, mutta myös puolustusta. 31 00:01:35,360 --> 00:01:37,540 Itse asiassa maailman yleistä turvallisuutta, 32 00:01:37,540 --> 00:01:39,040 siellä on tavallaan tämä kissa ja hiiri-peli, 33 00:01:39,040 --> 00:01:41,990 ja minä daresay roistoja melkein aina pulassa. 34 00:01:41,990 --> 00:01:45,880 Kun se tulee hyödyntämään laitteiston ja ohjelmiston omaan henkilökohtaiset tietokoneet, 35 00:01:45,880 --> 00:01:51,250 Meidän on ymmärrettävä, että pahis yksinkertaisesti tarvitsee löytää yksinkertainen virhe - 36 00:01:51,250 --> 00:01:56,150 yksi hyväkseen, yksi bug - in pala ohjelmisto olemme kirjallisesti tai käynnissä 37 00:01:56,150 --> 00:01:58,280 jotta häntä valtaavat koko järjestelmän. 38 00:01:58,280 --> 00:02:02,870 Sen sijaan me - hyvät tyypit - täytyy paikata ja korjata kaikki nämä viat 39 00:02:02,870 --> 00:02:04,900 ja välttää kaikki nämä heikkoudet. 40 00:02:04,900 --> 00:02:07,870 Ja niin, minä daresay kokonaisuudessaan, pahikset on etu. 41 00:02:07,870 --> 00:02:10,840 Mitä luokkia kuten tämä ja myöhemmät luokat ovat todella noin 42 00:02:10,840 --> 00:02:14,830 ei siitä opetus, miten voit käydä taisteluihin nämä roistot eivät, 43 00:02:14,830 --> 00:02:18,220 mutta miten suojautua tai ainakin miten lasketaan päätöksen 44 00:02:18,220 --> 00:02:22,970 että kyllä, minä tiedän tämän pala ohjelmisto voi todella lukea jokainen sähköpostit, 45 00:02:22,970 --> 00:02:27,040 mutta olen kunnossa kanssa, että koska arvon se tuo minulle toisaalta. 46 00:02:27,040 --> 00:02:31,060 >> Olen erittäin tyytyväinen, että seurassani 2 älykkäin tuntemani ihmiset - 47 00:02:31,060 --> 00:02:33,060 Rob Bowden ja Nate Hardison. 48 00:02:33,060 --> 00:02:36,850 Rob on aikeissa viedä meitä kiertueen alhaisin varmuusliuskojen - 49 00:02:36,850 --> 00:02:42,470 että kääntäjä, joka tähän asti olemme kaikki rakastamaan ja luottamaan. Rob Bowden. 50 00:02:42,470 --> 00:02:47,790 [Aplodit] 51 00:02:47,790 --> 00:02:50,280 >> [Rob] Selvä. David on melko paljon ottanut minun koko Spiel 52 00:02:50,280 --> 00:02:52,320 että olin menossa esitellä kanssa, mutta - 53 00:02:52,320 --> 00:02:58,070 Useita viikkoja sitten, näit esimerkin puskurin ylivuoto hyökkäys 54 00:02:58,070 --> 00:03:01,900 joka on esimerkki hakkeri murtautuneet joitakin ohjelmisto 55 00:03:01,900 --> 00:03:06,060 että niitä ei pitäisi olla murtautuneet. 56 00:03:06,060 --> 00:03:09,690 Toisella puolella tämän 57 00:03:09,690 --> 00:03:14,470 on joskus on ohjelmisto, joka on ilkeä ja sinänsä. 58 00:03:14,470 --> 00:03:17,070 Se ei edes tarvitse hakata. 59 00:03:17,070 --> 00:03:20,670 Henkilö, joka kirjoitti ohjelmisto haluaa hakata sinut. 60 00:03:20,670 --> 00:03:22,190 >> Toivotaan vain hypätä suoraan koodia, 61 00:03:22,190 --> 00:03:28,560 vilkaisemalla "login.c". 62 00:03:28,560 --> 00:03:33,390 Tässä typerä ohjelma, joka vahvistaa käyttäjätunnuksen ja salasanan yhdistelmällä. 63 00:03:33,390 --> 00:03:39,420 Täällä pitäisi ehdottomasti saada mukava C jälleen tietokilpailu. 64 00:03:39,420 --> 00:03:43,470 Ensinnäkin käytämme saada jouset kuvaamaan käyttäjätunnuksen, 65 00:03:43,470 --> 00:03:46,280 Sitten käytämme get merkkijono napata salasanan, 66 00:03:46,280 --> 00:03:50,680 ja sitten meillä on joitakin triviaaleja tarkastuksia vain, on käyttäjätunnus "Rob"? 67 00:03:50,680 --> 00:03:52,710 Ja on salasana "thisiscs50"? 68 00:03:52,710 --> 00:03:56,900 Tai on käyttäjätunnus "Tommy" ja salasana "i <3javascript"? 69 00:03:56,900 --> 00:03:58,980 Jos jompikumpi näistä on, 70 00:03:58,980 --> 00:04:01,980  Sitten olemme juuri menossa tulostetaan "Success", ja sitten meillä on pääsy. 71 00:04:01,980 --> 00:04:07,690 Muuten aiomme tulostaa "invalid login" ja sitten, tietenkin, 72 00:04:07,690 --> 00:04:11,120  koska luonnos jouset malloc muistiin, me vapaa käyttäjätunnuksen ja salasanan. 73 00:04:11,120 --> 00:04:15,560 Tämä on triviaali kirjautuminen ohjelmaa, 74 00:04:15,560 --> 00:04:18,110 ja jos ajattelee kun kirjaudut laitteen 75 00:04:18,110 --> 00:04:22,350 ihan samanlaisia ​​- tai edes kirjautua tietokoneeseen - 76 00:04:22,350 --> 00:04:24,930 siellä on vain joitakin kirjautuminen ohjelma, joka antaa sinulle pääsyn. 77 00:04:24,930 --> 00:04:31,840 Täällä meillä sattuu olemaan kovakoodatuilla "rob", "thisiscs50", "Tommy", "i <3javascript" 78 00:04:31,840 --> 00:04:34,950 mutta luultavasti jonkin verran jonnekin käyttöjärjestelmän 79 00:04:34,950 --> 00:04:38,690 joka on lista käyttäjätunnuksia, jotka voivat kirjautua järjestelmään 80 00:04:38,690 --> 00:04:41,740 ja lista salasanoja liittyvät kyseisiin käyttäjätunnukset. 81 00:04:41,740 --> 00:04:46,090 Yleensä salasanoja ei vain tallennettu selväkielisenä näin. 82 00:04:46,090 --> 00:04:50,360 On jonkinlainen salauksen, mutta tekee meidän esimerkki. 83 00:04:50,360 --> 00:04:57,000 >> Tulossa meidän kääntäjä - 84 00:04:57,020 --> 00:05:00,780 Se tulee olemaan hyvin suoraviivainen. 85 00:05:00,780 --> 00:05:04,800 Meidän määritellä ainakin jotkut tiedosto haluamme koota, 86 00:05:04,800 --> 00:05:10,200 ja sitten täällä - nämä linjat 87 00:05:10,200 --> 00:05:12,520 ovat vain lukemalla tiedostoa. 88 00:05:12,520 --> 00:05:16,080 Se lukee koko tiedoston yhdeksi isoksi puskuriin, 89 00:05:16,080 --> 00:05:19,000 ja sitten me null-lopettaa meidän puskuri kuten aina, 90 00:05:19,000 --> 00:05:21,000 ja lopuksi me vain koota tiedostoa. 91 00:05:21,000 --> 00:05:24,090 Emme menossa katsomaan miten käännös on tosiasiallisesti täytäntöön, 92 00:05:24,090 --> 00:05:26,820 mutta vihje, se vain vaatii clang. 93 00:05:26,820 --> 00:05:32,370 Me aiomme käyttää tätä ohjelmaa koota asioita sijaan clang. 94 00:05:32,370 --> 00:05:39,260 Yksi ongelma aloitamme on näemme haluamme koota meidän kääntäjä, 95 00:05:39,260 --> 00:05:43,620 mutta jos emme aio käyttää clang, en tiedä, mitä aion koota kanssa. 96 00:05:43,620 --> 00:05:46,700 Tämä on yleinen ongelma tunnetaan bootstrapping. 97 00:05:46,700 --> 00:05:53,080 Joten, vain tämän kerran, aion käyttää clang kääntää meidän kääntäjä. 98 00:05:53,080 --> 00:05:58,800 >> Jos ajattelet GCC ja clang - 99 00:05:58,800 --> 00:06:03,200 nämä ohjelmat, jotka kääntäjät päivitetään jatkuvasti, 100 00:06:03,200 --> 00:06:10,010 ja nämä kääntäjät kootaan käyttäen GCC ja clang. 101 00:06:10,010 --> 00:06:14,890 Clang on vain yksi iso C tai C + +-ohjelma, 102 00:06:14,890 --> 00:06:19,510 joten kääntäjä he käyttävät kokoamaan se on clang. 103 00:06:19,510 --> 00:06:26,820 Täällä nyt olemme juuri menossa käyttää meidän kääntäjä kääntää meidän kääntäjä, 104 00:06:26,820 --> 00:06:33,830 ja voimme jopa sanoa - ". / kääntäjä", "compiler.c ',' compile.c ','-o kääntäjä". 105 00:06:33,830 --> 00:06:37,250 Huomaa että tämä on tarkka komento juoksin ennen - 106 00:06:37,250 --> 00:06:41,330 vain korvata clang kanssa '. / kääntäjä ". 107 00:06:41,330 --> 00:06:44,990 Ja nyt meillä on toinen kääntäjä, mutta se on aivan sama. 108 00:06:44,990 --> 00:06:47,510 Se vain vaatii clang. 109 00:06:47,510 --> 00:06:55,050 >> Aiomme käyttää meidän kääntäjä kääntää meidän kirjautuminen ohjelmaan. 110 00:06:55,050 --> 00:07:03,030 Okei - ". / Kääntäjä login.c-o login". 111 00:07:03,030 --> 00:07:06,160 Joten, määrittelemätön viittaus "GetString". 112 00:07:06,160 --> 00:07:11,250 Got "-lcs50". Okei. 113 00:07:11,250 --> 00:07:13,790 Joten nyt on meidän login ohjelman. 114 00:07:13,790 --> 00:07:16,790 Running se - saada "Kirjoita käyttäjänimi". 115 00:07:16,790 --> 00:07:22,140 Yksi esimerkki oli ryöstää. Kirjoita salasana - thisiscs50. 116 00:07:22,140 --> 00:07:24,930 Ja menestystä! Minulla on pääsy. 117 00:07:24,930 --> 00:07:28,350 Juoksu uudelleen ja syöttämällä jotkut väärä salasana - 118 00:07:28,350 --> 00:07:30,350 tai virheellinen käyttäjätunnus ja salasana - 119 00:07:30,350 --> 00:07:32,860 invalid login. 120 00:07:32,860 --> 00:07:37,740 Okei. Mitään mielenkiintoista tässä toistaiseksi. 121 00:07:37,740 --> 00:07:43,100 Mutta katsotaanpa katsomaan kirjautua uudelleen - 122 00:07:43,100 --> 00:07:47,850 ja tämä tulee olemaan jokseenkin triviaali esimerkki, 123 00:07:47,850 --> 00:07:59,330 mutta älkäämme lisätä muuta täällä ja sanoa, if ((strcmp (käyttäjätunnus, "hakkeri") == 0 && 124 00:07:59,330 --> 00:08:14,510 strcmp (salasana "LOLihackyou") == 0)) 125 00:08:14,510 --> 00:08:26,280 joten nyt, printf ("hakkeroitu! Sinulla on nyt pääsy. \ n"); okei. 126 00:08:26,280 --> 00:08:36,240 Laadinnassa - kääntäjä login.c-o login-lcs50 - 127 00:08:36,240 --> 00:08:40,190 Nyt käynnissä kirjautuminen - ja jos voin käyttää käyttäjätunnusta hakkeri 128 00:08:40,190 --> 00:08:44,740 ja salasana LOLihackedyou - 129 00:08:44,740 --> 00:08:47,780 Teinkö kirjoittaa väärin siellä ennen? 130 00:08:47,780 --> 00:08:52,990 At login.c--ihack - Minä ei hakata koska luulen tehdä myöhemmin. 131 00:08:52,990 --> 00:08:56,270 Okei. Kääntää uudelleen. 132 00:08:56,270 --> 00:09:01,500 Re-käynnissä - Hacker - LOLihackedyou - 133 00:09:01,500 --> 00:09:03,650 Hacked! Sinulla on nyt pääsy. 134 00:09:03,650 --> 00:09:06,580 >> Ei näytä olevan, että paljon eroa 135 00:09:06,580 --> 00:09:10,890 koska se on täsmälleen sama tarkastus tein muita käyttäjätunnuksia ja salasanoja. 136 00:09:10,890 --> 00:09:17,720 Plus, iso asia on, että jos muut ihmiset katsovat tätä login.c-- 137 00:09:17,720 --> 00:09:24,020 sanoa, jos jätän tämän pois minun kumppani, ja he avaavat tiedoston, 138 00:09:24,020 --> 00:09:29,870 ja he lukevat tämän, he näkevät - Okei, miksi nämä riviä koodia tässä? 139 00:09:29,870 --> 00:09:33,320 Se ilmeisesti ole jotain, että pitäisi olla ohjelma. 140 00:09:33,320 --> 00:09:41,590 Joissakin ohjelmissa - kuten kaikki oma ohjelmisto, joka ei ole avoimen lähdekoodin - 141 00:09:41,590 --> 00:09:46,200 et ehkä koskaan näe näitä riviä koodia. 142 00:09:46,200 --> 00:09:50,440 Jotain Skype tai jotain - kaikki tiedätte, 143 00:09:50,440 --> 00:09:57,600 Skype on tietokoneeseen ja on vain joitakin erityisiä käyttäjätunnus-salasana-yhdistelmää 144 00:09:57,600 --> 00:10:01,580 mikä kirjautua Skypeen jollakin erityisellä tavalla. 145 00:10:01,580 --> 00:10:04,230 Emme tiedä sitä, ja ihmiset eivät tiedä sitä, 146 00:10:04,230 --> 00:10:09,640 koska he eivät saa lukea lähdekoodin nähdä, että on tämä reikä. 147 00:10:09,640 --> 00:10:11,800 >> Mitä me kutsumme tätä - 148 00:10:11,800 --> 00:10:16,530 vaikka tämä ei ole kovin fiksu esimerkki - 149 00:10:16,530 --> 00:10:18,970 tätä kutsutaan takaoven. 150 00:10:18,970 --> 00:10:22,320 Jos ajattelet takaoven talosi. 151 00:10:22,320 --> 00:10:26,640 Täällä, jos vahvista käyttäjätunnukset "ryöstää" tai "Tommy" 152 00:10:26,640 --> 00:10:28,580 että olisi kuin käyttämällä "etuovi". 153 00:10:28,580 --> 00:10:33,700 Niin minun pitäisi turvallisesti kirjautua. 154 00:10:33,700 --> 00:10:37,630 Mutta jos en kirjoita tähän käyttäjätunnuksesi ja salasanasi - 155 00:10:37,630 --> 00:10:40,630 niin se käyttämällä "takaoven". 156 00:10:40,630 --> 00:10:42,810 Se ei ollut tahallista tapa päästä ohjelmaan, 157 00:10:42,810 --> 00:10:45,350 mutta se toimii edelleen. 158 00:10:45,350 --> 00:10:49,160 Ja ihmiset yleensä eivät pitäisi tietää näistä takaportteja. 159 00:10:49,160 --> 00:10:53,050 Menemme parantamiseksi. 160 00:10:53,050 --> 00:10:55,610 Katsotaanpa palata tähän meidän alkuperäinen login.c, 161 00:10:55,610 --> 00:11:05,510 ja mennään katsomaan meidän uusi kääntäjä. Okei. 162 00:11:05,510 --> 00:11:08,460 Kaikkea täällä on täsmälleen sama. 163 00:11:08,460 --> 00:11:10,460 Olemme luet koko tiedoston puskuriin. 164 00:11:10,460 --> 00:11:14,400 Kaikkea täällä on sama. 165 00:11:14,400 --> 00:11:16,180 Me vain koottu tiedosto. 166 00:11:16,180 --> 00:11:19,770 Mutta nyt minulla on tämä iso jos täällä 167 00:11:19,770 --> 00:11:24,140 joka sanoo, jos tiedosto Satun kokoamaan on login.c, 168 00:11:24,140 --> 00:11:27,390 Sitten teen jotain erityistä. 169 00:11:27,390 --> 00:11:29,900 Mikä on se jotain erityistä? 170 00:11:29,900 --> 00:11:33,820 Näen täällä joitakin merkkijono kutsutaan hakata ", 171 00:11:33,820 --> 00:11:35,950 ja tarkastelee näitä riviä koodia - 172 00:11:35,950 --> 00:11:41,990 Nämä ovat samoja rivejä koodia - Luulen tein käytön "ihack" eikä "ihacked" ennen - 173 00:11:41,990 --> 00:11:44,240 tarkastelee näitä riviä koodia, 174 00:11:44,240 --> 00:11:47,880 he täsmälleen sama riviä koodia että minulla oli login.c ennen. 175 00:11:47,880 --> 00:11:51,130 Mutta nyt, sen sijaan, että niitä login.c, 176 00:11:51,130 --> 00:11:54,290 Aion laittaa ne minun kääntäjä. 177 00:11:54,290 --> 00:12:00,240 >> Nämä ovat riviä koodia Aion haluta lisättävän login.c. 178 00:12:00,240 --> 00:12:06,350 Nämä riviä koodia - puskuri, joka alunperin oli minun login.c 179 00:12:06,350 --> 00:12:11,080 ei enää olemaan tarpeeksi suuri, koska nyt haluan myös lisätä tähän hakata 180 00:12:11,080 --> 00:12:12,940 keskelle minun ohjelma. 181 00:12:12,940 --> 00:12:16,350 Kaikki tämä tekee luo uusi puskuri, joka on riittävän suuri - 182 00:12:16,350 --> 00:12:22,020 sekä alkuperäisen tiedoston ja ylimääräisiä rivejä koodia - hakata - että haluan lisätä sinne. 183 00:12:22,020 --> 00:12:24,920 Tässä on jotain huomata - 184 00:12:24,920 --> 00:12:29,200 char * pattern = "/ / kieltää näiden pääsyä!" 185 00:12:29,200 --> 00:12:33,760 Jos katsomme taaksepäin login.c, 186 00:12:33,760 --> 00:12:37,690 näemme täällä tämä kommentti - kieltää näiden pääsyä! 187 00:12:37,690 --> 00:12:42,360 Vuonna login.c tämä kommentti näyttää täysin vaaraton, 188 00:12:42,360 --> 00:12:48,270 joten ei epäilisi mitään ilkivalta vain tämän kommentin. 189 00:12:48,270 --> 00:12:55,600 Mutta meidän kääntäjä, me nimenomaan menossa katsomaan tätä koodirivin 190 00:12:55,600 --> 00:12:57,600 ja sitten kun löydämme sen - 191 00:12:57,600 --> 00:13:03,330 Näiden koodiriviä asennat meidän hakata tuohon asentoon. 192 00:13:03,330 --> 00:13:06,910 Joten olemme iteroimalla koko login.c, 193 00:13:06,910 --> 00:13:12,080 Olemme lisäämällä että hakata tarkalleen missä se sanoo kieltää näiden pääsyä, 194 00:13:12,080 --> 00:13:15,890 ja sitten me laadinnassa - ei alkuperäistä login.c 195 00:13:15,890 --> 00:13:20,340 mutta uusi login.c kanssa hakata lisätty oikealle "kieltää näiden pääsyä." 196 00:13:20,340 --> 00:13:29,190 >> Nyt haluan kääntää minun uusi kääntäjä kanssa hakata mukana. 197 00:13:29,190 --> 00:13:36,900 En aio käyttää clang, joten katsotaanpa kopioida kääntäjä käytimme ennen 198 00:13:36,900 --> 00:13:48,420 ja käyttää sitä - niin, kääntäjä compiler.c compile.c-o evil_compiler. 199 00:13:48,420 --> 00:13:50,870 Nyt meidän pahat kääntäjä - 200 00:13:50,870 --> 00:13:54,310 jos käytämme pahan kääntäjä kääntää minkä tahansa tiedoston, 201 00:13:54,310 --> 00:13:57,980 tiedosto kääntää niin kuin pitääkin. 202 00:13:57,980 --> 00:13:59,980 Se on täysin normaalia. 203 00:13:59,980 --> 00:14:06,870 Mutta jos käytämme pahan kääntäjä kääntää kirjautuminen - 204 00:14:06,870 --> 00:14:14,920 niin,. / evil_compiler login.c-o login-lcs50 - 205 00:14:14,920 --> 00:14:21,310 katsot login.c taas, siellä mitään täällä. 206 00:14:21,310 --> 00:14:25,770 Se on meidän tavallista ", jos se on joko ryöstää tai Tommy olemme, muuten olemme ulkona". 207 00:14:25,770 --> 00:14:31,620 Mutta kun hoidamme executable, tämä toimii normaalisti. 208 00:14:31,620 --> 00:14:36,640 Running jälleen - hakkeri, LOLihackyou - 209 00:14:36,640 --> 00:14:39,000 Hacked! Sinulla on nyt pääsy. 210 00:14:39,000 --> 00:14:43,560 Vain katsomalla login.c, te ette usko mitään väärin. 211 00:14:43,560 --> 00:14:46,960 Mutta kääntäjä, joka on käytössä koota login.c 212 00:14:46,960 --> 00:14:53,820 on suunniteltu erityisesti lisätä tähän hakata ohjelmaan. 213 00:14:53,820 --> 00:14:57,320 Olemme vain muutti alkuperäistä ongelmaa. 214 00:14:57,320 --> 00:15:02,880 Alunperin meillä oli näitä riviä koodia login.c että jos kukaan muu katselin niitä, 215 00:15:02,880 --> 00:15:05,470 ne olisi kuin, miksi nämä täällä? 216 00:15:05,470 --> 00:15:09,550 Nyt jos joku sattuu katsomaan meidän kääntäjä, 217 00:15:09,550 --> 00:15:12,140 he katsokaa näitä riviä koodia ja sano, 218 00:15:12,140 --> 00:15:15,290 miksi nämä täällä? 219 00:15:15,290 --> 00:15:17,210 Joten, emme ole täysin ratkaissut ongelman. 220 00:15:17,210 --> 00:15:22,510 Mutta voimme käyttää tätä ajatusta uudelleen. 221 00:15:22,510 --> 00:15:26,260 >> Kun Tutustu kolmannen version kääntäjä, 222 00:15:26,260 --> 00:15:32,500 se on sama idea. 223 00:15:32,500 --> 00:15:36,240 Luemme koko tiedosto puskuriin täällä, 224 00:15:36,240 --> 00:15:39,660 Kokoamme tiedosto tänne, 225 00:15:39,660 --> 00:15:44,220 ja minulla on jonkinlainen merkkijono hakata täällä, 226 00:15:44,220 --> 00:15:47,710 mutta huomaa tiedosto olen todella hakkerointi nyt. 227 00:15:47,710 --> 00:15:52,260 Olen hakkerointi compiler.c 228 00:15:52,260 --> 00:15:54,590 ei login.c. 229 00:15:54,590 --> 00:15:57,780 Mutta mitä minä insertoimalla compiler.c? 230 00:15:57,780 --> 00:16:04,600 Olen lisäämällä tämän koodin, joka on tarkka koodi edellisessä kääntäjä, 231 00:16:04,600 --> 00:16:10,540 joka oli tarkoitus lisätä koodia login.c. 232 00:16:10,540 --> 00:16:13,360 Tässä on meidän jos strcmp tiedosto login.c 233 00:16:13,360 --> 00:16:19,370 ja aseta osaksi login.c meidän hakata juttuja. 234 00:16:19,370 --> 00:16:26,010 Tämä uusi kääntäjä on tarkoitus luoda kääntäjä 235 00:16:26,010 --> 00:16:30,390 jonka tarkoituksena on koota login vihamielisesti. 236 00:16:30,390 --> 00:16:34,320 Näemme, miksi se auttaa meitä. 237 00:16:34,320 --> 00:16:40,630 Kaikki muu on sama, joten se toimii juuri niin kuin se toimi meidän edellinen kääntäjä. 238 00:16:40,630 --> 00:16:45,550 Olemme vain iteroimalla yli koko compile.c. 239 00:16:45,550 --> 00:16:48,190 Mutta nyt sen sijaan etsivät "kieltää heiltä pääsyn" 240 00:16:48,190 --> 00:16:51,490 etsimme "koota tiedostoa." 241 00:16:51,490 --> 00:16:53,750 Jos on koota tiedostoa? 242 00:16:53,750 --> 00:16:57,210 Tarkasteltaessa meidän täysin viaton compiler.c, 243 00:16:57,210 --> 00:17:01,340 Se on oikein täällä alareunassa. 244 00:17:01,340 --> 00:17:06,500 Tämä kommentti - koota tiedosto - jälleen, että näyttää täysin vaaraton. 245 00:17:06,500 --> 00:17:11,599 Mutta meidän haittaohjelmia versiossa kääntäjä, 246 00:17:11,599 --> 00:17:16,550 aiomme - oikealle ennen kommentin - lisätä tämän koodin 247 00:17:16,550 --> 00:17:20,690 jonka tarkoituksena on lisätä koodin laatiessaan login.c. 248 00:17:20,690 --> 00:17:25,589 >> On olemassa paljon tasojen välillisen tässä. 249 00:17:25,589 --> 00:17:29,760 Mennään todella ajaa sitä. 250 00:17:29,760 --> 00:17:37,360 Jälleen me kopioida alkuperäistä kääntäjä. 251 00:17:37,360 --> 00:17:48,260 Nyt compile - kääntäjä compiler.c compile.c-O evilest_compiler - 252 00:17:48,260 --> 00:17:52,640 ja nyt evilest_compiler. 253 00:17:52,640 --> 00:17:59,200 Evilest kääntäjä - jos käytämme että koota meidän kääntäjä, 254 00:17:59,200 --> 00:18:01,550 Katsotaanpa todella näyttävät. 255 00:18:01,550 --> 00:18:13,230 Evilest_compiler - tuo sen yli, aina takaisin versioon 1 meidän kääntäjä - 256 00:18:13,230 --> 00:18:19,640 versio 1 meidän kääntäjä, joka oli juuri lukenut tiedoston ja kääntää sen. 257 00:18:19,640 --> 00:18:24,780 Täällä me tiedämme, että evilest_compiler - kun se kokoaa tämän tiedoston - 258 00:18:24,780 --> 00:18:29,890 aikoo lisätä koodin täällä ennen koota tiedosto, 259 00:18:29,890 --> 00:18:38,510 ja että koodi tulee näyttämään täsmälleen samalta koodin toinen versio meidän kääntäjä 260 00:18:38,510 --> 00:18:42,240 joka teki tämän. 261 00:18:42,240 --> 00:18:46,450 Tämä koodi, joka on tarkoitettu murtautua kirjautuminen, 262 00:18:46,450 --> 00:18:56,480 aiotaan työntää meidän kääntäjä mennessä evilest kääntäjä. 263 00:18:56,480 --> 00:19:08,600 Katsotaanpa käyttää evilest_compiler laatia meidän kääntäjä. 264 00:19:08,600 --> 00:19:15,040 Nyt käytämme kääntäjä, 265 00:19:15,040 --> 00:19:19,460 palata yli kirjautua, 266 00:19:19,460 --> 00:19:25,280 ja muistakaa tämä login.c ei ole mitään epäilyttävää siinä. 267 00:19:25,280 --> 00:19:35,250 Mutta käyttämällä kääntäjä kääntää login.c, 268 00:19:35,250 --> 00:19:38,430 Rob, thisiscs50, menestys. 269 00:19:38,430 --> 00:19:44,350 Let login hakkeri, LOLihackyou, hakkeroitu! Sinulla on nyt pääsy. 270 00:19:44,350 --> 00:19:49,710 >> Tunnustaa, että tämä oli erilainen versio 2 meidän kääntäjä. 271 00:19:49,710 --> 00:20:00,500 Kääntäjä käytämme - mennään takaisin - kopio login - 272 00:20:00,500 --> 00:20:01,880 Pankaamme meidän kääntäjällä takaisin tänne. 273 00:20:01,880 --> 00:20:06,360 Poistaminen evilest kääntäjä. 274 00:20:06,360 --> 00:20:08,970 Kaikki meillä on jäljellä nyt kääntäjä. 275 00:20:08,970 --> 00:20:10,950 Jos katsomme compiler.c, 276 00:20:10,950 --> 00:20:16,840 mikään ei siellä joka näyttää haittaohjelmia millään tavalla. 277 00:20:16,840 --> 00:20:22,390 Jos katsomme login.c, 278 00:20:22,390 --> 00:20:28,790 mikään ei täällä joka näyttää haittaohjelmia millään tavalla. 279 00:20:28,790 --> 00:20:34,600 Mutta, kun käytämme kääntäjä kääntää login.c, 280 00:20:34,600 --> 00:20:38,840 saamme hackable version login.c. 281 00:20:38,840 --> 00:20:41,850 Kun käytimme kääntäjä kääntää uuden version kääntäjä, 282 00:20:41,850 --> 00:20:46,620 saamme hackable version kääntäjä. 283 00:20:46,620 --> 00:20:51,790 Nyt jos me mennä ulos ja jakaa meidän kääntäjä executable, 284 00:20:51,790 --> 00:20:59,280 ja kukaan ei tiedä että on olemassa jotain haittaohjelmia siitä. 285 00:20:59,280 --> 00:21:04,680 >> Tämä on todella niin - en muista vuotta - 286 00:21:04,680 --> 00:21:10,350 Ken Thompson, ja hän voitti Turing Award - 287 00:21:10,350 --> 00:21:15,600 Jos et tunne Turingin palkinnon, se on lähes aina määritelty 288 00:21:15,600 --> 00:21:20,160 Nobelin of Computer Science, joten Näin minä määritellä se. 289 00:21:20,160 --> 00:21:24,100 Ken Thompson piti puheen, kun hän sai Turing-palkinnon 290 00:21:24,100 --> 00:21:27,150 nimeltään "Reflections on luottaminen Trust." 291 00:21:27,150 --> 00:21:30,710 Pohjimmiltaan tämä oli ajatus puheessaan. 292 00:21:30,710 --> 00:21:35,050 Paitsi sijaan meidän kääntäjä, hän puhui GCC - 293 00:21:35,050 --> 00:21:37,250 vain yksi kääntäjä kuten clang - 294 00:21:37,250 --> 00:21:45,600 ja mitä hän sanoi on, kuten meidän login.c, meidän login.c näyttää melko hyödytön 295 00:21:45,600 --> 00:21:50,190 mutta hän puhui varsinaisen UNIX login.c. 296 00:21:50,190 --> 00:21:53,050 Kun kirjaudut sisään laitteen 297 00:21:53,050 --> 00:21:56,070 on olemassa joitakin login ohjelma on käynnissä. 298 00:21:56,070 --> 00:21:58,080 Se oli login että hän puhui. 299 00:21:58,080 --> 00:22:02,420 Tämä oli pohjimmiltaan hänen ideansa. 300 00:22:02,420 --> 00:22:09,080 Hän sanoi, että GCC, hän teoriassa voinut istuttaa bug - 301 00:22:09,080 --> 00:22:12,290 ei bugi vaan haittaohjelmat - 302 00:22:12,290 --> 00:22:16,860 että kun kootaan login toiminto - login tiedosto - 303 00:22:16,860 --> 00:22:23,700 lisättäisiin takaoven, jotta hän voisi mennä ehdottomasti mitään UNIX maailmassa 304 00:22:23,700 --> 00:22:27,360 ja kirjaudu joitakin erityisiä käyttäjätunnuksen ja salasanan. 305 00:22:27,360 --> 00:22:33,710 Tuolloin GCC oli melko kääntäjä että jokainen käyttää mihinkään. 306 00:22:33,710 --> 00:22:36,460 Jos joku sattui päivittää GCC, 307 00:22:36,460 --> 00:22:40,880 Sitten he kääntää GCC käyttää GCC, 308 00:22:40,880 --> 00:22:44,500 ja haluat silti huono versio GCC 309 00:22:44,500 --> 00:22:50,140 koska se oli nimenomaan laadittu tunnustamaan, että se kääntää uudelleen kääntäjä. 310 00:22:50,140 --> 00:22:57,360 Ja jos joskus käyttää GCC kääntää login.c tiedoston, 311 00:22:57,360 --> 00:23:03,550 Sitten se lisätään tämän takaovesta, että hän voisi käyttää kirjautua mihin tahansa tietokoneeseen. 312 00:23:03,550 --> 00:23:08,750 >> Tämä kaikki oli teoreettinen, mutta - se tietty seikka oli teoreettinen, 313 00:23:08,750 --> 00:23:12,440 mutta ideat ovat hyvin todellisia. 314 00:23:12,440 --> 00:23:18,250 Vuonna 2003 oli samanlainen esimerkki, jossa - 315 00:23:18,250 --> 00:23:21,290 me katsomaan tämän tiedoston, 316 00:23:21,290 --> 00:23:25,870 ja se ei ole mitään todella tehdä sen kanssa, mutta vika on samanlainen. 317 00:23:25,870 --> 00:23:29,390 Tämä tiedosto vain määrittää funktion nimeltä kahtiajaon. 318 00:23:29,390 --> 00:23:31,780 Se vie argumentti, argumentti b, 319 00:23:31,780 --> 00:23:34,270 ja tarkoitus on tehdä jaettuna b. 320 00:23:34,270 --> 00:23:37,230 Mutta se jokin virhe tarkkailun, 321 00:23:37,230 --> 00:23:40,070 joten tiedämme asiat ovat outoja, jos b sattuu nolla. 322 00:23:40,070 --> 00:23:44,900 Jos b on nolla, niin jaamme tämän huomioon 2 tapausta. 323 00:23:44,900 --> 00:23:46,900 Saatat jo nähdä bug. 324 00:23:46,900 --> 00:23:51,840 Ensimmäisessä tapauksessa - jos on nolla, niin teemme nolla jaettuna nollalla 325 00:23:51,840 --> 00:23:54,300 ja me vain sanoa, että on määrittelemätön. 326 00:23:54,300 --> 00:23:56,250 Toisessa tapauksessa - jos ei ole nolla, 327 00:23:56,250 --> 00:24:00,580 niin se on jotain 1 jaettuna nollalla, ja me vain soittaa, että äärettömyys. 328 00:24:00,580 --> 00:24:03,730 Else palaamme tavalliseen jaettuna b. 329 00:24:03,730 --> 00:24:06,390 Ja niin täällä, näytät niitä 3 tapausta, 330 00:24:06,390 --> 00:24:13,740 ja me todella ajaa hajota - se huutaa se minulle - 331 00:24:13,740 --> 00:24:21,330 niin, välittämättä clang varoitukset - 332 00:24:21,330 --> 00:24:24,500 lopussa ei void funktio - ilmeisesti en kokoamaan tätä etukäteen. 333 00:24:24,500 --> 00:24:26,500 Return 0. 334 00:24:26,500 --> 00:24:28,900 Tee jakaa - kunnossa. 335 00:24:28,900 --> 00:24:32,470 Kanssa. / Kuilu, näemme 3, Infinity, Infinity. 336 00:24:32,470 --> 00:24:39,150 Nolla jaettuna nollalla ei olisi palannut ääretön. 337 00:24:39,150 --> 00:24:42,840 Ja jos et ole tajunnut bug vielä - tai ei näe sitä ennen - 338 00:24:42,840 --> 00:24:46,800 näemme, että teemme = 0. 339 00:24:46,800 --> 00:24:52,610 Luultavasti meillä tarkoitti == 0. Luultavasti. 340 00:24:52,610 --> 00:24:58,640 >> Mutta tämä oli todella jotain, että jälleen vuonna 2003, Linux kernel - 341 00:24:58,640 --> 00:25:02,260 joten meidän laite käyttää Linux-ydintä - 342 00:25:02,260 --> 00:25:05,550 tahansa Linux-käyttöjärjestelmä käyttää Linux kernel - 343 00:25:05,550 --> 00:25:11,610 joten bug hyvin samanlainen kuin tämä ilmaantui. 344 00:25:11,610 --> 00:25:15,180 Ajatuksena bug oli - 345 00:25:15,180 --> 00:25:18,820 taas oli vain jokin funktio, jota kutsutaan, ja se teki vähän Virheentarkistus. 346 00:25:18,820 --> 00:25:24,300 Oli tiettyjä panoksia että tämä virheentarkistuksen - 347 00:25:24,300 --> 00:25:30,210 se olisi ollut kuin, okei, ei voi kutsua tätä toimintoa jakaja 0. 348 00:25:30,210 --> 00:25:35,070 Joten aion vain palata jokin virhe. 349 00:25:35,070 --> 00:25:38,090 Paitsi, se ei ollut niin viaton kuin vain asettamalla yhtä suuri kuin 0. 350 00:25:38,090 --> 00:25:46,920 Sen sijaan tämä rivi koodia päätyi tekemään jotain enemmän kuin käyttäjä = ylläpitäjä. 351 00:25:46,920 --> 00:25:50,500 Tai user = pääkäyttäjä. 352 00:25:50,500 --> 00:25:59,170 Se oli viaton - ensi silmäyksellä - virhe, jos se olisi vain ollut kohtuullinen 353 00:25:59,170 --> 00:26:01,560 että halusin vain ilmoittaa jotain erityistä 354 00:26:01,560 --> 00:26:05,150 jos käyttäjä sattui olemaan pääkäyttäjä pääkäyttäjä. 355 00:26:05,150 --> 00:26:11,220 Mutta sitten uudelleen ajatellut sitä, henkilö halusi näyttää yksinkertainen typo, 356 00:26:11,220 --> 00:26:14,330 mutta jos tämä koodi olisi tosiasiallisesti luovutettu, 357 00:26:14,330 --> 00:26:21,580 niin olisit voinut murtautua tahansa järjestelmään viemällä erityinen lippu - 358 00:26:21,580 --> 00:26:25,200 Tässä tapauksessa b = 0 - 359 00:26:25,200 --> 00:26:28,020 ja se automaattisesti tee käyttäjä ylläpitäjä, 360 00:26:28,020 --> 00:26:30,400 ja sitten hän on täysi kontrolli. 361 00:26:30,400 --> 00:26:32,540 Tämä tapahtui vuonna 2003. 362 00:26:32,540 --> 00:26:35,700 >> Se vain kävi niin, että ainoa syy se on kiinni 363 00:26:35,700 --> 00:26:39,200 oli sillä sattui olemaan joitakin automatisoitu järjestelmä 364 00:26:39,200 --> 00:26:41,540 että huomasi muutoksen tähän tiedostoon 365 00:26:41,540 --> 00:26:44,560 joka ei koskaan olisi pitänyt muuttaa ihmisen. 366 00:26:44,560 --> 00:26:47,580 Tiedoston pitäisi vain pitänyt automaattisesti. 367 00:26:47,580 --> 00:26:49,780 Se vain kävi niin, että joku kosketti - 368 00:26:49,780 --> 00:26:52,460 hyvin, henkilö, joka halusi hakata kosketti tiedoston, 369 00:26:52,460 --> 00:26:55,450 ja tietokone kiinni joka koskettaa. 370 00:26:55,450 --> 00:27:01,750 Joten he muuttivat tämän ja vasta myöhemmin tajusi mitä katastrofi olisi ollut 371 00:27:01,750 --> 00:27:04,830 jos tämä oli saanut ulos todelliseen maailmaan. 372 00:27:04,830 --> 00:27:08,220 >> Saatat ajatella, että - palaan meidän kääntäjä esimerkki - 373 00:27:08,220 --> 00:27:14,290 vaikka emme voi nähdä - katsot lähdekoodin - 374 00:27:14,290 --> 00:27:17,490 että mitään erityistä on väärässä, 375 00:27:17,490 --> 00:27:25,460 jos me todella katsoa binäärikoodi kääntäjä, 376 00:27:25,460 --> 00:27:28,670 näkisimme, että jotain on vialla. 377 00:27:28,670 --> 00:27:31,260 Esimerkiksi jos otamme jouset toimivat - 378 00:27:31,260 --> 00:27:34,930 joka on juuri menossa katsomaan yli tiedoston ja tulostaa kaikki merkkijonot se löytyy - 379 00:27:34,930 --> 00:27:37,990 jos ajaa jouset meidän kääntäjä, 380 00:27:37,990 --> 00:27:42,400 näemme, että yksi merkkijono, se toteaa on tämä kummallinen - 381 00:27:42,400 --> 00:27:45,500 if (strcmp (käyttäjätunnus, "hakkeri") - blaa, blaa, blaa. 382 00:27:45,500 --> 00:27:52,570 Jos joku sattui olemaan vainoharhainen tarpeeksi luota heidän kääntäjä, 383 00:27:52,570 --> 00:27:56,690 he voisivat ajaa jousille ja nähdä tätä, 384 00:27:56,690 --> 00:28:00,430 ja sitten he tietävät, että siellä oli jotain vikaa todellinen binary. 385 00:28:00,430 --> 00:28:07,250 Mutta jouset oli väistämättä jotain, joka oli koottu. 386 00:28:07,250 --> 00:28:11,590 Joten, kuka sanoa, että meidän kääntäjä ei vain erikoisempia koodi 387 00:28:11,590 --> 00:28:19,240 joka sanoo, jos jouset on koskaan ajaa meidän kääntäjä, älä tulostaa kaikki tämä haitallista koodia. 388 00:28:19,240 --> 00:28:23,980 >> Sama idea, jos haluamme näyttöön koota tiedosto - 389 00:28:23,980 --> 00:28:30,440 Olemme oppineet, että kokoajan tuo meitä kokoonpano koodin konekielelle - 390 00:28:30,440 --> 00:28:36,010 Voimme mennä vastakkaiseen suuntaan - objdump-d kääntäjä - 391 00:28:36,010 --> 00:28:38,770 antaa meille kokoonpanoon meidän koodi. 392 00:28:38,770 --> 00:28:41,730 Tarkasteltaessa tätä, 393 00:28:41,730 --> 00:28:47,480 ihan hämärä, mutta jos haluamme, voisimme katsoa läpi tämän 394 00:28:47,480 --> 00:28:51,700 ja syy, odota, siellä on jotain meneillään täällä, että ei pitäisi menossa, 395 00:28:51,700 --> 00:28:59,380 ja sitten me tunnustettava, että kääntäjä tekee jotain haitallista. 396 00:28:59,380 --> 00:29:03,950 Mutta aivan kuten jouset, kuka sanoa objdump ei ollut erityistä-koteloitu. 397 00:29:03,950 --> 00:29:11,380 Periaatteessa se tulee alas et voi luottaa mihinkään. 398 00:29:11,380 --> 00:29:14,310 Kohta paperin nimeltään "Luottavainen Trust" on 399 00:29:14,310 --> 00:29:17,900 Yleensä me luotamme kääntäjä. 400 00:29:17,900 --> 00:29:21,700 Voit kääntää koodin ja odottaa sen mitä pyydät sitä tekemään. 401 00:29:21,700 --> 00:29:26,440 Mutta miksi sinun pitäisi luottaa kääntäjä? 402 00:29:26,440 --> 00:29:32,120 Et kirjoittanut kääntäjä. Et tiedä, mitä kääntäjä on väistämättä todella tekee. 403 00:29:32,120 --> 00:29:36,870 Kuka sanoo, voit luottaa siihen? 404 00:29:36,870 --> 00:29:40,050 Mutta silloinkin, hyvin, ehkä voimme luottaa kääntäjä. 405 00:29:40,050 --> 00:29:44,670 On kymmeniä tuhansia ihmisiä, jotka ovat katsoneet tätä. 406 00:29:44,670 --> 00:29:51,360 Joku on tunnustettava jotain oli kanssa kääntäjä. 407 00:29:51,360 --> 00:29:55,100 >> Mitä jos me vain mennä 1 taso syvemmälle? 408 00:29:55,100 --> 00:29:59,450 Se voisi jopa olla prosessori. 409 00:29:59,450 --> 00:30:01,250 Niin naurettavalta kuin se voisi olla, 410 00:30:01,250 --> 00:30:06,690 ehkä siellä on joku rogue työntekijä Intelin jotka luo nämä prosessorit 411 00:30:06,690 --> 00:30:12,400 että aina, että prosessori huomaa että käytät joitakin komennon 412 00:30:12,400 --> 00:30:14,570 joka on tarkoitus kirjautua tietokoneeseen, 413 00:30:14,570 --> 00:30:19,230 prosessori hyväksyy tiettyjä käyttäjätunnuksen ja salasanan yhdistelmä. 414 00:30:19,230 --> 00:30:21,530 Olisi villisti monimutkainen, 415 00:30:21,530 --> 00:30:24,790 mutta joku voisi tehdä sitä. 416 00:30:24,790 --> 00:30:29,350 Siinä vaiheessa, aiotko todellakin avata tietokoneen tarkastella prosessorin 417 00:30:29,350 --> 00:30:35,970 ja käyttää mikroskooppia tunnustaa, että nämä piirit eivät rivissä niin kuin pitäisi? 418 00:30:35,970 --> 00:30:39,730 Kukaan ei ikinä saada kiinni, että virhe. 419 00:30:39,730 --> 00:30:45,570 Jossain vaiheessa, sinun täytyy vain antaa periksi ja luottaa jotain. 420 00:30:45,570 --> 00:30:48,390 Useimmat ihmiset eivät luota kääntäjään tässä vaiheessa. 421 00:30:48,390 --> 00:30:55,760 Eli ei välttämättä, että sinun pitäisi. 422 00:30:55,760 --> 00:30:59,350 Tarkasteltaessa hieman surullisen video - 423 00:30:59,350 --> 00:31:09,280 [Dramaattista musiikkia] 424 00:31:09,280 --> 00:31:13,270 [Se UNIX. Tiedän tämän.] 425 00:31:13,270 --> 00:31:14,470 [Se kaikki tiedostot -] 426 00:31:14,470 --> 00:31:18,950 Hän sanoi, "Se on UNIX. Tiedän tämän." 427 00:31:18,950 --> 00:31:21,760 Korvaa UNIX kanssa tahansa suosikki käyttöjärjestelmä on - 428 00:31:21,760 --> 00:31:25,230 Hän olisi voinut sanoa: "Se on Windows-järjestelmän. Tiedän tämän." 429 00:31:25,230 --> 00:31:29,710 Se on täysin merkityksetön lausunto, 430 00:31:29,710 --> 00:31:34,450 mutta kaikki me tiedämme, että hän sattuu tietää takaoven UNIX. 431 00:31:34,450 --> 00:31:38,840 Hän tietää joitakin käyttäjätunnus / salasana-yhdistelmää, joka todella antaa hänen 432 00:31:38,840 --> 00:31:41,540 tehdä mitä hän haluaa. 433 00:31:41,540 --> 00:31:49,000 >> Selvä. Moraalinen tänään on periaatteessa et voi luottaa mihinkään. 434 00:31:49,000 --> 00:31:52,620 Jopa mitä kirjoitat - et kirjoita kääntäjä. 435 00:31:52,620 --> 00:31:53,870 Kääntäjä voi olla huono. 436 00:31:53,870 --> 00:31:59,140 Vaikka teit kirjoitat kääntäjä, asia joka on käynnissä kääntäjä voisi olla huono. 437 00:31:59,140 --> 00:32:05,210 (Nauraa) Ei ole paljon voit tehdä. 438 00:32:05,210 --> 00:32:09,050 Maailma on tuhoon tuomittu. 439 00:32:09,050 --> 00:32:11,570 Takaisin David! 440 00:32:11,570 --> 00:32:19,540 [Aplodit] 441 00:32:19,540 --> 00:32:21,340 >> [David] Kiitos. Se oli todella masentavaa. 442 00:32:21,340 --> 00:32:23,910 Mutta todellakin, Rob on oikea. 443 00:32:23,910 --> 00:32:27,150 Meillä ei todellakaan ole ratkaisu, mutta olet saamassa joitakin ratkaisuja 444 00:32:27,150 --> 00:32:29,150 Joidenkin yleisempiä puolustukset. 445 00:32:29,150 --> 00:32:31,170 Tätä odotellessa, mitä Nate ja olen tehnyt offstage siellä 446 00:32:31,170 --> 00:32:33,950 on tietää, että on olemassa niin monia läppäreissä tässä huoneessa, 447 00:32:33,950 --> 00:32:37,020 olemme haistaa kaikki langattoman liikenteen läpi tätä tilaa viimeisen 20 minuutin aikana 448 00:32:37,020 --> 00:32:39,260 aikana Rob puhe, joten aiomme ottaa 2 minuutin tauon. 449 00:32:39,260 --> 00:32:41,740 Nate menee perustaa, ja sitten me aiomme puhua kaikista kamaa 450 00:32:41,740 --> 00:32:46,380 olisimme löytäneet. (Naurua) 451 00:32:46,380 --> 00:32:51,990 >> Joten, olen ehkä liioitellut hieman vain vuoksi draamaa, 452 00:32:51,990 --> 00:32:55,990 mutta olisimme voineet haistaa kaikki langattoman liikenteen, koska todellakin, 453 00:32:55,990 --> 00:32:57,240 se on niin helppoa. 454 00:32:57,240 --> 00:32:59,790 Mutta on myös tapoja, joilla voit puolustaa vastaan, ja siten myös siitä, 455 00:32:59,790 --> 00:33:03,160 Annan teille Nate Hardison. >> [Nate] Sweet. 456 00:33:03,160 --> 00:33:06,300 (Suosionosoituksia) 457 00:33:06,300 --> 00:33:08,650 >> [Nate] Kiitti. Arvostan huutaa. 458 00:33:08,650 --> 00:33:12,790 Selvä! Se on peli viikossa. Oletteko te innoissaan? 459 00:33:12,790 --> 00:33:16,670 Toivottavasti se tulee olemaan iso peli lauantaina. 460 00:33:16,670 --> 00:33:20,220 Kuvittelen te tässä vaiheessa - koska sinulla on tietokilpailu keskiviikkona 461 00:33:20,220 --> 00:33:24,430 All About koodi, ja me vain istunut ihana luento Rob 462 00:33:24,430 --> 00:33:25,850 kanssa koko joukko C koodi siihen - 463 00:33:25,850 --> 00:33:28,330 ovat ehkä hieman väsynyt koodia. 464 00:33:28,330 --> 00:33:32,180 Tässä osassa olemme todella aio koskettaa mitään koodia lainkaan. 465 00:33:32,180 --> 00:33:36,960 Olemme juuri menossa puhua tekniikkaa että käytät joka päivä, 466 00:33:36,960 --> 00:33:39,790 usein monta, monta tuntia päivässä, 467 00:33:39,790 --> 00:33:46,220 ja me puhumme vaikutuksista turvallisuuteen, että on olemassa. 468 00:33:46,220 --> 00:33:48,960 >> Olemme puhuneet paljon turvallisuutta aikana lukukauden, 469 00:33:48,960 --> 00:33:53,030 ja Aloitimme hieman salauksen. 470 00:33:53,030 --> 00:33:55,030 [Bdoh lv vwlqng!] 471 00:33:55,030 --> 00:33:57,890 Ja kun te olette luultavasti super-innoissani ohimennen muistiinpanoja toisiinsa 472 00:33:57,890 --> 00:33:59,890 luokassa käyttäen Caesar cipher kuten tämä, 473 00:33:59,890 --> 00:34:03,870 Todellisuudessa siellä on hieman hauskaa on ollut, kun olet todella puhumme turvallisuudesta 474 00:34:03,870 --> 00:34:05,870 ja tuollaista kamaa. 475 00:34:05,870 --> 00:34:09,090 Tänään aiomme kattaa joitakin tekniikoita 476 00:34:09,090 --> 00:34:13,650 että ihmiset todella käyttävät reaalimaailman tehdä kaikenlaisia ​​asioita 477 00:34:13,650 --> 00:34:18,360 alkaen haistaa ihmisten paketteja todella menossa ja 478 00:34:18,360 --> 00:34:20,409 tunkeutumalla ihmisten pankkitilit ja kaikki tämä. 479 00:34:20,409 --> 00:34:23,460 Nämä ovat oikeutettuja välineitä, että puhumme 480 00:34:23,460 --> 00:34:26,320 lukuun ottamatta mahdollisesti yksi työkalu. 481 00:34:26,320 --> 00:34:28,889 >> Ja minä vain tehdä nopeasti vastuuvapauslauseke. 482 00:34:28,889 --> 00:34:34,909 Kun puhumme näistä asioista, puhumme niistä niin tiedät mitä siellä, 483 00:34:34,909 --> 00:34:39,389 ja olet tietoinen siitä, miten olla turvassa, kun olet poissa tietokoneen. 484 00:34:39,389 --> 00:34:44,000 Mutta emme todellakaan halua vihjata, että sinun pitäisi käyttää näitä työkaluja 485 00:34:44,000 --> 00:34:48,090 oman asuntolan tai talosi koska voit törmätä paljon suuria kysymyksiä. 486 00:34:48,090 --> 00:34:52,760 Se on yksi syy, että emme nykyään oikeastaan ​​olleet haistaa teidän paketteja. 487 00:34:52,760 --> 00:35:01,300 >> Selvä. Viime maanantaina puhuimme evästeet ja HTTP ja todentaminen, 488 00:35:01,300 --> 00:35:05,920 ja miten Firesheep avaa tämä iso ovi omalle Facebook-tilin, 489 00:35:05,920 --> 00:35:08,670 Hotmail-tilin - jos joku on vielä käytössä Hotmail - 490 00:35:08,670 --> 00:35:12,360 ja monia muita tilejä. 491 00:35:12,360 --> 00:35:16,980 Paljon tätä kamaa tulee rakentaa pois siitä, 492 00:35:16,980 --> 00:35:22,070 mutta ensin haluan tehdä nopea kierros miten Internet on kehittynyt ajan myötä. 493 00:35:22,070 --> 00:35:27,490 Takaisin 90-luvulla, te ehkä muistaa todella kytkemällä 494 00:35:27,490 --> 00:35:29,880 tietokoneiden kanssa yksi näistä. 495 00:35:29,880 --> 00:35:32,640 Nyt emme tee sitä niin paljon enää. 496 00:35:32,640 --> 00:35:37,230 Se todella osoittautuu että voidakseen kytke Ethernet-kaapeli minun laptop, 497 00:35:37,230 --> 00:35:41,710 Olen nyt käyttää yhtä näistä sovittimia on eräänlainen hullu. 498 00:35:41,710 --> 00:35:47,580 >> Sen sijaan vuonna 1997 meillä oli uusi, hauska tekniikka 499 00:35:47,580 --> 00:35:54,960 tuli ulos, joka on tunnettu IEEE 802.11, joten tämä on langaton internet-standardi 500 00:35:54,960 --> 00:36:00,430 IEEE on tämä hallintoelin, joka antaa ulos kaikenlaisia ​​- 501 00:36:00,430 --> 00:36:04,770 julkaisee kaikenlaisia ​​standardeja suhteessa tietokoneisiin. 502 00:36:04,770 --> 00:36:08,780 802 standardit ovat kaikki noin Internet-teknologioiden. 503 00:36:08,780 --> 00:36:12,690 Niin 802,3, on esimerkiksi Ethernet-standardin, 504 00:36:12,690 --> 00:36:17,120 802.15.1 mielestäni Bluetooth-standardin 505 00:36:17,120 --> 00:36:19,540 ja 802,11 on kyse langaton internet. 506 00:36:19,540 --> 00:36:24,150 Vuonna 1997 tämä tuli ulos. Se ei ole aivan saalis heti. 507 00:36:24,150 --> 00:36:30,200 Vasta 1999 ja 802.11b-standardin tuli ulos, että juuri todella suosittu. 508 00:36:30,200 --> 00:36:36,330 >> Kuinka moni teistä muistaa, kun tietokoneet alkoivat tulla ulos ja saada langaton niitä? 509 00:36:36,330 --> 00:36:38,330 Se oli aika siistiä, vai mitä? 510 00:36:38,330 --> 00:36:41,260 Muistan saada minun ensimmäinen kannettava lukiossa, 511 00:36:41,260 --> 00:36:44,250 ja se oli langaton kortti. 512 00:36:44,250 --> 00:36:49,580 Isäni antoi sen minulle ja sanoi, että minun pitäisi käyttää sitä minun college apps ja kaikki tämä, 513 00:36:49,580 --> 00:36:53,030 ja minulla ei ollut aavistustakaan siitä, miten aioin etsiä tätä kamaa verkossa. 514 00:36:53,030 --> 00:36:54,640 Mutta onneksi minulla oli langaton kortti, joten oli aika siistiä. 515 00:36:54,640 --> 00:37:04,090 Nykyään näet myös 802.11g joka on yksi muista todella suosittu 516 00:37:04,090 --> 00:37:06,090 langattomia standardeja se siellä. 517 00:37:06,090 --> 00:37:08,660 Sekä b ja g on melko vanhentuneita tässä vaiheessa. 518 00:37:08,660 --> 00:37:12,580 Tietääkö kukaan mikä versio useimmat ihmiset ovat juuri nyt 519 00:37:12,580 --> 00:37:15,110 jos he ostavat uusia langattomia reitittimiä ja tuollaista kamaa? 520 00:37:15,110 --> 00:37:24,290 N. Täsmälleen. Bingo. Ja käy ilmi, että ac standardin juuri tulossa ulos luonnos, 521 00:37:24,290 --> 00:37:28,050 ja muitakin versioita matkalla. 522 00:37:28,050 --> 00:37:31,190 Jokaisen näistä standardeista mitä olemme saamassa enemmän kaistanleveyttä, 523 00:37:31,190 --> 00:37:33,900 enemmän dataa nopeammin. 524 00:37:33,900 --> 00:37:36,260 Nämä asiat pitää muuttaa melko nopeasti. 525 00:37:36,260 --> 00:37:39,880 Se myös tekee niin, että meidän täytyy ostaa lisää reitittimet ja kaikki hauskoja juttuja. 526 00:37:39,880 --> 00:37:48,160 >> Puhutaanpa mitä langattoman viestinnän oikeastaan ​​on sen ydin. 527 00:37:48,160 --> 00:37:51,790 Ethernet ja vanhat dial-up modeemi, 528 00:37:51,790 --> 00:37:55,780 sinulla todella oli tätä kamaa että voit kytketty tietokoneeseen, 529 00:37:55,780 --> 00:37:59,820 ja sitten kytketty modeemiin tapaisena, ja sitten kytkit sen liittimeen seinään. 530 00:37:59,820 --> 00:38:01,820 Sinulla oli langallinen yhteys, eikö? 531 00:38:01,820 --> 00:38:06,030 Koko pisteen langattomien on päästä eroon tätä kamaa. 532 00:38:06,030 --> 00:38:10,300 Jotta niin, että mitä meillä on olennaisesti 533 00:38:10,300 --> 00:38:13,960 radioyhteys jossa meidän langaton reititin - 534 00:38:13,960 --> 00:38:16,230 nimeämä pikku langattoman kuvake - 535 00:38:16,230 --> 00:38:21,730 on kytketty Internet tällä kiinteä nuoli osoittaa jonkinlainen langallinen yhteys, 536 00:38:21,730 --> 00:38:24,640 mutta kun otat yhteyden langattomaan reitittimeen 537 00:38:24,640 --> 00:38:29,190 olet todellisuudessa käyttävät melkein kuin radiopuhelinta välillä 538 00:38:29,190 --> 00:38:31,960 tietokoneen ja langattoman reitittimen. 539 00:38:31,960 --> 00:38:35,150 Mikä on todella siistiä tästä on voit liikkua. 540 00:38:35,150 --> 00:38:40,900 Voit kuljettaa tietokonetta ympäri Sanders, mene surffata verkossa, mitä haluat, 541 00:38:40,900 --> 00:38:43,240 aivan kuten te kaikki tiedätte ja rakkautta, 542 00:38:43,240 --> 00:38:46,030 ja sinun ei koskaan tarvitse kytketty mihinkään. 543 00:38:46,030 --> 00:38:53,880 Jotta tämä toimisi, olemme molemmat tätä vastaanottoa ja lähetystä. 544 00:38:53,880 --> 00:38:56,060 Se on kuin että radiopuhelinta. 545 00:38:56,060 --> 00:39:03,800 >> Tämä langaton reititin - joka Sanders istuu alla tässä vaiheessa, täällä - 546 00:39:03,800 --> 00:39:06,590 on aina lähettää ja vastaanottaa, lähettää ja vastaanottaa, 547 00:39:06,590 --> 00:39:09,330 ja samoin, tietokoneet on kaikki tekevät saman sellainen asia, too. 548 00:39:09,330 --> 00:39:12,840 Emme voi vain kuule sitä. 549 00:39:12,840 --> 00:39:17,900 Toinen asia, jonka voit tehdä, on sinulla voi olla useita tietokoneita 550 00:39:17,900 --> 00:39:22,200 puhuu samaan langattomaan reitittimeen. 551 00:39:22,200 --> 00:39:25,680 Mitä lähempänä olet reititin - ja jälleen tämä on radioliikenne - 552 00:39:25,680 --> 00:39:30,320 lähempänä olet, sitä parempi signaali on, sitä parempi tietokoneen kuulee "reititin 553 00:39:30,320 --> 00:39:32,460 ja voi kommunikoida Internet. 554 00:39:32,460 --> 00:39:39,520 Jos olette koskaan teidän asuntolan, talosi ja mietit miksi signaali on huono, 555 00:39:39,520 --> 00:39:42,230 Se johtuu luultavasti siitä). et hyvin lähellä reitittimen tai 556 00:39:42,230 --> 00:39:46,930 b). siellä on jotain sinun ja reitittimen kuin sementti seinään tai jotain 557 00:39:46,930 --> 00:39:50,720 joka ei anna näitä radioaaltoja läpi. 558 00:39:50,720 --> 00:39:57,850 >> Puhutaanpa hieman siitä, miksi pahiksia, kuten Wi-Fi. 559 00:39:57,850 --> 00:40:02,980 Bad Guys rakkaus Wi-Fi muutamia syitä. 560 00:40:02,980 --> 00:40:06,670 Tässä meidän ilkeä paha kaveri tuolla. 561 00:40:06,670 --> 00:40:10,660 Yksi syy miksi tämä pahis rakastaa wi-fi 562 00:40:10,660 --> 00:40:18,770 johtuu, oletusarvoisesti, paljon langattomien reitittimien tulee ja kun asetat ne, 563 00:40:18,770 --> 00:40:20,950 he salaamaton. 564 00:40:20,950 --> 00:40:23,970 Tämä on ollut ongelma, ja on ollut tapauksia - 565 00:40:23,970 --> 00:40:28,210 useita esiintymiä, nyt - jos pahis näyttää jopa jonkun taloon, 566 00:40:28,210 --> 00:40:32,630 huomaa, että siellä on salaamaton langaton johon ne voivat yhdistää. 567 00:40:32,630 --> 00:40:37,350 He yhteyden Wi-Fi, ja sitten he alkavat ladata kaikenlaisia ​​hauskoja juttuja. 568 00:40:37,350 --> 00:40:40,890 Ja he eivät lataa pentuja, he eivät lataa pentuja. 569 00:40:40,890 --> 00:40:44,610 Tämä on kuin BitTorrent. Tämä on ikävä ja nastiest. 570 00:40:44,610 --> 00:40:48,740 On ollut tapauksia, joissa FBI on jopa mennyt mukana 571 00:40:48,740 --> 00:40:52,390 ajatella, että henkilö, joka omistaa talo on todella yksi 572 00:40:52,390 --> 00:40:56,090 menee siellä ja ladata kamaa, että he todella pitäisi olla. 573 00:40:56,090 --> 00:41:00,730 Kun salaamattomia Wi-Fi ei todellakaan ole jotain haluat tehdä, 574 00:41:00,730 --> 00:41:06,340 jos vain ei ole FBI tulevat koputtaa kotiovellesi. 575 00:41:06,340 --> 00:41:09,910 >> Toinen syy, miksi pahikset rakastavat wi-fi 576 00:41:09,910 --> 00:41:13,870 on syy, että David puhui aiemmin tauolla. 577 00:41:13,870 --> 00:41:17,240 Koska se on radioviestinnän sen ytimessä, 578 00:41:17,240 --> 00:41:22,460 jos tiedät kanavan, voit kuunnella että radioasema. 579 00:41:22,460 --> 00:41:31,870 Esimerkiksi, jos on huono tuolla istuu keskellä aivan yhteysosoitteen, 580 00:41:31,870 --> 00:41:36,830 vieressä, että langaton reititin, pahis voi kuunnella kaikista langatonta liikennettä 581 00:41:36,830 --> 00:41:40,240 joka on lähtöisin kaikki nämä tietokoneet. 582 00:41:40,240 --> 00:41:44,590 Itse asiassa nämä kaverit - nämä onnekas muutama, jotka ovat tässä eturivissä - 583 00:41:44,590 --> 00:41:47,610 koska ne ovat super-lähellä kaikkia näiden langattomien reitittimien 584 00:41:47,610 --> 00:41:49,950 jotka istuvat vain alle vaiheessa, 585 00:41:49,950 --> 00:41:53,780 he voisivat kuulla kaikkien liikenteessä tässä koko huoneeseen 586 00:41:53,780 --> 00:41:59,480 Jos olet yhteydessä Wi-Fi ja alkaa selata läpi näitä tukiasemia. 587 00:41:59,480 --> 00:42:03,740 Se ei ole kovin vaikea istua itse hyvässä asemassa haistella ja selvittää 588 00:42:03,740 --> 00:42:07,030 mitä muut ihmiset tekevät. 589 00:42:07,030 --> 00:42:10,830 Se on jotain pitää mielessä, varsinkin jos et ole varma, jos tukiasema on, 590 00:42:10,830 --> 00:42:15,010 ja selaat sanoa, milloin Starbucks. 591 00:42:15,010 --> 00:42:17,360 >> On käynyt ilmi, että haistaa ja kaikki tämä 592 00:42:17,360 --> 00:42:19,440 ei ole oikeastaan ​​kaikki, että vaikea tehdä. 593 00:42:19,440 --> 00:42:25,430 On ohjelma nimeltä tcpdump jossa kaatopaikkoja kaikenlaisia ​​TCP liikenne 594 00:42:25,430 --> 00:42:29,910 ja voit käyttää sitä melko yksinkertaisesti - kuten tein tänä aamuna. 595 00:42:29,910 --> 00:42:32,810 Tässä vähän dump, ja tässä on joitakin liikenteestä, joka oli tulossa 596 00:42:32,810 --> 00:42:34,960 Oma verkko tuolloin. 597 00:42:34,960 --> 00:42:41,500 Voit nähdä - jos karsastaa todella kovaa - siellä hieman Spotifyn siellä. 598 00:42:41,500 --> 00:42:44,050 Päälle tcpdump - koska tämä on eräänlainen tuskaa käyttää - 599 00:42:44,050 --> 00:42:48,860 siellä ohjelma nimeltä Wireshark joka nippujen tämä kaikki ylös kiva GUI. 600 00:42:48,860 --> 00:42:51,970 Wireshark on super-kätevää joten jos menet ottamaan verkottumista luokat, 601 00:42:51,970 --> 00:42:56,780 Tämä on työkalu, tulet rakastamaan, koska se auttaa sinua leikellä kaikki paketit 602 00:42:56,780 --> 00:42:59,400 että kelluva noin siellä. 603 00:42:59,400 --> 00:43:01,810 Mutta se voi myös käyttää huono. 604 00:43:01,810 --> 00:43:05,810 Se on hyvin yksinkertaista vain ladata ohjelman, käynnistä se ylös, 605 00:43:05,810 --> 00:43:09,300 aloittaa verkon kaapata, ja nähdä kaiken, mitä tapahtuu - 606 00:43:09,300 --> 00:43:14,130 ja suodattaa ja tehdä kaikenlaisia ​​hauskoja juttuja sen kanssa. 607 00:43:14,130 --> 00:43:17,930 >> Toinen asia, että voit tehdä langattoman viestinnän 608 00:43:17,930 --> 00:43:25,380 ei vain voi salakuunnella, mutta voit myös oppia ruuvi verkkoon 609 00:43:25,380 --> 00:43:31,020 ja pistä omat tietosi hallita kokemus, että muut ihmiset 610 00:43:31,020 --> 00:43:35,140 samassa langattomassa verkossa saavat. 611 00:43:35,140 --> 00:43:37,140 Katsotaanpa katsomaan sitä. 612 00:43:37,140 --> 00:43:40,700 Tässä Firesheep - jonka tiedämme ja rakastamme viime viikolla - 613 00:43:40,700 --> 00:43:43,590 joka on, että salakuuntelu tekniikka. 614 00:43:43,590 --> 00:43:50,360 Jos esimerkiksi haluamme aktiivisesti on meidän pahis mennä ja pelleillä 615 00:43:50,360 --> 00:43:52,690 yksi näistä tietokoneista, 616 00:43:52,690 --> 00:43:58,380 Tässä skenaariossa meillä tietokone yrittää mennä surffata harvard.edu. 617 00:43:58,380 --> 00:44:04,690 Mitä tapahtuu, tietokone lähettää ensin viestin langaton reititin ja sanoo, 618 00:44:04,690 --> 00:44:07,920 Hei, Haluan mennä vierailun www.harvard.edu. 619 00:44:07,920 --> 00:44:10,610 Sano jostain syystä he yrittävät saada tietoa pelin tänä viikonloppuna. 620 00:44:10,610 --> 00:44:14,940 Huono kaveri, sillä hän istuu keskellä, 621 00:44:14,940 --> 00:44:18,730 vieressä että tukiasemaan, voi nähdä, että viestintä tulevat tietokoneesta 622 00:44:18,730 --> 00:44:26,170 reitittimeen, ja hän tietää, "Ahaa! Joku menee harvard.edu." (Ilkeästi nauraa) 623 00:44:26,170 --> 00:44:33,870 Siellä tulee olemaan tämän latenssi kun viestintä kulkee reitittimen 624 00:44:33,870 --> 00:44:37,780 ulos Internetiin mennä etsimään kotisivuilta osoitteessa harvard.edu-- 625 00:44:37,780 --> 00:44:42,020 kuten te kaikki tiedätte kun tekee teidän PHP psets - 626 00:44:42,020 --> 00:44:45,680 ja niin pahis on vähän aikaa, vähän ikkunan 627 00:44:45,680 --> 00:44:49,410 jossa hän voi vastata kamaa. 628 00:44:49,410 --> 00:44:53,660 >> Sanotaan tämä huono kaveri, on tietenkin Yaley. 629 00:44:53,660 --> 00:44:59,990 Hän vastaukseksi harvardsucks.org. Boo! 630 00:44:59,990 --> 00:45:02,300 Bad, bad guy! Bad Yaley! 631 00:45:02,300 --> 00:45:06,020 Tai vielä pahempaa, hän saattaa vastata siihen. [Http://youtu.be/ZSBq8geuJk0]. 632 00:45:06,020 --> 00:45:09,530 Otan sinuun kaverit selvittää, mikä se on. 633 00:45:09,530 --> 00:45:14,840 Tämä on oikeastaan ​​tekniikkaa kutsutaan Airpwn! joka debytoi 634 00:45:14,840 --> 00:45:18,950 yksi turvallisuuden konferenssien muutama vuosi sitten. 635 00:45:18,950 --> 00:45:25,190 Kanssa Airpwn! pystyt itse pistää liikenteen takaisin verkkoon. 636 00:45:25,190 --> 00:45:30,060 Tietokoneita, jotka yrittävät mennä ulos Internetiin ja yrittää saada 637 00:45:30,060 --> 00:45:33,090 Google.com, että Facebook.com, jotta harvard.edu 638 00:45:33,090 --> 00:45:39,190 Katso ilkeä vastaus tulevat ja heti olettaa, okei, 639 00:45:39,190 --> 00:45:43,550 se vastaus, jonka olin odottanut ja lopulta saada sisältöä 640 00:45:43,550 --> 00:45:48,860 harvardsucks.org tai nameyourfavoriteshocksite.com, 641 00:45:48,860 --> 00:45:55,270 ja voit nähdä, kuinka nopeasti asiat heikkenevät. 642 00:45:55,270 --> 00:46:00,190 >> Kaikki näitä puheita ei voi tehdä 643 00:46:00,190 --> 00:46:05,870 Näiden langallisten yhteyksien vuoksi, joissa langallinen yhteys 644 00:46:05,870 --> 00:46:08,710 on vaikea nuuskia edelleen liikennettä. 645 00:46:08,710 --> 00:46:13,020 Jos olen pahis ja toinen pää on tietokone 646 00:46:13,020 --> 00:46:14,460 ja toinen pää on reititin - modeemi - 647 00:46:14,460 --> 00:46:20,180 ainoa tapa saan välillä että yhteys on todella liitos tietokoneeseen 648 00:46:20,180 --> 00:46:22,180 on jossain keskellä 649 00:46:22,180 --> 00:46:26,820 tai tehdä jotain muuta reitittimen, jotain alavirtaan. 650 00:46:26,820 --> 00:46:33,360 Mutta langaton, se voi olla yhtä helppoa kuin istuu eturivissä luokkahuoneessa, 651 00:46:33,360 --> 00:46:38,200 ja voit tehdä kaikenlaisia ​​ikäviä juttuja ihmisille takana. 652 00:46:38,200 --> 00:46:41,570 >> Puhutaanpa miten voit puolustaa vastaan ​​joitakin näistä asioista. 653 00:46:41,570 --> 00:46:46,860 Ihmiset kehittyi langattomia standardeja - 802,11 - 654 00:46:46,860 --> 00:46:50,820 he eivät ole tyhmiä ihmisiä millään tavoin mielikuvitusta. 655 00:46:50,820 --> 00:46:56,110 Tämä on viileä teknologian ja kun se debytoi vuonna 1999, 656 00:46:56,110 --> 00:47:00,780 he tulivat ulos tämän standardin nimeltään WEP. 657 00:47:00,780 --> 00:47:03,360 Voit nähdä täällä kun yrittää liittyä langattomaan verkkoon, 658 00:47:03,360 --> 00:47:07,450 Sinulla on kaikenlaisia ​​erilaisia ​​tietoturva-asetukset. 659 00:47:07,450 --> 00:47:11,800 Sellainen kipu, koska on olemassa 6 yhteensä 660 00:47:11,800 --> 00:47:14,790 ja se ei koskaan oikeastaan ​​järkevää joista 1 liittymään. 661 00:47:14,790 --> 00:47:19,190 Tämä 1 yläosassa on ensimmäinen, että he keksivät nimeltään WEP. 662 00:47:19,190 --> 00:47:27,960 WEP sanoista Wired Equivalent Privacy, uskon, 663 00:47:27,960 --> 00:47:31,730 ei Wireless Encryption Protocol, joka on yhteinen harhaanjohtava. 664 00:47:31,730 --> 00:47:36,170 Koska se yrittää antaa sinulle yksityisyyttä vastaava ja tietoturvan 665 00:47:36,170 --> 00:47:40,590 vastaava kuin lankaverkon 666 00:47:40,590 --> 00:47:46,710 WEP mitä päätyy tapahtumassa on, 667 00:47:46,710 --> 00:47:52,300 sinulla on yksinkertainen, hieman salasana kirjoitat ja joka palvelee salata 668 00:47:52,300 --> 00:47:56,210 kaikki viestinnän välillä tietokoneen ja reitittimen. 669 00:47:56,210 --> 00:47:58,210 >> Mikä ongelma WEP vaikka? 670 00:47:58,210 --> 00:48:01,470 Salasana WEP on todella lyhyt, 671 00:48:01,470 --> 00:48:04,900 ja myös kaikki käyttää, että täsmälleen sama salasana 672 00:48:04,900 --> 00:48:07,610  ja niin se on todella helppo purkaa. 673 00:48:07,610 --> 00:48:10,580 Joten hyvin nopeasti ihmiset tajunnut, että WEP oli ongelma, 674 00:48:10,580 --> 00:48:16,100 ja ainoa syy näet se näkyy vielä tämä pieni kaveri on - 675 00:48:16,100 --> 00:48:18,890 olemassa joitakin vanhempia järjestelmiä, jotka eivät käytä WEP - 676 00:48:18,890 --> 00:48:25,710 mitä pitäisi sen sijaan olla etsimässä ovat WPA ja jopa WPA2 standardit 677 00:48:25,710 --> 00:48:29,130 jotka julkaistiin myöhemmin. 678 00:48:29,130 --> 00:48:35,040 Nämä järjestelmät ovat paljon paremmin mentävä suojan langaton internet. 679 00:48:35,040 --> 00:48:41,090 Se sanoi, he eivät vielä joitakin hackability. 680 00:48:41,090 --> 00:48:44,010 On olemassa työkaluja siellä, että voi mennä tekemään tämän. 681 00:48:44,010 --> 00:48:47,490 Yksi asia erityisesti, että voi olla ilkeä, että 682 00:48:47,490 --> 00:48:55,370 Jos liität ja tunnistauduttava langaton reititin ja käyttävät jonkinlaista 683 00:48:55,370 --> 00:49:00,940 salattu, käy ilmi, että hakkeri voi helposti lähettää yhden paketin 684 00:49:00,940 --> 00:49:03,990 irrottaa sinua reitittimen, 685 00:49:03,990 --> 00:49:07,220 ja kun he irrotetaan sinua he voivat sitten kuunnella - 686 00:49:07,220 --> 00:49:11,800 he haistavat näitä paketteja kuin yrität luoda uudelleen yhteyden reitittimen. 687 00:49:11,800 --> 00:49:16,800 Ja että tietoa he voivat mennä ja purkaa loput viestintää. 688 00:49:16,800 --> 00:49:24,580 Tämä ei ole suinkaan minkäänlaista turvallista ylittää kaikki mielikuvituksen. 689 00:49:24,580 --> 00:49:30,060 >> Toinen asia voit tehdä, kun olet luomassa langatonta verkkoa 690 00:49:30,060 --> 00:49:35,460 tai olet liittämättä niitä on - huomaat että täällä kun olen liittyä tähän verkostoon, 691 00:49:35,460 --> 00:49:37,640 se kysyy nimeä minun verkko. 692 00:49:37,640 --> 00:49:41,060 Tämä tunnetaan myös SSID. 693 00:49:41,060 --> 00:49:48,610 Ja näet tässä että oikealla Olen laatikko, joka näyttää minulle käytettävissä SSID. 694 00:49:48,610 --> 00:49:52,690 On Harvardin yliopistossa, CS50 ja CS50 Henkilökunta verkkoon. 695 00:49:52,690 --> 00:49:59,180 Nyt, kuinka moni teistä tiesi oli CS50 Henkilökunta verkosto ympäri? 696 00:49:59,180 --> 00:50:01,910 Jotkut teistä. Ei teitä kaikkia. 697 00:50:01,910 --> 00:50:08,800 Ongelmana tässä tietenkin on, että jos olisimme laittaa tähän asti meidän SSID-tunnusten luettelo, 698 00:50:08,800 --> 00:50:10,930 kukaan ei tiennyt siitä todennäköisesti. 699 00:50:10,930 --> 00:50:16,090 Toivottavasti. Ellei te kaikki yrittävät murtautua meidän langaton. 700 00:50:16,090 --> 00:50:18,700 Mutta tämä on jotain, voit tehdä se on todella tärkeää, kun olet perustamassa 701 00:50:18,700 --> 00:50:20,280 reititin kotona. 702 00:50:20,280 --> 00:50:22,820 Tämä ei luultavasti tapahdu muutaman vuoden paljon teitä, 703 00:50:22,820 --> 00:50:29,010 mutta pitää muistaa, että pitää, että SSID sieltä eikä myös nimeämällä se 704 00:50:29,010 --> 00:50:34,630 jotain super-yhteinen auttaa pitämään sinua varmempi pitkällä aikavälillä. 705 00:50:34,630 --> 00:50:38,070 >> Viimeinen pari, mitä voi tehdä. Yksi on HTTPS. 706 00:50:38,070 --> 00:50:44,760 Jos olet Starbucks, jos olet julkisen wi-fi-alue 707 00:50:44,760 --> 00:50:52,620 ja päätät käyttää pankkitilille, Gmail, Facebook, 708 00:50:52,620 --> 00:50:56,140 Varmista, että nämä yhteydet ovat menossa HTTPS. 709 00:50:56,140 --> 00:50:59,800 Se on lisäsuojaus, lisätään kerros salauksen. 710 00:50:59,800 --> 00:51:01,520 Yksi asia pitää mielessä tässä on, 711 00:51:01,520 --> 00:51:04,740 kuinka moni teistä on joskus napsauttanut läpi iso, punainen näyttö, joka kertoo, 712 00:51:04,740 --> 00:51:07,480 "Tämä sivusto voi olla huono." 713 00:51:07,480 --> 00:51:09,710 Tiedän, että olen. 714 00:51:09,710 --> 00:51:13,090 Se on varmaan, kun olet kaikki lukemassa mennä katsomaan Homeland tai jotain, eikö? 715 00:51:13,090 --> 00:51:19,900 Joo. (Naurua) Joo. Siellä mennään. Tiedämme kuka katsomassa kotiseutualueella. 716 00:51:19,900 --> 00:51:24,540 Että iso, punainen näyttö tuolla 717 00:51:24,540 --> 00:51:28,600 usein osoittaa, että jotain funky on tekeillä. 718 00:51:28,600 --> 00:51:32,530 Joskus se on vain verkkosivuilla itse on epävarma, 719 00:51:32,530 --> 00:51:35,520 mutta että sama iso, punainen näyttö tulee esiin, kun ihmiset yrittävät 720 00:51:35,520 --> 00:51:37,520 mount verkkohyökkäyksiä teitä. 721 00:51:37,520 --> 00:51:40,220 Joten jos näet, että iso, punainen näyttö tulee ylös Starbucks, 722 00:51:40,220 --> 00:51:42,440 älä osoita sen läpi. 723 00:51:42,440 --> 00:51:45,350 Huonoja uutisia. Bad News Bears. 724 00:51:45,350 --> 00:51:51,490 >> Viimeinen asia, jonka voit katsoa 725 00:51:51,490 --> 00:51:54,120 on jonkinlainen VPN. 726 00:51:54,120 --> 00:52:00,280 Tämä VPN on saatavilla Harvard - vpn.fas.harvard.edu-- 727 00:52:00,280 --> 00:52:03,260 ja mitä tämä tekee se oikeastaan ​​muodostaa suojatun yhteyden 728 00:52:03,260 --> 00:52:06,460 sinun ja Harvard, suppilot liikennettä läpi, 729 00:52:06,460 --> 00:52:12,160 ja näin jos istut paikassa kuten Starbucks 730 00:52:12,160 --> 00:52:19,030 voit yhdistää Harvardin, saada, että turvallinen liikenne, ja sitten selata Harvard. 731 00:52:19,030 --> 00:52:21,950 Jälleen, ei ole idioottivarma. Ihmiset voivat saada keskelle. 732 00:52:21,950 --> 00:52:25,850 Ne voivat alkaa rikkoa sitä, mutta tämä on paljon turvallisempi kuin luottaa turvallisuus 733 00:52:25,850 --> 00:52:28,620 Wi-fi yksin. 734 00:52:28,620 --> 00:52:32,570 >> Selvä. Kaiken 735 00:52:32,570 --> 00:52:34,580 kun olet määrittämässä langatonta verkkoa, 736 00:52:34,580 --> 00:52:37,250 kun olet menossa ulos käyttämään langatonta julkisesti - 737 00:52:37,250 --> 00:52:43,430 onko se Starbucks, onko se Five Guys, onko se B.Good, 738 00:52:43,430 --> 00:52:46,440 jotain - missä he ovat Wi-Fi - 739 00:52:46,440 --> 00:52:48,440 olla tietoinen ympäristöstä. 740 00:52:48,440 --> 00:52:50,440 Ole tietoinen siitä, mitä ihmiset voivat tehdä. 741 00:52:50,440 --> 00:52:53,890 Ja turvassa. Älä päästä pankkitilisi. 742 00:52:53,890 --> 00:52:58,740 Se voisi olla töykeä herätys jos joku näkyy salasanaasi myöhemmin. 743 00:52:58,740 --> 00:53:05,480 Kanssa, että mene Crimson! Ja aion kääntää asiat takaisin yli David lopullista sanaa. 744 00:53:05,480 --> 00:53:11,270 (Suosionosoituksia) 745 00:53:11,270 --> 00:53:14,360 >> [David] Ajattelin jakaa yhden asian omasta kokemuksestani. 746 00:53:14,360 --> 00:53:19,940 Työkalu haluat ehkä pelata - vaikka Apple on suurelta osin poistettua asiaa 747 00:53:19,940 --> 00:53:22,710 Jos olet päivittänyt ohjelmiston vuodesta - 748 00:53:22,710 --> 00:53:26,670 mutta tätä kohti loppua ei oikeastaan ​​pysty luottaa ohjelmisto että käytämme, 749 00:53:26,670 --> 00:53:33,270 ja Naten pistettä, se voi haistella melko vähän, mitä muut ihmiset tekevät 750 00:53:33,270 --> 00:53:37,010 siellä - tämä oli pala ohjelmisto, joka tuli ulos noin vuosi-ja-puoli sitten nyt. 751 00:53:37,010 --> 00:53:39,010 [IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] 752 00:53:39,010 --> 00:53:41,010 Jonkin aikaa, iTunes - ennen iCloud, kun olit synkronointi iPodeja tai iPhoneja tai 753 00:53:41,010 --> 00:53:45,570 tai iPad iTunesin kanssa - edun mukaista varmuuskopiot, 754 00:53:45,570 --> 00:53:48,340 mitä iPhone ja nämä muut laitteet ovat tehneet jo jonkin aikaa on 755 00:53:48,340 --> 00:53:50,340 hyödyntämällä GPS-dataa. 756 00:53:50,340 --> 00:53:52,710 >> Te kaikki tiedätte ehkä, että iPhonet ja Androids ja Windows Mobile-puhelimet 757 00:53:52,710 --> 00:53:55,410 ja kuten näinä päivinä voi seurata missä olet edun näyttämällä kartat 758 00:53:55,410 --> 00:53:59,440 ja vastaavat - hyvin mitä Apple ja näiden muiden yhtiöiden tehtävä on 759 00:53:59,440 --> 00:54:02,650 he tyypillisesti seurata lähes kaikkialla olet itse ollut etu 760 00:54:02,650 --> 00:54:05,380 parantaa palvelun laatua. 761 00:54:05,380 --> 00:54:07,170 Yksi, voit saada enemmän kohdistettuja mainoksia ja vastaavat, 762 00:54:07,170 --> 00:54:10,740 mutta kaksi, he voivat myös selvittää, missä ovat siellä langattomia hotspot maailmassa, 763 00:54:10,740 --> 00:54:14,780 ja tämä voi auttaa geopaikannuksen - eräänlainen triangulaatio ihmisten asemaa. 764 00:54:14,780 --> 00:54:18,520 >> Pitkä tarina lyhyt, meille kaikille oli kävely antenneja jonkin aikaa. 765 00:54:18,520 --> 00:54:22,180 Valitettavasti Apple oli tehnyt suunnittelu päätös - tai sen puute - 766 00:54:22,180 --> 00:54:26,590 että ei salata tietoja, kun se on varmuuskopioidut iTunesiin. 767 00:54:26,590 --> 00:54:30,330 Ja mitä turvallisuuteen tutkija todettiin, että tämä oli vain valtava XML - 768 00:54:30,330 --> 00:54:33,810 valtava tekstitiedosto - istuu ihmisten iTunes-ohjelmiston, 769 00:54:33,810 --> 00:54:35,400 ja jos olit vain hieman utelias, 770 00:54:35,400 --> 00:54:38,990 voisit mennä tönäisi noin puolisosi historian, sinun kämppäkaveri historia, 771 00:54:38,990 --> 00:54:41,050 oman sisaruksen historian ja vastaavat, 772 00:54:41,050 --> 00:54:44,590 ja kiitos joitakin vapaita ohjelmia, voit piirtää kaikki nämä GPS koordinaatit - 773 00:54:44,590 --> 00:54:46,590 leveys-ja pituusaste. 774 00:54:46,590 --> 00:54:48,590 >> Joten, olen itse tehnyt tämän omin puhelimessa. 775 00:54:48,590 --> 00:54:51,210 Olen kytketty puhelimeen, ja totta tosiaan, minun iTunes-versio ei ole salattu tuolloin, 776 00:54:51,210 --> 00:54:53,900 ja mitä pystyin näkemään oli omat kuviot. 777 00:54:53,900 --> 00:54:56,970 Tässä Yhdysvaltojen ja jokainen sininen ympyrä edustaa 778 00:54:56,970 --> 00:55:01,670 missä satuin ollut näinä viime kuukausina omistaa tämän puhelimen. 779 00:55:01,670 --> 00:55:04,940  Vietän paljon aikaa, tietenkin, ylös Koillis vähän aikaa Kaliforniassa, 780 00:55:04,940 --> 00:55:08,690 lyhytaikainen matka Texas, ja jos sitten zoomata tässä - 781 00:55:08,690 --> 00:55:11,120 tämä on kaikenlaisia ​​hienoja ja mielenkiintoisia, mutta tiesin tämän. 782 00:55:11,120 --> 00:55:13,890 Useimmat ystäväni tiesi tämän, mutta jos sukeltaa syvemmälle, 783 00:55:13,890 --> 00:55:17,090 näet missä vietän suurimman osan ajastani Koillis. 784 00:55:17,090 --> 00:55:20,330 Jos salpa päälle joitakin tuttuja näköisiä kaupunkeja - 785 00:55:20,330 --> 00:55:24,670 tämä iso, sininen muste läiskä on pääosin keskitetään Boston, 786 00:55:24,670 --> 00:55:29,510 ja sitten vietän vähän aikaa pois lähiöissä säteilee Bostonista. 787 00:55:29,510 --> 00:55:32,780 Mutta olin myös tekemässä melko vähän neuvotella vuoden. 788 00:55:32,780 --> 00:55:36,090 Ja tänä vuonna on itärannikon ja voit itse nähdä minua 789 00:55:36,090 --> 00:55:41,920 ja minun iPhone taskussani matkustaa edestakaisin Boston ja New York 790 00:55:41,920 --> 00:55:47,510 ja Philadelphia edelleen alas, samoin kuin menojen vähän loma-aikaa 791 00:55:47,510 --> 00:55:50,340 on Cape, joka on pieni käsi siellä. 792 00:55:50,340 --> 00:55:53,030 Niin, jokainen näistä pisteitä edustaa jossain paikassa olin ollut, 793 00:55:53,030 --> 00:55:56,970 ja täysin tietämättä minulle koko tämän historian vain istuin 794 00:55:56,970 --> 00:55:58,410 minun pöytätietokoneen. 795 00:55:58,410 --> 00:56:00,470 Jos loitontaa - tämä oikeastaan ​​oli hieman huolestuttava. 796 00:56:00,470 --> 00:56:04,190 Minulla ei ollut muistikuvaa koskaan ollut Pennsylvania kyseisenä vuonna. 797 00:56:04,190 --> 00:56:07,840 Mutta minä vaikka hieman vaikeampi siitä ja olen tajunnut, oi, se oli se, että matka 798 00:56:07,840 --> 00:56:11,160 ja totta tosiaan, puhelimeni oli kiinni minusta. 799 00:56:11,160 --> 00:56:14,180 >> Apple on sittemmin salattu tietoja, 800 00:56:14,180 --> 00:56:17,380 mutta tämäkin on vain osoitus siitä, miten paljon tietoa on kerätty meistä, 801 00:56:17,380 --> 00:56:20,850 ja miten helposti - parempaan tai huonompaan - se on hyväksyttävää. 802 00:56:20,850 --> 00:56:23,340 Yksi take-away toivottavasti Rob puhe, mistä Nate talk 803 00:56:23,340 --> 00:56:27,370 ja pikku grafiikka näin tänään vain olla sitäkin tietoisia tästä 804 00:56:27,370 --> 00:56:31,160 niin että vaikka - kuten Rob näkökulmasta - Me olemme tavallaan ruuvattu, eikö? 805 00:56:31,160 --> 00:56:33,920 Ei ole paljon voimme tehdä, kun se tulee joitakin näistä uhista, 806 00:56:33,920 --> 00:56:37,130 mutta loppujen lopuksi meidän täytyy luottaa jotain tai joku 807 00:56:37,130 --> 00:56:38,510 jos haluamme itse käyttää näitä tekniikoita. 808 00:56:38,510 --> 00:56:43,150 Ainakin me voidaan tehdä perusteltuja päätöksiä ja lasketaan päätöksiä vai ei 809 00:56:43,150 --> 00:56:46,390 Meidän pitäisi oikeastaan ​​tarkistaa tämän erityisen herkän tili 810 00:56:46,390 --> 00:56:49,330 tai meidän pitäisi oikeastaan ​​lähettää että hieman epäilen pikaviestiin 811 00:56:49,330 --> 00:56:52,180  in wi-fi ympäristössä näin. 812 00:56:52,180 --> 00:56:54,990 >> Niin, että sanoi, vain yksi tietokilpailu jäljellä, yksi luento jää. 813 00:56:54,990 --> 00:56:57,740 Nähdään keskiviikkona sitten maanantaina. 814 00:56:57,740 --> 00:57:02,100 (Suosionosoituksia ja hurraa) 815 00:57:02,100 --> 00:57:06,100 [CS50TV]