1 00:00:00,000 --> 00:00:02,750 [Powered by Google Translate] [Week 10] 2 00:00:02,750 --> 00:00:04,750 [David J. Malan] [Harvard Universiteit] 3 00:00:04,750 --> 00:00:07,000 [Hierdie is CS50.] [CS50.TV] 4 00:00:08,520 --> 00:00:13,240 >> Alles reg! Dit is CS50, maar nie vir veel langer. 5 00:00:13,240 --> 00:00:14,740 Dit is die begin van die week 10. 6 00:00:14,740 --> 00:00:18,780 Op Woensdag het ons quiz ons het, en dan volgende Maandag het ons het 'n paar feestelike koek 7 00:00:18,780 --> 00:00:22,030 as ons volle sirkel gekom al die pad terug vanaf week nul. 8 00:00:22,030 --> 00:00:25,200 Vandag, ons praat oor een van my gunsteling onderwerpe, die waarheid vertel word - 9 00:00:25,200 --> 00:00:29,000 van sekuriteit en privaatheid en die implikasies van al die hardeware en sagteware 10 00:00:29,000 --> 00:00:31,000 dat ons almal gebruik om hierdie dae. 11 00:00:31,000 --> 00:00:33,300 Om eerlik te wees, daar is 'n baie van die gevare daar buite 12 00:00:33,300 --> 00:00:35,430 dat as jy nie regtig gestop om na te dink oor hulle, 13 00:00:35,430 --> 00:00:36,920 hulle is eintlik redelik skrikwekkend. 14 00:00:36,920 --> 00:00:40,070 Case in point - indien enige van julle het al ooit 'n stukkie van die sagteware afgelaai 15 00:00:40,070 --> 00:00:42,660 af van die internet en dit op jou rekenaar geïnstalleer, 16 00:00:42,660 --> 00:00:45,220 jy betrokke is in 'n aansienlike mate van vertroue, reg? 17 00:00:45,220 --> 00:00:50,220 Daar is niks wat verhoed Skype, of Chrome, of 'n stukkie van die sagteware 18 00:00:50,220 --> 00:00:54,770 jy het geïnstalleer op jou rekenaar, van net die verwydering van al die lêers op jou hardeskyf; 19 00:00:54,770 --> 00:00:58,260 van die oplaai van al die lêers op jou hardeskyf na 'n paar slegte man se bediener; 20 00:00:58,260 --> 00:01:01,650 uit die lees van al jou e-pos, van die onderskepping van al jou boodskappe. 21 00:01:01,650 --> 00:01:05,040 Want die werklikheid is vandag met die meeste moderne bedryfstelsels 22 00:01:05,040 --> 00:01:10,040 daar is regtig nie veel van 'n muur tussen sagteware programme wat ons installeer, 23 00:01:10,040 --> 00:01:14,220 en ek en jy is pretty much net soort van die kruising van ons vingers en die neem van die geloof 24 00:01:14,220 --> 00:01:17,750 dat app ons gratis afgelaai, of dat die ding wat is 99 sent, 25 00:01:17,750 --> 00:01:20,140 is eintlik heeltemal benigne. 26 00:01:20,140 --> 00:01:23,090 Maar soos ons gesien het deur C, en nou PHP en JavaScript, 27 00:01:23,090 --> 00:01:25,420 met die vermoë om onsself te programatically druk, 28 00:01:25,420 --> 00:01:30,300 wat jy kan doen die meeste enigiets wat jy wil met 'n program wat 'n gebruiker homself of haarself kan doen. 29 00:01:30,300 --> 00:01:32,390 >> So, vandag is ons fokus op die onderwerp - 30 00:01:32,390 --> 00:01:35,360 nie net 'n paar dreigemente, maar ook verdediging. 31 00:01:35,360 --> 00:01:37,540 Trouens, in die wêreld van sekuriteit in die algemeen, 32 00:01:37,540 --> 00:01:39,040 daar is 'n soort van die kat-en-muis-speletjie, 33 00:01:39,040 --> 00:01:41,990 en ek daresay die slegte ouens byna altyd 'n been. 34 00:01:41,990 --> 00:01:45,880 Wanneer dit kom by die neem voordeel van hardeware en sagteware op ons eie persoonlike rekenaars, 35 00:01:45,880 --> 00:01:51,250 ons het om te besef dat 'n slegte man moet net 'n eenvoudige fout te vind - 36 00:01:51,250 --> 00:01:56,150 1 ontgin, 'n bug - in 'n stukkie van die sagteware wat ons geskryf het, of loop 37 00:01:56,150 --> 00:01:58,280 om vir hom of haar te neem oor ons hele stelsel. 38 00:01:58,280 --> 00:02:02,870 In teenstelling, het ons - die goeie ouens - nodig het om te pleister en fix al van daardie foute 39 00:02:02,870 --> 00:02:04,900 en vermy al van daardie swakhede. 40 00:02:04,900 --> 00:02:07,870 En ja, ek daresay oor die algemeen, die slegte ouens het die voordeel. 41 00:02:07,870 --> 00:02:10,840 Wat klasse soos hierdie en die daaropvolgende klasse is regtig oor 42 00:02:10,840 --> 00:02:14,830 nie oor die onderrig jy hoe om die stryd te voer dat hierdie slegte ouens doen, 43 00:02:14,830 --> 00:02:18,220 maar is oor hoe om jouself te beskerm of ten minste hoe om 'n berekende besluit te maak 44 00:02:18,220 --> 00:02:22,970 dat ja, ek weet dat hierdie stuk van sagteware wel kon lees elke een van my e-pos, 45 00:02:22,970 --> 00:02:27,040 maar ek is okay met dit as gevolg van die waarde wat dit bring my op die ander kant. 46 00:02:27,040 --> 00:02:31,060 >> Ek is baie bly om te word verbind deur 2 van die slimste mense wat ek ken - 47 00:02:31,060 --> 00:02:33,060 Rob Bowden en Nate Hardison. 48 00:02:33,060 --> 00:02:36,850 Rob is oor ons te neem vir 'n toer deur die laagste vlak van sekuriteit tags - 49 00:02:36,850 --> 00:02:42,470 wat van die samesteller, wat tot nou toe, kom ons almal het om lief te hê en vertrou. Rob Bowden. 50 00:02:42,470 --> 00:02:47,790 [Applous] 51 00:02:47,790 --> 00:02:50,280 >> [Rob] Alle regte. Dawid het pretty much my hele spiel 52 00:02:50,280 --> 00:02:52,320 dat ek gaan voor te stel, maar - 53 00:02:52,320 --> 00:02:58,070 N paar weke gelede, jy het die voorbeeld van 'n buffer oorloop aanval 54 00:02:58,070 --> 00:03:01,900 wat is 'n voorbeeld van 'n hacker inbraak in 'n stuk van sagteware 55 00:03:01,900 --> 00:03:06,060 dat hulle nie veronderstel is om te word inbraak in. 56 00:03:06,060 --> 00:03:09,690 Die ander kant van hierdie 57 00:03:09,690 --> 00:03:14,470 soms jy is kwaadwillige sagteware wat in en van sigself. 58 00:03:14,470 --> 00:03:17,070 Dit nie eers hoef te word nie gekap. 59 00:03:17,070 --> 00:03:20,670 Die persoon wat die sagteware geskryf het, wil jy te hack. 60 00:03:20,670 --> 00:03:22,190 >> Kom ons net reg spring in die kode, 61 00:03:22,190 --> 00:03:28,560 die neem van 'n blik by "login.c". 62 00:03:28,560 --> 00:03:33,390 Hier is 'n dom program wat 'n gebruikernaam en wagwoord kombinasie bekragtig. 63 00:03:33,390 --> 00:03:39,420 Hier moet jy beslis kry gemaklik met C weer vir die quiz. 64 00:03:39,420 --> 00:03:43,470 Eerste, gebruik ons ​​kry snare om die gebruikersnaam te beskryf, 65 00:03:43,470 --> 00:03:46,280 dan is ons die gebruik van get string die wagwoord te gryp, 66 00:03:46,280 --> 00:03:50,680 en dan het ons sommige triviaal kontrole van net, is die gebruikersnaam "rob"? 67 00:03:50,680 --> 00:03:52,710 En is die wagwoord "thisiscs50"? 68 00:03:52,710 --> 00:03:56,900 Of is die gebruikersnaam "Tommy" en die wagwoord "i <3javascript"? 69 00:03:56,900 --> 00:03:58,980 As een van dié is die geval, 70 00:03:58,980 --> 00:04:01,980  dan is ons net gaan om "sukses" te druk, en dan het ons toegang. 71 00:04:01,980 --> 00:04:07,690 Anders gaan ons te druk "ongeldige login" en dan, natuurlik, 72 00:04:07,690 --> 00:04:11,120  sedert skets snare malloc se geheue, ons gratis gebruikersnaam en wagwoord. 73 00:04:11,120 --> 00:04:15,560 Dit is 'n triviale login program, 74 00:04:15,560 --> 00:04:18,110 en as jy dink oor wanneer jy inteken in die toestel, 75 00:04:18,110 --> 00:04:22,350 dit is redelik soortgelyk of selfs aan te meld by jou rekenaar - 76 00:04:22,350 --> 00:04:24,930 daar is net 'n paar login program wat gee jou toegang. 77 00:04:24,930 --> 00:04:31,840 Hier, ons gebeur harde-gekodeerde "rob", "thisiscs50", "Tommy, 'i <3javascript" te hê, 78 00:04:31,840 --> 00:04:34,950 maar waarskynlik is daar is 'n paar lêer iewers op jou bedryfstelsel 79 00:04:34,950 --> 00:04:38,690 wat het 'n lys van gebruikers name wat aan die stelsel kan aanteken 80 00:04:38,690 --> 00:04:41,740 en 'n lys van wagwoorde wat verband hou met dié gebruikersnaam. 81 00:04:41,740 --> 00:04:46,090 Gewoonlik is die wagwoorde is net nie gestoor in skoonteks soos hierdie. 82 00:04:46,090 --> 00:04:50,360 Daar is 'n soort van enkripsie, maar dit sal doen vir ons 'n voorbeeld. 83 00:04:50,360 --> 00:04:57,000 >> Kom oor na ons samesteller - 84 00:04:57,020 --> 00:05:00,780 dit gaan baie eenvoudig. 85 00:05:00,780 --> 00:05:04,800 Ons moet ten minste 'n lêer te spesifiseer wat ons wil stel, 86 00:05:04,800 --> 00:05:10,200 en dan hier - hierdie lyne 87 00:05:10,200 --> 00:05:12,520 is net die lees van 'n 'n lêer. 88 00:05:12,520 --> 00:05:16,080 Dit lees die hele lêer in 'n groot buffer, 89 00:05:16,080 --> 00:05:19,000 en dan sal ons nul-ons buffer beëindig soos altyd, 90 00:05:19,000 --> 00:05:21,000 en uiteindelik het ons net stel die lêer. 91 00:05:21,000 --> 00:05:24,090 Ons gaan nie om te kyk na Hoe stel is eintlik geïmplementeer, 92 00:05:24,090 --> 00:05:26,820 maar as 'n wenk, dit roep net kletteren. 93 00:05:26,820 --> 00:05:32,370 Ons gaan hierdie program te gebruik om dinge op te stel in plaas van kletteren. 94 00:05:32,370 --> 00:05:39,260 Een probleem wat ons begin met ons sien ons wil ons samesteller te stel, 95 00:05:39,260 --> 00:05:43,620 maar as ons nie gaan kletteren te gebruik, ek weet nie wat ek gaan te stel. 96 00:05:43,620 --> 00:05:46,700 Dit is 'n algemene probleem bekend as Opstarten. 97 00:05:46,700 --> 00:05:53,080 So, net hierdie keer, ek gaan kletteren te gebruik om ons samesteller te stel. 98 00:05:53,080 --> 00:05:58,800 >> As jy dink van die GCC en kletteren - 99 00:05:58,800 --> 00:06:03,200 hierdie programme, is voortdurend die samestellers word opgedateer, 100 00:06:03,200 --> 00:06:10,010 en die opstellers is saamgestel met GCC en kletteren. 101 00:06:10,010 --> 00:06:14,890 Kletteren is net een groot C of C + + program, 102 00:06:14,890 --> 00:06:19,510 sodat die vertaler hulle gebruik om te stel wat kletteren. 103 00:06:19,510 --> 00:06:26,820 Hier, nou, ons is net gaan om te word deur gebruik te maak van ons samesteller ons samesteller te stel, 104 00:06:26,820 --> 00:06:33,830 en ons kan selfs sê - "/ samesteller.", "compiler.c", "compile.c", "-o compiler". 105 00:06:33,830 --> 00:06:37,250 Let op dit is die presiese opdrag Ek het vooruit gehardloop - 106 00:06:37,250 --> 00:06:41,330 vervang net kletteren met '/ compiler. ". 107 00:06:41,330 --> 00:06:44,990 En nou het ons ander samesteller, maar dit is presies dieselfde. 108 00:06:44,990 --> 00:06:47,510 Dit is dan net kletteren. 109 00:06:47,510 --> 00:06:55,050 >> Ons gaan ons vertaler te gebruik om ons login program saam te stel. 110 00:06:55,050 --> 00:07:03,030 Okay - "/ compiler login.c-o login". 111 00:07:03,030 --> 00:07:06,160 So, undefined verwysing na "GetString". 112 00:07:06,160 --> 00:07:11,250 Het jy 'n "-lcs50". Okay. 113 00:07:11,250 --> 00:07:13,790 Ek nou het ons login program. 114 00:07:13,790 --> 00:07:16,790 Running dit ontvang "Voer jou gebruikersnaam". 115 00:07:16,790 --> 00:07:22,140 Een voorbeeld was beroof. Tik asseblief jou wagwoord - thisiscs50. 116 00:07:22,140 --> 00:07:24,930 En sukses! Ek kry toegang. 117 00:07:24,930 --> 00:07:28,350 Loop dit weer en toetrede tot n ongeldige wagwoord 118 00:07:28,350 --> 00:07:30,350 of ongeldige gebruikernaam en wagwoord - 119 00:07:30,350 --> 00:07:32,860 ongeldig login. 120 00:07:32,860 --> 00:07:37,740 Okay. Niks interessant oor dit so ver. 121 00:07:37,740 --> 00:07:43,100 Maar, laat ons neem 'n blik op die login weer - 122 00:07:43,100 --> 00:07:47,850 en dit gaan na 'n ietwat triviale voorbeeld te wees, 123 00:07:47,850 --> 00:07:59,330 maar laat ons voeg 'n anders hier en sê, else if ((strcmp (gebruikersnaam, "hacker") == 0 && 124 00:07:59,330 --> 00:08:14,510 strcmp (wagwoord "LOLihackyou") == 0)) 125 00:08:14,510 --> 00:08:26,280 so nou, printf ("Hacked Jy het nou toegang \ n!."); okay. 126 00:08:26,280 --> 00:08:36,240 Opstel van hierdie compiler login.c-o login-lcs50 - 127 00:08:36,240 --> 00:08:40,190 nou hardloop Teken in - en as ek my gebruikersnaam hacker 128 00:08:40,190 --> 00:08:44,740 en wagwoord LOLihackedyou - 129 00:08:44,740 --> 00:08:47,780 Het ek tik dit verkeerd is in daar voor? 130 00:08:47,780 --> 00:08:52,990 By login.c--ihack - I'll nie gekap, want ek dink ek doen dit later. 131 00:08:52,990 --> 00:08:56,270 Okay. Hercompileren. 132 00:08:56,270 --> 00:09:01,500 Re-loop - hacker - LOLihackedyou - 133 00:09:01,500 --> 00:09:03,650 Hacked! Jy het nou toegang. 134 00:09:03,650 --> 00:09:06,580 >> Daar nie blyk te wees dat veel van 'n verskil 135 00:09:06,580 --> 00:09:10,890 want dit is presies dieselfde tjek ek besig was om vir ander gebruikers name en wagwoorde. 136 00:09:10,890 --> 00:09:17,720 Plus, die groot ding is dat as ander mense kyk op hierdie login.c - 137 00:09:17,720 --> 00:09:24,020 sê, as ek verby dit af na my maat, en hulle hierdie lêer oop te maak, 138 00:09:24,020 --> 00:09:29,870 en hulle dit lees, sal hulle sien - okay, waarom het jy hierdie reëls van die kode hier? 139 00:09:29,870 --> 00:09:33,320 Dit is natuurlik nie iets wat moet in jou program. 140 00:09:33,320 --> 00:09:41,590 In sommige programme - soos enige eiendom sagteware wat nie open-source - 141 00:09:41,590 --> 00:09:46,200 kan jy nooit sien dat hierdie reëls van die kode. 142 00:09:46,200 --> 00:09:50,440 Iets soos Skype of iets - vir al wat jy weet, 143 00:09:50,440 --> 00:09:57,600 Skype is op jou rekenaar en daar is slegs 'n paar spesifieke gebruikersnaam wagwoord kombinasie 144 00:09:57,600 --> 00:10:01,580 wat in 'n spesiale manier aan te meld by Skype. 145 00:10:01,580 --> 00:10:04,230 Ons weet nie oor dit nie, en mense weet nie oor dit, 146 00:10:04,230 --> 00:10:09,640 want hulle kry nie die bronkode te lees om te sien dat daar is hierdie gat. 147 00:10:09,640 --> 00:10:11,800 >> Wat noem ons dit - 148 00:10:11,800 --> 00:10:16,530 maar dit is nie 'n baie slim voorbeeld - 149 00:10:16,530 --> 00:10:18,970 Dit staan ​​bekend as 'n agterdeur. 150 00:10:18,970 --> 00:10:22,320 As jy dink van die agterdeur van jou huis. 151 00:10:22,320 --> 00:10:26,640 Hier, as ek met die gebruikersnaam "rob" of "Tommy, bekragtig 152 00:10:26,640 --> 00:10:28,580 dit sou wees soos die gebruik van die "voordeur." 153 00:10:28,580 --> 00:10:33,700 Dit is die manier waarop ek veronderstel is om veilig te meld. 154 00:10:33,700 --> 00:10:37,630 Maar as ek gaan met hierdie gebruikersnaam en wagwoord 155 00:10:37,630 --> 00:10:40,630 dan is dit die gebruik van die "agterdeur." 156 00:10:40,630 --> 00:10:42,810 Dit was nie die opsetlike manier om te kry in die program, 157 00:10:42,810 --> 00:10:45,350 maar dit werk nog steeds. 158 00:10:45,350 --> 00:10:49,160 En mense in die algemeen is nie veronderstel om te weet oor hierdie agterste deure. 159 00:10:49,160 --> 00:10:53,050 Ons gaan om dit te verbeter. 160 00:10:53,050 --> 00:10:55,610 Kom ons terugkeer hierdie aan ons oorspronklike login.c, 161 00:10:55,610 --> 00:11:05,510 en laat ons neem 'n blik op ons nuwe compiler. Okay. 162 00:11:05,510 --> 00:11:08,460 Alles hier is presies dieselfde. 163 00:11:08,460 --> 00:11:10,460 Ons lees van die hele lêer in 'n buffer. 164 00:11:10,460 --> 00:11:14,400 Alles neer hier is dieselfde. 165 00:11:14,400 --> 00:11:16,180 Ons het net die lêer saamgestel. 166 00:11:16,180 --> 00:11:19,770 Maar nou het ek hierdie groot as hier 167 00:11:19,770 --> 00:11:24,140 wat sê, as die lêer dat ek toevallig op die samestelling van login.c is, 168 00:11:24,140 --> 00:11:27,390 dan doen ek iets besonders. 169 00:11:27,390 --> 00:11:29,900 Wat is dit iets besonders? 170 00:11:29,900 --> 00:11:33,820 Ek sien hier 'n paar string genoem "hack", 171 00:11:33,820 --> 00:11:35,950 en kyk na hierdie reëls van die kode 172 00:11:35,950 --> 00:11:41,990 dit is die dieselfde reëls van die kode - ek dink ek het gebruik 'ihack' en nie 'ihacked "voor - 173 00:11:41,990 --> 00:11:44,240 kyk na hierdie reëls van die kode, 174 00:11:44,240 --> 00:11:47,880 hulle is presies dieselfde reëls van die kode wat ek gehad het in login.c voor. 175 00:11:47,880 --> 00:11:51,130 Maar nou, in plaas van met hulle in login.c, 176 00:11:51,130 --> 00:11:54,290 Ek gaan om dit in my samesteller. 177 00:11:54,290 --> 00:12:00,240 >> Dit is die reëls van die kode wat ek gaan om te wil te voeg in login.c. 178 00:12:00,240 --> 00:12:06,350 Hierdie lyne van kode - die buffer wat oorspronklik my login.c gehou 179 00:12:06,350 --> 00:12:11,080 is nie langer gaan om groot genoeg te wees, want nou wil ek ook voeg hierdie hack 180 00:12:11,080 --> 00:12:12,940 in die middel van my program. 181 00:12:12,940 --> 00:12:16,350 Al hierdie dinge doen, is die skep van 'n nuwe buffer wat groot genoeg is - 182 00:12:16,350 --> 00:12:22,020 beide vir die oorspronklike lêer en die ekstra reëls van die kode - die hack - wat ek wil hê om daar te voeg. 183 00:12:22,020 --> 00:12:24,920 Hier is iets om op te let - 184 00:12:24,920 --> 00:12:29,200 char * patroon = "/ / ontken hulle toegang!" 185 00:12:29,200 --> 00:12:33,760 As ons terugkyk na by login.c, 186 00:12:33,760 --> 00:12:37,690 sien ons hier kommentaar - ontken hulle toegang! 187 00:12:37,690 --> 00:12:42,360 Hierdie kommentaar In login.c, heeltemal onskadelik lyk, 188 00:12:42,360 --> 00:12:48,270 so vermoed jy sou nie enige kwaadwillige bedoeling met net hierdie kommentaar. 189 00:12:48,270 --> 00:12:55,600 Maar in ons samesteller, ons spesifiek gaan om te kyk vir hierdie lyn van kode, 190 00:12:55,600 --> 00:12:57,600 en dan wanneer ons dit vind - 191 00:12:57,600 --> 00:13:03,330 hierdie reëls van die kode is die invoeging van ons hack in daardie posisie. 192 00:13:03,330 --> 00:13:06,910 Dus, is ons oor die hele login.c iterating, 193 00:13:06,910 --> 00:13:12,080 ons is die invoeging van daardie hack presies waar dit sê ontken hulle toegang, 194 00:13:12,080 --> 00:13:15,890 en dan het ons die opstel van - nie die oorspronklike login.c 195 00:13:15,890 --> 00:13:20,340 maar die nuwe login.c met daardie hack ingevoeg by 'ontken hulle toegang. 196 00:13:20,340 --> 00:13:29,190 >> Nou wil ek my nuwe samesteller met daardie hack wat betrokke is op te stel. 197 00:13:29,190 --> 00:13:36,900 Ek gaan nie geratel te gebruik, so laat kopieer die samesteller ons gebruik voor 198 00:13:36,900 --> 00:13:48,420 en gebruik dit - so, samesteller compiler.c compile.c-o evil_compiler. 199 00:13:48,420 --> 00:13:50,870 Nou is ons slegte samesteller - 200 00:13:50,870 --> 00:13:54,310 as ons gebruik maak van ons bose samesteller enige ander lêer saam te stel, 201 00:13:54,310 --> 00:13:57,980 die lêer sal stel as dit moet. 202 00:13:57,980 --> 00:13:59,980 Dit is heeltemal normaal. 203 00:13:59,980 --> 00:14:06,870 Maar as ons gebruik maak van ons bose samesteller te stel login - 204 00:14:06,870 --> 00:14:14,920 so, / evil_compiler login.c-o login-lcs50 -. 205 00:14:14,920 --> 00:14:21,310 soek by login.c weer, is daar absoluut niks in hier. 206 00:14:21,310 --> 00:14:25,770 Dit is ons gewone "As dit is óf beroof of tommy ons in, anders is ons uit '. 207 00:14:25,770 --> 00:14:31,620 Maar toe loop ons ons uitvoerbare, sal dit werk soos gewoonlik. 208 00:14:31,620 --> 00:14:36,640 Loop weer - hacker, LOLihackyou - 209 00:14:36,640 --> 00:14:39,000 Hacked! Jy het nou toegang. 210 00:14:39,000 --> 00:14:43,560 Just looking by login.c, sou jy nie dink iets is verkeerd. 211 00:14:43,560 --> 00:14:46,960 Maar die vertaler wat gebruik word op te stel login.c 212 00:14:46,960 --> 00:14:53,820 is spesifiek ontwerp om hierdie hack in die program in te voeg. 213 00:14:53,820 --> 00:14:57,320 Ons het net verskuif ons oorspronklike probleem. 214 00:14:57,320 --> 00:15:02,880 Oorspronklik, het ons hierdie reëls van die kode in login.c dat as iemand anders kyk na hulle, 215 00:15:02,880 --> 00:15:05,470 hulle wil wees, waarom is dit hier? 216 00:15:05,470 --> 00:15:09,550 Maar as iemand gebeur om te kyk na ons samesteller, 217 00:15:09,550 --> 00:15:12,140 hulle sal kyk na hierdie reëls van die kode en sê, 218 00:15:12,140 --> 00:15:15,290 waarom is dit hier? 219 00:15:15,290 --> 00:15:17,210 Dus, het ons nie heeltemal ons probleem opgelos. 220 00:15:17,210 --> 00:15:22,510 Maar ons kan hierdie idee weer te gebruik. 221 00:15:22,510 --> 00:15:26,260 >> 'N blik op ons derde weergawe van die samesteller, 222 00:15:26,260 --> 00:15:32,500 dit is dieselfde idee. 223 00:15:32,500 --> 00:15:36,240 Ons lees die hele lêer in 'n buffer hier, 224 00:15:36,240 --> 00:15:39,660 ons stel om die lêer af hier, 225 00:15:39,660 --> 00:15:44,220 en ek het 'n soort van die string hack hier, 226 00:15:44,220 --> 00:15:47,710 maar let op die lêer wat ek nou eintlik is inbraak. 227 00:15:47,710 --> 00:15:52,260 Ek is inbraak compiler.c 228 00:15:52,260 --> 00:15:54,590 nie login.c. 229 00:15:54,590 --> 00:15:57,780 Maar wat ek die invoeging in compiler.c? 230 00:15:57,780 --> 00:16:04,600 Ek is die invoeging van hierdie kode, wat is die presiese kode in ons vorige samesteller, 231 00:16:04,600 --> 00:16:10,540 wat veronderstel was om kode te voeg in login.c. 232 00:16:10,540 --> 00:16:13,360 Hier is ons as strcmp lêer login.c 233 00:16:13,360 --> 00:16:19,370 en voeg dan in login.c ons hack stuff. 234 00:16:19,370 --> 00:16:26,010 Hierdie nuwe samesteller is bedoel om 'n vertaler te skep 235 00:16:26,010 --> 00:16:30,390 wat bedoel is om te stel login kwaadwillig. 236 00:16:30,390 --> 00:16:34,320 Ons sal sien waarom wat ons help. 237 00:16:34,320 --> 00:16:40,630 Alles anders is dieselfde, so dit werk presies soos dit met ons vorige vertaler gewerk. 238 00:16:40,630 --> 00:16:45,550 Ons is net oor ons hele compile.c iterating. 239 00:16:45,550 --> 00:16:48,190 Maar nou in plaas van op soek na 'ontken hulle toegang, 240 00:16:48,190 --> 00:16:51,490 ons is op soek vir 'stel die lêer. " 241 00:16:51,490 --> 00:16:53,750 Waar is stel die lêer? 242 00:16:53,750 --> 00:16:57,210 Op soek na ons heeltemal onskuldig compiler.c, 243 00:16:57,210 --> 00:17:01,340 dit is reg hier aan die onderkant. 244 00:17:01,340 --> 00:17:06,500 Hierdie kommentaar - stel die lêer weer wat lyk heeltemal onskadelik. 245 00:17:06,500 --> 00:17:11,599 Maar, in ons kwaadwillige weergawe van die vertaler, 246 00:17:11,599 --> 00:17:16,550 ons gaan - reg voor daardie kommentaar - voeg hierdie kode 247 00:17:16,550 --> 00:17:20,690 wat bedoel is om kode te voeg wanneer die opstel van login.c. 248 00:17:20,690 --> 00:17:25,589 >> Daar is 'n baie vlakke van indirection hier. 249 00:17:25,589 --> 00:17:29,760 Kom se dit eintlik loop. 250 00:17:29,760 --> 00:17:37,360 Weereens, ons sal ons oorspronklike samesteller kopieer. 251 00:17:37,360 --> 00:17:48,260 Nou, die opstel - samesteller compiler.c compile.c-o evilest_compiler - 252 00:17:48,260 --> 00:17:52,640 en nou evilest_compiler. 253 00:17:52,640 --> 00:17:59,200 Evilest samesteller - as ons dat ons vertaler te stel, 254 00:17:59,200 --> 00:18:01,550 laat ons eintlik kyk. 255 00:18:01,550 --> 00:18:13,230 Evilest_compiler - bring dit verby is, al die pad terug na weergawe 1 van ons samesteller - 256 00:18:13,230 --> 00:18:19,640 weergawe 1 van ons samesteller wat net lees in die lêer en stel dit. 257 00:18:19,640 --> 00:18:24,780 Hier, weet ons dat evilest_compiler - wanneer dit stel hierdie lêer - 258 00:18:24,780 --> 00:18:29,890 kode te voeg reg hier voor stel om die lêer, 259 00:18:29,890 --> 00:18:38,510 en dat die kode is gaan om te kyk presies soos die kode van die tweede weergawe van ons samesteller 260 00:18:38,510 --> 00:18:42,240 wat het dit gedoen. 261 00:18:42,240 --> 00:18:46,450 Hierdie kode, wat bedoel is om te breek in login, 262 00:18:46,450 --> 00:18:56,480 gaan word ingevoeg in ons samesteller deur evilest samesteller. 263 00:18:56,480 --> 00:19:08,600 Kom ons gebruik evilest_compiler ons samesteller te stel. 264 00:19:08,600 --> 00:19:15,040 Nou sal ons gebruik samesteller, 265 00:19:15,040 --> 00:19:19,460 kom terug om aan te meld, 266 00:19:19,460 --> 00:19:25,280 en onthou hierdie login.c het absoluut niks verdags in dit. 267 00:19:25,280 --> 00:19:35,250 Maar met behulp van ons samesteller te stel login.c, 268 00:19:35,250 --> 00:19:38,430 Rob, thisiscs50, sukses. 269 00:19:38,430 --> 00:19:44,350 Let's login hacker, LOLihackyou, gekap! Jy het nou toegang. 270 00:19:44,350 --> 00:19:49,710 >> Erken dat dit was verskillend van weergawe 2 van ons samesteller. 271 00:19:49,710 --> 00:20:00,500 Die samesteller ons gebruik - Kom ons beweeg terug - kopie van login - 272 00:20:00,500 --> 00:20:01,880 Kom ons bring ons samesteller terug hier. 273 00:20:01,880 --> 00:20:06,360 Verwyder evilest samesteller. 274 00:20:06,360 --> 00:20:08,970 Al wat ons nou links is samesteller. 275 00:20:08,970 --> 00:20:10,950 As ons kyk na compiler.c, 276 00:20:10,950 --> 00:20:16,840 daar is absoluut niks daar wat blyk kwaadwillige op enige manier. 277 00:20:16,840 --> 00:20:22,390 As ons kyk na login.c, 278 00:20:22,390 --> 00:20:28,790 daar is absoluut niks in hier wat lyk kwaadwillige in enige manier. 279 00:20:28,790 --> 00:20:34,600 Maar, wanneer ons gebruik om ons samesteller te stel login.c, 280 00:20:34,600 --> 00:20:38,840 kry ons die gehackt weergawe van login.c. 281 00:20:38,840 --> 00:20:41,850 Wanneer ons ons samesteller gebruik om 'n nuwe weergawe van die vertaler op te stel, 282 00:20:41,850 --> 00:20:46,620 kry ons die gehackt weergawe van die vertaler. 283 00:20:46,620 --> 00:20:51,790 Nou as ons gaan uit en versprei ons samesteller uitvoerbare, 284 00:20:51,790 --> 00:20:59,280 en niemand sal weet dat daar iets is wat kwaadwillige daaroor. 285 00:20:59,280 --> 00:21:04,680 >> Dit is eintlik so in - Ek kan nie onthou die jaar - 286 00:21:04,680 --> 00:21:10,350 Ken Thompson, en hy het die Turing-toekenning - 287 00:21:10,350 --> 00:21:15,600 As jy nie bekend is met die Turing-toekenning, is dit byna altyd gedefinieer as die 288 00:21:15,600 --> 00:21:20,160 Nobelprys van rekenaarwetenskap, so dit is hoe ek dit sal definieer. 289 00:21:20,160 --> 00:21:24,100 Ken Thompson het 'n toespraak toe hy sy Turing-toekenning 290 00:21:24,100 --> 00:21:27,150 "Gedagtes oor Vertrouend Trust genoem." 291 00:21:27,150 --> 00:21:30,710 Basies, dit was die idee van sy toespraak. 292 00:21:30,710 --> 00:21:35,050 Behalwe plaas van ons samesteller, het hy gepraat oor GCC - 293 00:21:35,050 --> 00:21:37,250 net nog 'n samesteller soos kletteren - 294 00:21:37,250 --> 00:21:45,600 en wat hy gesê het, soos ons login.c, ons login.c lyk redelik nutteloos 295 00:21:45,600 --> 00:21:50,190 maar hy praat oor die werklike UNIX login.c. 296 00:21:50,190 --> 00:21:53,050 As jy inteken by jou toestel, 297 00:21:53,050 --> 00:21:56,070 daar is 'n paar login program wat loop. 298 00:21:56,070 --> 00:21:58,080 Dit was die aanmelding inligting wat hy kon praat. 299 00:21:58,080 --> 00:22:02,420 Dit was basies sy idee. 300 00:22:02,420 --> 00:22:09,080 Hy het gesê dat in die GCC, het hy in teorie kan geplant het 'n fout - 301 00:22:09,080 --> 00:22:12,290 nie 'n fout nie, maar 'n kwaadwillige kode - 302 00:22:12,290 --> 00:22:16,860 dat wanneer die samestelling van die login funksie - die aanmelding lêer - 303 00:22:16,860 --> 00:22:23,700 sou 'n agterdeur voeg, sodat hy kan gaan na absoluut enige UNIX-stelsel in die wêreld 304 00:22:23,700 --> 00:22:27,360 en met 'n paar spesifieke gebruikersnaam en wagwoord inteken. 305 00:22:27,360 --> 00:22:33,710 Op die oomblik, GCC was pretty much die samesteller dat almal wat gebruik word vir enigiets. 306 00:22:33,710 --> 00:22:36,460 As iemand gebeur GCC te werk, 307 00:22:36,460 --> 00:22:40,880 dan sou hulle heropstel GCC met GCC, 308 00:22:40,880 --> 00:22:44,500 en jy sal kry nog steeds 'n slegte weergawe van GCC 309 00:22:44,500 --> 00:22:50,140 want dit is spesifiek saamgestel om te erken dat dit die vertaler is hercompileren. 310 00:22:50,140 --> 00:22:57,360 En as jy ooit gebruik GCC 'n login.c lêer te hercompileren, 311 00:22:57,360 --> 00:23:03,550 dan sou dit voeg hierdie agterdeur wat hy kon gebruik om aan te meld by enige rekenaar. 312 00:23:03,550 --> 00:23:08,750 >> Dit was al die teoretiese, maar dat bepaalde omstandigheid teoretiese was, 313 00:23:08,750 --> 00:23:12,440 maar die idees is baie real. 314 00:23:12,440 --> 00:23:18,250 In 2003, was daar 'n soortgelyke voorbeeld waar - 315 00:23:18,250 --> 00:23:21,290 ons neem 'n blik op hierdie lêer, 316 00:23:21,290 --> 00:23:25,870 en dit het absoluut niks om eintlik te doen met dit nie, maar die fout is soortgelyk. 317 00:23:25,870 --> 00:23:29,390 Hierdie lêer definieer net 'n funksie genoem verdeel. 318 00:23:29,390 --> 00:23:31,780 Dit neem 'n argument, 'n argument b, 319 00:23:31,780 --> 00:23:34,270 en die bedoeling is om te doen 'n deur b gedeel word. 320 00:23:34,270 --> 00:23:37,230 Maar is dit nie 'n paar foutopsporing, 321 00:23:37,230 --> 00:23:40,070 sodat ons weet dinge is vreemd as b gebeur nul te ewenaar. 322 00:23:40,070 --> 00:23:44,900 As b nul is, dan het ons verdeel dit in 2 gevalle. 323 00:23:44,900 --> 00:23:46,900 Jy kan reeds sien die fout. 324 00:23:46,900 --> 00:23:51,840 Die eerste geval - as 'n nul is, dan moet ons dit doen zero gedeel deur nul, 325 00:23:51,840 --> 00:23:54,300 en ons net sê dit is ongedefinieer. 326 00:23:54,300 --> 00:23:56,250 Die tweede geval - as 'n nie nul is nie, 327 00:23:56,250 --> 00:24:00,580 dan is dit iets soos 1 gedeel deur nul, en ons het net noem dat die oneindigheid. 328 00:24:00,580 --> 00:24:03,730 Anders moet ons terugkeer die gewone gedeel deur b. 329 00:24:03,730 --> 00:24:06,390 En so hier, ons loop die 3 gevalle, 330 00:24:06,390 --> 00:24:13,740 en ons eintlik loop verdeel - dit skree dit vir my - 331 00:24:13,740 --> 00:24:21,330 so, klang se waarskuwings te ignoreer - 332 00:24:21,330 --> 00:24:24,500 die einde van 'n nie-nietig funksie - glo ek het nie stel dit vooraf. 333 00:24:24,500 --> 00:24:26,500 Terug 0. 334 00:24:26,500 --> 00:24:28,900 Maak verdeel - alles reg. 335 00:24:28,900 --> 00:24:32,470 , Ons sien met / kloof. 3, Infinity, Infinity. 336 00:24:32,470 --> 00:24:39,150 Zero gedeel deur nul moet nie teruggekeer het nie oneindigheid. 337 00:24:39,150 --> 00:24:42,840 En as jy nog nie uitgepluis het die fout nie - of het dit nie gesien voor - 338 00:24:42,840 --> 00:24:46,800 sien ons dat ons a = 0 doen. 339 00:24:46,800 --> 00:24:52,610 Ons waarskynlik bedoel om 'n == 0. Waarskynlik. 340 00:24:52,610 --> 00:24:58,640 >> Maar dit was eintlik iets wat, weer, in 2003, die Linux-kern - 341 00:24:58,640 --> 00:25:02,260 sodat ons apparaat maak gebruik van die Linux-kern - 342 00:25:02,260 --> 00:25:05,550 'n Linux-bedryfstelsel gebruik maak van die Linux-kern - 343 00:25:05,550 --> 00:25:11,610 so 'n fout wat baie soortgelyk aan hierdie opgedaag het. 344 00:25:11,610 --> 00:25:15,180 Die idee agter hierdie fout was - 345 00:25:15,180 --> 00:25:18,820 weer, was daar net 'n funksie wat genoem is, en dit het 'n bietjie van die fout kontrole. 346 00:25:18,820 --> 00:25:24,300 Daar was 'n paar spesifieke insette wat hierdie fout kontrole - 347 00:25:24,300 --> 00:25:30,210 dit sou gewees het soos, alles reg, kan jy nie noem hierdie funksie met 'n deler van 0. 348 00:25:30,210 --> 00:25:35,070 So, ek gaan net 'n fout terug. 349 00:25:35,070 --> 00:25:38,090 Behalwe, dit was nie so onskuldig as net die opstel van 'n gelyk is aan 0. 350 00:25:38,090 --> 00:25:46,920 In plaas daarvan, het hierdie lyn van die kode beland om iets te doen meer soos user = administrateur. 351 00:25:46,920 --> 00:25:50,500 Of gebruiker = supergebruiker. 352 00:25:50,500 --> 00:25:59,170 Dit was 'n onskuldige - met die eerste oogopslag - fout waar dit maar net kon gewees het redelike 353 00:25:59,170 --> 00:26:01,560 dat ek net wou iets spesifiek aan te meld 354 00:26:01,560 --> 00:26:05,150 indien die gebruiker gebeur na die supergebruiker administrateur te wees. 355 00:26:05,150 --> 00:26:11,220 Maar dan weer dink oor dit, die persoon wou dit lyk soos 'n eenvoudige tikfout, 356 00:26:11,220 --> 00:26:14,330 maar as hierdie kode het eintlik is vrygestel, 357 00:26:14,330 --> 00:26:21,580 dan sou jy in staat gewees het om te hack in 'n stelsel deur 'n spesifieke vlag - 358 00:26:21,580 --> 00:26:25,200 in hierdie geval b = 0 - 359 00:26:25,200 --> 00:26:28,020 en dit sal outomaties die gebruiker maak die administrateur, 360 00:26:28,020 --> 00:26:30,400 en dan het hy volle beheer. 361 00:26:30,400 --> 00:26:32,540 Dit het gebeur in 2003. 362 00:26:32,540 --> 00:26:35,700 >> Dit net so gebeur dat die enigste rede waarom dit is gevang 363 00:26:35,700 --> 00:26:39,200 was omdat daar gebeur het tot 'n outomatiese stelsel te wees 364 00:26:39,200 --> 00:26:41,540 wat die verandering in hierdie lêer opgemerk 365 00:26:41,540 --> 00:26:44,560 wat nooit moes gewees het deur 'n mens verander. 366 00:26:44,560 --> 00:26:47,580 Die lêer moet slegs outomaties gegenereer. 367 00:26:47,580 --> 00:26:49,780 Dit net so gebeur dat iemand aangeraak - 368 00:26:49,780 --> 00:26:52,460 Wel, die persoon wat wou om te hack aangeraak hierdie lêer, 369 00:26:52,460 --> 00:26:55,450 en die rekenaar gevang dat raak. 370 00:26:55,450 --> 00:27:01,750 So, hulle verander het en eers later besef wat 'n ramp dit sou gewees het 371 00:27:01,750 --> 00:27:04,830 indien dit gekry het in die werklike wêreld. 372 00:27:04,830 --> 00:27:08,220 >> Jy mag dink dat - kom terug na ons samesteller voorbeeld - 373 00:27:08,220 --> 00:27:14,290 Selfs al kan ons nie sien nie - kyk na die bronkode - 374 00:27:14,290 --> 00:27:17,490 dat enigiets in die besonder is verkeerd, 375 00:27:17,490 --> 00:27:25,460 as ons eintlik kyk na die binêre kode van die vertaler, 376 00:27:25,460 --> 00:27:28,670 ons sal sien dat iets verkeerd is. 377 00:27:28,670 --> 00:27:31,260 As 'n voorbeeld, as ons hardloop die snare funksioneer - 378 00:27:31,260 --> 00:27:34,930 wat net gaan om te kyk oor 'n lêer en druk uit alle stringe wat dit kan vind - 379 00:27:34,930 --> 00:27:37,990 as ons hardloop stringe op ons samesteller, 380 00:27:37,990 --> 00:27:42,400 sien ons dat die een string wat dit vind, is hierdie vreemde - 381 00:27:42,400 --> 00:27:45,500 else if (strcmp (gebruikersnaam, "hacker") - blah, blah, blah. 382 00:27:45,500 --> 00:27:52,570 As iemand gebeur te wees paranoïes genoeg om te vertrou nie hul samesteller, 383 00:27:52,570 --> 00:27:56,690 hulle kon hardloop snare en dit sien, 384 00:27:56,690 --> 00:28:00,430 en dan sal hulle weet dat daar was iets verkeerd met die werklike binêre. 385 00:28:00,430 --> 00:28:07,250 Maar, snare was onvermydelik iets wat is saamgestel. 386 00:28:07,250 --> 00:28:11,590 So, wat is om te sê dat ons samesteller net nie meer spesiale kode 387 00:28:11,590 --> 00:28:19,240 wat sê, as stringe word ooit op ons samesteller, uitset nie almal van daardie kwaadwillige kode. 388 00:28:19,240 --> 00:28:23,980 >> Dieselfde idee as ons wil dis bymekaar laat kom die lêer - 389 00:28:23,980 --> 00:28:30,440 het ons geleer dat die assembler bring ons van die vergadering kode na 'n masjien-kode - 390 00:28:30,440 --> 00:28:36,010 ons kan gaan in die teenoorgestelde rigting - objdump-d samesteller - 391 00:28:36,010 --> 00:28:38,770 sal ons die vergadering van ons kode. 392 00:28:38,770 --> 00:28:41,730 Kyk na hierdie, 393 00:28:41,730 --> 00:28:47,480 dit is redelik kripties, maar as ons wou, kon ons kyk deur middel van hierdie 394 00:28:47,480 --> 00:28:51,700 en rede, wag, daar is iets aan die gang hier in wat moet nie gaan op, 395 00:28:51,700 --> 00:28:59,380 en dan sal ons besef dat die vertaler iets kwaadwillige doen. 396 00:28:59,380 --> 00:29:03,950 Maar, net soos strykers, wat om te sê objdump was nie spesiale cased. 397 00:29:03,950 --> 00:29:11,380 Basies, dit kom neer op kan jy nie vertrou nie. 398 00:29:11,380 --> 00:29:14,310 Die punt van die papier "Vertrouend Trust" genoem is 399 00:29:14,310 --> 00:29:17,900 in die algemeen, ons vertrou ons samesteller. 400 00:29:17,900 --> 00:29:21,700 Jy stel jou kode en verwag om dit te doen wat jy vra om dit te doen. 401 00:29:21,700 --> 00:29:26,440 Maar, hoekom moet jy die samesteller vertrou? 402 00:29:26,440 --> 00:29:32,120 Jy het nie skryf die vertaler. Jy weet nie wat die samesteller eintlik nie noodwendig doen. 403 00:29:32,120 --> 00:29:36,870 Wie is om te sê jy kan vertrou? 404 00:29:36,870 --> 00:29:40,050 Maar selfs dan, goed, miskien kan ons vertrou dat die vertaler. 405 00:29:40,050 --> 00:29:44,670 Daar is tien duisende van mense wat op hierdie gekyk het. 406 00:29:44,670 --> 00:29:51,360 Iemand moet erken het iets met die samesteller was. 407 00:29:51,360 --> 00:29:55,100 >> Wat as ons net 1 vlak dieper gaan? 408 00:29:55,100 --> 00:29:59,450 Dit kan selfs jou verwerker. 409 00:29:59,450 --> 00:30:01,250 So belaglik soos dit moontlik kan wees, 410 00:30:01,250 --> 00:30:06,690 miskien is daar 'n paar uitvaagsel die werknemer by Intel wat hierdie verwerkers skep 411 00:30:06,690 --> 00:30:12,400 dat wanneer dat die verwerker merk dat jy 'n opdrag loop 412 00:30:12,400 --> 00:30:14,570 wat bedoel is om aan te meld by die rekenaar, 413 00:30:14,570 --> 00:30:19,230 die verwerker sal aanvaar sommige spesifieke gebruikersnaam en wagwoord kombinasie. 414 00:30:19,230 --> 00:30:21,530 Dit sou wild ingewikkeld wees, 415 00:30:21,530 --> 00:30:24,790 maar iemand kan dit doen. 416 00:30:24,790 --> 00:30:29,350 Op daardie punt, jy is regtig gaan om oop te maak jou rekenaar om te kyk na die verwerker 417 00:30:29,350 --> 00:30:35,970 en die gebruik van 'n mikroskoop te erken dat hierdie bane word nie lined up soos hulle behoort te wees? 418 00:30:35,970 --> 00:30:39,730 Niemand is ooit gaan om daardie fout te vang. 419 00:30:39,730 --> 00:30:45,570 Op 'n sekere punt, jy moet net om op te gee en vertrou iets. 420 00:30:45,570 --> 00:30:48,390 Die meeste mense vertrou die vertaler nie op hierdie punt. 421 00:30:48,390 --> 00:30:55,760 Dit is nie noodwendig dat jy moet sê. 422 00:30:55,760 --> 00:30:59,350 Op soek na 'n ietwat berugte video - 423 00:30:59,350 --> 00:31:09,280 [Dramatiese musiek speel] 424 00:31:09,280 --> 00:31:13,270 [Dit is 'n UNIX-stelsel. Ek weet dit.] 425 00:31:13,270 --> 00:31:14,470 [Dit is al die lêers -] 426 00:31:14,470 --> 00:31:18,950 Sy het gesê, "Dit is 'n UNIX-stelsel ek weet dit." 427 00:31:18,950 --> 00:31:21,760 Vervang UNIX met alles wat jou gunsteling bedryfstelsel is - 428 00:31:21,760 --> 00:31:25,230 sy kon gesê het, "Dit is 'n Windows-stelsel ek weet dit." 429 00:31:25,230 --> 00:31:29,710 Dit is 'n heeltemal betekenisloos verklaring, 430 00:31:29,710 --> 00:31:34,450 maar vir al wat ons weet, het sy 'n agterdeur gebeur in die UNIX-stelsel om te weet. 431 00:31:34,450 --> 00:31:38,840 Sy weet sommige gebruikersnaam / wagwoord kombinasie wat sal eintlik laat haar 432 00:31:38,840 --> 00:31:41,540 alles doen wat sy wil. 433 00:31:41,540 --> 00:31:49,000 >> Alles reg. Die moraal van vandag is basies wat jy nie kan vertrou nie enigiets. 434 00:31:49,000 --> 00:31:52,620 Selfs dinge wat jy skryf - het jy nie skryf die vertaler. 435 00:31:52,620 --> 00:31:53,870 Die samesteller kan sleg wees. 436 00:31:53,870 --> 00:31:59,140 Selfs as jy het skryf die samesteller, kan die ding wat die bestuur van die samesteller sleg wees. 437 00:31:59,140 --> 00:32:05,210 (Lag) Daar is nie veel wat jy kan doen. 438 00:32:05,210 --> 00:32:09,050 Die wêreld is gedoem. 439 00:32:09,050 --> 00:32:11,570 Na Dawid! 440 00:32:11,570 --> 00:32:19,540 [Applous] 441 00:32:19,540 --> 00:32:21,340 >> [Dawid] Dankie. Dit was baie neerdrukkend. 442 00:32:21,340 --> 00:32:23,910 Maar inderdaad, Rob korrek is. 443 00:32:23,910 --> 00:32:27,150 Ons het nie regtig 'n oplossing vir die, maar jy oor 'n paar oplossings te kry 444 00:32:27,150 --> 00:32:29,150 tot 'n meer gemeenskaplike verdediging. 445 00:32:29,150 --> 00:32:31,170 In afwagting van hierdie, wat Nate en ek het die verhoog daar doen 446 00:32:31,170 --> 00:32:33,950 is om te weet dat daar so baie skootrekenaars in hierdie kamer, 447 00:32:33,950 --> 00:32:37,020 ons het snuif al van die die wireless verkeer gaan deur middel van hierdie kamer vir die afgelope 20 minute 448 00:32:37,020 --> 00:32:39,260 gedurende Rob se praatjie, dus gaan ons 'n 2 minuut breek hier. 449 00:32:39,260 --> 00:32:41,740 Nate gaan op te rig, en dan gaan ons om te praat oor al die dinge 450 00:32:41,740 --> 00:32:46,380 ons kon gevind het. (Lag) 451 00:32:46,380 --> 00:32:51,990 >> Dus, kan ek oordryf 'n bietjie net ter wille van die drama, 452 00:32:51,990 --> 00:32:55,990 maar ons kon gewees het snuif al van jou wireless verkeer, want inderdaad, 453 00:32:55,990 --> 00:32:57,240 dit is so maklik. 454 00:32:57,240 --> 00:32:59,790 Maar daar is ook maniere wat jy kan verdedig teen hierdie, en so met wat, 455 00:32:59,790 --> 00:33:03,160 Ek gee jou Nate Hardison. >> [Nate] Sweet. 456 00:33:03,160 --> 00:33:06,300 (Applous) 457 00:33:06,300 --> 00:33:08,650 >> [Nate] Dankie, man. Ek waardeer die gejuig uit. 458 00:33:08,650 --> 00:33:12,790 Alles reg! Dit se spel week. Is julle ouens opgewonde? 459 00:33:12,790 --> 00:33:16,670 Hopelik sal dit gaan 'n groot wedstryd op Saterdag. 460 00:33:16,670 --> 00:33:20,220 Ek dink jy ouens op hierdie punt - dat jy 'n quiz op Woensdag 461 00:33:20,220 --> 00:33:24,430 al oor die kode, en ons het net sit deur middel van 'n wonderlike lesing deur Rob 462 00:33:24,430 --> 00:33:25,850 met 'n hele klomp van die C-kode in - 463 00:33:25,850 --> 00:33:28,330 is miskien 'n bietjie moeg van die kode. 464 00:33:28,330 --> 00:33:32,180 In hierdie deel, ons is eintlik nie van plan om 'n kode te hoegenaamd te raak. 465 00:33:32,180 --> 00:33:36,960 Ons is net gaan om te praat oor 'n tegnologie wat jy elke dag gebruik, 466 00:33:36,960 --> 00:33:39,790 dikwels vir baie, baie ure 'n dag, 467 00:33:39,790 --> 00:33:46,220 en ons sal praat oor die implikasies met sekuriteit dat daar. 468 00:33:46,220 --> 00:33:48,960 >> Ons het gepraat oor die loop van die semester 'n baie oor sekuriteit, 469 00:33:48,960 --> 00:33:53,030 en ons het begin met 'n bietjie van crypto. 470 00:33:53,030 --> 00:33:55,030 [Bdoh lv vwlqng!] 471 00:33:55,030 --> 00:33:57,890 En terwyl julle ouens is waarskynlik super-opgewonde om deurgangsnote aan mekaar 472 00:33:57,890 --> 00:33:59,890 in die klas met behulp van 'n keiser cipher soos hierdie een, 473 00:33:59,890 --> 00:34:03,870 In werklikheid is daar is 'n paar meer pret te wees het toe jy eintlik praat oor die veiligheid 474 00:34:03,870 --> 00:34:05,870 en dat die soort van dinge. 475 00:34:05,870 --> 00:34:09,090 Vandag gaan ons 'n paar tegnologie te dek 476 00:34:09,090 --> 00:34:13,650 dat mense eintlik gebruik in die werklike wêreld allerhande dinge om te doen 477 00:34:13,650 --> 00:34:18,360 snuif mense se pakkies te eintlik gaan in en 478 00:34:18,360 --> 00:34:20,409 breek in mense se bankrekeninge en al van dat. 479 00:34:20,409 --> 00:34:23,460 Dit is 'n wettige gereedskap wat ons praat oor 480 00:34:23,460 --> 00:34:26,320 met die uitsondering van moontlik een instrument. 481 00:34:26,320 --> 00:34:28,889 >> En ek wil net 'n vinnige disclaimer te maak. 482 00:34:28,889 --> 00:34:34,909 Wanneer ons praat oor hierdie dinge, ons praat oor hulle, sodat jy weet wat is daar buite, 483 00:34:34,909 --> 00:34:39,389 en jy is bewus van hoe om veilig te wees wanneer jy uit jou rekenaar met behulp van. 484 00:34:39,389 --> 00:34:44,000 Maar ons wil beslis nie om te impliseer dat jy hierdie gereedskap moet gebruik 485 00:34:44,000 --> 00:34:48,090 in jou dorm of jou huis, want jy kan hardloop in baie van die groot probleme. 486 00:34:48,090 --> 00:34:52,760 Dit is een rede vandag dat ons eintlik nie snuif jou pakkies. 487 00:34:52,760 --> 00:35:01,300 >> Alles reg. Verlede Maandag het ons gepraat oor die koekies, en HTTP-en verifikasie, 488 00:35:01,300 --> 00:35:05,920 en hoe Firesheep maak hierdie groot deur in jou Facebook-rekening, 489 00:35:05,920 --> 00:35:08,670 tot jou Hotmail-rekening - as iemand nog steeds met behulp van Hotmail - 490 00:35:08,670 --> 00:35:12,360 en baie ander rekeninge. 491 00:35:12,360 --> 00:35:16,980 'N baie van hierdie dinge gaan af op te bou van dat, 492 00:35:16,980 --> 00:35:22,070 maar eers, ek wil 'n vinnige toer te neem van hoe die internet het ontwikkel met verloop van tyd. 493 00:35:22,070 --> 00:35:27,490 Terug in die '90, kan julle ouens eintlik gedink het steek in 494 00:35:27,490 --> 00:35:29,880 jou rekenaars met een van hierdie. 495 00:35:29,880 --> 00:35:32,640 Nou doen ons nie dat so veel meer. 496 00:35:32,640 --> 00:35:37,230 Dit blyk eintlik dat ten einde 'n Ethernet-kabel in my laptop aan te sluit, 497 00:35:37,230 --> 00:35:41,710 Ek het nou een van hierdie adapters wat is 'n soort van gek te gebruik. 498 00:35:41,710 --> 00:35:47,580 >> In plaas daarvan, in 1997 het ons het hierdie nuwe, pret tegnologie 499 00:35:47,580 --> 00:35:54,960 gekom dat is bekend as IEEE 802,11, so dit is die wireless internet standaard 500 00:35:54,960 --> 00:36:00,430 Die IEEE is die beheerliggaam wat gee alle vorme van - 501 00:36:00,430 --> 00:36:04,770 publiseer alle vorme van standaarde met betrekking tot rekenaars. 502 00:36:04,770 --> 00:36:08,780 Die 802 standaarde is al oor die internet tegnologie. 503 00:36:08,780 --> 00:36:12,690 So 802,3, byvoorbeeld, is die Ethernet-standaard, 504 00:36:12,690 --> 00:36:17,120 802.15.1 glo ek is die Bluetooth-standaard, 505 00:36:17,120 --> 00:36:19,540 en 802,11 is alles oor wireless internet. 506 00:36:19,540 --> 00:36:24,150 In 1997 het hierdie uitgekom. Dit het nie heeltemal vang dadelik. 507 00:36:24,150 --> 00:36:30,200 Dit was nie tot 1999 en die 802.11b standaard uitgekom dat net het regtig gewild. 508 00:36:30,200 --> 00:36:36,330 >> Hoeveel van julle onthou wanneer rekenaars begin om uit te kom en wi-fi op hulle? 509 00:36:36,330 --> 00:36:38,330 Dit was soort van die koel, huh? 510 00:36:38,330 --> 00:36:41,260 Ek onthou my eerste laptop in die hoërskool, 511 00:36:41,260 --> 00:36:44,250 en dit het 'n wireless kaart in. 512 00:36:44,250 --> 00:36:49,580 My pa het dit vir my en het gesê dat Ek dit moet gebruik vir my kollege apps en al, 513 00:36:49,580 --> 00:36:53,030 en ek het geen idee hoe ek gaan om te kyk hierdie dinge aanlyn. 514 00:36:53,030 --> 00:36:54,640 Maar gelukkig het ek het 'n wireless kaart, so dit was pretty cool. 515 00:36:54,640 --> 00:37:04,090 Deesdae, jy sal ook sien, 802.11, wat is een van die ander baie gewilde 516 00:37:04,090 --> 00:37:06,090 wireless standaarde wat daar buite. 517 00:37:06,090 --> 00:37:08,660 Beide b en g is redelik verouderd op hierdie punt. 518 00:37:08,660 --> 00:37:12,580 Enigiemand wat weet watter weergawe die meeste mense is op die oomblik 519 00:37:12,580 --> 00:37:15,110 indien hulle nuwe wireless routers en daardie soort van dinge is te koop? 520 00:37:15,110 --> 00:37:24,290 N. Presies. Bingo. En dit blyk dat die ac standaard net uit te kom in 'n konsep vorm, 521 00:37:24,290 --> 00:37:28,050 en daar is ander weergawes op die pad. 522 00:37:28,050 --> 00:37:31,190 Met elk van hierdie standaarde wat ons besig is om meer bandwydte, 523 00:37:31,190 --> 00:37:33,900 meer data op 'n vinniger tempo. 524 00:37:33,900 --> 00:37:36,260 Hierdie dinge hou veranderende redelik vinnig. 525 00:37:36,260 --> 00:37:39,880 Dit maak dit ook sodat ons meer routers en alles wat fun stuff te koop. 526 00:37:39,880 --> 00:37:48,160 >> Kom ons praat oor wat draadlose kommunikasie is op sy kern. 527 00:37:48,160 --> 00:37:51,790 Met Ethernet en die ou dial-up modems, 528 00:37:51,790 --> 00:37:55,780 moes jy eintlik hierdie dinge wat jy in jou rekenaar ingeprop, 529 00:37:55,780 --> 00:37:59,820 en dan kan jy ingeprop in 'n modem van spesies, en dan kan jy dit ingeprop in 'n jack in jou muur. 530 00:37:59,820 --> 00:38:01,820 Jy het hierdie draadloos, reg? 531 00:38:01,820 --> 00:38:06,030 Die hele punt van wireless is om ontslae te raak van hierdie dinge. 532 00:38:06,030 --> 00:38:10,300 Ten einde dit te doen, wat ons het, is in wese 533 00:38:10,300 --> 00:38:13,960 'n radio kommunikasie waar ons wireless router - 534 00:38:13,960 --> 00:38:16,230 deur ons klein wireless ikoon - 535 00:38:16,230 --> 00:38:21,730 is verbind tot die internet met hierdie soliede pyltjie dui op 'n soort van die draadloos, 536 00:38:21,730 --> 00:38:24,640 maar wanneer jy 'n verbinding tot jou wireless router 537 00:38:24,640 --> 00:38:29,190 jy eintlik gebruik amper soos 'n walkie-talkie tussen 538 00:38:29,190 --> 00:38:31,960 jou rekenaar en jou wireless router. 539 00:38:31,960 --> 00:38:35,150 Wat is regtig cool oor hierdie is jy rond kan beweeg. 540 00:38:35,150 --> 00:38:40,900 Jy kan jou rekenaar voer oor Sanders, gaan surf die web, wat jy wil, 541 00:38:40,900 --> 00:38:43,240 net soos julle almal weet en liefde, 542 00:38:43,240 --> 00:38:46,030 en wat jy ooit hoef te word nie verbind aan enigiets. 543 00:38:46,030 --> 00:38:53,880 Vir hierdie om te werk, het ons beide hierdie ontvangs en transmissie. 544 00:38:53,880 --> 00:38:56,060 Dit is regtig soos wat walkie-talkie. 545 00:38:56,060 --> 00:39:03,800 >> Hierdie wireless router - wat in Sanders is onder hierdie stadium sit, reg hier - 546 00:39:03,800 --> 00:39:06,590 is altyd uitsaai en ontvangs, uitsaai en ontvangs, 547 00:39:06,590 --> 00:39:09,330 en net so, jou rekenaars is almal wat dieselfde soort van ding te doen, ook. 548 00:39:09,330 --> 00:39:12,840 Ons kan net nie hoor nie. 549 00:39:12,840 --> 00:39:17,900 Die ander ding wat jy kan doen is om jou verskeie rekenaars kan hê 550 00:39:17,900 --> 00:39:22,200 praat met die dieselfde wireless router. 551 00:39:22,200 --> 00:39:25,680 Die nader jy aan 'n router en weer, dit is 'n radio kommunikasie - 552 00:39:25,680 --> 00:39:30,320 hoe nader jy is, hoe beter is jou sein is, hoe beter is jou rekenaar "hoor" die router 553 00:39:30,320 --> 00:39:32,460 en kan kommunikeer met die Internet. 554 00:39:32,460 --> 00:39:39,520 As julle ooit by jou dorm by jou huis en jy wonder hoekom jou sein is sleg, 555 00:39:39,520 --> 00:39:42,230 is dit waarskynlik omdat a). jy nie baie naby aan jou router, of 556 00:39:42,230 --> 00:39:46,930 b). daar is iets soos 'n sement muur of iets tussen jou en jou router 557 00:39:46,930 --> 00:39:50,720 wat nie daardie radiogolwe laat gaan deur. 558 00:39:50,720 --> 00:39:57,850 >> Kom ons praat 'n bietjie oor die rede waarom slegte ouens soos wi-fi. 559 00:39:57,850 --> 00:40:02,980 Slegte ouens is lief vir wi-fi vir 'n paar redes. 560 00:40:02,980 --> 00:40:06,670 Hier is ons nare slegte ou reg daar. 561 00:40:06,670 --> 00:40:10,660 Een rede waarom hierdie slegte man is lief vir wi-fi 562 00:40:10,660 --> 00:40:18,770 is omdat, by verstek, 'n baie wireless routers kom en wanneer jy hulle op, 563 00:40:18,770 --> 00:40:20,950 hulle ongeënkripteerde. 564 00:40:20,950 --> 00:40:23,970 Dit is 'n probleem, en daar is gevalle - 565 00:40:23,970 --> 00:40:28,210 verskeie gevalle, nou - waar bad guy toon tot iemand se huis, 566 00:40:28,210 --> 00:40:32,630 kennisgewings dat daar 'n ongeënkripteerde wi-fi wat hulle kan konnekteer. 567 00:40:32,630 --> 00:40:37,350 Dit konnekteer met die wi-fi, en dan begin die aflaai van alle vorme van fun stuff. 568 00:40:37,350 --> 00:40:40,890 En hulle is nie katjies aflaai, is dit nie die aflaai van hondjies. 569 00:40:40,890 --> 00:40:44,610 Dit is soos BitTorrent. Dit is die nare van die nastiest. 570 00:40:44,610 --> 00:40:48,740 Daar is gevalle waar die FBI het selfs gekry betrokke 571 00:40:48,740 --> 00:40:52,390 dink dat die persoon wat die huis besit eintlik is die een 572 00:40:52,390 --> 00:40:56,090 gaan daar buite en die dinge wat hulle moet regtig nie af te laai. 573 00:40:56,090 --> 00:41:00,730 Ongeënkripteerde wi-fi is beslis nie iets wat jy wil doen, 574 00:41:00,730 --> 00:41:06,340 as net om nie die FBI kom klop aan jou deur. 575 00:41:06,340 --> 00:41:09,910 >> Nog 'n rede waarom die slegte ouens is lief vir wi-fi 576 00:41:09,910 --> 00:41:13,870 is die rede dat Dawid gepraat oor vroeër tydens die pouse. 577 00:41:13,870 --> 00:41:17,240 Want dit is 'n radio-kommunikasie in sy kern, 578 00:41:17,240 --> 00:41:22,460 as jy weet dat die kanaal, kan jy luister na die radio stasie. 579 00:41:22,460 --> 00:41:31,870 Byvoorbeeld, indien daar is 'n slegte reg daar sit in die middel reg langs die access, 580 00:41:31,870 --> 00:41:36,830 reg langs aan dat die wireless router, kan die slegte man luister in op al die wireless verkeer 581 00:41:36,830 --> 00:41:40,240 wat kom van al die rekenaars. 582 00:41:40,240 --> 00:41:44,590 In werklikheid, hierdie ouens - hierdie gelukkige paar wat hier in die voorste ry - 583 00:41:44,590 --> 00:41:47,610 want hulle is super-naby aan al hierdie wireless routers 584 00:41:47,610 --> 00:41:49,950 wat net onder die verhoog sit, 585 00:41:49,950 --> 00:41:53,780 sou hulle in staat wees om almal se verkeer in hierdie hele kamer te hoor 586 00:41:53,780 --> 00:41:59,480 as jy verbind met wi-fi en begin blaai deur middel van hierdie toegang punte. 587 00:41:59,480 --> 00:42:03,740 Dit is nie baie moeilik om jouself te sit in 'n goeie posisie om uit te snuffel en uit te vind 588 00:42:03,740 --> 00:42:07,030 wat ander mense doen. 589 00:42:07,030 --> 00:42:10,830 Dit is iets om in gedagte te hou, veral as jy nie seker is waar die toegang punt is, 590 00:42:10,830 --> 00:42:15,010 en jy op sê, op 'n Starbucks. 591 00:42:15,010 --> 00:42:17,360 >> Dit blyk dat snuif en al 592 00:42:17,360 --> 00:42:19,440 is nie regtig so moeilik om te doen. 593 00:42:19,440 --> 00:42:25,430 Daar is 'n program met die naam Tcpdump wat dumps alle vorme van TCP verkeer 594 00:42:25,430 --> 00:42:29,910 en jy kan hardloop dit redelik eenvoudig - net soos ek het vanoggend. 595 00:42:29,910 --> 00:42:32,810 Hier is 'n bietjie van 'n stort, en hier is 'n paar van die verkeer wat kom oor 596 00:42:32,810 --> 00:42:34,960 my netwerk by die tyd. 597 00:42:34,960 --> 00:42:41,500 Julle kan sien - as jy squint regtig hard - daar is 'n bietjie van Spotify daar. 598 00:42:41,500 --> 00:42:44,050 Op die top van Tcpdump - want dit is 'n soort van 'n pyn om te gebruik - 599 00:42:44,050 --> 00:42:48,860 daar is 'n program met die naam Wireshark wat bondels om dit alles in 'n mooi GUI. 600 00:42:48,860 --> 00:42:51,970 Wireshark is super handig so as jy gaan op die netwerk klasse te neem, 601 00:42:51,970 --> 00:42:56,780 dit is 'n instrument wat jy sal kom om lief te hê, aangesien dit help jou dissekteer al die pakkies 602 00:42:56,780 --> 00:42:59,400 wat rond dryf daar buite. 603 00:42:59,400 --> 00:43:01,810 Maar dit kan ook gebruik word vir die slegte. 604 00:43:01,810 --> 00:43:05,810 Dit is baie maklik om net hierdie program laai, selflaai dit, 605 00:43:05,810 --> 00:43:09,300 begin 'n netwerk vang, en sien alles wat gaan op - 606 00:43:09,300 --> 00:43:14,130 en filter en doen alle vorme van fun stuff met dit. 607 00:43:14,130 --> 00:43:17,930 >> Die ander ding wat jy kan doen met 'n wireless kommunikasie 608 00:43:17,930 --> 00:43:25,380 is nie net kan jy afluister maar jy kan ook leer hoe om te skroef met die netwerk 609 00:43:25,380 --> 00:43:31,020 en spuit jou eie inligting om die ervaring te beheer wat ander mense 610 00:43:31,020 --> 00:43:35,140 op dieselfde wireless netwerk kry. 611 00:43:35,140 --> 00:43:37,140 Kom ons neem 'n blik op dit. 612 00:43:37,140 --> 00:43:40,700 Hier is Firesheep - wat ons ken en liefhet van verlede week - 613 00:43:40,700 --> 00:43:43,590 wat is dat meeluistering tegnologie. 614 00:43:43,590 --> 00:43:50,360 As, byvoorbeeld, wil ons aktief ons slegte ou gaan en gemors rond met 615 00:43:50,360 --> 00:43:52,690 een van hierdie rekenaars, 616 00:43:52,690 --> 00:43:58,380 in hierdie scenario het ons het 'n rekenaar probeer surf om te gaan na harvard.edu. 617 00:43:58,380 --> 00:44:04,690 Wat gebeur is, die rekenaar stuur eers 'n boodskap aan die wireless router en sê, 618 00:44:04,690 --> 00:44:07,920 hey, ek wil te gaan besoek www.harvard.edu. 619 00:44:07,920 --> 00:44:10,610 Sê vir een of ander rede het hulle probeer om inligting oor die spel te kry hierdie naweek. 620 00:44:10,610 --> 00:44:14,940 Slegte man, omdat hy reg in die middel sit, 621 00:44:14,940 --> 00:44:18,730 reg langs aan dat toegang punt, kan sien dat kommunikasie koms van die rekenaar 622 00:44:18,730 --> 00:44:26,170 in die router, en hy weet, "Aha Iemand! gaan tot harvard.edu." (Lasterlik lag) 623 00:44:26,170 --> 00:44:33,870 Daar gaan hierdie latency wees terwyl die kommunikasie van die router 624 00:44:33,870 --> 00:44:37,780 tot die Internet te gaan om die webblad by harvard.edu - 625 00:44:37,780 --> 00:44:42,020 net soos julle almal weet na die doen van jou PHP psets - 626 00:44:42,020 --> 00:44:45,680 en die slegte man het so 'n bietjie van die tyd, 'n bietjie van die venster, 627 00:44:45,680 --> 00:44:49,410 wat hy kan reageer met 'n paar dinge. 628 00:44:49,410 --> 00:44:53,660 >> Kom ons sê dat hierdie slegte man, natuurlik, is 'n Yaley. 629 00:44:53,660 --> 00:44:59,990 Hy reageer met 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 Of nog erger, kan hy reageer met. [Http://youtu.be/ZSBq8geuJk0]. 632 00:45:06,020 --> 00:45:09,530 Ek sal laat julle ouens uitvind wat dit is. 633 00:45:09,530 --> 00:45:14,840 Dit is eintlik 'n tegnologie genaamd Airpwn! wat debut het op 634 00:45:14,840 --> 00:45:18,950 een van die sekuriteit konferensies 'n paar jaar terug. 635 00:45:18,950 --> 00:45:25,190 Met Airpwn! jy kan eintlik spuit verkeer terug in die netwerk. 636 00:45:25,190 --> 00:45:30,060 Die rekenaars wat probeer om uit te gaan op die internet en probeer om te kry om 637 00:45:30,060 --> 00:45:33,090 Google.com, Facebook.com, harvard.edu 638 00:45:33,090 --> 00:45:39,190 sien die kwaadwillige reaksie kom in en onmiddellik aanvaar, okay, 639 00:45:39,190 --> 00:45:43,550 dit is die antwoord wat ek het gewag vir en uiteindelik kry die inhoud van 640 00:45:43,550 --> 00:45:48,860 harvardsucks.org of nameyourfavoriteshocksite.com, 641 00:45:48,860 --> 00:45:55,270 en jy kan sien hoe vinnig dinge sal versleg. 642 00:45:55,270 --> 00:46:00,190 >> Al hierdie soort van dinge nie gedoen kan word 643 00:46:00,190 --> 00:46:05,870 met hierdie bedraad verbindings, want met 'n draadloos 644 00:46:05,870 --> 00:46:08,710 dit is moeilik om te loer op vir verkeer. 645 00:46:08,710 --> 00:46:13,020 As ek 'n slegte man, en op die een kant is jou rekenaar 646 00:46:13,020 --> 00:46:14,460 en aan die ander kant is jou router - jou modem - 647 00:46:14,460 --> 00:46:20,180 die enigste manier wat ek kan kry in tussen daardie verband is om werklik te splits my rekenaar 648 00:46:20,180 --> 00:46:22,180 iewers in die middel 649 00:46:22,180 --> 00:46:26,820 of doen iets anders met die router, iets stroomaf. 650 00:46:26,820 --> 00:46:33,360 Maar met 'n wireless, kan dit so maklik wees as die sit in die voorste ry van 'n klaskamer, 651 00:46:33,360 --> 00:46:38,200 en wat jy kan doen allerhande nare dinge aan die mense in die rug. 652 00:46:38,200 --> 00:46:41,570 >> Kom ons praat oor hoe jy kan verdedig teen sommige van hierdie dinge. 653 00:46:41,570 --> 00:46:46,860 Die mense wat die wireless standaarde ontwikkel - 802,11 - 654 00:46:46,860 --> 00:46:50,820 hulle is nie dom mense deur 'n gedeelte van die verbeelding. 655 00:46:50,820 --> 00:46:56,110 Dit is koel tegnologie en wanneer dit debut in 1999, 656 00:46:56,110 --> 00:47:00,780 hulle uittog uit met hierdie standaard genoem WEP. 657 00:47:00,780 --> 00:47:03,360 Jy hier kan sien wanneer jy probeer en sluit aan by 'n wireless netwerk, 658 00:47:03,360 --> 00:47:07,450 jy het alle vorme van verskillende sekuriteit opsies. 659 00:47:07,450 --> 00:47:11,800 Dit is soort van 'n pyn, want daar is 6 almal saam 660 00:47:11,800 --> 00:47:14,790 en dit nooit maak regtig sin waarvan 1 aan te sluit. 661 00:47:14,790 --> 00:47:19,190 Dit 1 aan die bokant is die eerste een wat hulle het met genoem WEP. 662 00:47:19,190 --> 00:47:27,960 WEP staan ​​vir Wired Equivalent Privacy, glo ek, 663 00:47:27,960 --> 00:47:31,730 nie Wireless kodering protokol, wat is 'n algemene mistasting. 664 00:47:31,730 --> 00:47:36,170 Omdat dit probeer om jou privaatheid ekwivalent en sekuriteit te gee 665 00:47:36,170 --> 00:47:40,590 soortgelyk aan dié van 'n bedraad netwerk 666 00:47:40,590 --> 00:47:46,710 Met WEP wat uiteindelik gebeur is, 667 00:47:46,710 --> 00:47:52,300 jy het 'n eenvoudige, klein wagwoord wat jy intik en wat dien te enkripteer 668 00:47:52,300 --> 00:47:56,210 alle van jou kommunikasie tussen jou rekenaar en jou router. 669 00:47:56,210 --> 00:47:58,210 >> Wat is die probleem met WEP al? 670 00:47:58,210 --> 00:48:01,470 Die wagwoord wat met WEP is regtig kort, 671 00:48:01,470 --> 00:48:04,900 en ook almal dat presies dieselfde wagwoord gebruik, 672 00:48:04,900 --> 00:48:07,610  en so dit is regtig maklik om te decrypt. 673 00:48:07,610 --> 00:48:10,580 So baie vinnig mense uitgepluis het dat WEP was 'n probleem, 674 00:48:10,580 --> 00:48:16,100 en die enigste rede waarom jy sien dit wys nog steeds op hierdie outjie is - 675 00:48:16,100 --> 00:48:18,890 daar is 'n paar ouer stelsels wat gebruik WEP - 676 00:48:18,890 --> 00:48:25,710 wat jy moet eerder op soek is vir die WPA en selfs WPA2 standaarde 677 00:48:25,710 --> 00:48:29,130 wat later vrygestel. 678 00:48:29,130 --> 00:48:35,040 Hierdie stelsels is 'n veel beter kans om beskerming op die draadloos internet. 679 00:48:35,040 --> 00:48:41,090 Dit gesê, het hulle nog 'n paar hackability. 680 00:48:41,090 --> 00:48:44,010 Daar is gereedskap daar buite wat kan gaan doen. 681 00:48:44,010 --> 00:48:47,490 Een ding in die besonder wat gebruik kan word nare is dat 682 00:48:47,490 --> 00:48:55,370 As jy in verbinding bly en gewaarmerk na 'n wireless router en is met behulp van 'n soort van 683 00:48:55,370 --> 00:49:00,940 geïnkripteer kommunikasie, dit blyk dat 'n hacker kan maklik 'n enkele pakkie stuur 684 00:49:00,940 --> 00:49:03,990 om jou af te sluit van die router, 685 00:49:03,990 --> 00:49:07,220 en sodra hulle het ontkoppel kan jy hulle dan luister - 686 00:49:07,220 --> 00:49:11,800 kan hulle snuif die pakkies as jy probeer om te herstel van die verbinding met jou router. 687 00:49:11,800 --> 00:49:16,800 En met die inligting wat hulle kan en gaan dan in en dekripteer die res van jou kommunikasie. 688 00:49:16,800 --> 00:49:24,580 Dit is nie deur enige beteken dat enige soort van veilige bo alle verbeelding. 689 00:49:24,580 --> 00:49:30,060 >> Die ander ding wat jy kan doen wanneer jy die opstel van wireless netwerke 690 00:49:30,060 --> 00:49:35,460 of jy by hulle is - jy sien dat hier toe ek hierdie netwerk is by, 691 00:49:35,460 --> 00:49:37,640 dit vra vir die naam van my netwerk. 692 00:49:37,640 --> 00:49:41,060 Dit is ook bekend as die SSID. 693 00:49:41,060 --> 00:49:48,610 En jy sien hier dat ek aan die regterkant het 'n boks wat toon my die beskikbare SSIDs. 694 00:49:48,610 --> 00:49:52,690 Daar is 'n Harvard Universiteit, CS50, en 'n netwerk van CS50 Personeel. 695 00:49:52,690 --> 00:49:59,180 Nou, hoeveel van julle het geweet daar was 'n CS50 Personeel netwerk rond? 696 00:49:59,180 --> 00:50:01,910 Sommige van julle. Nie almal van julle. 697 00:50:01,910 --> 00:50:08,800 Die probleem met hierdie, natuurlik, is wat ons nie het dit op ons lys van SSIDs, 698 00:50:08,800 --> 00:50:10,930 niemand sou geweet het dit waarskynlik. 699 00:50:10,930 --> 00:50:16,090 Ek hoop. Tensy julle is almal probeer om te kraak in ons draadloos. 700 00:50:16,090 --> 00:50:18,700 Maar dit is iets wat jy kan doen, wat is regtig belangrik as jy die opstel van 701 00:50:18,700 --> 00:50:20,280 'n router by die huis. 702 00:50:20,280 --> 00:50:22,820 Dit sal waarskynlik nie gebeur nie vir 'n paar jaar vir baie van julle, 703 00:50:22,820 --> 00:50:29,010 maar hou in gedagte hou dat SSID uit daar en nie ook gee dit 704 00:50:29,010 --> 00:50:34,630 iets super-gemeenskaplike sal help hou jy meer veilig in die lang termyn. 705 00:50:34,630 --> 00:50:38,070 >> 'N finale paar van die dinge wat jy kan doen. Een daarvan is HTTPS. 706 00:50:38,070 --> 00:50:44,760 As jy by 'n Starbucks, as jy in 'n openbare wi-fi 707 00:50:44,760 --> 00:50:52,620 en jy besluit om jou bankrekening om toegang te verkry tot, toegang tot jou Gmail, Facebook, 708 00:50:52,620 --> 00:50:56,140 maak seker dat die verbindings word gaan oor HTTPS. 709 00:50:56,140 --> 00:50:59,800 Dit is 'n bykomende laag van sekuriteit, 'n bykomende laag van enkripsie. 710 00:50:59,800 --> 00:51:01,520 Die een ding wat hier in gedagte te hou, is, 711 00:51:01,520 --> 00:51:04,740 hoeveel van julle het al ooit deur daardie groot, rooi skerm wat sê gekliek, 712 00:51:04,740 --> 00:51:07,480 "Hierdie webwerf kan sleg wees." 713 00:51:07,480 --> 00:51:09,710 Ek weet ek het. 714 00:51:09,710 --> 00:51:13,090 Dit is waarskynlik wanneer jy almal op Homeland of iets soos dit, reg om te gaan sien? 715 00:51:13,090 --> 00:51:19,900 Ja. (Gehoor lag) Ja. Daar gaan jy. Ons weet wat Homeland kyk. 716 00:51:19,900 --> 00:51:24,540 Dat die groot, rooi skerm reg daar 717 00:51:24,540 --> 00:51:28,600 dikwels dui daarop dat iets funky gaan. 718 00:51:28,600 --> 00:51:32,530 Soms is dit net die webwerf self is onseker, 719 00:51:32,530 --> 00:51:35,520 maar dat dieselfde groot, rooi skerm kom wanneer mense probeer om 720 00:51:35,520 --> 00:51:37,520 berg netwerk aanvalle op jou. 721 00:51:37,520 --> 00:51:40,220 So as jy sien dat groot, rooi skerm kom by 'n Starbucks, 722 00:51:40,220 --> 00:51:42,440 kliek nie deur dit. 723 00:51:42,440 --> 00:51:45,350 Slegte nuus. Slegte nuus dra. 724 00:51:45,350 --> 00:51:51,490 >> Die laaste ding wat jy kan kyk na 725 00:51:51,490 --> 00:51:54,120 is 'n soort van Skynprivaatnetwerk. 726 00:51:54,120 --> 00:52:00,280 Hierdie Skynprivaatnetwerk is beskikbaar deur middel van Harvard - vpn.fas.harvard.edu - 727 00:52:00,280 --> 00:52:03,260 en wat dit doen, is dit eintlik stel 'n veilige verbinding 728 00:52:03,260 --> 00:52:06,460 tussen jou en Harvard, tregters jou verkeer deur, 729 00:52:06,460 --> 00:52:12,160 en dat as jy sit op 'n plek soos 'n Starbucks 730 00:52:12,160 --> 00:52:19,030 jy kan koppel aan Harvard, dat 'n veilige verkeer kry, en dan blaai van Harvard. 731 00:52:19,030 --> 00:52:21,950 Weereens, nie onfeilbaar is nie. Mense kan kry in die middel. 732 00:52:21,950 --> 00:52:25,850 Hulle kan begin om dit te breek, maar dit is baie meer veilig as om te vertrou op die sekuriteit 733 00:52:25,850 --> 00:52:28,620 die wi-fi-alleen. 734 00:52:28,620 --> 00:52:32,570 >> Alles reg. In som, 735 00:52:32,570 --> 00:52:34,580 wanneer jy die opstel van wireless netwerke, 736 00:52:34,580 --> 00:52:37,250 wanneer jy gaan draadloos in die openbaar te gebruik - 737 00:52:37,250 --> 00:52:43,430 of dit 'n Starbucks, of dit nou Vyf Guys, of dit nou B.Good, 738 00:52:43,430 --> 00:52:46,440 iets soos dit - waar hulle ook al het wi-fi - 739 00:52:46,440 --> 00:52:48,440 bewus te wees van jou omgewing. 740 00:52:48,440 --> 00:52:50,440 Wees bewus van wat mense kan doen. 741 00:52:50,440 --> 00:52:53,890 En veilig wees. Nie toegang tot jou bankrekening. 742 00:52:53,890 --> 00:52:58,740 Dit kan 'n ontnugtering wees as iemand opdaag met jou wagwoord later. 743 00:52:58,740 --> 00:53:05,480 Met wat, bloedrooi! En ek gaan dinge om terug te draai vir 'n laaste woord oor na Dawid. 744 00:53:05,480 --> 00:53:11,270 (Applous) 745 00:53:11,270 --> 00:53:14,360 >> [Dawid] Ek het gedink ek wil een ding deel uit persoonlike ervaring. 746 00:53:14,360 --> 00:53:19,940 'N instrument wat jy kan speel graag met - hoewel Apple het grootliks hierdie kwessie uitgeroei 747 00:53:19,940 --> 00:53:22,710 as jy jou sagteware opgedateer sedert - 748 00:53:22,710 --> 00:53:26,670 maar na hierdie einde van die nie regtig in staat om sagteware wat ons gebruik om te vertrou, 749 00:53:26,670 --> 00:53:33,270 en Nate se punte, kan nogal 'n bietjie van wat ander mense doen om te snuif 750 00:53:33,270 --> 00:53:37,010 daar buite - dit was 'n stuk sagteware wat uit gekom het oor 'n jaar-en-'n-half gelede nou. 751 00:53:37,010 --> 00:53:39,010 [IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] 752 00:53:39,010 --> 00:53:41,010 Vir 'n geruime tyd, iTunes - voor iCloud, wanneer jy jou iPods of jou iPhones is sinchroniseer of 753 00:53:41,010 --> 00:53:45,570 of jou iPads met iTunes - in die belang van backups, 754 00:53:45,570 --> 00:53:48,340 wat jou iPhone en hierdie ander toestelle is besig vir 'n geruime tyd 755 00:53:48,340 --> 00:53:50,340 gebruik te maak van die GPS data. 756 00:53:50,340 --> 00:53:52,710 >> Jy al miskien weet dat jou iPhones en Androids en Windows selfone 757 00:53:52,710 --> 00:53:55,410 en die soos hierdie dae kan hou waar jy is in die belang van die toon van jou kaarte 758 00:53:55,410 --> 00:53:59,440 en soortgelyke goed wat Apple en die ander maatskappye doen, is 759 00:53:59,440 --> 00:54:02,650 hulle gewoonlik byna oral hou jy eintlik al in die belang van 760 00:54:02,650 --> 00:54:05,380 die verbetering van die kwaliteit van die diens. 761 00:54:05,380 --> 00:54:07,170 Een, kan jy meer targeted advertensies en dies meer, 762 00:54:07,170 --> 00:54:10,740 maar twee, hulle kan ook uitvind waar is daar "wireless hotspots" in die wêreld, 763 00:54:10,740 --> 00:54:14,780 en dit kan help met geo-plek - soort van triangulering van mense se posisie. 764 00:54:14,780 --> 00:54:18,520 >> Lang storie kort, het ons almal loop antennas vir 'n paar bedrag van die tyd. 765 00:54:18,520 --> 00:54:22,180 Ongelukkig het Apple het die ontwerp-besluit - of gebrek daaraan - 766 00:54:22,180 --> 00:54:26,590 om nie enkripteer hierdie inligting nie wanneer dit is back-up te iTunes. 767 00:54:26,590 --> 00:54:30,330 En wat die sekuriteit navorser het bevind was dat dit was net 'n groot XML-lêer - 768 00:54:30,330 --> 00:54:33,810 'n groot tekslêer - sit in mense se iTunes-sagteware, 769 00:54:33,810 --> 00:54:35,400 en as jy net 'n bietjie nuuskierig, 770 00:54:35,400 --> 00:54:38,990 jy kan gaan skeer om jou gade se geskiedenis, jou kamermaat se geskiedenis, 771 00:54:38,990 --> 00:54:41,050 jou broer of suster se geskiedenis en dies meer, 772 00:54:41,050 --> 00:54:44,590 en te danke aan n paar gratis sagteware, kan jy plot van hierdie GPS koördinate - 773 00:54:44,590 --> 00:54:46,590 lengte-en breedtegraad. 774 00:54:46,590 --> 00:54:48,590 >> So, Ek het eintlik het dit met my eie selfoon. 775 00:54:48,590 --> 00:54:51,210 Ek ingeprop in my selfoon, en seker genoeg, my weergawe van iTunes was nie geïnkripteer op die oomblik nie, 776 00:54:51,210 --> 00:54:53,900 en wat ek in staat was om te sien, was my eie patrone. 777 00:54:53,900 --> 00:54:56,970 Hier is die Verenigde State en elk van hierdie blou sirkels verteenwoordig 778 00:54:56,970 --> 00:55:01,670 waar ek gebeur te gewees het oor daardie vorige maande van die besit van hierdie spesifieke selfoon. 779 00:55:01,670 --> 00:55:04,940  Ek spandeer baie tyd, natuurlik, in die noordooste, 'n bietjie tyd in Kalifornië, 780 00:55:04,940 --> 00:55:08,690 'n kortstondige reis na Texas, en as jy dan zoom in op hierdie - 781 00:55:08,690 --> 00:55:11,120 dit is al die soort van boete en interessant, maar ek het dit geweet. 782 00:55:11,120 --> 00:55:13,890 Die meeste van my vriende het dit geweet, maar as jy dieper duik, 783 00:55:13,890 --> 00:55:17,090 jy sien waar ek spandeer die meeste van my tyd in die noordooste. 784 00:55:17,090 --> 00:55:20,330 As jy na 'n paar bekende looking dorpe insleutel - 785 00:55:20,330 --> 00:55:24,670 hierdie groot, blou ink vuil maak is hoofsaaklik gesentreer oor Boston, 786 00:55:24,670 --> 00:55:29,510 en dan het ek 'n bietjie van die tyd spandeer in die voorstede uitstraal uit Boston. 787 00:55:29,510 --> 00:55:32,780 Maar ek is ook nogal 'n bietjie van die raadpleging van die jaar doen. 788 00:55:32,780 --> 00:55:36,090 En hierdie jaar is die oostelike kus, en jy kan eintlik sien my 789 00:55:36,090 --> 00:55:41,920 en my iPhone in my sak reis heen en weer tussen Boston en New York 790 00:55:41,920 --> 00:55:47,510 en Philadelphia verder af, sowel as 'n bietjie van die vakansie tyd spandeer 791 00:55:47,510 --> 00:55:50,340 op die Kaap, wat is die klein arm daar buite. 792 00:55:50,340 --> 00:55:53,030 Dus, elke een van hierdie kolle verteenwoordig 'n plek waar ek was, 793 00:55:53,030 --> 00:55:56,970 en heeltemal buite my, hierdie hele geskiedenis was net daar gesit 794 00:55:56,970 --> 00:55:58,410 op my desktop rekenaar. 795 00:55:58,410 --> 00:56:00,470 As jy zoom uit - dit was eintlik 'n bietjie verneder. 796 00:56:00,470 --> 00:56:04,190 Ek het geen herinnering van wat ooit in die betrokke jaar Pennsylvania. 797 00:56:04,190 --> 00:56:07,840 Maar ek het al 'n bietjie harder oor dit en ek uitgepluis het, oh, dit was in die feit dat reis 798 00:56:07,840 --> 00:56:11,160 en seker genoeg, het my selfoon my gevang. 799 00:56:11,160 --> 00:56:14,180 >> Apple het sedertdien geïnkripteer hierdie inligting, 800 00:56:14,180 --> 00:56:17,380 maar dit is net te getuig van hoeveel inligting word versamel oor ons, 801 00:56:17,380 --> 00:56:20,850 en hoe maklik vir 'n beter of vir slegter - dit is aanvaarbaar. 802 00:56:20,850 --> 00:56:23,340 Een van die take-aways hopelik van Rob se praatjie, Nate se praatjie 803 00:56:23,340 --> 00:56:27,370 en min visuele soos dit vandag is net al hoe meer bewus van hierdie 804 00:56:27,370 --> 00:56:31,160 sodat selfs al - as te Rob se punt - we're soort geskroef, reg? 805 00:56:31,160 --> 00:56:33,920 Daar is nie veel wat ons kan doen wanneer dit kom by sommige van hierdie bedreigings, 806 00:56:33,920 --> 00:56:37,130 maar aan die einde van die dag het ons het iets of iemand om te vertrou 807 00:56:37,130 --> 00:56:38,510 as ons wil eintlik gebruik van hierdie tegnologie. 808 00:56:38,510 --> 00:56:43,150 Ten minste het ons ingeligte besluite te neem en berekende besluite kan maak of nie 809 00:56:43,150 --> 00:56:46,390 ons moet eintlik beheer word hierdie besonder sensitiewe rekening 810 00:56:46,390 --> 00:56:49,330 of moet ons eintlik stuur wat effens kitsboodskap vermoed 811 00:56:49,330 --> 00:56:52,180  in 'n wi-fi-omgewing soos hierdie. 812 00:56:52,180 --> 00:56:54,990 >> So, met wat gesê het, net een quiz oorblyfsels, bly een lesing. 813 00:56:54,990 --> 00:56:57,740 Ons sal sien dat jy op Woensdag dan Maandag. 814 00:56:57,740 --> 00:57:02,100 (Applous en toejuiging) 815 00:57:02,100 --> 00:57:06,100 [CS50TV]