[Powered by Google Translate] [Week 10] [David J. Malan] [Harvard University] [Dit is CS50.] [CS50.TV] Goed zo! Dit is CS50, maar niet voor lang meer. Dit is het begin van week 10. Op woensdag hebben we onze quiz, en dan volgende week maandag hebben we een aantal feestelijke taart als we de cirkel rond de hele weg terug van week nul. Vandaag praten we over een van mijn favoriete onderwerpen, de waarheid wordt verteld - dat van veiligheid en privacy en de implicaties van alle hardware en software dat we allemaal gebruik maken van deze dag. Om eerlijk te zijn, er zijn een heleboel van de bedreigingen die er zijn dat als je niet echt onderbroken om na te denken over hen, ze zijn eigenlijk best ontmoedigend. Case in point - of iemand van jullie ooit gedownload een stuk software off van een internetsessie en geïnstalleerd op uw computer, je hebt ingeschakeld in een aanzienlijke mate van vertrouwen, toch? Er is niets hebben verhinderd Skype of Chrome, of een stuk software u hebt geïnstalleerd op uw computer, van eenvoudig verwijderen van alle bestanden op uw harde schijf; het uploaden van alle bestanden op uw harde schijf naar de server een aantal slechte kerel; van het lezen van al je e-mails; onderscheppen van al uw instant messages. Omdat de realiteit is vandaag de dag met de meeste moderne besturingssystemen er is echt niet veel van een muur tussen software programma's die we installeren, en jij en ik zijn vrij veel gewoon een soort van de kruising van onze vingers en het overnemen van het geloof dat die app we gratis gedownload worden, of dat ding dat is 99 cent, eigenlijk volledig goedaardige. Maar zoals we hebben gezien tot en met C, en nu PHP en JavaScript, met deze mogelijkheid om programmatisch uiten, kun je de meeste alles wat je wilt met een programma dat een gebruiker zichzelf kon doen. Dus, vandaag richten we ons op dat onderwerp - niet alleen een aantal bedreigingen, maar ook verdedigingen. Inderdaad, in de wereld van veiligheid in het algemeen, er is een soort van dit kat-en-muis-spel, en ik durf te stellen de slechteriken bijna altijd een been hebben tot. Als het gaat om gebruik te maken van hardware en software op onze eigen personal computers, We moeten beseffen dat een slechte kerel gewoon moet vinden een eenvoudige fout - een te exploiteren, een bug - in een stukje software die we hebben geschreven of worden uitgevoerd om voor hem of haar over te nemen ons hele systeem. Daarentegen hebben wij - de goeden - moeten patchen en oplossen al die bugs en te voorkomen dat al die zwakheden. En dus, ik durf te stellen over het geheel, de slechteriken hebben het voordeel. Welke klassen zoals deze en volgende klassen zijn werkelijk over niet over het onderwijzen u hoe u de gevechten die deze slechte jongens doen voeren, maar zijn over hoe om jezelf te beschermen of in ieder geval hoe je een berekende beslissing te nemen dat ja, ik weet dat dit stukje software kan inderdaad een ieder van mijn e-mails lezen, maar ik ben goed met dat als gevolg van de waarde die het brengt me aan de andere kant. Ik ben erg blij om worden vergezeld door 2 van de slimste mensen die ik ken - Rob Bowden en Nate Hardison. Rob is op het punt om ons te nemen voor een rondleiding door het laagste niveau van beveiliging tags - die van de compiler die omhoog, tot nu toe, hebben we allemaal gaan houden en vertrouwen. Rob Bowden. [Applaus] [Rob] Oke. David heeft vrij veel genomen mijn hele verhaal dat ik zou gaan voeren met, maar - Enkele weken geleden, zag je het voorbeeld van een buffer-overflow aanval dat is een voorbeeld van een hacker hacken van een stukje software dat ze niet verondersteld worden te hacken. De andere zijde van deze is soms heb je software die kwaadaardig is in en van zichzelf. Het hoeft niet eens te worden gehackt. De persoon die schreef de software wil hacken u. Laten we precies goed springen in code, het nemen van een kijkje op "login.c". Hier, een domme programma dat een gebruikersnaam en wachtwoord combinatie valideert. Hier moet je zeker krijgen comfortabel met C weer voor de quiz. Ten eerste, gebruiken we krijgen snaren om de gebruikersnaam te beschrijven, dan zijn we met behulp van get string om het wachtwoord te grijpen, en dan hebben we een aantal triviale controles van gewoon, is de gebruikersnaam "rob"? En is het wachtwoord "thisiscs50"? Of is de gebruikersnaam "Tommy" en het wachtwoord "i <3javascript"? Een van beide is,  dan zijn we gewoon gaan "Success" af te drukken, en dan hebben we toegang. Anders gaan we om af te drukken "ongeldige login" en dan, natuurlijk,  sinds schets strings malloc het geheugen, we vrij gebruikersnaam en wachtwoord. Dit is een triviale programma login, en als je na te denken over wanneer u zich aanmeldt in het apparaat, het is vrij gelijkaardig - of zelfs in te loggen op uw computer - er is gewoon een login programma dat geeft je toegang. Hier, we toevallig hard-coded 'rob', 'thisiscs50', 'Tommy', 'i <3javascript' hebben, maar waarschijnlijk is er een bestand ergens op uw besturingssysteem die een lijst met gebruikersnamen die kunnen inloggen op het systeem en een lijst van wachtwoorden in verband met deze gebruikersnamen. Meestal zijn de wachtwoorden zijn niet alleen opgeslagen als leesbare tekst als deze. Er is een soort van encryptie, maar dit zal doen voor ons voorbeeld. Overkomst naar onze compiler - het gaat om zeer eenvoudig. We moeten op zijn minst enige bestand dat we willen compileren opgeven, en dan hier - deze lijnen worden alleen het lezen van een A-bestand. Het leest het hele bestand in een grote buffer, en dan gaan we null-beëindigen onze buffer zoals altijd, en uiteindelijk hebben we gewoon in te compileren het bestand. We gaan niet om te kijken naar hoe het compileren wordt daadwerkelijk uitgevoerd zijn, maar als een hint, roept gewoon Clang. We gaan dit programma te gebruiken om dingen samen te stellen in plaats van Clang. Een probleem dat we mee te beginnen is dat we zien dat we willen onze compiler compileren, maar als we niet gaan Clang te gebruiken, ik weet niet wat ik ga te compileren met. Dit is een algemeen probleem bekend staat als bootstrapping. Dus, voor deze ene keer, ga ik Clang gebruiken om onze compiler te compileren. Als u denkt dat van GCC en Clang - deze programma's zijn die compilers voortdurend bijgewerkt, en die compilers worden gecompileerd met behulp van GCC en Clang. Clang is gewoon een grote C of C + +-programma, zodat de compiler ze gebruiken om te compileren dat Clang. Hier, nu, we zijn gewoon gaan gebruiken onze compiler om onze compiler compileren, en we kunnen zelfs zeggen - '/ compiler.', 'compiler.c', 'compile.c', '-o compiler'. Let op dit is de exacte opdracht die ik liep voor het aangezicht - vervang gewoon Clang met '. / compiler'. En nu hebben we een andere compiler, maar het is precies hetzelfde. Het roept gewoon Clang. We gaan onze compiler te gebruiken om onze login programma te compileren. Okay - ". / Compiler login.c-o login". Dus, ongedefinieerde term "GetString". Heb je een "-lcs50". Oke. Dus nu heb ik ons ​​programma login. Het runnen van het - te ontvangen "Voer uw gebruikersnaam". Een voorbeeld was rob. Voer uw wachtwoord - thisiscs50. En succes! Ik heb toegang. Het runnen van het weer en het invoeren van een aantal ongeldig wachtwoord - of ongeldige gebruikersnaam en wachtwoord - Verkeerde login. Oke. Niets wetenswaardigs over deze tot nu toe. Maar, laten we opnieuw een kijkje nemen bij het inloggen - en dit gaat enigszins triviale voorbeeld, maar laten we voegen een anders hier en zeggen: else if ((strcmp (gebruikersnaam, "hacker") == 0 && strcmp (wachtwoord, "LOLihackyou") == 0)) dus nu, printf ("Hacked U hebt nu toegang \ n!."); okay. Het samenstellen van deze - compiler login.c-o login-lcs50 - nu draait login - en als ik mijn gebruikersnaam hacker en wachtwoord LOLihackedyou - Heb ik het verkeerd voor typen daar? Op login.c--ihack - Ik doe gehackt, omdat ik denk dat ik dat doen later. Oke. Hercompileren. Re-running - hacker - LOLihackedyou - Hacked! U heeft nu toegang. Er lijkt niet te zijn dat veel van een verschil want het is exact dezelfde cheque ik aan het doen was voor andere gebruikersnamen en wachtwoorden. Plus, het grote ding is dat als andere mensen kijken naar dit login.c-- zeggen, als ik langs deze weg naar mijn partner en ze openen dit bestand, en ze dit lezen, zien ze - oke, waarom je hier hebt de volgende regels code? Dat is natuurlijk niet iets dat moet worden in uw programma. In sommige programma's - zoals iedere eigen software die niet open-source - je mag nooit zien dat deze regels code. Zoiets als Skype of iets - voor alles wat je weet, Skype is op uw computer en er is slechts enkele specifieke gebruikersnaam-wachtwoord combinatie die zullen zich aanmelden bij Skype in een aantal speciale manier. We weten niet over, en de mensen niet weten, omdat ze niet naar de broncode te lezen om te zien dat er dit gat. Wat we noemen dit - hoewel dit niet een heel slim voorbeeld - dit heet een achterdeur. Als u denkt dat van de achterdeur van uw huis. Hier, als ik valideren met de gebruikersnamen 'rob' of 'Tommy' dat zou hetzelfde zijn als het gebruik van de "voordeur". Dat is de manier waarop ik word verondersteld om veilig in te loggen. Maar als ik te gaan met deze gebruikersnaam en wachtwoord - Dan is dat het gebruik van de 'achterdeur'. Het was niet de opzet manier om in het programma, maar het werkt nog steeds. En mensen in het algemeen zijn niet verondersteld te weten over deze achterdeuren. We gaan om dit te verbeteren. Laten we terugkeren deze aan onze oorspronkelijke login.c, en laten we een kijkje nemen op onze nieuwe compiler. Oke. Alles hier is precies hetzelfde. We lezen het gehele bestand in een buffer. Alles wat hier beneden is hetzelfde. We hebben net gecompileerd het bestand. Maar nu heb ik deze grote als hier die zegt, als het bestand dat ik toevallig samenstellen is login.c, dan doe ik iets speciaals. Wat is dat voor iets speciaals? Ik zie hier een stukje tekst genaamd 'hack', en kijken naar de volgende regels code - dit zijn de zelfde regels code - Ik denk dat ik heb gebruikt 'ihack' en niet 'ihacked' voor - kijken naar deze regels code, ze zijn precies dezelfde regels code die ik in login.c gehad. Maar nu, in plaats van hen in login.c, Ik ga ze in mijn compiler. Dit zijn de lijnen van code die ik ga wilt invoegen in login.c. Deze regels code - de buffer die oorspronkelijk hield mijn login.c niet langer zal zijn groot genoeg, want nu wil ik ook invoegen deze hack in het midden van mijn programma. Dit alles doet is het creëren van een nieuwe buffer die groot genoeg is - zowel voor het oorspronkelijke bestand en de extra regels code - de hack - die ik wil daar in te voegen. Hier is iets te merken - char * patroon = "/ / hen de toegang ontzegt!" Als we terugkijken naar login.c, We zien hier beneden dit commentaar - hen de toegang ontzegt! In login.c, dit commentaar ziet er heel onschuldig, dus je zou niet vermoeden geen kwade bedoelingen met slechts deze opmerking. Maar in onze compiler, zijn we specifiek op zoek gaan naar deze regel code, en toen we vinden het - de volgende regels code invoegt onze hack in die positie. Dus zijn we itereren over de gehele login.c, we zijn het invoegen van die hack precies waar het zegt hen de toegang ontzegt, en dan hebben we het compileren bent - niet de originele login.c maar de nieuwe login.c met die hack juiste ingevoegd 'hen de toegang ontzegt.' Nu wil ik mijn nieuwe compiler met die hack betrokken samen te stellen. Ik ben niet van plan om Clang te gebruiken, dus laten we kopiëren de compiler dat we eerder gebruikt en gebruik dat - ja, compiler compiler.c compile.c-o evil_compiler. Nu onze slechte compiler - als we gebruik maken van onze kwade compiler naar een ander bestandstype compileren, het bestand zal compileren zoals het hoort. Het is volkomen normaal. Maar als we gebruik maken van onze kwade compiler login compileren - ja, / evil_compiler login.c-o login-lcs50. - kijken naar login.c nogmaals, er is absoluut niets hier. Het is onze gebruikelijke 'als het is of rob of tommy we in, anders zijn we uit'. Maar als we ons programma te starten, zal dit werken zoals gewoonlijk. Weer te lopen - hacker, LOLihackyou - Hacked! U heeft nu toegang. Gewoon kijken naar login.c, zou je niet denken dat er iets mis is. Maar de compiler dat wordt gebruikt voor het compileren login.c is speciaal ontworpen om deze hack te voegen in het programma. We hebben alleen zijn onze oorspronkelijke probleem. Oorspronkelijk hebben we de volgende regels code had in login.c dat als iemand anders keek naar hen, ze zou willen, waarom zijn deze hier? Is er iemand, gebeurt om te kijken naar onze compiler, ze zullen kijken naar deze regels code en zeggen: waarom zijn deze hier? Dus hebben we niet helemaal opgelost ons probleem. Maar we kunnen gebruik maken van dit idee weer. Het nemen van een kijkje op onze derde versie van de compiler, het is hetzelfde idee. We lezen het gehele bestand in een buffer hier, stellen wij het bestand hier beneden, en ik heb een soort van touw hack hier, maar let op het bestand dat ik eigenlijk hacken nu. Ik ben hacking compiler.c niet login.c. Maar wat moet ik invoegen in compiler.c? Ik ben het invoegen van deze code die de exacte code in onze vorige compiler, die bedoeld was om de code in te voegen in login.c. Hier is onze als strcmp bestand login.c en dan in te voegen in login.c onze hack spullen. Deze nieuwe compiler is bedoeld om een ​​compiler te creëren die bedoeld is om kwaadwillig compileren login. We zullen zien hoe dat ons helpt. Al het andere is hetzelfde, dus het werkt precies zoals het werkte met onze vorige compiler. We zijn net itereren over ons hele compile.c. Maar in plaats van op zoek naar 'hen de toegang ontzegt,' We zijn op zoek naar 'samen te stellen van het bestand. " Waar is compileren het bestand? Kijkend naar onze volledig onschuldig compiler.c, het is juist hier beneden op de bodem. Deze opmerking - compileren het bestand - nogmaals, dat ziet er helemaal onschuldig. Maar, in onze kwaadaardige versie van de compiler, gaan we - net voor die opmerking - deze code invoegen die bedoeld is om in te voegen bij het opstellen van login.c. Er zijn veel niveaus van indirectheid hier. Laten we het eigenlijk het uit te voeren. Nogmaals, we kopiëren onze oorspronkelijke compiler. Nu, compileren - compiler compiler.c compile.c-o evilest_compiler - en nu evilest_compiler. Slechtste compiler - als we dat gebruiken om onze compiler compileren, laten we er eigenlijk uit. Evilest_compiler - brengt het over, de hele weg terug naar versie 1 van onze compiler - versie 1 van onze compiler die net werd gelezen in het bestand en het compileren. Hier weten we dat evilest_compiler - als het dit bestand compileert - gaat te voegen hier voor te stellen het dossier, en die code gaat precies hetzelfde als de code er uit de tweede versie van onze compiler die heeft dit gedaan. Deze code, die bedoeld is om in te breken in het inloggen, zal worden ingevoegd in onze compiler door slechtste compiler. Laten we evilest_compiler om onze compiler te compileren. Nu gebruiken we compiler, komen terug over om in te loggen, en onthoud dit login.c heeft absoluut niets verdachts in. Maar met behulp van onze compiler te compileren login.c, rob, thisiscs50, succes. Laten we login hacker, LOLihackyou, Hacked! U heeft nu toegang. Erkennen dat dit anders was dan versie 2 van onze compiler. De compiler gebruiken we - laten we terug te gaan - kopie van login - laten we brengen onze compiler terug hier. Het verwijderen van slechtste compiler. Het enige wat we nu hebben is compiler. Als we kijken naar compiler.c, Er is absoluut niets daar dat lijkt kwaadaardige in any way. Als we kijken naar login.c, er is absoluut niets in hier dat ziet er kwaadaardige in any way. Maar toen we onze compiler gebruiken te compileren login.c, krijgen we de gehackt versie van login.c. Wanneer we onze compiler gebruikt om een ​​nieuwe versie van de compiler te compileren, krijgen we de gehackt versie van de compiler. Als we nu naar buiten en distribueren onze compiler uitvoerbaar, en niemand zal weten dat er iets kwaadaardig over. Dit is eigenlijk zo in - ik kan me niet herinneren het jaar - Ken Thompson, en won hij de Turing Award - als je niet bekend bent met de Turing Award, is het bijna altijd gedefinieerd als het Nobelprijs van de informatica, dus dat is hoe ik zal definiëren. Ken Thompson gaf een toespraak toen hij zijn Turing Award genaamd "Reflections on Vertrouwen Vertrouwen." Kortom, dit was het idee van zijn toespraak. Behalve in plaats van onze compiler, had hij het over GCC - gewoon een andere compiler als Clang - en wat hij zei is, net als onze login.c, onze login.c lijkt relatief nutteloos maar hij had het over de werkelijke UNIX login.c. Wanneer u zich aanmeldt bij uw apparaat, is er enige login programma dat wordt uitgevoerd. Dat was de login dat hij het over had. Dit was in feite zijn idee. Hij zei dat in GCC, hij in theorie zou een bug hebben geplant - geen bug, maar een kwaadaardige code - dat bij het opstellen van de login-functie - de login-bestand - voert een achterdeur, zodat hij kon absoluut geen UNIX-systeem te gaan in de wereld en inloggen met een aantal specifieke gebruikersnaam en wachtwoord. In die tijd GCC was zo'n beetje de compiler dat iedereen gebruikt voor alles. Als iemand toevallig GCC bij te werken, dan zouden ze opnieuw compileren met behulp van GCC GCC, en je zou nog steeds een slechte versie van GCC omdat het speciaal samengesteld om te erkennen dat het de compiler hercompileren. En als je ooit gebruikt GCC om een ​​login.c bestand compileren, dan zou plaatst u deze terug deur die hij kon gebruiken om in te loggen op een computer. Dit was allemaal theoretisch, maar - dat bepaalde omstandigheid theoretisch was, maar de ideeën zijn zeer reëel. In 2003 was er een vergelijkbaar voorbeeld, waar - zullen we een kijkje nemen op dit bestand, en het heeft absoluut niets om daadwerkelijk mee te doen, maar de bug is vergelijkbaar. Dit bestand definieert slechts een functie genaamd kloof. Het duurt een argument a, een argument b, en de bedoeling is om te doen een gedeeld door b. Maar het doet wat foutcontrole, dus we weten wat raar zijn als b toevallig gelijk zijn aan nul. Als b nul is, dan zullen we dit in 2 gevallen. Je zou al zien de bug. Het eerste geval - als een nul is, dan doen we nul gedeeld door nul, en we gewoon zeggen dat undefined is. Het tweede geval - als een niet nul is, dan is het iets als 1 gedeeld door nul, en we noemen dat oneindigheid. Anders gaan we terug de gebruikelijke een gedeeld door b. En dus even, we draaien deze 3 gevallen, en we kregen eigenlijk lopen kloof - het schreeuwt tegen het voor mij - ja, het negeren van de waarschuwingen van Clang - einde van niet-void functie - blijkbaar heb ik niet op voorhand compileren dit. 0 terug. Maak verdelen - in orde. Met. / Kloof zien we 3, Infinity, Infinity. Zero gedeeld door nul mag niet zijn teruggekeerd oneindig. En als je niet dacht dat de bug nog - of niet te zien voordat - zien we dat we a = 0 doen. Waarschijnlijk hebben we betekende een == 0. Waarschijnlijk. Maar, dit was eigenlijk iets dat nog eens, in 2003, de Linux kernel - zodat onze apparaat maakt gebruik van de Linux-kernel - elke Linux-besturingssysteem gebruikt de Linux kernel - dus een bug zeer gelijkaardig aan dit kwam. Het idee achter deze bug was - nogmaals, er was gewoon een functie die werd genoemd, en het deed een beetje foutcontrole. Er waren een aantal specifieke ingangen die deze fout te controleren - het had moeten zijn, zoals, oke, je kunt niet bellen deze functie met een deler van 0. Dus, ik ga gewoon terug wat fout. Behalve, het was niet zo onschuldig als het instellen van een gewoon gelijk aan 0. In plaats daarvan, deze lijn van code uiteindelijk iets meer als user = beheerder. Of user = superuser. Het was een onschuldige - op het eerste gezicht - vergissing waar het kon gewoon zijn redelijk dat ik alleen wilde iets specifieks rapporteren als de gebruiker er met de superuser beheerder. Maar dan weer over na te denken, de persoon die wilde dat het typo eruit zien als een eenvoudige, maar als deze code werkelijk was vrijgegeven, dan zou je in staat zijn geweest om in een systeem te hacken door het passeren van een bepaalde vlag - in dit geval b = 0 - en het zou automatisch de gebruiker de beheerder, en dan heeft hij de volledige controle. Dit gebeurde in 2003. Het is gewoon zo gebeurde het dat de enige reden waarom het werd gevangen was omdat er toevallig een aantal geautomatiseerde systeem dat merkte de verandering in dit bestand die nooit zijn veranderd door een mens. De vijl mag alleen automatisch zijn gegenereerd. Het is gewoon zo gebeurde het dat iemand aangeraakt - goed, de persoon die wilde hacken aangeraakt dat bestand, en de computer gepakt dat het aanraken. Dus, ze veranderde dit en pas later besefte wat een ramp het zou zijn geweest als dit had gekregen uit in de echte wereld. U kunt denken dat - terug te komen naar onze compiler voorbeeld - hoewel we niet kunnen zien - te kijken naar de broncode - dat er iets in het bijzonder verkeerd is, als we echt kijken naar de binaire code van compiler, zouden we zien dat er iets mis is. Als voorbeeld, als we lopen de snaren functioneren - dat is gewoon om te kijken over een bestand en uit te printen alle snaren die het kan vinden - Als we lopen snaren op onze compiler, zien we dat een string die het vindt is deze vreemde - else if (strcmp (gebruikersnaam, "hacker") - blah, blah, blah. Als iemand toevallig paranoïde genoeg zijn om geen vertrouwen in hun compiler, ze kon lopen strijkers en zien, en dan zouden ze weten dat er iets mis was met de werkelijke binary. Maar, strings was onvermijdelijk iets dat werd samengesteld. Dus, wie zegt dat onze compiler niet alleen meer speciale code hebben dat zegt, als strings is ooit op onze compiler, niet uitvoeren al die kwaadaardige code. Hetzelfde idee met als we willen demonteren van het bestand - hebben we geleerd dat de assembler brengt ons van de montage-code naar een machine code - we kunnen gaan in de tegenovergestelde richting - objdump-d compiler - zal ons de assemblage van onze code. Kijkend naar deze, het is vrij cryptisch, maar als we wilden, we konden zien door middel van deze en rede, wacht, er is iets aan de hand hier die niet mogen worden aan de hand, en dan zullen we erkennen dat de compiler is iets kwaadaardig doet. Maar, net als strings, wie zegt objdump was niet bijzonder-cased. In principe komt het neer op u niet kunt vertrouwen niets. Het punt van het papier wordt genoemd "Vertrouwen Vertrouwen" is in het algemeen, vertrouwen we onze compiler. Het samenstellen van je code en verwachten dat het doet wat je vraagt ​​het te doen. Maar, waarom zou je vertrouwen op de compiler? Je schreef niet de compiler. Je weet niet wat de compiler se eigenlijk aan het doen. Wie zegt dat je het kan vertrouwen? Maar zelfs dan, nou ja, misschien kunnen we vertrouwen hebben in de compiler. Er zijn tienduizenden mensen die hebben gekeken naar deze. Iemand moet erkend dat er iets was met de compiler. Wat als we gewoon naar een niveau dieper? Het kan zelfs je processor. Even belachelijk als het misschien zou kunnen zijn, misschien is er een aantal malafide medewerker van Intel, die zorgt voor deze processoren dat wanneer die processor merkt dat je sommige opdracht uitvoert dat is bedoeld om in te loggen op de computer, de processor zal accepteren een aantal specifieke gebruikersnaam en wachtwoord combinatie. Het zou enorm ingewikkeld zijn, maar iemand zou kunnen doen. Op dat moment ben je echt open te stellen uw computer om te kijken naar de processor en het gebruik van een microscoop om te erkennen dat deze circuits niet worden opgesteld zoals ze moeten zijn? Niemand zal ooit die fout te vangen. Op een gegeven moment, hoef je alleen maar op te geven en vertrouwen iets. De meeste mensen hebben vertrouwen in de compiler op dit punt. Dat wil zeggen niet noodzakelijk dat je moet. Kijkend naar een enigszins beruchte video - [Dramatische muziek] [Het is een UNIX-systeem. Ik weet dat dit.] [Het is van alle bestanden -] Ze zei: "Het is een UNIX-systeem. Dat weet ik." Vervang UNIX met wat uw favoriete besturingssysteem - Ze had kunnen zeggen: "Het is een Windows-systeem. Dat weet ik." Het is een compleet zinloze verklaring, maar voor zover we weten, dat ze toevallig een achterdeur kennen in het UNIX-systeem. Ze weet wat username / password combinatie die daadwerkelijk zal haar laten doen wat ze wil. Oke. De moraal van vandaag is eigenlijk kun je niet vertrouwen niets. Zelfs dingen die je schrijft - dat je niet schrijft de compiler. De compiler kan slecht zijn. Zelfs als je deed schrijven de compiler, kon het ding dat is het uitvoeren van de compiler zijn slecht. (Lacht) Er is niet veel dat je kunt doen. De wereld is gedoemd. Terug naar David! [Applaus] [David] Thanks. Dat was echt deprimerend. Maar inderdaad, Rob is correct. We hebben niet echt een oplossing voor, maar je staat op het punt een aantal oplossingen te krijgen wat vaker verdediging. In afwachting van dit, wat Nate en ik heb buiten het podium daar aan het doen is te weten dat er zo veel laptops in deze kamer, we al snuiven al het draadloos verkeer gaan door deze kamer voor de laatste 20 minuten tijdens gesprek Rob's, dus we gaan naar een 2 minuten pauze hier te nemen. Nate gaat zetten, en dan gaan we praten over alle dingen we hadden kunnen vinden. (Gelach) Dus, misschien heb ik een beetje overdreven alleen maar omwille van drama, maar we hadden kunnen snuiven al uw draadloze verkeer, want inderdaad, Het is zo makkelijk. Maar er zijn ook manieren waarop u kunt verdedigen tegen deze, zo en met dat, Ik geef je Nate Hardison. >> [Nate] Sweet. (Applaus) [Nate] Bedankt, man. Ik waardeer de schreeuw. Goed zo! Het is spel week. Zijn jullie opgewonden? Hopelijk gaat naar een grote wedstrijd op zaterdag zijn. Ik kan me voorstellen dat jullie op dit moment - gezien het feit dat je een quiz op woensdag hebben alles over code, en we zat door een prachtige lezing van Rob met een hele hoop van C-code in het - zijn misschien een beetje moe van code. In dit deel gaan we eigenlijk niet van plan om een ​​code dan ook aan te raken. We gaan gewoon om te praten over een technologie die u dagelijks gebruikt, vaak voor vele, vele uren per dag, en we praten over de implicaties van beveiliging die er zijn. We hebben veel gepraat over de veiligheid in de loop van het semester, en we zijn begonnen met een klein beetje van crypto. [Bdoh lv vwlqng!] En terwijl jullie zijn waarschijnlijk super-enthousiast te passeren notities aan elkaar in de klas met behulp van een Caesar cipher zoals deze, in werkelijkheid, er is wat meer plezier te hebben als je eigenlijk over de veiligheid en dat soort dingen. Vandaag gaan we een paar technologieën dekken dat mensen daadwerkelijk gebruik maken van in de echte wereld om allerlei dingen te doen van snuiven mensen pakketten om daadwerkelijk te gaan in en inbreken in andermans bankrekeningen en dat allemaal. Dit zijn legitieme hulpmiddelen die we het over hebben met uitzondering van mogelijk een werktuig. En ik wil gewoon snel een disclaimer te maken. Wanneer we praten over deze dingen, we hebben het over hen, zodat je weet wat daar buiten, en je je bewust bent van hoe veilig te zijn wanneer u met behulp van uw computer. Maar we zeker niet willen impliceren dat je moet deze tools te gebruiken in uw dorm of uw huis, want je kunt lopen in veel grote problemen. Dat is een reden vandaag dat we eigenlijk niet zijn uw pakketten snuiven. Oke. Afgelopen maandag hebben we gesproken over cookies en HTTP-, en authenticatie, en hoe Firesheep opent dit grote deur in uw Facebook-account, om uw Hotmail-account - als iemand nog steeds met behulp van Hotmail - en vele andere accounts. Een groot deel van dit spul gaat af te bouwen van dat, maar eerst wil ik een korte rondleiding van hoe het internet is in de loop tijd in beslag nemen. Terug in de jaren '90, zou jullie heb gedacht eigenlijk het aansluiten van uw computers met een van deze. Nu hoeven we niet zo doen dat veel meer. Het blijkt eigenlijk uit dat om aan te sluiten een Ethernet-kabel aan op mijn laptop, Ik heb nu een van deze adapters die is een soort van gek te gebruiken. In plaats daarvan, in 1997 hadden we deze nieuwe, leuke technologie kwam uit dat bekend staat als IEEE 802.11, dus dit is het draadloos internet standaard De IEEE is dit bestuursorgaan dat geeft uit allerlei - publiceert allerlei normen met betrekking tot computers. De 802-normen zijn allen over Internet technologieën. Dus 802.3, bijvoorbeeld de Ethernet standaard, 802.15.1 ik geloof is de Bluetooth-standaard, en 802.11 is alles over draadloos internet. In 1997 kwam. Het kwam niet helemaal aanslaan meteen. Het was niet tot 1999 en de 802.11b-standaard kwam dat net echt populair. Hoeveel van jullie herinneren wanneer computers begonnen coming out en het krijgen van wi-fi op hen? Dat was wel cool, huh? Ik herinner me mijn eerste laptop op de middelbare school, en het had een draadloze kaart in. Mijn vader gaf het aan mij en zei dat ik het gebruiken voor mijn college apps en dat alles, en ik had geen idee hoe ik zou gaan opzoeken dit spul online. Maar gelukkig had ik een draadloze kaart, dus dat was wel cool. Tegenwoordig zie je ook 802.11g dat is een van de andere echt populair draadloze standaarden die is daar. Zowel b en g zijn behoorlijk verouderd op dit punt. Weet iemand welke versie de meeste mensen zijn op dit moment als ze nieuwe draadloze routers en dat soort dingen te kopen? N. Precies. Bingo. En het blijkt dat de AC-norm gewoon komt uit in een ontwerp-vorm, en er zijn andere versies op de weg. Met elk van deze normen wat we steeds meer bandbreedte, meer gegevens in een sneller tempo. Deze dingen blijven veranderen vrij snel. Het maakt het ook zo dat we meer routers en al die leuke dingen te kopen. Laten we eens praten over wat draadloze communicatie eigenlijk in de kern. Met Ethernet en die oude dial-up modems, je eigenlijk had dit spul dat je aangesloten op de computer, en dan aangesloten op een modem van soorten, en dan stopte het in een aansluiting in de muur. Je had dit bekabelde verbinding, toch? Het hele punt van draadloze is het wegwerken van dit spul. Om dat te doen, wat we hebben is in wezen een radio communicatie waar onze draadloze router - aangewezen door onze kleine pictogram voor draadloze communicatie - is verbonden met het Internet met deze vaste pijl een soort kabelverbinding, maar wanneer u verbinding maakt met uw draadloze router je eigenlijk met bijna als een walkie-talkie tussen de computer en de draadloze router. Wat is echt cool over dit is dat je kunt bewegen. U kunt uw computer alle overdracht Sanders, ga surfen op het web, wat je wilt, net als jij allemaal kennen en liefhebben, en je hoeft niet eens te worden aangesloten om iets. Om dit te laten werken, hebben we zowel deze ontvangst en verzending. Het is echt zo walkie-talkie. Deze draadloze router - die in Sanders zit onder dit stadium, exact hier - is altijd uitzenden en ontvangen, uitzenden en ontvangen, en ook, zijn uw computers al om dat te doen hetzelfde soort dingen ook. We kunnen gewoon niet horen. Het andere ding dat je kunt doen is kunt u meerdere computers praten met dezelfde draadloze router. Hoe dichter u zich bij een router - en nogmaals, dit is een radio communicatie - hoe dichter je bent, hoe beter je signaal is, hoe beter de computer 'hoort' de router en kan communiceren met het internet. Als jullie ooit op uw studentenhuis, bij uw huis en je je afvraagt ​​waarom je signaal is slecht, het is waarschijnlijk omdat a). je bent niet erg dicht bij je router of b). er is iets tussen jou en je router als een betonnen muur of iets dat niet laten die radiogolven gaan door. Laten we een beetje praten over waarom slechteriken zoals Wi-Fi. Bad jongens liefde wi-fi voor een paar redenen. Hier is onze vervelende slechte kerel daar. Een van de redenen waarom deze slechte kerel houdt van Wi-Fi is omdat, standaard, veel draadloze routers komen en als je ze ingesteld, ze niet versleuteld. Dit is een probleem, en er zijn gevallen - meerdere exemplaren, nu - waar slechte kerel toont tot iemand thuis, merkt dat er een niet-versleutelde wi-fi waarop ze verbinding kunnen maken. Ze verbinding maken met de wi-fi, en dan zijn ze beginnen met het downloaden van allerlei leuke dingen. En ze zijn niet het downloaden van kittens, zijn ze niet te downloaden puppies. Dit is zoals BitTorrent. Dit is het vervelende van de naarste. Er zijn gevallen waarin de FBI zelfs heeft gekregen die betrokken zijn denken dat de persoon die eigenaar is van het huis eigenlijk is het een gaan die er zijn en het downloaden van dingen die ze echt niet moeten zijn. Na ongecodeerde Wi-Fi is niet zeker iets wat je wilt doen, al was het maar om niet de FBI komen kloppen aan je deur. Een andere reden waarom slechteriken hou van Wi-Fi is de reden dat David het eerder over had tijdens de pauze. Omdat het een radio communicatie in de kern, als je weet dat het kanaal, kunt u luisteren naar dat radiostation. Bijvoorbeeld, als er een slechte daar zitten in het midden naast het toegangspunt, vlak naast dat draadloze router, kan de bad guy in luisteren op alle van het draadloze verkeer dat komt van al die computers. In feite zijn deze jongens - deze weinige gelukkigen die hier op de eerste rij - omdat ze super-dicht bij al deze draadloze routers die zitten net onder het podium, zouden ze in staat zijn om ieders verkeer horen in deze hele kamer Als je contact hebt met Wi-Fi om te bladeren door deze toegangspunten. Het is niet erg moeilijk om jezelf te zitten in een goede positie te ruiken en erachter te komen wat andere mensen aan het doen zijn. Het is iets om in gedachten te houden, vooral als je niet zeker weet waar het access point is, en je surft zeggen, bij een Starbucks. Het blijkt dat snuiven en dat alles is helemaal niet zo moeilijk om te doen. Er is een programma genaamd tcpdump die dumpt allerlei TCP-verkeer en je het kan draaien vrij eenvoudig - net zoals ik deed vanmorgen. Hier is een beetje een puinhoop, en hier is een deel van het verkeer dat zou komen mijn netwerk op dat moment. U kunt zien - als je scheel echt moeilijk - er is een klein beetje van Spotify in. Op de top van tcpdump - want dit is een beetje vervelend om te gebruiken - Er is een programma genaamd Wireshark welke bundels dit alles in een mooie GUI. Wireshark is superhandige dus als je gaat naar netwerken lessen te nemen, Dit is een tool die je zult gaan houden, omdat het helpt je ontleden alle pakketten die zweven rond die er zijn. Maar kan ook gebruikt worden voor slechte. Het is heel eenvoudig om gewoon dit programma downloaden, op te starten het op, een netwerkverbinding tot capture, en zie alles wat er aan de hand is - en filteren en doen allerlei leuke dingen mee. Het andere ding dat je kunt doen met draadloze communicatie is niet alleen kunt u luisteren, maar u kunt ook leren hoe te schroeven met het netwerk en injecteer uw eigen informatie aan de ervaring te beheersen dat andere mensen op hetzelfde draadloze netwerk krijgt. Laten we eens een kijkje nemen op die. Hier is Firesheep - die we kennen en liefhebben van vorige week - namelijk dat afluisteren technologie. Als, bijvoorbeeld, wilden we actief onze slechterik gaan en prutsen met een van deze computers, In dit scenario hebben we een computer probeert te surfen naar harvard.edu. Wat er gebeurt is, stuurt de computer eerst een bericht naar de draadloze router en zegt: hey, ik wil bezoeken www.harvard.edu gaan. Zeg om wat voor reden ze proberen om informatie over het spel te krijgen dit weekend. Bad guy, omdat hij recht in het midden zit, vlak naast dat access point, kan zien dat de communicatie vanuit de computer in de router, en hij weet: "Aha! Iemand gaat harvard.edu." (Boosaardig lacht) Er gaat deze latentie te zijn, terwijl de communicatie gaat van de router naar het internet te gaan zoeken van de webpagina op harvard.edu-- net zoals jullie allemaal weten na het doen van uw PHP psets - en dus de slechterik heeft een beetje tijd, een beetje van het venster, waarin hij kan antwoorden met wat spullen. Laten we zeggen dat deze slechte kerel, is natuurlijk een Yaley. Hij reageert met harvardsucks.org. Boo! Bad, bad guy! Bad Yaley! Of nog erger, zou hij antwoorden met dat. [Http://youtu.be/ZSBq8geuJk0]. Ik laat jullie erachter te komen wat dat is. Dit is eigenlijk een technologie genaamd Airpwn! die werd debuteerde op een van de beveiligingsconferenties een paar jaar terug. Met Airpwn! je bent in staat om daadwerkelijk terug te injecteren verkeer in het netwerk. De computers die probeerden om uit te gaan op het internet en proberen te krijgen tot Google.com te Facebook.com te harvard.edu zie de kwaadaardige respons komen en onmiddellijk te nemen, oke, dat is het antwoord dat ik zat te wachten en uiteindelijk krijgt de inhoud van harvardsucks.org of nameyourfavoriteshocksite.com, en je kunt zien hoe snel dingen zullen verslechteren. Al dit soort dingen niet kan worden gedaan met deze bedrade verbindingen, want met een bekabelde verbinding is het moeilijk om op snoop voor het verkeer. Als ik een slechte kerel en aan de ene kant is de computer en aan de andere kant is de router - modem - de enige manier waarop ik kan in te krijgen tussen dat verband is het daadwerkelijk splitsen mijn computer ergens in het midden of iets anders met de router, iets stroomafwaarts. Maar met draadloze, kan het net zo makkelijk als het zitten op de eerste rij van een klaslokaal, en je kunt doen allerlei nare dingen aan de mensen in de rug. Laten we praten over hoe je zou kunnen verdedigen tegen een aantal van deze dingen. De mensen die ontwikkelde de draadloze standaarden - de 802.11 - ze zijn niet dom volk door een stuk van de verbeelding. Dit is cool technologie en wanneer hij debuteerde in 1999, ze kwam naar buiten met deze standaard genaamd WEP. U kunt hier zien wanneer u probeert en aan een draadloos netwerk, je hebt allerlei verschillende beveiligingsopties. Dat is een beetje vervelend, want er zijn 6 alles bij elkaar en het nooit echt zinvol waarvan 1 aan te sluiten. Deze 1 aan de bovenkant is de eerste die ze kwam met de naam WEP. WEP staat voor Wired Equivalent Privacy, geloof ik, niet Wireless Encryption Protocol dat is een veel voorkomende verkeerde benaming. Omdat het probeert om u privacy gelijkwaardig en beveiliging gelijkwaardig is aan die van een bekabeld netwerk Met WEP wat eindigt gebeurt is, heb je een eenvoudige, kleine wachtwoord dat u typt in en dat dient te coderen al uw communicatie tussen uw computer en uw router. Wat is het probleem met WEP wel? Het wachtwoord met WEP is echt kort, en ook iedereen gebruikt dat exact dezelfde wachtwoord,  en dus het is echt makkelijk te decoderen. Dus heel snel mensen achter dat WEP een probleem was, en de enige reden zie je laten zien nog steeds op deze kleine kerel is - zijn er een aantal oudere systemen die gebruik maken van WEP - wat je zou moeten zoeken naar de WPA en WPA2 zelfs normen die werden later vrijgegeven. Deze systemen zijn een veel betere gaan op bescherming op draadloos internet. Dat gezegd hebbende, ze nog steeds een aantal hackability. Er zijn tools die er zijn die kunnen gaan doen. Een ding in het bijzonder dat kan zijn vervelende is dat Als u verbinding maakt en geverifieerd met een draadloze router en gebruik maakt van een soort van gecodeerde communicatie, blijkt dat een hacker gemakkelijk kunt een enkel pakket om u de verbinding met de router, en als ze eenmaal los je ze kunt dan luisteren - ze kunnen snuiven die pakketjes als je probeert te herstellen van de verbinding met de router. En met die informatie kunnen ze dan gaan en decoderen van de rest van uw communicatie. Dit is niet met alle middelen welke soort van veilige voorbij alle verbeelding. Het andere wat je kunt doen als je het opzetten van draadloze netwerken of je bent mee hen is - je merkt dat hier toen ik dit netwerk verbinden, hij vraagt ​​naar de naam van mijn netwerk. Dit wordt ook wel de SSID. En je ziet hier dat aan de rechterkant heb ik een vak dat toont me de beschikbare SSID's hebben. Er is een Harvard University, een CS50, CS50 en een Staff netwerk. Nu, hoeveel van jullie wist dat er rond een CS50 Personeel netwerk? Sommigen van jullie. Niet alle van jullie. Het probleem met dit is natuurlijk, is dat niet had we dit zetten op onze lijst met SSID's, niemand zou hebben geweten over het meest waarschijnlijk. Hoop ik. Tenzij jullie allemaal proberen te kraken in onze draadloze. Maar dit is iets wat je kunt doen, dat is echt belangrijk als je het opzetten van een router thuis. Dit zal waarschijnlijk niet gebeuren voor een paar jaar voor veel van jullie, maar houd in gedachten dat het houden van deze SSID daar weg en niet ook te benoemen iets super-common zal helpen houden u veiliger op de lange termijn. Een laatste paar dingen die je kunt doen. Een daarvan is HTTPS. Als je op een Starbucks, als je in een openbare WiFi-zone en je besluit om uw bankrekening te openen, toegang krijgen tot uw Gmail, uw Facebook-, Zorg ervoor dat deze verbindingen gaan via HTTPS. Het is een extra laag van beveiliging, een extra laag van encryptie. Het enige wat hier in gedachten te houden is, hoeveel van jullie hebben ooit geklikt door die grote, rode scherm dat zegt, "Deze website kan slecht zijn." Ik weet dat ik heb. Het is waarschijnlijk als je alle surft om te gaan Homeland of iets dergelijks, toch zien? Ja. (Gelach) Ja. Daar ga je. We weten wie er Homeland kijken. Die grote, rode scherm daar Vaak geeft aan dat er iets funky aan de hand is. Soms is het gewoon de website zelf onzeker is, maar dat dezelfde grote, rode scherm komt wanneer mensen proberen te mount netwerk aanvallen op je. Dus als je ziet dat grote, rode scherm komen bij een Starbucks, klik niet doorheen. Slecht nieuws. Slecht nieuws draagt. Het laatste ding dat je kunt kijken naar is een soort van VPN. Deze VPN is beschikbaar via Harvard - vpn.fas.harvard.edu-- en wat dit doet is het eigenlijk een beveiligde verbinding legt tussen u en Harvard, trechters uw verkeer doorheen, en op die manier als je zit op een plaats zoals een Starbucks kunt u verbinding maken Harvard, krijgen dat veilig verkeer, en blader vervolgens naar Harvard. Nogmaals, niet waterdicht. Mensen kunnen in het midden. Ze kunnen beginnen te breken, maar dit is veel veiliger dan te vertrouwen op de veiligheid van de Wi-Fi alleen. Oke. Kortom, wanneer u het opzetten van draadloze netwerken, als je uit te gaan naar draadloze gebruik in het openbaar - of het nu een Starbucks, of het nu Five Guys, of het nu b.good, zoiets - waar ze ook hebben wi-fi - bewust zijn van je omgeving. Wees je bewust van wat mensen kunnen doen. En veilig zijn. Hebben geen toegang tot uw bankrekening. Het zou een koude kermis thuis te zijn als iemand opduikt met uw wachtwoord later. Met dat, ga crimson! En ik ga terug te keren dingen over aan David voor een laatste woord. (Applaus) [David] Ik dacht dat ik zou een ding delen uit eigen ervaring. Een tool die je misschien leuk om te spelen met - hoewel Apple heeft grotendeels uitgeroeid deze kwestie als je hebt bijgewerkt uw software sinds - maar in de richting van dit doel van niet echt in staat om software die we gebruiken vertrouwen, en om Nate's punten, in staat om heel wat van wat andere mensen doen ruiken die er zijn - dit was een stuk software dat kwam ongeveer een jaar-en-een-half geleden. [IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] Sinds enige tijd, iTunes - voor iCloud, toen je je iPods of iPhones synchroniseren uw of of uw iPads met iTunes - in het belang van back-ups, wat uw iPhone en deze andere apparaten hebben gedaan voor enige tijd is gebruik maken van GPS-gegevens. Jullie weet misschien dat je iPhones en Androids en Windows mobiele telefoons en dergelijke deze dagen kunt bijhouden waar je bent in het belang van het tonen van je kaarten en soortgelijke - goed wat Apple en deze andere bedrijven doen is ze meestal volgen bijna overal waar je bent eigenlijk al in het belang van verbetering van de kwaliteit van de dienstverlening. One, kunt u meer gerichte reclame en dergelijke, maar twee, kunnen ze ook erachter te komen waar zijn er draadloze hotspots in de wereld, en dit kan helpen met geo-locatie - soort van triangulatie van de mensen de positie. Lang verhaal, had ons allemaal gelopen antennes voor een bepaalde hoeveelheid tijd. Helaas, had Apple het ontwerp gemaakt beslissing - of het ontbreken daarvan - niet versleutelen van deze informatie toen het werd zijn back-up naar iTunes. En wat de veiligheid onderzoeker ontdekte was dat dit was gewoon een enorme XML-bestand - een enorme tekstbestand - zitten in mensen iTunes-software, en als je gewoon een beetje nieuwsgierig, je zou kunnen gaan rondneuzen geschiedenis van uw echtgenoot, uw huisgenoot de geschiedenis, je broer of zus de geschiedenis en dergelijke, en dankzij een aantal gratis software, kunt u plot al deze GPS-coördinaten - lengte-en breedtegraad. Dus, ik eigenlijk deed dit met mijn eigen telefoon. Ik stopte in mijn telefoon, en ja hoor, mijn versie van iTunes was niet versleuteld op het moment, en wat ik kon zien waren mijn eigen patronen. Hier is de Verenigde Staten en elk van deze blauwe cirkels vertegenwoordigt waar ik toevallig te zijn geweest over die voorgaande maanden van het bezitten van dit specifieke type telefoon.  Ik besteed veel tijd, natuurlijk, in het noordoosten, een beetje tijd in Californië, een kortstondige trip naar Texas, en als je dan in te zoomen op deze - dit is allemaal soort van boete en interessant, maar ik wist dit. De meeste van mijn vrienden wisten dit, maar als je duiken in diepere, zie je waar ik het grootste deel van mijn tijd in het noordoosten. Als je klink op een aantal bekende uitziende steden - Dit grote, blauwe inkt splotch in wezen gecentreerd over Boston, en dan breng ik een klein beetje een time-out in de buitenwijken uit Boston uitstraalt. Maar ik was ook bezig heel wat overleg dat jaar. En dit jaar is de oostkust, en je kunt eigenlijk me zien en mijn iPhone in mijn zak heen en weer reizen tussen Boston en New York en Philadelphia verder naar beneden, evenals de uitgaven een beetje vakantie tijd op de Kaap, dat is de kleine arm die er zijn. Dus, elk van deze punten vertegenwoordigt zo'n plek waar ik was geweest, en volledig buiten het medeweten van me, was heel deze geschiedenis gewoon zitten op mijn desktop computer. Als je uit te zoomen - dit was eigenlijk een beetje verontrustend. Ik had niet herinneren ooit te zijn geweest in Pennsylvania dat jaar. Maar ik wel een beetje harder over nagedacht en ik bedacht, o, het was in feite die reis en ja hoor, had mijn telefoon gepakt mij. Apple heeft sinds gecodeerd deze informatie, maar dit is gewoon te getuigen van de hoeveelheid informatie die wordt verzameld over ons, en hoe gemakkelijk - ten goede of ten kwade - het is aanvaardbaar. Een van de take-aways hopelijk uit de toespraak van Rob's, uit de toespraak van Nate's en weinig visuals als deze vandaag de dag is alleen maar om des te meer bewust van deze zodat ook al - als punt Rob's - we zijn soort van geschroefd, toch? Er is niet veel dat we kunnen doen als het gaat om een ​​aantal van deze bedreigingen, maar aan het eind van de dag moeten we iets of iemand vertrouwen als we willen daadwerkelijk gebruik maken van deze technologieën. We in ieder geval kunnen worden het maken van geïnformeerde beslissingen en berekende beslissingen al dan niet we moeten daadwerkelijk worden het raadplegen van deze bijzonder gevoelig rekening of we moeten daadwerkelijk worden sturen die iets chatbericht vermoeden  in een Wi-Fi omgeving als deze. Dus, met dat gezegd, maar een quiz blijft, een lezing blijft. We zien je woensdag dan maandag. (Applaus en gejuich) [CS50TV]