[Powered by Google Translate] [Седмица 10]
[Дейвид Дж. Малан] [Харвардския университет]
[Това е CS50. [CS50.TV]
>> Всичко е наред! Това е CS50, но не за дълго.
Това е началото на седмица 10.
В сряда имаме нашата викторина, а след това следващия понеделник имаме някаква празнична торта
, като идваме пълен кръг по целия път обратно от седмица нула.
Днес ние говорим за един от любимите ми теми, истината е казал -
на сигурността и неприкосновеността на личния живот и последиците от всички хардуер и софтуер
че всички ние използваме тези дни.
За да бъда честен, там има много заплахи
че ако не сте наистина спря да мисли за тях,
те са всъщност доста обезкуражаващо.
Дело в точка - ако някой от вас някога са изтеглили част от софтуера
изключване на Интернет и инсталиран на вашия компютър,
сте ангажирани в значителна степен на доверие, нали?
Няма нищо възпрепятстван Skype, или Chrome, или която и да било част на софтуер
сте инсталирали на компютъра си, просто изтриване на всички файлове на вашия твърд диск;
качите всички файлове на твърдия ви диск със сървъра някои лош човек;
от четене на вашите имейли от прихващане на незабавни съобщения.
Защото реалността днес е с най-модерните операционни системи
там наистина не е много на стена между софтуерни програми, които инсталират,
и ти и аз сме доста просто вид на пресичане на пръстите ни и като на вярата
че този апартамент свален абсолютно безплатно, или че нещо, което е 99 цента,
всъщност е напълно доброкачествен.
Но както видяхме през C, а сега PHP и JavaScript,
с тази способност да изразим себе си програма,
можете да направите почти всичко, което искате с програма, която самият потребител или себе си може да направи.
>> Така че, днес ние се фокусираме върху тази тема -
не само някои заплахи, но също така защити.
Действително, в света на сигурността като цяло,
има вид на тази игра на котка и мишка,
и смея да кажа лошите момчета почти винаги имат крака.
Когато става дума да се възползват от хардуер и софтуер на нашите собствени персонални компютри,
ние трябва да осъзнаем, че лош човек, просто трябва да се намери една проста грешка -
едно експлоатират, един бъг - в част от софтуера, който съм писал или се изпълняват
за да може той или тя да поеме цялата ни система.
От друга страна, ние - добрите момчета - трябва да се закърпи и да определи всички тези грешки
и да се избегне всички тези слабости.
И така, смея да кажа като цяло, на лошите момчета имат предимство.
Какви класове като тази и следващите класове са наистина за
не са ви учи как да водят битки, че тези лоши момчета,
, но са за това как да се предпазите или поне как да се направи изчислява решение
, че отговорът е да, знам, че този софтуер може наистина да се чете всеки един от моите писма,
но аз съм добре с това, защото на стойност ме навежда на друга страна.
>> Аз съм много доволен, да се присъединят към две от най-умните хора, които познавам -
Роб Bowden и Нейт Hardison.
Роб е на път да ни вземе за разходка из най-ниското ниво на сигурност тагове
на компилатора, които до този момент, ние всички сме дошли да се обичат и да имат доверие. Роб Боудън.
[Аплодисменти]
>> [Роб] Добре. Дейвид е почти целия си увлекателно разказана история
, че щях да се въведе, но -
Преди няколко седмици, вие видяхте примера на атака за препълване на буфер
, което е пример на един хакер хакване в някаква част от софтуера
, че те не се очаква да бъдат хакерство в.
Другата страна на тази
понякога е имате злонамерен софтуер, който е само по себе си.
Тя дори не трябва да бъде опростен.
Лице, което е написал софтуера иска да ви хакнат.
>> Нека просто да скочи направо в кода,
като погледнете в "login.c".
Тук глупава програма, която валидира комбинация от потребителско име и парола.
Тук определено трябва да се удобно с C отново за теста.
Първо, ние използваме получите струни да се опише потребителско име,
тогава ние използваме взимането да вземете парола,
и след това имаме някои тривиални проверки на току-що, е потребителското име "Роб"?
И паролата "thisiscs50"?
Или е потребителското име "Томи" и парола "I <3javascript"?
Ако някоя от тях е случаят,
тогава ние просто ще отпечатате "Success", и след това ние имаме достъп.
В противен случай, отиваме за печат "невалиден вход" и след това, разбира се,
тъй като паметта скица струни изчистване, ние потребителско име и парола.
Това е тривиален програма за вход,
и ако мислите за това, когато влезете в уреда,
това е доста подобно - или дори да влезете в компютъра си -
има само някои влизане програма, която ви дава достъп.
Ето, ние се случи да има хард-кодиран "ограби", "thisiscs50", "Томи", "I <3javascript",
но най-вероятно има някакъв файл някъде на вашата операционна система
който има списък с потребителски имена, които могат да влезете в системата
и списък на паролите, свързани с тези потребителски имена.
Обикновено паролите не са просто записвани в прав текст като този.
Има някакъв вид криптиране, но това ще направи за нашия пример.
>> Очаквайте в нашия компилатор -
ще бъде много ясна.
Ние трябва да се определят най-малко някакъв файл, който искате да компилирате,
и след това тук - тези редове
само четене файл.
Той чете цялата преписка в един голям буфер,
и тогава ще сложат нула прекрати нашия буфер както винаги,
и най-накрая просто съставяне на файла.
Ние не отиваме да разгледаме как компилация се прилага на практика,
но като намек, той просто призовава звъня.
Отиваме да използвате тази програма, за да съставят неща, вместо да звъня.
Един от проблемите, да започнем с, е, че ние искаме да съставят компилатор,
но ако не започваш да използвате звъня, аз не знам какво ще да съставят.
Това е общ проблем, известен като зареждане на операционна.
Така че, само този път, аз ще звъня да съставят компилатор.
>> Ако смятате, че на ССЗ и звъня -
тези програми, тези компилатори непрекъснато се актуализира,
и се събират с помощта на тези компилатори GCC и звъня.
Звъня е просто една голяма C или C + + програма,
така компилатор те използват за съставяне, че е звъня.
Ето, сега, ние просто ще се използва компилатор за съставяне компилатор,
и дори може да се каже - "/ компилатор.", "compiler.c", "compile.c", "-о компилатор".
Забележете, това е точната команда, аз се завтече преди -
просто заменете звъня с "/ съставител".
И сега имаме друг компилатор, но това е точно същото.
Тя просто призовава звъня.
>> Отиваме да използвате нашия компилатор за съставяне на нашата програма за вход.
Добре - вход ". / Компилатор login.c-о".
Така че, неопределено позоваване на "GetString".
Имам "lcs50". Добре.
Така че сега имаме влизане програма.
- Получават "Моля, въведете вашето потребителско име".
Пример за това е Роб. Моля, въведете паролата си - thisiscs50.
И успех! Имат достъп.
Работещи го отново и въвеждане на някои невалидна парола
или невалидно потребителско име и парола -
невалиден вход.
Добре. Нищо интересно за този доколкото.
Но, нека да погледнем за вход отново -
и това ще бъде малко тривиален пример,
но нека добавим друг тук и да каже, иначе, ако ((strcmp (потребителско име, "хакер") == 0 &&
strcmp (парола, LOLihackyou ") == 0))
така и сега, ФОРМАТ ("Hacked Вече имате достъп \ N!"); добре.
Компилиране - съставител вход login.c-о-lcs50 -
в момента текат вход - и ако аз използвам моя хакер потребителско име
и парола LOLihackedyou -
Казах въведете правилно там преди?
На login.c--ihack - Ще се хакнат, защото мисля, че правя това по-късно.
Добре. Прекомпилиране.
Re-бягане - хакер - LOLihackedyou -
Hacked! Вече имате достъп.
>> Има не изглежда да е, че голяма част от разликата
, защото това е абсолютно същата проверка, което правех за други потребителски имена и пароли.
Освен това, голямо нещо е, че ако други хора гледат на това login.c -
да речем, ако минавам това разстояние на моя партньор, и те се отварят този файл,
и те четат това, те ще видят - Добре, защо имате тези редове код тук?
Това очевидно не е нещо, което трябва да бъде във вашата програма.
В някои програми - като собственически софтуер, който не е с отворен код -
може никога да не видите тези редове код.
Нещо като Skype или нещо такова - за всичко, което знаете,
Skype е на вашия компютър и има само някои специфични комбинация от потребителско име и парола
която ще влезете в Skype по някакъв специален начин.
Ние не знаем за него, и хората не знаят за него,
защото те не получават да прочетете изходния код, за да видим, че има тази дупка.
>> Това, което ние наричаме това -
въпреки че това не е много умен пример -
това се нарича с гръб към вратата.
Ако мислите, че на задната врата на къщата си.
Тук, ако потвърдете с потребителските имена ограби "или" Томи, "
че ще бъде като с помощта на "входната врата".
Това е начина, по който аз трябва да съм здраво потребителско име.
Но ако вляза с това потребителско име и парола
това с помощта на "задната врата".
Това не е умишлено начин да получите в програмата,
но тя все още работи.
И хората като цяло не трябва да знаят за тези задни врати.
Отиваме да се подобри това.
Да се ​​върне на първоначалното ни login.c,
и нека да погледнем в нашия нов компилатор. Добре.
Всичко тук е точно същото.
Четем целия файл в буфер.
Всичко тук е същото.
Ние просто компилиран файл.
Но сега имам този голям, ако тук
, който казва:, ако файл, който се случи да се съставянето login.c,
тогава правя нещо специално.
Какво е това нещо специално?
Виждам тук някои низ, наречен "рана",
и търси в тези редове код -
това са същите реда код - Предполагам, че съм направил употреба "ihack", а не "ihacked" преди -
търси в тези редове код,
са абсолютно същите редове код, които имах в login.c преди.
Но сега, вместо да тях като в login.c,
Отивам да ги пуснат в моя компилатор.
>> Това са редове код аз ще искате да вмъкнете в login.c.
Тези редове код - буфер, който първоначално ми login.c
вече няма да бъде достатъчно голям, защото сега искам да вмъкнете този хак
в средата на моята програма.
Всичко това прави създаването на нов буфер, който е достатъчно голям -
както за оригиналния файл и допълнителни линии на код - рана, че искате да вмъкнете там.
Ето нещо, което да забележите -
Чар * модел = "/ / откаже достъп до тях!"
Ако погледнем назад в login.c,
виждаме тук този коментар - откаже достъп до тях!
В login.c, този коментар изглежда напълно безвреден,
така че не би заподозрял злонамерени намерения само с този коментар.
Но в нашата компилатор, са специално ще изглежда този ред на код,
и тогава, когато го намерим -
тези редове код поставяте проникна в тази позиция.
Така че, ние сме итерации през целия login.c,
ние поставяме този хак, точно там, където се казва откаже достъп до тях,
и след това ние сме съставяне - не оригиналната login.c
но новият login.c с тази рана, вкарани точно в "отричат ​​достъп до тях."
>> Сега искам да съставят нов компилатор с тази рана участват.
Аз няма да се използва звъня, така че нека копирате компилатор, ние използвахме преди
и да използва това - така, съставител compiler.c compile.c-о evil_compiler.
Сега нашата зло компилатор -
ако използваме злото компилатор за съставяне на всеки друг файл,
Файлът ще се компилира както трябва.
Това е напълно нормално.
Но ако ние използваме нашите зло компилатор за съставяне на вход
, / evil_compiler login.c-о вход-lcs50. -
търси login.c отново, няма абсолютно нищо тук.
Това е обичайната ни ", ако това е Роб или Томи сме в друго, ние сме".
Но когато ние ръководим нашия изпълним, това ще работи както обикновено.
Да тече отново - хакер, LOLihackyou -
Hacked! Вече имате достъп.
Просто гледам в login.c, може би не мисля, че нещо не е наред.
Но компилатор, която се използва за съставяне на login.c
е специално проектиран, за да вмъкнете тази рана в програмата.
Сме само преместихме първоначалния проблем.
Първоначално имахме тези редове код в login.c, че ако някой друг ги погледна,
те ще бъдат харесва, защо са тези тук?
Сега ако някой се случва да погледнете нашия компилатор,
те ще разгледаме тези редове с код и да кажа,
Защо тези тук?
Така че, ние не сме напълно решен нашия проблем.
Но можем да използваме тази идея отново.
>> Като погледнете в третата версия на компилатора,
това е една и съща идея.
Четем целия файл в буфер тук,
ние съставяне на файла тук,
и аз имам някаква на низ рана в тук,
но забележите файла, че аз съм всъщност хакерство сега.
Съм хакване compiler.c
не login.c.
Но това, което съм вмъкване в compiler.c?
Аз съм поставите този код, който е точно код в предишния ни компилатор,
, което е предназначено да вмъкнете кода в login.c.
Тук е нашата ако strcmp файл login.c
и след това поставете в login.c рана неща.
Този нов компилатор е да се създаде компилатор
която е предназначена за съставяне вход злонамерено.
Ще видим защо това ни помага.
Всичко останало е същото, така че работи точно както тя работи с предишния ни компилатор.
Ние сме просто итерации през целия ни 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, Hacked! Вече имате достъп.
>> Признават, че това е различно от версия 2 на нашата компилатор.
Компилаторът ние използваме - да се движи назад - копие от вход -
нека да ни компилатор тук.
Премахване evilest компилатор.
Всичко, което имаш сега е компилатор.
Ако погледнем в compiler.c,
няма абсолютно нищо там, че изглежда са зловредни по какъвто и да е начин.
Ако погледнем в login.c,
няма абсолютно нищо, че тук изглежда са зловредни по какъвто и да е начин.
Но, когато ние използваме нашите компилатор да съставят login.c,
ние се на hackable версия на login.c.
Когато ние използвахме нашия компилатор за съставяне на нова версия на компилатора,
получавате hackable версия на компилатора.
Сега, ако искаме да излезем и да разпространяваме нашите изпълним компилатор,
и никой няма да разбере, че има нещо зловреден за това.
>> Това всъщност е така - аз не мога да си спомня години -
Кен Томпсън, и той спечели наградата на Тюринг -
ако сте запознати с наградата Тюринг, че е почти винаги се определя като
Нобелова награда по компютърни науки, така че как ще го определят.
Кен Томпсън изнесе реч, когато той получил Turing Award
наречен "Размисли за Доверявайки Trust".
По принцип, това е идеята на речта си.
Освен вместо компилатор, той говори за GCC -
просто още един компилатор като звъня
и това, което той казва е, като нашата login.c, нашата login.c изглежда относително безполезни
но той говореше за действителното UNIX login.c.
Когато влезете в вашия уред,
има някакъв вход програма, която се изпълнява.
Това е вход, че той говори за.
Това е в общи линии идеята си.
В GCC, на теория би могъл да насади бъг -
не е грешка, но зловреден код -
, че при съставянето на функцията за влизане - вход файл -
се създава с гръб към вратата, така че той може да отиде в абсолютно всяка UNIX система в света
и влезте с някои специфични потребителско име и парола.
По това време, ССЗ е почти на компилатора че всеки използва за нищо.
Ако някой се случи да се актуализира ССЗ,
след това те ще компилирате GCC използвайки GCC,
и вие все пак ще получите лоша версия на GCC
тъй като тя е специално компилиран, за да признае, че тя е прекомпилирате компилатор.
И ако някога GCC да компилирате login.c файл,
а след това ще поставите този задната врата, че той може да използвате, за да влезете в който и да е компютър.
>> Всичко това е теоретично, но - това конкретно обстоятелство е теоретична,
но идеите са съвсем реални.
През 2003 г. е имало подобен пример, където -
ние ще разгледаме в този файл,
и няма абсолютно нищо общо с това, но е подобен бъг.
Този файл просто определя функция, наречена разделение.
Приема аргумент, б аргумент,
и намерението е да се направи разделена от б.
Но го прави някаква проверка за грешки,
така че ние знаем неща са странни, ако б случва с равен на нула.
Ако Б е нула, а след това се разделихме в два случая.
Може би вече грешката.
В първия случай - ако е нула, тогава ние правим нула, разделени от нула,
и ние просто казват, че е неопределен.
Втория случай - ако не е нула,
то е нещо като една разделена на нула, а ние просто се обадете, че безкрайност.
Else върнем обичайните разделена от б.
И така, ето, ние сме тези три случая,
и ние всъщност разделение - той вика за мен -
така, без да обръща внимание на предупреждения звъня -
края на нищожно функция - очевидно не съставят това предварително.
Връщане на 0.
Уверете се разделят - Добре.
С / разделение, ние виждаме, 3, Infinity, Infinity.
Нулира разделена на нула, не трябва да са се върнали безкрайност.
И ако не сте разбрали бъг все пак - или не го видя преди -
ние виждаме, че правим = 0.
Вероятно означава == 0. Вероятно.
>> Но това всъщност е нещо, че отново през 2003 г., ядрото на Linux -
така че нашата Уредът използва Linux ядрото -
Линукс операционна система използва ядрото на Linux -
бъг, много подобен на този.
Идеята зад този бъг е -
отново имаше само някаква функция, която се нарича, и го направих малко на проверка за грешки.
Имаше някои специфични входове, че тази грешка проверка -
е трябвало да бъде, нали, не можете да се обадите на тази функция с делител на 0.
Така че, аз ще съм да върне някаква грешка.
Освен, че не е толкова невинен, колкото просто определя равен на 0.
Вместо това, тази линия на код в крайна сметка прави нещо по-скоро като потребител = администратор.
Или потребител = суперпотребител.
Тя е невинна на пръв поглед - грешка, където той би могъл да е приемлив
Исках само да докладвате нещо специфично
ако потребителят се случи да е администратор на суперпотребител.
Но след това отново да мисля за това, човек иска да изглежда като проста грешка,
но ако този код всъщност била освободена,
тогава щеше да е в състояние да проникна във всяка система за чрез преминаване определен флаг -
в този случай б = 0 -
и тя автоматично ще направи на потребителя администратора,
и тогава той има пълен контрол.
Това се случи през 2003 година.
>> Случи се така, че единствената причина, че е уловена
е така, защото там се е случило с някои автоматизирани системи
, че забеляза промяната в този файл
които никога не трябва да са били променени от човека.
Файлът трябва само да се генерира автоматично.
Просто така се случи, че някой докосна -
добре, човек, който искаше да проникна докосна този файл,
и компютъра, уловени, че докосва.
Така че, те променяли и едва по-късно осъзнах какво бедствие би било
ако това се беше излязъл в реалния свят.
>> Може да се мисли, че да се върне към нашия компилатор пример -
въпреки че не можем да видим на изходния код
, че не е нещо по-специално,
ако ние действително изглежда в двоичен код на компилатора,
ще видим, че нещо не е наред.
Като пример, ако ни свърши струните функция -
която е просто ще изглежда върху даден файл и отпечатване на всички низове, той може да намери
ако ни свърши струни на компилатор
виждаме, че един низ, който намира, е тази странна -
иначе, ако (strcmp (потребителско име, "хакер") - дрън, дрън, дрън.
Ако някой се случи да бъде достатъчно параноичен, за да не се доверят на компилатора,
те могат да работят конците и да видя това,
и тогава ще знам, че има нещо нередно с действителната двоичен.
Но, струнни е неизбежно нещо, което е бил съставен.
Така че, кой е казал, че нашата компилатор не само имат по-специален код
, която казва, ако струни някога се движат по нашата компилатор, да не се извежда на всички, че зловредният код.
>> Същата идея, ако искаме да раз-сглобяване на файла -
ние научихме, че асемблер ни носи монтаж код на машинен код -
можем да отидем в обратната посока - objdump-г компилатор
ще ни даде монтаж на нашия код.
Поглед към това,
това е доста загадъчно, но ако искаме, можем да погледнем през това
и разума, чакай, има нещо, което става тук, че не трябва да се случва,
и след това ще разпознаем, че компилаторът прави нещо злонамерен.
Но, точно като струни, кой е казал, не objdump беше специален случай.
По принцип, тя се свежда до не можеш да вярваш нищо.
Точка на хартия, се нарича "Доверявайки Тръст" е
като цяло, ние вярваме, нашата компилатор.
Съставя кода и се очаква тя да направи това, което искат от него да направи.
Но защо трябва да се доверите на компилатора?
Вие не пиша компилатор. Вие не знаете какво компилаторът е задължително всъщност прави.
Кой може да се каже, можете да му се доверите?
Но дори и тогава, добре, може би можем да се доверите на компилатор.
Има десетки хиляди хора, които са гледали този.
Някой трябва да признае нещо, което е с компилатора.
>> Какво ще стане, ако просто отидете 1 ниво по-дълбоко?
Тя дори може да бъде вашия процесор.
Колкото и нелепо, колкото би могло да бъде,
може би има някакъв измамник служител на Intel, който създава тези процесори
, че всеки път, когато този процесор забелязва, че сте стартирали някои команда
, която е предназначена да влезете в компютъра,
процесорът ще приеме някои специфична комбинация от потребителско име и парола.
Тя ще бъде диво сложно,
но някой може да го направи.
В този момент, наистина ли ще се отвори компютъра ви да погледнете на процесора
и използване на микроскоп, за да се признае, че тези вериги не са наредени както трябва да бъдат?
Никой не е никога няма да хване тази грешка.
В един момент, просто трябва да се откажат и да се доверите нещо.
Повечето хора се доверяват на компилатора в този момент.
Това е не непременно, че трябва да се каже.
Търсите най-малко скандален видео
[Драматичен възпроизвеждане на музика]
[Това е UNIX система. Знам това.]
[Всички файлове -]
Тя каза: "Това е UNIX система. Знам това."
Сменете UNIX с каквото любимата си операционна система е -
тя би могла да каже: "Това е система Windows. знам това."
Това е напълно безсмислено изявление,
, но и за всичко, което знаем, тя се случва да знам задната врата в системата UNIX.
Тя знае някаква комбинация от потребителско име / парола, които действително ще позволи
прави каквото си иска.
>> Добре. Поуката от днес е в общи линии не можеш да вярваш нищо.
Дори нещата, които пиша - не съм писал компилатор.
Компилаторът може да бъде лошо.
Дори ако напишете компилатор, нещо, което компилатора може да бъде лошо.
(Смее се) Не можете да направите много.
Светът е обречен.
Обратно към Дейвид!
[Аплодисменти]
>> [Дейвид] Благодаря. Това беше наистина депресиращо.
Но наистина, Роб е правилен.
Ние наистина не имаме решение за това, но сте на път да получите някои решения
за някои по-стандартни мерки за защита.
В очакване на това, какво Нейт и са прави на сцената там
е да се знае, че в тази зала има толкова много лаптопи,
ние сме били смъркане на безжичния трафик минава през тази стая за последните 20 минути
по време на речта на Роб, така че ние ще вземем 2 минути почивка тук.
Нейт ще да се създаде, а след това ние ще говорим за всички неща
ние би могъл да намери. (Смях)
>> Така че, може да са преувеличени малко само за целите на драмата,
но бихме могли да са смъркане на вашата безжична трафик, защото наистина,
е толкова лесно.
Но има и начини, че можете да се защитават срещу това, и така с това,
Аз ви давам Нейт Hardison. >> [] Sweet Нейт.
(Аплодисменти)
>> [Nate] Благодаря, човече. Аз оценявам вик.
Всичко е наред! Това е игра седмица. Развълнувани ли сте момчета?
Надяваме се, че ще бъде една голяма игра в събота.
Представяте ли си момчета в този момент - като се има предвид, че имате викторина в сряда
за код, и ние просто си седеше през една прекрасна лекция от Роб
с един куп на C код в него -
може би са малко уморени от код.
В тази част, ние всъщност не отиваме каквато и да докосне всеки код.
Ние просто ще говорим за технологии, които използват всеки ден,
често в продължение на много, много часове на ден,
и ние ще говорим за последствията със сигурност, че има.
>> Говорили сме много за сигурността в течение на семестъра,
и ние започнахме с малко крипто.
[Bdoh лв. vwlqng!]
И докато вие вероятно са супер развълнувани да се минава бележки към всеки друг
в клас с помощта на шифър на Цезар като тази,
в действителност, има някои по-забавно да се има, когато сте всъщност говорим за сигурността
и такива неща.
Днес отиваме да покрие няколко технологии
че хората действително да използват в реалния свят, за да се правят всякакви неща
от смъркане пакети на хората, които всъщност се случва и
проникване в банковите сметки на хората и всичко това.
Това са законните средства, които ние говорим за
с изключение на може би един инструмент.
>> И аз просто искам да се направи бърз отказ от отговорност.
Когато говорим за тези неща, ние не говорим за тях, така че знам какво е там,
и сте наясно как да бъде безопасно, когато сте навън използвате компютъра си.
Но ние определено не искам да се предполага, че трябва да използвате тези инструменти
в общежитието или къщата си, защото можете да се сблъскате с много големи проблеми.
Това е една от причините днес, че ние всъщност не са смъркане си пакети.
>> Добре. Миналия понеделник говорихме за "бисквитките", и HTTP и удостоверяване,
и как Firesheep отваря тази голяма врата в профила си във Facebook,
на вашия 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,11 гр, който е един на друг много популярен
безжични стандарти, че е там.
Б и грам са доста остарели в този момент.
Някой знае ли коя версия повечето хора са точно сега
ако те са закупуване на нови безжични рутери и такива неща?
Н. Точно така. Бинго. И се оказва, че стандарта на променлив ток е само във формата на проект,
и има и други версии по пътя.
С всяка от тези стандарти, което сме набира повече трафик,
повече данни по-бързи темпове.
Тези неща продължава да се променя доста бързо.
Той също така го прави, така че ние трябва да купуват повече маршрутизатори и всичко, което забавни неща.
>> Нека поговорим за безжична комуникация всъщност е в основата си.
С Ethernet и тези стари Dial-Up модеми,
всъщност тези неща, че сте включен в компютъра,
и след това включен в модем на видове, а после го включен в жак в стената.
Трябваше кабелна връзка, нали?
Целият смисъл на безжичен е да се отървем от тези неща.
За да направите това, което имаме, е по същество
радио комуникация, където нашата безжичен рутер -
определен от нашата малка икона на безжична
е свързан към интернет, с тази солидна стрелка показва някаква кабелна връзка,
но когато се свържете към вашия безжичен рутер
вие сте действително използва почти като уоки-токи между
вашия компютър и безжичен рутер.
Това, което е наистина страхотно за това е, че могат да се движат.
Можете да носите компютъра по цял Сандърс, да сърфирате в интернет, каквото си искате,
точно като теб всички познаваме и обичаме,
и никога не трябва да бъде включен в нищо.
За да стане това, ние имаме както това приемане и предаване.
Това наистина е така уоки-токи.
>> Този безжичен рутер, които в Сандърс седи под този етап, точно тук -
винаги е излъчване и получаване, разпространение и получаване,
и също така, вашите компютри са това, че същото нещо, също.
Ние просто не мога да го чуя.
Другото нещо, което можете да направите, е, че може да има множество компютри
говори със същия безжичен рутер.
Колкото по-близо сте до рутера - и отново, това е радио-комуникационна
колкото по-близо сте, толкова по-добре вашият сигнал е, толкова по-добре на вашия компютър чува "рутер
и може да комуникира с Интернет.
Ако вие сте някога в общежитието, в къщата си и се чудите защо сигналът е лошо,
това е може би, защото а). не сте много близо до вашия рутер или
б). има нещо между вас и вашия рутер като циментова стена или нещо
, който не позволява тези радиовълни чрез.
>> Нека поговорим малко за това, защо лошите момчета като Wi-Fi.
Лошите момчета обичат Wi-Fi по няколко причини.
Тук е нашата гаден лош човек там.
Една от причините, поради които този лош човек обича Wi-Fi
е така, защото по подразбиране, много безжични рутери идват и когато ги създаде,
те некриптиран.
Това е проблем, както и че е имало случаи -
множество случаи, сега - където лош човек показва до нечия къща,
обявления, че има некриптирани Wi-Fi, за които могат да се свързват.
Те се свързват към Wi-Fi, а след това да започне изтеглянето на всякакви забавни неща.
И те не са изтегляне котенца, те не са изтегляне кученца.
Това е като BitTorrent. Това е най-гаден от най-тежката.
Имало е случаи, когато ФБР Дори участващи
мисля, че лице, което е собственик на къщата, е всъщност
става там и изтегляне на неща, които те наистина не трябва да бъде.
Некриптирани Wi-Fi определено не е нещо, което искате да направите,
дори и само, за да не се налага ФБР почука на вратата ви.
>> Друга причина, поради лошите момчета обичат Wi-Fi
е причината, поради която Давид говорихме по-рано по време на почивката.
Защото това е радио комуникация в основата си,
ако знаете канала, можете да слушате тази станция.
Например, ако е лошо точно там седеше в средата право в непосредствена близост до точката за достъп,
в непосредствена близост до този безжичен рутер, лош човек може да слуша всички безжичен трафик
, което идва от всички тези компютри.
В действителност, тези момчета - тези малцина щастливци, които са тук на първия ред -
защото те са супер-близо до всички тези безжични рутери
, които седят точно под сцената,
те ще могат да чуят всички трафик в цялата тази стая
ако сте свързани към Wi-Fi и започнете да разглеждате тези точки за достъп.
Това не е много трудно да се седи в добра позиция да помиришат и да разбера
това, което правят другите.
Това е нещо, което трябва да имате предвид, особено ако не сте сигурни къде точката за достъп е,
и сте търсят да речем, на Starbucks.
>> Оказва се, че душеше и всичко това
наистина не е чак толкова трудно да се направи.
Има една програма, наречена tcpdump, които сметища всякакви TCP трафик
и можете да го стартирате доста просто - точно както аз направих тази сутрин.
Ето малко на сметището, и ето някои от трафика, който идва
моята мрежа по това време.
Можете да видите - ако кривогледство наистина трудно - там има малко Spotify.
На върха на tcpdump - защото това е вид болка да използвате -
има програма, наречена Wireshark които снопове всичко това в хубава GUI.
Wireshark е супер удобно, така че ако отидете на мрежи класове,
това е инструмент, който ще дойде да се обичат, тъй като тя ви помага да дисекция на пакетите
, които са наоколо там.
Но тя може да се използва и за лошо.
Това е много проста, просто да изтеглите тази програма, да го стартира,
започнете улавяне на мрежата, както и да видите всичко, което се случва -
и се филтрира и да се правят всякакви забавни неща с него.
>> Другото нещо, което можете да направите с безжична комуникация
е не само може да ви подслушва, но можете да научите също как да се притеснявам с мрежата
и се инжектира собствената си информация, за да контролира опит, че други хора
на една и съща безжична мрежа се.
Нека хвърлим един поглед на това.
Ето Firesheep, които ние познаваме и обичаме от миналата седмица -
което е че подслушване технология.
Ако, например, ние искахме да активно да имаме лош на движение човек и се забъркваш с около
един от тези компютри,
в този сценарий имаме компютър, който се опитва да отидете сърф harvard.edu.
Какво се случва, е, компютърът първо изпраща съобщение до безжичен рутер и казва:
хей, аз искам да отида www.harvard.edu посещение.
Кажете някаква причина те се опитват да получите информация за играта този уикенд.
Bad Guy, тъй като той седи точно в средата,
в непосредствена близост до тази точка за достъп, може да видите, че съобщението идва от компютъра
в рутера, и той знае, "Аха! Някой ще harvard.edu". (Смее злобно)
Там ще бъде този латентност, докато комуникацията излиза от рутера
към интернет, за да се намери на интернет страницата на harvard.edu -
точно както вие всички знаете след това PHP psets
и така лош човек има малко време, малко на прозореца,
, в която той да може да реагира с някои неща.
>> Да кажем, че този лош човек, разбира се, е Yaley.
Той отговаря с harvardsucks.org. Boo!
Лош, лош човек! Bad Yaley!
Или още по-лошо, той може да реагира с това. [Http://youtu.be/ZSBq8geuJk0].
Ще ви оставя вие да разбера какво е това.
Това всъщност е технология, наречена Airpwn! която е дебютира на
един от конференцията за сигурност няколко години назад.
С Airpwn! вие сте в състояние действително да инжектира трафик в мрежата.
Компютри, които се опитват да излязат в интернет и се опитват да стигнем до
Google.com, Facebook.com, harvard.edu
зловреден отговор дойде и веднага поема, добре,
това е отговора, който чаках и в крайна сметка получаване на съдържание от
harvardsucks.org или nameyourfavoriteshocksite.com,
и можете да видите колко бързо нещата ще се влоши.
>> Всички тези видове неща, не може да се направи
с тези кабелни връзки, защото с кабелна връзка
това е трудно да душат за движение.
Ако съм лош човек и в единия край е вашият компютър
и на другия край е вашият рутер - вашият модем
единственият начин, по който мога да получа между тази връзка е действително снаждане моя компютър
някъде по средата
или да направи нещо друго с рутера, нещо надолу по веригата.
Но с безжичен, тя може да бъде толкова лесно, колкото да седи на първия ред на класната стая,
и можете да направите всички видове лоши неща на хората в гърба.
>> Нека поговорим за това как може да се защитава срещу някои от тези неща.
Хора, които са развили безжични стандарти - 802,11 -
те не са глупави хора от всеки участък на въображението.
Това е готино технологии и когато тя дебютира през 1999 г.,
те излязоха с този стандарт, наречен WEP.
Тук можете да видите, когато се опитате и да се присъедини към безжична мрежа,
имате всички видове различни опции за сигурност.
Това е вид болка, защото има шест всички заедно
и никога не го наистина има смисъл които 1 да се присъедини.
Този 1 на върха е първата, която те дойдоха с нарича WEP.
WEP е съкращение от Wired Equivalent Privacy, аз вярвам,
не Безжичен протокол за криптиране, която е често срещано погрешно название.
Защото той се опитва да ви даде еквивалент на неприкосновеност на личния живот и защита на сигурността
еквивалентна на тази на кабелна мрежа
С WEP това, което в крайна сметка се случва, е,
имате проста, паролата, която сте напишете и това служи за криптиране
всички комуникации между вашия компютър и вашия рутер.
>> Какъв е проблемът с WEP обаче?
Парола с WEP е много кратко,
, а също и всеки използва същата точната парола,
и затова е много лесно да се декриптира.
Така че много бързо хората разбрали, че WEP е проблем,
и единствената причина да го покаже още на този малък човек -
има някои по-стари системи, които се използват WEP -
това, което трябва, вместо да се търсят са WPA и дори WPA2 стандарти
, които са били освободени по-късно.
Тези системи са много по-добре да отида в защита на безжичен интернет.
Въпреки това, те все още имат някои hackability.
Има инструменти там, че могат да отидат да направите това.
Едно нещо по-специално, че могат да бъдат лоши, е, че
ако свържете и заверени с безжичен рутер и използвате някакъв вид
криптирана комуникация, се оказва, че един хакер може лесно да изпратите един пакет
да изключите от рутера,
и след като сте откачили След това те могат да слушат на
те могат да помиришат тези пакети, като се опитате да възстанови връзката с вашия рутер.
И с тази информация, те могат да отидат и декриптиране на останалата част от вашата комуникация.
Това не е по някакъв начин каквато и да е сигурна, отвъд всички въображение.
>> Другото нещо, което можете да направите, когато сте създаването на безжични мрежи
или сте се присъедини към тях е - вие забележите, че тук, когато съм се присъедини към тази мрежа,
го пита за името на моята мрежа.
Това е също така известен като SSID.
И вие виждате, че тук в дясно има кутия, която ми показва наличните SSIDs.
Има Харвардския университет, CS50 и CS50 персонала мрежа.
Сега, колко от вас знаеше, че има CS50 персонала мрежа около?
Някои от вас. Не всички от вас.
Проблем с това, разбира се, е, че ако не сложим това в списъка на SSIDs
никой не би могъл да знае за това най-вероятно.
Надявам се. Ако вие не се опитват да се справи в нашата безжична.
Но това е нещо, което може да направите, това е много важно, когато сте създаване
рутер у дома.
Това най-вероятно няма да се случи за няколко години, за много от вас,
но имайте предвид, че опазването на тази SSID от там и не го нарича
нещо супер-чести ще ви помогне да ви направи по-сигурни в дългосрочен план.
>> Окончателното няколко неща, които можете да направите. Един от тях е HTTPS.
Ако сте на Starbucks, ако сте в публичен Wi-Fi зона
а вие решите да влезете в банковата си сметка, достъп до Gmail, Facebook,
уверете се, че тези връзки са през HTTPS.
Това е едно допълнително ниво на защита, допълнителен слой на криптиране.
Единственото нещо, което трябва да се има предвид тук, е,
колко от вас някога са кликнали чрез този голям, червен екран, който казва,
"Този сайт може да бъде лошо."
Знам, че имам.
Това е вероятно, когато си търсят да отида да видя вътрешната или нещо подобно, нали?
Да. (Аудитория смях) Да. Ето. Ние знаем, кой гледа вътрешната.
Този голям, червен екран точно там
често показва, че става нещо фънки.
Понякога това е просто самия сайт е несигурно,
но същата голям, червен екран идва, когато хората се опитват да
монтиране на мрежови атаки.
Така че, ако видите, че голям, червен екран на Starbucks,
не кликвайте през него.
Лоши новини. Лоши новини мечки.
>> Крайният нещо, което можете да погледнете
е някаква VPN.
Това VPN е достъпна чрез Харвард - vpn.fas.harvard.edu -
и какво прави това е действително установи защитена връзка
между вас и Харвард, фунии трафика си през него,
и по този начин, ако си седите на едно място, като Starbucks
можете да се свържете Харвард, че безопасно движение, и след това да разглеждате от Харвард.
Отново, не е съвсем прост. Хората могат да получат в средата.
Те могат да започнат да се разделяме, но това е далеч по-сигурна, отколкото да се разчита на сигурността
само Wi-Fi.
>> Добре. В крайна сметка,
когато настройвате безжични мрежи,
когато ви предстои да използвате безжична публично -
дали това е Starbucks, независимо дали е пет момчета, дали това е B.Good,
нещо подобно - там, където те имат Wi-Fi -
да бъде наясно с вашето обкръжение.
Бъдете наясно с това, което хората могат да направят.
И да бъдат безопасни. Не достъп до вашата банкова сметка.
Тя може да бъде грубо пробуждане, ако някой се появи с паролата си по-късно.
С това, пурпурен! И аз отивам да обърне нещата към Давида за последната дума.
(Аплодисменти)
>> [Дейвид] Мислех, че ще споделят едно нещо от личен опит.
А инструмент, който би искал да играе с - въпреки че Apple до голяма степен е изкоренена този въпрос
ако сте актуализирали своя софтуер, тъй като -
но към този край на наистина не е в състояние да се доверите на софтуер, който ние използваме,
и точки на Нейт, е в състояние да помиришат доста от това, което правят другите
там - това е парче от софтуер, който излезе преди около година и половина преди.
[IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/]
За известно време, качи преди iCloud, когато сте били синхронизирането на айпод или Iphones или
или iPads с качи - в интерес на архивите,
какъв е вашият iPhone и тези други устройства са били прави за известно време е
използване на GPS данни.
>> Вие всички знаете, че може би Iphones и андроиди и Windows Mobile телефони
и като тези дни може да проследи къде се намирате в интерес на ви показва карти
и други подобни - добре какво Apple и тези други дружества
те обикновено следи почти навсякъде сте действително са били в интерес на
подобряване на качеството на услугата.
One, можете да получите по-целенасочена реклама и други подобни,
с изключение на две, те също могат да разбера къде са безжични горещи точки в света,
и това може да помогне с географското местоположение - нещо триангулация на позицията на хората.
>> Дълга история Накратко, всички от нас са били ходене антени за някакъв период от време.
За съжаление, Apple направи дизайнерско решение - или липса на такова -
шифроването на този вид, когато това е подкрепено да качи.
И какво сигурността изследовател намерил е, че това е просто огромна XML файл -
огромен текстов файл - седи в хората качи софтуер,
и ако сте били само малко любопитни,
можете да отидете изпълзяват около историята на вашия съпруг, съквартирантката си история,
историята на брат си и други подобни,
и благодарение на някои свободен софтуер, бихте могли да начертаем всички тези GPS координати -
географска ширина и дължина.
>> Така че, аз наистина това със собствената си телефон.
Включен в телефона ми, и разбира се, моята версия на качи по това време не е криптирана,
и това, което аз бях в състояние да видите моите собствени модели.
Ето Съединените щати и всяка една от тези сини кръгове представлява
където се случи да са над тези предходните месеци на собственик на този телефон.
Прекарвам много време, разбира се, в североизточната част, малко време в Калифорния,
краткотрайно пътуване до Тексас, и ако след това я увеличите по този въпрос -
всичко това е вид глоба и интересна, но аз знаех, че това.
Повечето ми приятели знаеха това, но ако се потопите още по-дълбоко,
види къде съм прекарват по-голямата част от времето си в североизточната част.
Ако се залепи някои запознат изглеждащи градове -
този голям син оцапвам мастило е по същество над Бостън,
и след това прекарвам малко време в предградията, излизащи от Бостън.
Но също така бях съвсем малко да се консултира тази година.
И тази година е на източното крайбрежие, и всъщност можете да ме видите
и iPhone ми в джоба си пътуване назад и напред между Бостън и Ню Йорк
и Филаделфия по-надолу, както и да прекара малко време на ваканция
на нос, който е малко ръката там.
Така че, всеки един от тези точки представлява някакво място съм бил,
и напълно без знанието на мен, цялата тази история е просто седеше там
на моя настолен компютър.
Ако намалите - това всъщност е малко притеснително.
Няма спомен някога да е бил в Пенсилвания съответната година.
Но аз все пак малко по-трудно за него и си помислих, о, това е факта, че пътуване
и разбира се, телефонът ми ме хвана.
>> Apple е криптират тази информация,
но и това е само доказателство за колко се събира информация за нас,
и колко лесно - за добро или за лошо - това е приемливо.
Един от Take-уикенд, надявам се от разговори на Роб, от речта на Нейт
и малки визуални като това днес е само за да бъде още по-осведомени за това
така че въпреки че - като точка Роб - ние нещо прецакани, нали?
Не можем да направим много, когато става въпрос за някои от тези заплахи,
но в края на деня трябва да се доверите на нещо или някой
ако искаме действително да използват тези технологии.
Най-малко можем да бъдем вземането на информирани решения и изчислени решения или не
ние трябва действително да бъдат проверка на този особено чувствителен сметка
или ние трябва действително да изпращате че малко подозирате, мигновени съобщения
в Wi-Fi среда като тази.
>> Така че, с това каза, само една викторина останки, една лекция остава.
Ще се видим в сряда след това понеделник.
(Аплодисменти и овации)
[CS50TV]