[Powered by Google Translate] [Недела 10] [Дејвид Џ Malan] [Универзитетот Харвард] [Ова е CS50.] [CS50.TV] Сите во право! Ова е CS50, но не и за многу подолго. Ова е почеток на недела 10. Во средата Ние имаме квиз, а потоа следниот понеделник имаме некои славеничка торта како што доаѓаат полн круг целиот пат назад од недела нула. Денес, ние зборуваме за една од моите омилени теми, вистината може да се рече - дека на безбедноста и приватноста и импликациите на сите на хардвер и софтвер дека сите ние ги користат овие денови. Да бидам искрен, постојат многу закани таму дека ако не се навистина пауза да се размислува за нив, тие се всушност прилично застрашувачка. Случај во точка - ако некој од вас некогаш преземале парче софтвер исклучување на интернет и инсталиран на вашиот компјутер, сте ангажирани во значителен степен на доверба, нели? Нема ништо ја спречи Skype, или Хром, или било парче софтвер сте го инсталирале на вашиот компјутер, од едноставно бришење на сите датотеки на вашиот хард диск; од качувањето на сите датотеки на вашиот хард диск на серверот некои на лошо момче е; од читање на сите ваши пораки, од зграпчување на сите ваши инстант пораки. Бидејќи реалноста е денес со повеќето модерните оперативни системи навистина не е многу на ѕидот меѓу софтверски програми кои ќе го инсталирате, и ти и јас се доста само вид на премин нашите прсти и преземање на верата дека тоа стан ние симне бесплатно, или дека нешто што е 99 центи, е всушност сосема бенигна. Но, како што видовме преку C, а сега PHP и го вклучите Javascript-, со оваа способност да се изразуваме programatically, можете да направите најмногу нешто што сакате со програма со која на корисникот сам не можеше да стори. Значи, денес ние се фокусираме на таа тема - не само некои закани, но, исто така, одбрана. Навистина, во светот на безбедноста воопшто, таму е вид на оваа мачка и глушец игра, и јас daresay лошите момци скоро секогаш имаат нога. Кога станува збор за искористување на хардвер и софтвер на нашите сопствени персонални компјутери, ние мора да сфатат дека лош човек едноставно треба да се најде една едноставна грешка - еден искористат, еден баг - во парче софтвер што сум напишал или се работи со цел за него или неа да го преземе целиот наш систем. Спротивно на тоа, ние - добрите момци - треба да се закрпи и да ја поправите сите оние грешки и да се избегне сите оние слабости. И така, јас daresay во целина, на лошите момци имаат предност. Што класи како оваа и следните класи се навистина за не се за вас учењето како да се водат битки дека овие лоши момци прават, но за тоа како да се заштитат себе си или барем како да се направи пресметува одлука дека да, знам дека ова парче софтвер навистина може да ја прочита секој еден од моите пораки, но јас сум во ред со тоа, бидејќи на вредноста тоа ме носи од друга страна. Јас сум многу задоволен да се придружија 2 од најпаметните луѓе што ги знам - Роб Бауден и Нејт Hardison. Роб е за да ни земе за турнеја низ најниско ниво на безбедност тагови - дека на компајлерот што, до сега, ние сме сите доаѓаат на љубовта и довербата. Роб Бауден. [Аплауз] [Роб] Во ред. Дејвид има доста земе целиот мој зборувам сладкодумно дека ќе одам да се воведе со тоа, но - Пред неколку недели, виде примерот на тампон-претекување напади која е пример на еден хакер хакирање во некои парче софтвер дека тие не би требало да се хакирање во. На другата страна на овој понекогаш имате софтвер кој е штетен во себе и за себе. Тоа дури и не треба да се пробиени. Лицето кое го напиша софтверот сака да ви се пробие. Ајде само скокаат право во кодот, Гледано во "login.c". Тука, глупо програма со која потврдува корисничко име и лозинка комбинација. Овде можете дефинитивно треба да се добивање удобно со C повторно за квиз. Прво, ние се користат да се стрингови за да се опише корисничко име, тогаш ние користиме get стринг за да го дофати лозинка, и тогаш имаме некои тривијални проверки на само, е корисничко име "Роб"? И е лозинка "thisiscs50"? Или, пак, е корисничко име "Томи" и лозинка "з <3javascript"? Ако било кој од овие е случај,  тогаш ние само ќе печати "Успех", а потоа имаме пристап. Во спротивно, ние ќе печати "неправилен Влезот", а потоа, се разбира,  бидејќи меморија скица жици Примерок, ние бесплатно корисничко име и лозинка. Ова е тривијална најава програма, и ако мислите дека за тоа кога ќе се најавите во уредот, тоа е прилично слични - или дури и да влезете во вашиот компјутер - има само некои најава програма која ви дава пристап. Тука, ние се случи да имаат хард-кодирани 'Rob', 'thisiscs50', 'tommy', 'з <3javascript, но веројатно постои некоја датотека некаде на вашиот оперативен систем која има листа на корисник кој може да се најавите на системот и листа на лозинки поврзани со овие кориснички имиња. Обично лозинки не се само зачувани како чист текст се допаѓа ова. Постои некој вид на енкрипција, но ова ќе направи за нашиот пример. Доаѓаат во текот на нашиот компајлерот - тоа се случува да биде многу лесно. Ние треба да наведете барем некои датотеки кои сакаме да ги собере, а потоа тука - овие линии се само читање на датотеката. Таа го чита целата датотека во една голема тампон, и тогаш нула-раскине нашите тампон како и секогаш, и конечно ние само ги собира на датотеката. Ние нема да се погледне како компајлирање всушност е имплементирано, но како навестување, тоа само ги повикува ѕвекот. Ние ќе ја користите оваа програма да ги собере работите наместо ѕвекот. Еден проблем ние започнуваме со е гледаме дека сакате да компајлирате нашата компајлер, но ако ние нема да се користи ѕвекот, јас не знам што јас ќе одам да ги собере со. Ова е општо прашање познат како bootstrapping. Значи, само ова уште еднаш, јас одам да се користи ѕвекот да ги собере нашите компајлерот. Ако мислите дека на GCC и ѕвекот - тие програми, оние компајлери постојано се ажурираат, и оние компајлери се компајлирана користење на GCC и ѕвекот. Ѕвекот е само една голема C или C + + програма, па компајлерот тие ги користат за да ги собере што е ѕвекот. Еве, сега, ние сме само ќе биде со користење на нашите компајлерот да ги собере нашите компајлер, а ние дури и може да се каже - '/ компајлерот.', 'compiler.c', 'compile.c', '-о компајлерот. Забележите ова е точната команда Истрчав пред - само замени ѕвекот со ". / компајлер. И сега имаме друг компајлер, но тоа е токму истото. Тоа само ги повикува ѕвекот. Ние ќе ги користат нашите компајлерот да ги собере нашите најава програма. Океј - ". / Компајлер login.c-о најава". Значи, недефинирана повикување на "GetString". Доби "-lcs50". Во ред. Па сега јас имаме најава програма. Трчање - добиваат "Ве молиме внесете го Вашето корисничко име". Еден пример е Роб. Ве молиме внесете ја вашата лозинка - thisiscs50. И успех! Имам пристап. Вклучување повторно и внесување на некои невалидни лозинка - или не е валиден корисничко име и лозинка - неправилен Влезот. Во ред. Ништо интересно за оваа досега. Но, ајде да ги разгледаме во најава повторно - и ова ќе биде нешто тривијални пример, но, ајде да додадете друг тука и да каже, друго ако ((strcmp (корисничко име, "хакер") == 0 && strcmp (лозинка "LOLihackyou") == 0)) па сега, printf ("Хакирано Вие сега имаат пристап \ n!."); ред. Составувањето на оваа - компајлерот login.c-о логирање-lcs50 - сега работи најава - и ако јас го користам моето корисничко име хакер и лозинка LOLihackedyou - Никако не можев да ја внесете погрешен таму и пред тоа? Во login.c--ihack - I'll се пробиени, бидејќи мислам дека јас го правам тоа подоцна. Во ред. Рекомпајлирање. Повторно работи - хакер - LOLihackedyou - Пробиени! Сега имаш пристап. Таму не чини да се биде дека многу разлика затоа што тоа е исто точно проверка правам за другите кориснички имиња и лозинки. Плус, голема работа е дека ако другите луѓе се погледне на овој login.c-- да речеме, ако јас го помине овој исклучи мојот партнер, и тие се отвори оваа датотека, и тие читаат ова, тие ќе видиме - во ред, зошто имате овие линии на код овде? Тоа не е очигледно нешто што треба да биде во вашата програма. Во некои програми - како било кој комерцијален софтвер кој не е со отворен код - можеби никогаш нема да ги види овие линии на код. Нешто како Skype или нешто - за сите што знаете, Skype е на вашиот компјутер и има само некои специфични корисничко име, лозинка комбинација кои ќе се најавите на Skype во некои посебен начин. Ние не знаеме за тоа, и луѓето не знаат за тоа, бидејќи тие не се за да го прочитате sourcecode да се види дека има оваа дупка. Она што го нарекуваме ова - иако тоа не е многу јасен пример - ова се нарекува задната врата. Ако мислите дека на задната врата на вашата куќа. Еве, ако јас се провери со "на rob на корисник или" Томи " Тоа би било како со помош на "пред врата". Тоа е начинот на кој јас сум требало да се логирате на безбедно. Но, ако јас внесете со оваа корисничко име и лозинка - тогаш тоа е со користење на "задна врата". Тоа не беше намерно начин да се добие во програмата, но се уште работи. И луѓето воопшто не би требало да знаете за овие задните врати. Ние ќе се подобри ова. Да се ​​вратите на нашиот оригинален login.c, и ајде да ги разгледаме во нашата нова компајлерот. Во ред. Сè што тука е иста. Ние ја читаш целото досие во тампон. Сè што тука долу е иста. Ние само Составувач на датотеката. Но, сега имам голема, ако тука кој се вели дека, ако датотеката што се случи да биде составувањето е login.c, тогаш правам нешто посебно. Што е тоа нешто посебно? Гледам тука некои стринг наречена "hack", и разгледување на овие линии на код - овие се исти линии на код - Претпоставувам дека го употреби "ihack", а не "ihacked" пред - гледајќи во овие линии на код, тие се исти точно линии на код кој што ги имав во login.c порано. Но сега, наместо да ги login.c, Одам да ги стави во мојот компајлерот. Овие се линии на код, ќе одам да сакате да го вметнете во login.c. Овие линии на код - тампон кој првично се одржа мојот login.c повеќе нема да биде доволно голема, бидејќи сега сакам да, исто така, вметнете овој hack во средината на мојата програма. Сето ова се прави е создавање на нова тампон кој е доволно голем - и за оригиналната датотека и дополнителни линии на код - на hack - дека сакате да го внесете таму. Тука е нешто да се забележи - char * шема = "/ / им дозволат пристап!" Ако ги погледнеме назад во login.c, можеме да видиме овде на овој коментар - им дозволат пристап! Во login.c, овој коментар изгледа сосема безопасни, така да не би се сомневаат било малициозни намери само со овој коментар. Но, во нашата компајлер, ние се специјално случува да се погледне за оваа линија код, и тогаш кога ние го најдете - овие линии на код се вметнување на нашите пробие во таа позиција. Значи, ние сме процесирањето во текот на целиот login.c, ние сме вметнување дека hack точно каде што вели дека им дозволат пристап, а потоа ние сме составувањето - не е оригиналот login.c но новиот login.c со тоа hack вметната во право "да им дозволат пристап. ' Сега сакам да ги собере мојот нов компајлер со тоа hack вклучени. Јас не одам да се користи ѕвекот, па ајде копија на компајлерот ние се користи пред и ја користат таа - па, компајлерот compiler.c compile.c-о evil_compiler. Сега нашите зли компајлерот - ако ние ги користиме нашите зли компајлерот да ги собере било која друга датотека, на датотеката ќе собере како што треба. Тоа е сосема нормално. Но, ако ние ги користиме нашите зли компајлерот да ги собере најава - така, / evil_compiler login.c-о логирање-lcs50. - гледајќи login.c повторно, има апсолутно ништо тука. Тоа е нашата вообичаена 'ако е или одземеш или tommy ние сме во, друго ние сме надвор. Но кога трчаме нашата извршна, тоа ќе работи како и обично. Водење повторно - хакер, LOLihackyou - Пробиени! Сега имаш пристап. Само гледајќи login.c, вие не би помислил ништо не е во ред. Но компајлерот тоа е се користи за да собере login.c е специјално дизајнирана да вметнете овој пробие во програмата. Ние само се преселил нашата изворна проблем. Првично, ние имавме овие линии на код во login.c дека ако некој друг погледна на нив, тие ќе бидат како, зошто се овие тука? Сега, ако некој се случува да се погледне во нашата компајлер, тие ќе се погледне во овие линии на код и да каже, зошто се овие тука? Значи, ние не сме сосема реши нашиот проблем. Но, можеме да го користиме оваа идеја повторно. Гледано во нашата третата верзија на компајлерот, тоа е истата идеја. Ние го прочитате целиот датотека во тампон се тука, ние компајлирање на датотеката долу тука, и имам некој вид на низа hack овде, но забележите на датотеката која јас сум всушност хакирање сега. Јас сум хакирање compiler.c не login.c. Но, она што сум вметнување во compiler.c? Јас сум вметнување овој код кој е точниот код во нашите претходни компајлер, кој требаше да го внесете кодот во login.c. Тука е нашата доколку strcmp датотека login.c и потоа вметнете во login.c нашите hack работи. Овој нов компајлер е наменет да се создаде компајлерот кој е наменет да ги собере најава злобно. Ќе видиме зошто тоа ни помага. Сè друго е иста, па таа работи токму онака како што работеа со нашите претходни компајлерот. Ние сме само процесирањето над целата наша compile.c. Но сега наместо да барате "им дозволат пристап," ние сме во потрага за 'собере на датотеката. " Каде е компајлирате датотеката? Гледајќи нашата целосно невини compiler.c, тоа е право тука долу на дното. Овој коментар - компајлирање на датотеката - повторно, дека изгледа сосема безопасни. Но, во нашата малициозни верзија на компајлерот, ние се случува да - право пред тоа коментар - вметнете овој код кој е наменет да внесете код при составувањето login.c. Постојат голем број на нивоа на околни тука. Да, всушност се работи. Повторно, ние ќе копирате нашата изворна компајлерот. Сега, компајлирате - компајлерот compiler.c compile.c-о evilest_compiler - и сега evilest_compiler. Evilest компајлерот - ако ние ги користиме тоа да ги собере нашите компајлер, ајде да всушност изгледаат. Evilest_compiler - доведување повеќе, сите на патот назад кон верзија 1 на нашите компајлерот - верзија 1 на нашите компајлер кој беше само да читате на датотека и ги собира неа. Тука, ние знаеме дека evilest_compiler - кога компајлира оваа датотека - се случува да внесете код овде пред компајлирате датотеката, и дека кодот ќе изгледаат точно како го кодот од втора верзија на нашиот компајлерот кој го направи ова. Овој код, кој е наменет да се пробие во најава, се случува да бидат вклучени во нашата компајлерот од evilest компајлерот. Ајде да го користите evilest_compiler да ги собере нашите компајлерот. Сега ние ќе ги користат компајлер, се врати во текот на најавите, и се сеќавам ова login.c има апсолутно ништо сомнително во неа. Но користење на нашата компајлерот да ги собере login.c, Роб, thisiscs50, успех. Најава хакер Ајде, LOLihackyou, Хакирано! Сега имаш пристап. Признаваат дека тоа беше поинаква од верзија 2 на нашите компајлерот. Компајлерот ние ги користиме - ајде да се движи назад - копија од најавите - ајде да донесе нашите компајлерот врати тука. Отстранување evilest компајлерот. Сите сме го оставиле сега е компајлерот. Ако ги погледнеме compiler.c, постои апсолутно ништо таму што се чини дека малициозен на било кој начин. Ако ги погледнеме login.c, постои апсолутно ништо тука што изгледа малициозен на било кој начин. Но, кога ние ги користиме нашите компајлерот да ги собере login.c, ќе го добиеме hackable верзија на login.c. Кога ние се користи нашата компајлерот да се состави новата верзија на компајлерот, ќе го добиеме hackable верзија на компајлерот. Сега ако одиме надвор и да се дистрибуираат нашите компајлерот извршна, и никој нема да знае дека има нешто малициозни за тоа. Ова е всушност тоа во - Не можам да се сетам на годината - Кен Томпсон, и тој ја освои наградата Туринг - ако сте запознаени со награда Тјуринг, тоа е речиси секогаш дефиниран како Нобеловата награда на информатиката, па тоа е како јас ќе го дефинираат. Кен Томпсон одржа говор кога ја добил неговата Туринг награда наречен "Рефлексии на Верувајќи доверба." Во суштина, ова беше идеја на неговиот говор. Освен наместо на нашите компајлер, зборуе GCC - само уште еден компајлерот како ѕвекот - и она што тој го кажа е, како нашите login.c, нашите login.c чини релативно бескорисни но тој зборуваше за актуелните UNIX login.c. Кога ќе се најавите на вашиот уред, постои некоја најава програма која се извршува. Тоа беше најава дека зборуе. Ова е во основа неговата идеја. Тој рече дека во GCC, тој во теорија би можеле да имаат засадени бубачка - не е бубачка но малициозен код - дека при составувањето на најава функција - се најавите датотека - ќе вметнете задната врата, така што тој може да оди на апсолутно секој Unix систем во светот и најавите со некои специфични корисничко име и лозинка. Во тоа време, GCC беше доста компајлерот дека секој користи за ништо. Ако некој се случи да се ажурира GCC, тогаш тие ќе прекомпајлирате GCC користење на GCC, а вие сепак ќе добиете лоша верзија на GCC бидејќи тоа беше специјално составени да се признае дека тоа беше рекомпајлирање на компајлерот. И ако некогаш ги користите GCC да го прекомпајлирате на login.c датотека, тогаш тоа ќе вметнете овој задната врата дека тој може да се користи за да се логирате на било кој компјутер. Тоа беше теоретски, но - тоа какви околности беше теоретски, но идеи се многу реални. Во 2003 година, имало сличен пример, каде што - ние ќе ги разгледаме во оваа датотека, и има апсолутно ништо да всушност се направи со неа, но бубачка е слична. Оваа датотека само дефинира функција наречена јаз. Таа ги зема кавга, аргумент б, и намерата е да се направи поделено со б. Но, тоа не некои грешка проверка, па знаеме работите се чудни ако б случува да изнесува нула. Ако б е нула, тогаш се подели тоа во 2 случаи. Вие веќе може да се види бубачка. Првиот случај - ако е нула, тогаш ние сме прави нула поделено со нула, а ние само се каже дека е недефинирана. Вториот случај - ако не е нула, тогаш тоа е нешто како 1 поделен со нула, а ние само повик дека бесконечност. Друго се врати на вообичаениот поделена од страна на б. И така тука, ние сме трчање оние 3 случаи, и ние всушност се кандидира јаз - тоа вика на него за мене - Значи, игнорирајќи ги предупредувањата ѕвекот на - крајот на не-празнина функција - очигледно јас не собере претходно. Врати 0. Направи поделба - сите права. Со. / Јаз, можеме да видиме 3, Infinity, Инфинити. Нула поделено со нула не треба да се врати бесконечност. И ако не сте го сфатиле бубачка уште - или не го види пред - можеме да видиме дека ние сме прави = 0. Веројатно ние значи == 0. Веројатно. Но, тоа е всушност нешто што, пак, во 2003 година, на Linux кернелот - така и нашата апаратот користи Linux kernel - било Линукс оперативен систем користи Linux kernel - па бубачка многу слични на оваа се појавил. Идејата зад овој баг е - Повторно, имаше само некои функција која се викаше, и тоа го правеше малку грешка проверка. Имаше некои специфични влезови дека оваа грешка проверка - тоа треба да се како, добро, не можете да се јавите на оваа функција со делител на 0. Значи, јас ќе одам да само се вратат некои грешка. Освен, тоа не беше како невини како само поставување на еднакви на 0. Наместо тоа, оваа линија на кодот заврши нешто повеќе како корисник = администраторот. Или кориснички = супер. Тоа беше еден невин - на прв поглед - грешка каде што би можеле да имаат само е разумно дека јас само сакав да го пријавите нешто посебно ако корисникот се случи да биде супер администратор. Но, тогаш повторно размислување за тоа, лицето сакаше тоа да изгледа како едноставна грешка, но ако овој код всушност е пуштен на слобода, тогаш би биле во можност да се пробие во било кој систем со донесување на посебни знаме - во овој случај b = 0 - и тој автоматски ќе го направи на корисникот администратор, и тогаш тој има целосна контрола. Ова се случи во 2003 година. Тоа само така се случи само заради тоа бил фатен е затоа што таму се случи да биде некои автоматски систем што забележав промена во оваа датотека која никогаш не треба да се променат од страна на човекот. На датотеката треба само да се автоматски генерирани. Тоа едноставно така се случило дека некој го допре - добро, лицето кое сака да се пробие допре таа датотека, и компјутерот фатени дека допирање. Значи, тие се промени тоа и дури подоцна сфатиле колку катастрофа што би биле ако тоа го тргнете во реалниот свет. Може да се размислува дека - се враќаат во нашата компајлерот пример - иако не можеме да видиме - во потрага на sourcecode - дека ништо посебно не е во ред, ако ние всушност се погледне на бинарен код на компајлерот, ќе видиме дека нешто не е во ред. Како пример, ако ние се кандидира на жици функционира - што е само ќе се погледне во текот на датотека и печати од сите жици може да се најде - ако трчаме жици на нашите компајлер, можеме да видиме дека еден стринг кој се наоѓа е овој чуден - друго, ако (strcmp (корисничко име, "хакер") - бла, бла, бла. Ако некој се случи да биде параноичен доволно за да не им веруваат на компајлерот, тие би можеле да работат жици и види ова, а потоа тие ќе знаат дека има нешто во ред со вистински бинарни. Но, стрингови беше неизбежно нешто што беше составена. Значи, кој е да се каже дека нашите компајлерот не само имаат повеќе специјални код кој се вели дека, ако жици е постојано работи на нашето компајлер, не излез сето тоа малициозен код. Истата идеја со ако сакаме да дис-соберат на датотеката - дознавме дека асемблер ни носи од асемблерски код на машина код - можеме да одиме во спротивна насока - objdump-г компајлерот - ќе ни даде на собранието на нашиот код. Гледајќи ова, тоа е прилично криптичната, но ако сакаме, можеме да се погледне во текот на овој и разумот, чекај, има нешто се случува тука дека не треба да се случува, а потоа ќе познаеме дека на компајлерот прави нешто злонамерно. Но, исто како стрингови, кој е да се каже objdump не беше специјални латински. Во суштина, се сведува на не можете да му верувате ништо. Поентата на хартија се нарекува "Верувајќи Доверба" ​​е Во принцип, ние им веруваме на нашите компајлерот. Ќе компајлирате вашиот код и да очекувате тоа да го направи она што ве праша што да прави. Но, зошто треба да му верувате на компајлерот? Вие не пишувам на компајлерот. Ти не знаеш што компајлерот е нужно всушност прави. Кој е да каже можете да го верувам? Но, дури и тогаш, добро, можеби можеме да и веруваме на компајлерот. Постојат десетици илјади луѓе кои погледна ова. Некој мора да имаат признаено дека нешто не е во чекор со компајлерот. Што ако ние само одиме 1 ниво подлабоко? Тоа дури може да биде вашиот процесор. Како смешно како што веројатно би можело да биде, можеби има некои непринципиелни вработен во Интел кој создава овие процесори дека секогаш кога тоа процесор забележува дека сте водење некои команда што е наменета да се најавите на компјутер, процесор ќе прифати некои специфични корисничко име и лозинка комбинација. Тоа ќе биде диво комплицирано, но некој може да го стори тоа. Во тој момент, дали сте навистина се случува да се отвори вашиот компјутер да се погледне на процесор и употреба на микроскоп да се признае дека овие кола не се наредени како што треба да биде? Никој не е некогаш ќе се фати дека грешка. Во одреден момент, вие само треба да се откаже и доверба нешто. Повеќето луѓе не им веруваат на компајлерот во овој момент. Тоа е да се каже не значи дека ти треба. Гледајќи нешто злогласните видео - [Драматични музички] [Тоа е систем UNIX. Знам дека ова.] [Тоа е сите датотеки -] Таа рече: "Тоа е систем UNIX. Знам дека ова". Заменете UNIX со она што вашиот омилен оперативен систем е - таа може да се рече, "Тоа е систем Windows. Знам дека ова". Тоа е потполно бесмислени изјава, туку и за сите што знаеме, таа се случува да се знае задната врата во системот на UNIX. Таа знае некои корисничко име / лозинка комбинација која, всушност, ќе нека направи она што таа го сака. Во ред. Поуката од денес е во основа не можете да му верувате ништо. Дури и она што пишува - вие не пишувам на компајлерот. Компајлерот може да биде лошо. Дури и ако не пишувам на компајлерот, она што е водење на компајлерот може да биде лошо. (Се смее) Нема многу што можете да направите. Светот се осудени на пропаст. Вратете се на Давидов! [Аплауз] [Дејвид] Благодарам. Тоа беше навистина депресивно. Но, навистина, Роб е точно. Ние навистина не имаат решение за тоа, но вие сте за да се добијат некои решенија некои почести одбрана. Во пресрет на ова, она Нејт и јас се прави надвор од сцената таму е да се знае дека постојат толку многу лаптопи во оваа соба, ние сме биле душкаат сите безжични сообраќај поминува низ соба во изминатите 20 минути време за разговор на Rob, па ние ќе да се донесе 2 минутна пауза тука. Нејт се случува да се постави, а потоа ние ќе зборуваме за сите работи би можеле да се најде. (Смеа) Значи, јас може да се претерани малку само за доброто на драма, но ние би можеле да се душкаат сите на вашата безжична сообраќајот, бидејќи, навистина, тоа е толку едноставно. Но, исто така, постојат начини на кои можете да ги бранат против тоа, и така со тоа, Јас ви даде Нејт Hardison. >> [Нејт] Слатка. (Аплауз) [Нејт] Ви благодариме, човеку. Ја ценам викне надвор. Сите во право! Тоа е играта недела. Дали сте момци возбудени? Се надеваме дека тоа ќе биде голем натпревар во сабота. Те замислувам момци во овој момент - со оглед дека имате квиз во средата за сите код, а ние само са преку прекрасно предавање од Роб со еден куп на C код во него - можеби се малку уморни од код. Во овој дел, ние, всушност, не се случува да се допре било код она. Ние сме само ќе зборуваме за технологија која ќе ги користиме секој ден, често за многу, многу часа на ден, и ние ќе зборуваме за импликациите со сигурност дека постојат. Ние зборуваше многу за безбедноста во текот на семестарот, и ние започна со малку крипто. [Bdoh лева vwlqng!] И додека вие сте веројатно супер возбудени да се поминува белешки едни на други во класа користење на шифра Цезар како овој, во реалноста, има некои повеќе да се забавуваат, да се имаа кога сте всушност зборуваме за безбедноста и тој вид на работи. Денес, ние ќе покриеме неколку технологии дека луѓето всушност ги користат во реалниот свет да направите сите видови на нештата од кои душкаат луѓето пакети всушност се случува во и кршење на банкарските сметки на луѓето и сето тоа. Ова се легитимни алатки кои ние зборуваме за со исклучок на можеби една алатка. И јас само сакам да се направи брзо предупредувања. Кога зборуваме за овие работи, ние зборуваме за нив, па да знаете што е таму, и сте свесни за тоа како да се биде безбеден кога сте со користење на вашиот компјутер. Но, ние дефинитивно не сакам да се имплицира дека треба да ги користат овие алатки во вашиот дом или вашата куќа, бидејќи можете да го извршите во многу големи проблеми. Тоа е една од причините денес дека ние всушност не се душкаат вашите пакети. Во ред. Минатиот понеделник, ние разговаравме за колачиња, и HTTP, и автентикација, и како Firesheep отвора оваа голема врата во вашиот Фејсбук профил, да вашиот Hotmail сметка - ако некој е уште користите Hotmail - и многу други сметки. А многу на овој материјал се случува да се изгради надвор од тоа, Но, прво, сакам да се земе брз турнеја на тоа како на интернет има еволуирале со текот на времето. Назад во 90-тите, вие момци може да се сети всушност приклучување вашите компјутери со еден од овие. Сега ние не го сторат тоа толку многу повеќе. Тоа всушност излегува дека со цел да го приклучиш на Ethernet кабел во мојот лаптоп, Јас сега треба да користите една од овие адаптери кој е вид на луд. Наместо тоа, во 1997 година ние имавме оваа нова, забава технологија излезе дека е познат како IEEE 802,11, па ова е безжичен интернет стандард На IEEE е ова управно тело, кој дава на сите видови на - објавува сите видови на стандарди со однос на компјутери. 802 стандарди се сите за интернет технологии. Значи 802,3, на пример, е Ethernet стандард, 802.15.1 јас верувам дека е на Bluetooth стандард, и 802,11 е за сите безжичен интернет. Во 1997 година овој излезе. Тоа не сосема се фати за веднаш. Таа не беше до 1999 година и 802.11b стандард излезе дека само што влегов навистина популарни. Како и многумина од вас се сеќавам кога компјутери почнаа да доаѓаат надвор и добивање на Wi-Fi на нив? Тоа беше вид на кул, нели? Се сеќавам добивање на мојот прв лаптоп во средно училиште, и имаше безжична картичка во него. Татко ми ми го даде и велеше дека јас треба да ја користите за мојот колеџ апликации и сето тоа, и немав идеја како ќе одам да се погледне до овој материјал онлајн. Но, за среќа, имав безжична картичка, така што беше прилично кул. Денес, исто така, ќе видите 802.11g кој е еден од другите навистина популарен безжични стандарди, тоа е таму. Двете б и g се прилично застарени во овој момент. Секој знае која верзија повеќето луѓе се токму сега ако тие се купуваат нови безжични рутери и тој вид на работи? Н Токму така. Бинго. И излегува дека на наизменична струја стандард е само излегува во нацрт-форма, и постојат други верзии на патот. Со секој од овие стандарди она што ние го добива е поголем опсег, повеќе податоци на побрзо стапка. Овие работи постојано се менуваат многу брзо. Таа, исто така го прави така што ние треба да купуваат повеќе рутери и сето тоа забава нешта. Ајде да зборуваме за она што безжична комуникација, всушност, е во неговото јадро. Со Ethernet и оние старите dial-up модеми, вие всушност имаа оваа нешта кои ви вклучени во вашиот компјутер, а потоа можете вклучен во модем на сорти, а потоа ќе го вклучени во приклучок во вашиот ѕид. Сте имале оваа кабелска конекција, нели? Целата поента на безжични е да се ослободиме од овие работи. Со цел да го направат тоа, она што го имаме е во суштина радио комуникација, каде што нашите безжичен рутер - назначени од нашата мала безжична икона - е поврзан на интернет со овој солидна стрелката некој вид на кабелска конекција, но кога ќе се поврзете со вашиот безжичен рутер сте всушност користење на речиси како токи-токи помеѓу вашиот компјутер и вашиот безжичен рутер. Она што е навистина кул за тоа е може да се движи наоколу. Можете да носат вашиот компјутер од целиот Сандерс, одат сурфање на интернет, она што го сакате, исто како што сите знаете и љубов, и никогаш не треба да бидат вклучени во ништо. За ова да работи, имаме и оваа примање и пренесување. Тоа навистина е како што токи-токи. Овој безжичен рутер - кој во Сандерс седи под оваа фаза, токму тука - секогаш емитување и примање, емитување и примање, и, исто така, вашите компјутери се прави истата вид на работа, премногу. Ние едноставно не може да го слушнеш. Од друга работа што можете да направите е да може да имате повеќе компјутери зборува на истиот безжичен рутер. Колку сте поблиску до рутер - и повторно, ова е радио комуникација - колку сте поблиску, толку подобро вашиот сигнал е, толку подобро вашиот компјутер слуша "на рутерот и може да комуницира со интернет. Ако вие момци се секогаш во вашата dorm, во твојата куќа и ти се прашувате зошто вашиот сигнал е лошо, тоа е веројатно затоа а). вие не сте многу блиску до вашиот рутер, или б). има нешто помеѓу вас и вашиот рутер како бетонски ѕид или нешто што не ги споделите со оние радио бранови одат преку. Ајде да зборуваме малку за тоа зошто лошите момци како Wi-Fi. Лошите момци сакаат Wi-Fi за неколку причини. Тука е нашата грозен лошо момче право таму. Една од причините зошто ова лошо момче сака Wi-Fi е затоа што, по правило, многу безжични рутери дојде и кога ќе ги постави, тие се енкриптирани. Ова е проблем, а имало и случаи - повеќекратни инстанци, сега - каде негативец покажува до куќата нечија, забележи дека има енкриптирани Wi-Fi за кои тие можат да се поврзете. Тие се поврзете со Wi-Fi, а потоа тие да започнат преземете сите видови на забава нешта. И тие не се симнување на мачиња, тие не се симнување на кученцата. Ова е како BitTorrent. Ова е грозен на nastiest. Имало случаи каде што ФБИ дури и добивано вклучени мислејќи дека лицето кое го поседува куќа е всушност еден Излегувам таму и симнување на нешто што тие навистина не треба да биде. Ја енкриптирани Wi-Fi дефинитивно не е нешто што сакате да направите, ако само за да не имаат на ФБИ доаѓаат затропа на вашата врата. Друга причина зошто лошите момци сакаат Wi-Fi е причината што Давид зборуваше за порано за време на паузата. Бидејќи тоа е радио комуникација на неговото јадро, ако знаете на канал, можете да слушате дека радио станица. На пример, ако има лош право таму седи во средината веднаш до пристапна точка, веднаш до кој безжичен рутер, лош човек може да го слушнете во на сите безжични сообраќај тоа е доаѓаат од сите оние компјутери. Всушност, овие момци - овие среќа неколку, кои се тука во предниот ред - бидејќи тие се супер-блиску до сите овие безжични рутери кои седат само под сцената, тие ќе бидат во можност да се слушне сообраќај на секого во оваа целата соба ако сте поврзани со Wi-Fi и почнете да ги прелистувате низ овие точки за пристап. Тоа не е многу тешко да се седи во добра позиција да шмркаат и дознаам она што другите луѓе го прават. Тоа е нешто што треба да имајте на ум, особено ако не сте сигурни каде што пристапна точка е, а ти си бараат да речеме, на Старбакс. Излегува дека душкаат и сето тоа навистина не е сето тоа тешко да се направи. Има програма наречена tcpdump кои депонии сите видови на TCP сообраќај и можете да го извршите прилично едноставно - само како што го направив ова утро. Тука е малку депонија, а еве некои од сообраќај, што доаѓа во текот мојата мрежа во тоа време. Може да се види - ако кривогледство навистина тешко - има малку Spotify во таму. На врвот на tcpdump - бидејќи ова е еден вид на болка да се користи - има програма наречена Wireshark кој снопови, сето тоа во еден убав GUI. Wireshark е супер-корисна па ако одат за да се преземат вмрежување класи, ова е алатка која ќе дојде да се сака, бидејќи тоа ви помага да се сецира сите пакети кои се лебдат околу таму. Но, тоа, исто така, може да се користи за лошо. Тоа е многу едноставно да се само преземете оваа програма, подигнете го, започнете мрежна фаќање, и види сè што се случува - и филтер и не сите видови на забава нешта со неа. Од друга работа што можете да направите со безжична комуникација не само што може да прислушува но исто така можете да научите како да завртка со мрежата и внесе свој информации за контрола на искуство дека другите луѓе на истата безжична мрежа се добива. Ајде да ги разгледаме во тоа. Еве Firesheep - што знаеме и љубов од минатата недела - а тоа е дека прислушување технологија. Ако, на пример, сакавме да активно имаме лошо момче движење и плеткаме околу со еден од овие компјутери, Во ова сценарио ние имаме еден компјутер се обидува да одат сурфање на harvard.edu. Што се случува е, компјутерот прво испраќа порака до безжичен рутер и вели: еј, јас сакам да одам посета www.harvard.edu. Велат дека поради некоја причина тие се обидуваат да добијат информации за играта овој викенд. Лошо момче, бидејќи тој седи право во средината, веднаш до кои пристапна точка, може да се види дека комуникацијата доаѓа од компјутерот во рутер, и тој знае "Аха! Некој ќе harvard.edu." (Подмолно се смее) Таму ќе биде овој латентност додека комуникација оди од рутер надвор кон интернетот за да одат најде веб страница на harvard.edu-- како само вие момци сите знаеме откако ќе го направите вашиот PHP psets - и така лошо момче има малку време, малку прозорецот, во која тој може да одговори со некои работи. Да речеме ова лошо момче, се разбира, е Yaley. Тој реагира со harvardsucks.org. Boo! Лошо, лошо момче! Лош Yaley! Или уште полошо, тој може да одговори со тоа. [Http://youtu.be/ZSBq8geuJk0]. Јас ќе ти момци дознаам што е тоа. Ова е всушност технологија наречена Airpwn! кој беше дебитираше на еден од безбедносните конференции за неколку години назад. Со Airpwn! сте во можност да всушност инјектираат сообраќај назад во мрежата. Компјутери кои се обидуваат да се излезе на интернет и се обидува да дојде до Google.com, да Facebook.com, да harvard.edu види малициозни одговор дојде и веднаш се претпостави, во ред, тоа е одговор што го чекаше и заврши добивање содржини од harvardsucks.org или nameyourfavoriteshocksite.com, и можете да видите колку брзо работите ќе се влошат. Сите овие видови на нештата не може да се направи со овие жичен врски, бидејќи со жичана конекција тоа е тешко да Snoop на сообраќај. Ако сум лош човек и на едниот крај е вашиот компјутер и на другиот крај е вашиот рутер - вашиот модем - единствениот начин да се добие помеѓу таа врска е всушност да се сплетка мојот компјутер некаде во средината или направи нешто друго со рутер, нешто низводно. Но, со безжичен, тоа може да биде толку лесно како седи во првиот ред на училницата, и што можете да направите сите видови на непријатни нешта на луѓето во грб. Ајде да зборуваме за тоа како може да се брани против некои од овие работи. Луѓето кој го развил безжични стандарди - 802,11 - тие не се глупави луѓе од било која се протега на имагинацијата. Ова е кул технологија и кога дебитираше во 1999 година, тие излегоа со овој стандард наречен WEP. Можете да видите тука кога ќе се обидат и да се приклучи на безжична мрежа, имате сите видови на различни безбедносни опции. Тоа е вид на болка, бидејќи таму се 6 сите заедно и никогаш не навистина има смисла кои 1 да се придружи. Оваа 1, на врвот е првиот што тие дојдоа со нарекува WEP. WEP се залага за Wired Еквивалентно на приватност, верувам, Не безжична енкрипција протокол кој е заеднички соодветно. Поради тоа што се обидува да ви даде приватност еквивалент и безбедносна заштита еднаква на онаа на кабелска мрежа Со WEP што завршува се случува е, имате едноставен, малку лозинката што сте ја напишете и кој служи за да го криптирате сите ваши комуникација помеѓу вашиот компјутер и вашиот рутер. Што е проблемот со WEP иако? Лозинка со WEP е навистина краток, а исто така и сите го користат истиот точната лозинка,  и така тоа е навистина лесно да се дешифрирате. Па многу брзо луѓето сфатиле дека WEP е проблем, а единствената причина зошто ти ја видите се појави уште на тој малиот човек е - постојат некои постари системи кои се користат WEP - што наместо да се гледа за се WPA, па дури и WPA2 стандарди кои беа објавени подоцна. Овие системи се многу подобра одат на заштита на безжичен интернет. Тоа, рече, тие се уште немаат некои hackability. Постојат алатки таму што може да оди направите тоа. Едно нешто посебно што може да биде гаден е дека ако да се поврзете и најавени на безжичен рутер и се користи некој вид на криптирана комуникација, излегува дека хакер лесно може да испрати еден пакет да се исклучите од рутер, и откако тие сум те исклучени тогаш тие може да го слушнете во - тие може да шмркаат овие пакети како што се обиде повторно да воспостави врска со вашиот рутер. И со тие информации, тогаш тие можат да одат во и декриптирање на остатокот од вашата комуникација. Ова не е од страна на било каков начин, било кој вид на сигурно надвор од сите имагинација. Од друга работа што можете да направите кога сте поставување на безжични мрежи или сте ги приклучување е - ќе забележите дека тука кога сум се приклучи на оваа мрежа, таа прашува за името на мојата мрежа. Ова е исто така познат како SSID. И ќе видите дека тука на десната имам кутија, кој ми ги покажа достапни SSIDs. Има Универзитетот Харвард, а CS50, и CS50 штаб мрежа. Сега, како и многумина од вас знаеше имаше CS50 штаб мрежа околу? Некои од вас. Не сите од вас. Проблемот со ова, се разбира, е тоа што ние не го стави ова на нашата листа на SSIDs, никој не би се знае за тоа, најверојатно. Се надевам. Освен ако не сте момци се сите се обидуваат да попуштат во нашата безжична врска. Но, ова е нешто што можете да го направите тоа е навистина важно кога сте поставување рутер дома. Ова веројатно не ќе се случи за неколку години за многу од вас, но имајте на ум дека чувањето дека SSID од таму и исто така не го именување нешто супер-заеднички ќе ви помогне да бидете посигурни во долг рок. Во последната неколку работи што можете да направите. Една од нив е HTTPS. Ако сте во Старбакс, ако сте во јавен област Wi-Fi и не одлучи за да пристапите вашата банкарска сметка, пристап до вашиот Gmail, Фејсбук, бидете сигурни дека тие врски се случува во текот на HTTPS. Тоа е додадена слој на сигурност, дополнителен слој на енкрипција. Една работа да се има предвид е тука, колку од вас некогаш кликне низ таа голема, црвени екран, кој вели: "Овој сајт може да биде лошо." Знам дека имате. Тоа е веројатно кога сте сите бараат да одам да видам домашна или нешто слично, нели? Да. (Публиката смеа) Да. Таму да одите. Знаеме кој е гледање татковина. Толку голема, црвен екран право таму често укажува на тоа дека нешто фанки се случува. Понекогаш тоа е само веб-сајтот себе е несигурен, но дека истиот голем, црвен екран доаѓа до кога луѓето се обидуваат да монтирање мрежа напади врз вас. Значи, ако видите дека голем, црвен екран излезе на Старбакс, не кликнете низ него. Лошата вест. Лошата вест носи. Конечниот нешто што може да се погледне е некој вид на VPN. Ова VPN е достапна преку Харвард - vpn.fas.harvard.edu-- и што тоа не е тоа всушност воспоставува безбедна конекција помеѓу вас и Харвард, Инките вашиот сообраќај преку него, и на тој начин ако си седи во место како Старбакс можете да се поврзете на Харвард, се дека безбеден сообраќај, а потоа ја разгледате од Харвард. Повторно не, сигурниот. Луѓето можат да се во средината. Тие можат да почнат да се скрши, но ова е далеку посигурни од потпирајќи се врз безбедноста на Wi-Fi сам. Во ред. Во неа, кога ќе се поставување на безжични мрежи, кога ви се случува надвор да се користи безжичен во јавноста - дали тоа е Старбакс, без разлика дали тоа е Петка Дечки, дали тоа е B.Good, нешто слично на тоа - каде што тие имаат Wi-Fi - бидете свесни за вашата околина. Бидат свесни за она што луѓето може да го направи. И да бидат безбедни. Не влегувај во вашата банкарска сметка. Тоа може да биде груб будење ако некој се појавува со вашата лозинка подоцна. Со тоа, одете црвено! И јас одам да се сврти работите назад во текот на Дејвид за конечниот збор. (Аплауз) [Дејвид] Мислев дека ќе делат едно нешто од лично искуство. А алатка може да сакаат да играат со - иако на Apple во голема мера искорени овој проблем ако сте ажурирани вашиот софтвер, бидејќи - но кон таа цел на навистина не се во можност да му верувате на софтверот кој ние ги користиме, и да поени на Nate, се во можност да шмркаат доста она што другите луѓе го прават таму надвор - ова беше дел од софтвер кој излезе пред околу година и пол пред сега. [IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] За некое време, iTunes - пред iCloud, кога ќе се синхронизира вашиот iPods или iPhone-или или вашиот iPads со iTunes - во интерес на бекап, она што вашиот iPhone и овие други уреди се прави за некое време е користењето на GPS податоците. Сите знаете можеби дека вашиот iPhone и андроидите и Windows мобилни телефони и како овие денови може да се следат каде се наоѓате во интерес на ви покажува карти и слично - и она што Apple и овие други компании направите е да тие обично следи речиси насекаде сте всушност е во интерес на подобрување на квалитетот на услугите. Еден, можете да добиете повеќе насочени рекламирање и слично, туку две, тие исто така може да дознаам каде постојат безжичен жариштата во светот, и ова може да помогне со гео-локација - вид на триангулација на позиција на луѓето. Скратам приказната, сите од нас биле одење антена за некои износот на време. За жал, Епл ја направија дизајн одлука - или недостаток од него - да не енкриптираат оваа информација кога беше се поткрепени-до iTunes. И тоа што безбедносните истражувач најдов беше дека ова е само огромен XML датотека - голем текст фајл - седи во iTunes софтверот на луѓето, и ако сте биле само малку љубопитни, можете да се обратите ѕиркаа наоколу историја вашиот брачен другар е, историјата вашиот цимер е, Вашиот брат историја и слично, и благодарение на некои слободен софтвер, можете да заговор сите овие GPS координати - географска ширина и должина. Значи, јас всушност го направи ова со моите сопствени телефон. Јас вклучени во мојот телефон, и секако, мојата верзија на iTunes не е шифрирана во тоа време, и она што јас бев во можност да се види беа моите сопствени обрасци. Еве на САД и секоја од овие сини кругови претставува каде што се случи да се над оние претходните месеци на сопственик овој телефон.  Јас поминувам многу време, се разбира, во Североисточниот, малку време во Калифорнија, краткотрајна посета на Тексас, и ако тогаш зумирате на ова - ова е вид на парична казна и интересни, но знаев тоа. Повеќето од моите пријатели знаев за тоа, но ако се нурне во подлабок, ќе видите каде јас поминуваат поголемиот дел од моето време во североисточниот регион. Ако држат некои познати изглед градови - оваа голема, сино мастило splotch суштина центриран околу Бостон, а потоа потроши малку време во предградијата зрачи надвор од Бостон. Но, јас бев исто така прави доста консултации таа година. И оваа година е на источниот брег, а вие всушност може да ме види и мојот iPhone во џебот патување напред и назад меѓу Бостон и Њујорк и Филаделфија потаму, како и да потрошите малку одмор на Кејп, кој е малку раката таму. Значи, секоја од овие точки претставува некое место сум бил, и целосно непознат за мене, целата оваа историја е само седи таму на мојот десктоп компјутер. Ако одзумирате - ова всушност беше малку вознемирувачки. Имав не се сеќава кога бил во Пенсилванија дека одредена година. Но јас иако малку потешко за тоа и јас сфатиле, ох, тоа е всушност тоа патување и секако, мојот телефон ме фатат. Јаболко оттогаш шифрирана оваа информација, но тоа исто така е само доказ за тоа колку информации се собираат за нас, и колку лесно - за подобро или за полошо - тоа е прифатливо. Една од се-Aways надевам дека од разговор Роб, од разговор на Nate и малку визуелни вака денес е само за да биде повеќе осведомен на овој така што иако - како до точка на Rob - we're вид на зезнав, нели? Таму не е многу можеме да направиме кога станува збор за некои од овие закани, но на крајот на денот ние треба да му верувате на некој или на нешто ако сакаме навистина да ги користат овие технологии. Барем можеме да се прави информирани одлуки и пресметува одлуки дали или не ние всушност треба да се проверуваат оваа особено чувствителна сметка или ние всушност треба да се испраќаат дека малку се сомневаат инстант порака  во Wi-Fi средина се допаѓа ова. Значи, со што, рече, само еден квиз остатоци, едно предавање останува. Ние ќе се видиме во среда тогаш понеделникот. (Аплауз и овации) [CS50TV]