[Powered by Google Translate] [Тиждень 10] [David J. Малан] [Harvard University] [Це CS50.] [CS50.TV] Все в порядку! Це CS50, але не набагато довше. Це початок тижня 10. У середу ми нашу вікторину, а потім в наступний понеділок у нас є святковий торт як ми пройшли повне коло весь шлях назад від тижня нулю. Сьогодні ми поговоримо про один з моїх улюблених тем, по правді кажучи - , Що безпека і недоторканність приватного життя і наслідки всіх апаратних засобів і програмного забезпечення що всі ми використовуємо ці дні. Щоб бути чесним, існує багато загроз там що, якщо ви дійсно не зупинився, щоб думати про них, вони насправді досить складно. Справа в точку - якщо кожен з вас коли-небудь завантажено частина програмного забезпечення вимикання Інтернету і встановити його на свій комп'ютер, Ви займалися в значній мірі довіри, вірно? Існує нічого запобігши Skype або Chrome, або будь-якої частини програмного забезпечення Ви встановили на свій комп'ютер, від просто видалити всі файли на жорсткому диску; від завантаження всіх файлів на жорсткому диску, на сервері деякі поганий хлопець; читати всі ваші листи, від перехоплення всі ваші миттєві повідомлення. Тому що реальність сьогодні з більшістю сучасних операційних систем там дійсно не так багато стіну між програм, які ми встановлюємо, і ви, і я в значній мірі тільки вид через наші пальці і приймаючи на віру , Що додаток ми завантажили безкоштовно, або, що те, що на 99 центів, насправді абсолютно сприятливим. Але, як ми бачили через C, і тепер PHP і JavaScript, з цією можливістю, щоб виразити себе програмно, Ви можете зробити практично все, що ви хочете з програмою, користувач сам або сама могла зробити. Отже, сьогодні ми орієнтуємося на цю тему - Не тільки деякі загрози, але й оборону. Дійсно, у світі безпеки в цілому, там ніби цієї кішки-мишки, і я наважуюсь сказати, що погані хлопці майже завжди є ногу. Коли справа доходить до прийняття переваги апаратного та програмного забезпечення на наші власні персональні комп'ютери, Ми повинні розуміти, що поганий хлопець, просто потрібно знайти одну просту помилку - один експлуатувати, одна помилка - в частині програмного забезпечення ми написали або працює для того, щоб йому або їй взяти на себе всю нашу систему. З іншого боку, ми - хороші хлопці - потрібно залатати і виправити всі ці помилки і уникнути всіх цих недоліків. І так, я наважуся сказати, в цілому, погані хлопці мають перевагу. Які класи, як це і наступні класи дійсно про не про викладанні вам, як вести битви, що ці погані хлопці роблять, але про те, як захистити себе або, принаймні, як зробити розрахована рішення що так, я знаю, що це частина програмного забезпечення, дійсно може прочитати всі мої повідомлення електронної пошти, але я в порядку з цим, тому що значення це приносить мені з іншого боку. Я дуже радий бути з'єднані 2 з найрозумніших людей, яких я знаю - Роб Боуден і Nate Хардісон. Роб збирається взяти нас на екскурсію по самим низьким рівнем безпеки теги - що і компілятор, який, до цих пір, ми всі прийшли до любові і довіри. Роб Боуден. [Оплески] [Роб] Все в порядку. Девід дуже багато прийняті всі моє поневіряння що я збираюся познайомити з, але - Кілька тижнів тому ви бачили приклад переповнювання буфера атаки яка є прикладом того, хакер зламав деякі частини програмного забезпечення що вони не повинні бути злому. Інший бік цієї Іноді у вас є програмне забезпечення, яке шкідливих сама по собі. Він навіть не повинні бути зламаний. Людина, яка написала програмне забезпечення хоче зламати вас. Давайте просто стрибати прямо в коді, поглянути на "login.c". Тут, дурна програма, яка перевіряє ім'я користувача та пароль. Тут ви безперечно повинні бути освоїтися з C знову для вікторини. По-перше, ми використовуємо отримати рядків, щоб описати ім'я користувача, Потім ми використовуємо отримати рядок, щоб захопити пароль, а то у нас деякі тривіальні перевірки за все, це ім'я користувача "грабувати"? І це пароль "thisiscs50"? Або, це ім'я користувача "Томі" і пароль "я <3javascript"? Якщо один з них є випадок,  Потім ми просто будемо друкувати "Успіх", і тоді ми маємо доступ. В іншому випадку, ми будемо друкувати "невірний логін", а потім, звичайно,  З пам'яттю ескіз рядків Танос, ми безкоштовно ім'я користувача та пароль. Це тривіальна програма входу в систему, і якщо ви думаєте про те, коли ви входите в прилад, це досить схожі - або навіть увійти в свій комп'ютер - є тільки деякі логін програма, яка дає вам доступ. Тут ми, трапляється, є жорстко пограбувати ',' thisiscs50 ',' Томмі ',' я <3javascript, але, ймовірно, є деякі файл десь на вашій операційній системі який має список імен користувачів, які можуть увійти в систему і список паролів, пов'язаних з цими іменами користувачів. Зазвичай паролі не просто зберігаються в незашифрованому вигляді, як це. Існує свого роду шифрування, але це буде зробити для нашого прикладу. Скоро в наш компілятор - це буде дуже просто. Ми повинні вказати принаймні деякі файли, які ми хочемо зібрати, , А потім тут - ці рядки тільки читання файлу. Він читає весь файл в один великий буфер, і тоді ми нульовим символом нашого буфера, як завжди, і, нарешті, ми просто компіляції файлу. Ми не збираємося подивитися, як компіляція дійсно реалізований, а як натяк, він просто викликає Clang. Ми збираємося використовувати цю програму для компіляції речі, а не Clang. Одна з проблем, ми починаємо з те, що ми бачимо, ми хочемо, щоб скласти наш компілятор, Але якщо ми не збираємося використовувати Clang, я не знаю, що я збираюся зібрати с. Це загальна проблема відома як початкова завантаження. Так, тільки на цей раз, я збираюся використовувати Clang для компіляції нашого компілятора. Якщо ви вважаєте, GCC і Clang - цих програм, цих компіляторів постійно оновлюються, і тих, компіляторів складений з використанням GCC і Clang. Clang є лише однією великою C або C + + програм, так що компілятор вони використовують для компіляції, яка Clang. Тут, зараз, ми просто будемо використовувати наш компілятор для компіляції нашого компілятора, і ми можемо навіть сказати - '/ компілятора. »,« compiler.c', 'COMPILE.c', '-о компілятора. Зауважте, що це точна команди я побіг раніше - просто замінити Clang с. / компілятора. І тепер у нас є інший компілятор, але це точно так само. Це просто викликає Clang. Ми збираємося використовувати наш компілятор для компіляції наших входу в програму. Добре - ". / Компілятор login.c-O логін". Таким чином, невизначена посилання на "GetString". Є "-lcs50". Добре. Так що тепер у мене є наш вхід в програму. Запуск цього - отримати "Будь ласка, введіть ваше ім'я користувача". Одним із прикладів є Роб. Будь ласка, введіть свій пароль - thisiscs50. І успіх! У мене є доступ. Запуск його знову і введення деяких невірний пароль - або невірне ім'я користувача і пароль - невірний логін. Добре. Нічого цікавого про це досі. Але, давайте подивимося на вхід знову - і це буде кілька тривіальний приклад, але давайте додамо ще тут і кажу, інакше, якщо ((STRCMP (ім'я користувача, "хакер") == 0 && STRCMP (пароль "LOLihackyou") == 0)) Так що тепер, Е ("зламали Тепер у вас є доступ до \ п!».); Добре. Компіляція цього - компілятор login.c-о-вхід lcs50 - Зараз працює логін - і якщо я використовую моє ім'я користувача хакер і пароль LOLihackedyou - А я друкую це неправильно там раніше? У login.c--ihack - Я зроблю зламаний, тому що я думаю, що зробити це пізніше. Добре. Перекомпіляція. Повторний запуск - Хакер - LOLihackedyou - Зламаний! Тепер у вас є доступ в Інтернет. Там не здається, що особливої ​​різниці тому що це точно такий же чек я робив для інших користувачів і паролі. Крім того, велика справа в тому, що якщо інші люди дивляться на цю 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 з цим рубати вставляється прямо в «позбавити їх доступу. Тепер я хочу, щоб скомпілювати мій новий компілятор, що рубати участь. Я не збираюся використовувати Clang, так що давайте скопіювати компілятор ми використовували раніше і використовувати його - так, компілятор compiler.c COMPILE.c-про evil_compiler. Тепер наш злий компілятор - якщо ми використовуємо наше зло компілятор для компіляції будь-який інший файл, Файл буде становити, як слід. Це абсолютно нормально. Але якщо ми використовуємо наше зло компілятор для компіляції логін - Таким чином, / evil_compiler login.c-о-вхід lcs50. - дивлячись на login.c знову, немає абсолютно нічого тут. Це наша звичайна ', якщо це або пограбувати або Томмі ми знаходимося в, інакше ми з'. Але коли ми запускаємо наш виконуваний, це буде працювати, як звичайно. Запуск знову - хакер, LOLihackyou - Зламаний! Тепер у вас є доступ в Інтернет. Просто дивлячись на 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, зламали! Тепер у вас є доступ в Інтернет. Визнаємо, що це відрізняється від версії 2 наших компілятора. Компілятор ми використовуємо - давайте рухатися назад - копія входу - наведемо наш компілятор назад сюди. Видалення evilest компілятора. Все, що ми залишили в даний час є компілятором. Якщо ми подивимося на compiler.c, немає абсолютно нічого немає, що здається шкідливим в будь-якому випадку. Якщо ми подивимося на login.c, немає абсолютно нічого тут, що виглядає шкідливий в будь-якому випадку. Але, коли ми використовуємо наш компілятор для компіляції login.c, ми отримуємо уразливими для атак версія login.c. Коли ми використовували наш компілятор для компіляції нової версії компілятора, ми отримуємо уразливими для атак версія компілятора. Тепер, якщо ми виходимо і поширювати наші компілятором виконуваного і ніхто не буде знати, що є щось шкідливе про це. Це дійсно так в - Я не можу згадати рік - Кен Томпсон, і він отримав премію Тюрінга - якщо ви не знайомі з Премію Тьюрінга, то це майже завжди визначається як Нобелівська премія інформатики, ось як я її визначення. Кен Томпсон виступив з промовою, коли він отримав премію Тюрінга під назвою "Роздуми про цільовий Довіра". В основному, це була ідея його промови. Крім замість нашого компілятора, він говорив про GCC - просто ще один компілятор, як Clang - і те, що він говорив, як і наші login.c, наші login.c здається відносно марні але він говорив про фактичне UNIX login.c. Коли ви увійдіть в свій прилад, є деякі входу програми, яка працює. Це був вхід, що він мав на увазі. Це було в основному його ідея. Він сказав, що в GCC, він в теорії міг би посадили помилка - Не помилка, але шкідливий код - , Що при складанні вхід функції - вхід в файл - б вставити задні двері, щоб він міг піти в абсолютно будь-якій UNIX системи в світі і увійти з деякими конкретними ім'я користувача та пароль. У той час, GCC був в значній мірі компілятор, що кожен використовуватися для чого-небудь. Якщо хтось відбулося оновлення GCC, Потім вони будуть перекомпілювати GCC використанням GCC, і ви все одно отримаєте погану версію GCC тому що це було спеціально складено визнати, що вона була перекомпіляції компілятора. І якщо ви коли-небудь використовувати GCC перекомпілювати login.c файл, то було б вставити цю задні двері, що він міг би використовувати для входу на будь-який комп'ютер. Це було теоретичне, але й - що особливо обставина було теоретичне, але ідеї цілком реальні. У 2003 році був схожий приклад, де - ми подивимося на цей файл, і це не має абсолютно нічого насправді робити з ним, але помилка аналогічна. Цей файл тільки визначає функцію з ім'ям розриву. Він приймає аргумент, аргумент б, і намір це зробити ділиться на б. Але він робить деякі перевірки помилок, так що ми знаємо речі, дивно, якби сталося рівною нулю. Якщо б дорівнює нулю, то ми розділимо це на 2 випадках. Можливо, ви вже бачите помилку. У першому випадку - якщо дорівнює нулю, то ми робимо нулю, ділене на нуль, і ми просто сказати, що це не визначені. Другий випадок - якщо не дорівнює нулю, Потім це щось начебто 1, поділений на нуль, і ми просто називаємо це нескінченність. Решту ми повертаємося звичайної ділиться на б. І ось, ми проводимо ці 3 випадки, і ми реально працювати розриву - це кричить на нього для мене - таким чином, ігноруючи попередження Clang в - Наприкінці непорожнє функції - мабуть, я не компілювати це заздалегідь. Повернутися 0. Зробити ділити - все в порядку. С. / Розриву, ми бачимо, 3, Infinity, Infinity. Нуль, поділений на нуль не повинні були повернутися нескінченності. І якщо ви ще не зрозуміли, помилка ще - чи не бачили його раніше - ми бачимо, що ми робимо = 0. Ймовірно, ми маємо на увазі == 0. Можливо. Але це було насправді те, що, знову ж таки, в 2003 році, Linux ядро ​​- так що наш прилад використовується Linux ядро ​​- будь-яка операційна система Linux використовує ядро ​​Linux - так що помилка дуже схожа на цю з'явився. Ідея ця помилка була - знову ж таки, був лише деякі функції, яка була названа, і він зробив кілька помилок. Були деякі конкретні матеріали, що ця перевірка помилок - це повинно було бути, як, все в порядку, ви не можете викликати цю функцію з дільником 0. Отже, я збираюся просто повернути деякі помилки. За винятком, це було не так безневинні, як тільки установка дорівнює 0. Замість цього, цей рядок коду в кінцевому підсумку робить щось більше, як користувач = адміністратором. Або користувач = суперкористувача. Це була безневинна - на перший погляд - помилка, де він міг би просто були розумними що я тільки хотів повідомити щось конкретне якщо користувач виявився суперкористувача адміністратора. Але потім знову думав про це, чоловік хотів, щоб це виглядало як проста опечатка, Але якщо цей код був фактично звільнений, то ви були б в змозі зламати будь-яку систему шляхом передачі конкретних прапор - У цьому випадку B = 0 - і вона буде автоматично зробити користувачеві адміністратором, і тоді він має повний контроль. Це відбулося в 2003 році. Так вже сталося, що єдина причина, він був спійманий тому, що там трапилося, деякі автоматизовані системи , Що помітили зміни в цьому файлі які ніколи не повинні були змінені людиною. Файл повинен був згенерований автоматично. Так вже сталося, що хтось торкнув - Ну, людина, яка хотіла зламати зворушений, що файл, і комп'ютер зловив, що дотик. Таким чином, вони змінили і лише потім зрозумів, що лихо це було б якщо це отримав в реальний світ. Ви можете думати, що - повертаючись до нашого прикладу компілятор - навіть якщо ми не бачимо - дивлячись на вихідний код - що нічого особливого не так, якщо ми насправді дивимося на двійковий код компілятора, ми побачимо, що щось не так. Наприклад, якщо ми запустимо рядків функціонувати - які тільки збираються, щоб подивитися на файл і роздрукувати всі рядки, він може знайти - якщо ми запустимо рядки на наш компілятор, ми бачимо, що один рядок, що він знаходить це дивним - інше, якщо (STRCMP (ім'я користувача, "хакер") - бла, бла, бла, бла. Якщо хтось опинився параноїдальним достатньо, щоб не довіряти своїм компілятором, вони можуть працювати рядків і переконатися в цьому, і тоді вони будуть знати, що щось було не так з фактичної двійковий. Але, струни було неминуче те, що був складений. Отже, хто скаже, що наш компілятор не просто більше спеціальним кодом , Що говорить, якщо рядків небудь працювати на нашому компілятор, не виводити все, що шкідливий код. Та ж ідея з тим, якщо ми хочемо рас-зібрати файл - ми дізналися, що асемблер приносить нам із зібрання код машинний код - ми можемо піти в протилежному напрямку - objdump-D компілятора - дасть нам збірку нашого коду. Дивлячись на це, це досить загадково, але якщо б ми хотіли, ми могли дивитися через це і розум, почекайте, щось тут відбувається, що не слід відбувається, і тоді ми визнаємо, що компілятор робить щось шкідливе. Але, як струни, хто скаже, objdump не було спеціального регістрі. В основному, це зводиться до того, ви не можете довіряти будь-чого. Суть документа, який називається "Довіра Довіра" є Загалом, ми довіряємо нашим компілятором. Ви компіляції коду та очікувати його зробити те, що ви попросите його зробити. Але, чому ви повинні довіряти компілятор? Ви не написали компілятор. Ви не знаєте, що компілятор обов'язково насправді робить. Хто сказав, що ви можете довіряти йому? Але навіть тоді, ну, може бути, ми можемо довіряти компілятору. Є десятки тисяч людей, які дивилися на це. Хтось, має бути визнано, що щось сталося з компілятором. Що, якщо ми просто йдемо на 1 рівень глибше? Це може бути навіть ваш процесор. Як смішно, як це могло б бути, може бути, є деякі ізгоїв співробітник Intel, який створює ці процесори що всякий раз, коли процесор помічає, що ви працюєте в деяких команд яка призначена для входу в комп'ютер, Процесор буде приймати деякі конкретні ім'я користувача та пароль. Було б дико складно, але хто міг це зробити. У цей момент, ви дійсно збираєтеся відкрити свій комп'ютер, щоб подивитися на процесор і використовувати мікроскоп, щоб визнати, що ці схеми не вишикувалися, як вони повинні бути? Ніхто ніколи не збирався зловити цю помилку. У якийсь момент, ви просто повинні здаватися і довіряти щось. Більшість людей не довіряють компілятор в цій точці. Тобто не обов'язково, що ви повинні. Дивлячись на кілька сумно відомого відео - [Драматична музика, яка грає] [Це UNIX системи. Я знаю, що це.] [Це всі файли -] Вона сказала: "Це UNIX системи. Я знаю це". Замінити UNIX з тим, що ваша улюблена операційна система - вона могла б сказати: «Це система Windows. Я знаю це". Це абсолютно безглузде заяву, але всі ми знаємо, вона, трапляється, знає задніх дверей в системі UNIX. Вона знає, що деяке ім'я користувача / пароль поєднання, яке дозволить їй робити все, що вона хоче. Добре. Мораль сьогодні в основному ви не можете довіряти будь-чого. Навіть речі, які ви пишіть - вам не написати компілятор. Компілятор може бути погано. Навіть якщо ви і не написав компілятор, те, що працює компілятор може бути погано. (Сміється) Там не так багато можна зробити. Світ приречений. Назад до Давида! [Оплески] [Давид] Спасибо. Це було дійсно пригнічує. Але насправді, Роб є правильним. Ми дійсно не мають рішення, але ви збираєтеся отримати деякі рішення до більш загальної оборони. В очікуванні цього, що Нейт і я робив за лаштунками існує , Знаючи, що є дуже багато ноутбуків в цьому залі, Ми були нюхають всі бездротові трафік, що проходить через цю кімнату за останні 20 хвилин під час розмови Роба, тому ми збираємося взяти 2-хвилинну перерву тут. Nate збирається створити, а потім ми будемо говорити про всі речей Ми могли б знайти. (Сміх) Таким чином, я, можливо, перебільшив трохи тільки заради драми, але ми могли нюхати всі ваші бездротової трафік, тому що, дійсно, це так просто. Але є способи, які ви можете захиститися від цього, і так з цим, Я даю вам Nate Хардісон. >> [Nate] Sweet. (Оплески) [Nate] Дякую, друже. Я ціную крик. Все в порядку! Це гра тижня. Ви, хлопці, збудженим? Сподіваюся, що це буде велика гра в суботу. Я вважаю, ви, хлопці, в цій точці - враховуючи, що у вас є тест в середу Все про код, і ми просто сиділи через чудова лекція Rob з цілою купою C код в ньому - , Може бути, трохи втомився від коду. У цій частині, ми насправді не збирався стосуватися будь-якого коду взагалі. Ми просто будемо говорити про технології, які ви використовуєте щодня, Часто для багатьох, багатьох годин на день, і ми поговоримо про наслідки безпеки, що є. Ми багато говорили про безпеку протягом семестру, і ми почали з трохи шифрування. [Bdoh LV 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.11g, який є одним з іншою дуже популярною бездротові стандарти, які там. Обидва б і г у значній застаріли в цій точці. Хто-небудь знає, яка версія більшість людей прямо зараз якщо вони купують нові бездротові маршрутизатори та в такому ж роді? N. Саме так. Бінго. І виявляється, що змінного струму стандартних просто виходить у формі проекту, Є й інші версії по дорозі. З кожним з цих стандартів, що ми набирають більше пропускної здатності, більше даних більш швидкими темпами. Ці речі постійно змінюються досить швидко. Він також робить так, що ми змушені купувати більш маршрутизаторів і все, що прикольних речей. Давайте поговоримо про те, що бездротовий зв'язок насправді в його основі. З Ethernet і ті старі модеми, ви насправді було це речі, які ви підключений до комп'ютера, і тоді ви підключені до модему пологів, а потім підключити його в гніздо в стіні. Ви повинні були це провідне з'єднання, чи не так? Весь сенс бездротові позбутися цієї речі. Для того, щоб робити те, що ми маємо, по суті радіозв'язку, де наш бездротової маршрутизатор - призначеним наш маленький значок бездротового зв'язку - підключений до Інтернету з цієї твердої стрілка, що вказує якийсь провідне з'єднання, але при підключенні до бездротового маршрутизатора Ви фактично використовуючи майже як радіопередавач між вашим комп'ютером і бездротовим маршрутизатором. Що дійсно здорово, про це ви можете пересуватися. Ви можете носити ваш комп'ютер все більш Сандерс, піти працювати в Інтернеті, що ви хочете, так само, як ви всі знаєте і любите, і ви ніколи не повинні бути підключені ні до чого. Для того щоб це працювало, ми обоє цього прийому і передачі. Це дійсно так рацію. Цей бездротовий маршрутизатор - який у Сандерса сидить під цією сцені, прямо тут - завжди мовлення та прийому, телерадіомовлення і засобів одержання, і також, комп'ютери все роблять, що щось подібне, теж. Ми просто не можемо чути. Інша річ, яку ви можете зробити, ви можете мати кілька комп'ютерів говорити з тієї ж бездротової маршрутизатор. Чим ближче ви знаходитесь до маршрутизатора - і знову ж таки, це радіозв'язок - Чим ближче ви знаходитеся, тим краще сигнал, тим краще ваш комп'ютер "чує" маршрутизатор і може взаємодіяти з Інтернетом. Якщо ви, хлопці, все у вашому гуртожитку, у вашому будинку, і ви ставите питанням, чому ваш сигнал поганий, це, ймовірно, тому, що а). Ви не дуже близько до маршрутизатора, або б). щось між вами і вашим маршрутизатором як стіна цемент або щось , Який не допустити, щоб ці радіохвилі проходять. Давайте трохи поговоримо про те, чому погані хлопці, як Wi-Fi. Погані хлопці люблять Wi-Fi з кількох причин. Ось наш неприємний поганого хлопця прямо там. Одна з причин, чому це поганий хлопець любить Wi-Fi Тому що, за замовчуванням, багато бездротові маршрутизатори прийти і, коли ви встановите їх, вони в незашифрованому вигляді. Це була проблема, і були випадки, - кілька екземплярів, то зараз - де поганий хлопець відображає до чиємусь будинку, зауважує, що є незашифрованому Wi-Fi, до яких вони можуть підключатися. Вони підключаються до Wi-Fi, а потім вони починають завантаження всяких прикольних речей. І вони не викачувавши кошенята, вони не викачувавши цуценят. Це як BitTorrent. Це неприємний з найогидніших. Там були випадки, коли ФБР навіть отримав бере участь думаю, що людина, яка володіє будинком насправді одній відбувається там і завантаження речі, які вони насправді бути не повинно. Після незашифрованому Wi-Fi, безумовно, не те, що ви хочете зробити, якщо тільки не мати в ФБР прийшов постукати у ваші двері. Інша причина, чому погані хлопці люблять Wi-Fi є причиною того, що Девід говорив раніше під час перерви. Тому що це радіозв'язок за своєю суттю, якщо ви знаєте канал, ви можете слухати цю радіостанцію. Наприклад, якщо там погано прямо там, сидячи в середині поряд з точкою доступу, Поруч з цією бездротової маршрутизатор, поганий хлопець може слухати на всіх бездротового трафіку що виходить від всіх цих комп'ютерів. Насправді, ці хлопці - ці деякі щасливчики, які знаходяться тут в першому ряду - тому що вони супер-близько до всі ці бездротові маршрутизатори , Які сидять прямо під сценою, вони зможуть почути всі рухи в цьому вся кімната якщо ви підключені до Wi-Fi і почати перегляд через ці точки доступу. Це не дуже важко сидіти себе в хорошій позиції, щоб понюхати і з'ясувати, те, що роблять інші люди. Це щось мати на увазі, особливо якщо ви не впевнені, де точка доступу, і ви переглядаєте скажімо, в Starbucks. Виявляється, що нюхає, і все, що Не так вже й важко зробити. Там є програма під назвою ТСРйітр яка виводить всі види трафіку TCP і ви можете запустити його досить просто - так само, як я зробив це сьогодні вранці. Ось трохи звалище, і ось деякі з трафіку, який йшов протягом моя мережу в той час. Ви можете побачити - якщо ви косоокості дуже важко - є трохи Spotify там. На вершині ТСРйітр - бо це вид болю у використанні - є програма під назвою Wireshark яких пучки все це в приємний графічний інтерфейс. Wireshark є супер-зручна, так що якщо ви йдете прийняти мереж класів, це інструмент, який ви полюбили, так як це допомагає вам аналізувати всі пакети , Які плавають навколо там. Але вона також може бути використана для поганого. Це дуже просто, просто завантажити цю програму, завантажити його, створити мережу захоплення, і бачити все, що відбувається - і фільтрувати і робити всякі весело речі з ним. Інша річ, яку ви можете зробити з бездротовим зв'язком Не тільки ви можете підслуховувати, але ви можете також дізнатися, як гвинт з мережею і ввести свою інформацію, щоб управляти досвідом, що інші люди на тій же бездротової мережі отримують. Давайте подивимося на це. Ось Firesheep - який ми знаємо і любимо з минулого тижня - яких є те, що підслуховування технології. Якщо, наприклад, ми хотіли б активно наші погані ходу хлопець, і возитися з одного з цих комп'ютерів, У цьому сценарії у нас є комп'ютер намагається йти серфінгу в harvard.edu. Що відбувається, комп'ютер спочатку посилає повідомлення до бездротового маршрутизатора і говорить: Ей, я хочу, щоб відвідати www.harvard.edu. Сказати з якоїсь причини вони намагаються отримати інформацію про гру в ці вихідні. Поганий хлопець, так він сидить прямо в середині, Поруч з цією точкою доступу, можна побачити, що зв'язок найближчі від комп'ютера в маршрутизатор, і він знає: "Ага! Хтось збирається 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. Тут можна побачити, коли ви намагаєтеся приєднатися до бездротової мережі, у вас є всі види різних параметрів безпеки. Це почасти біль, тому що є 6 всі разом і він ніколи дійсно має сенс яких 1 приєднатися. Це 1 на самому верху перше, що вони придумали називається WEP. WEP розшифровується як Wired Equivalent Privacy, я вважаю, Чи не бездротової протокол шифрування, який є загальним неправильним. Тому що він намагається дати вам еквівалентної конфіденційність і безпеку захист еквівалентним провідної мережі З WEP, що закінчується це відбувається, у вас є простий, маленький пароль, який ви вводите, і що служить для шифрування всі ваші зв'язки між вашим комп'ютером і маршрутизатором. У чому проблема з WEP, хоча? Пароль з WEP дійсно короткий, а також все, що використовує точно такий же пароль,  і тому це дуже легко розшифрувати. Так що дуже швидко люди зрозуміли, що WEP була проблема, і єдина причина, ви бачите його з'являтися ще на цей малюк - Є кілька старих систем, які дійсно використовують WEP - те, що ви замість цього слід шукати є WPA і WPA2 навіть стандарти , Які були випущені пізніше. Ці системи є набагато краще піти на захист бездротовий доступ в Інтернет. Тим не менш, вони все ще мають деякі hackability. Є інструменти, які можуть піти і зробити це. Одна річ, зокрема, що може бути огидно, що При підключенні і аутентифікації в безпроводових маршрутизаторів і використання свого роду шифрованого зв'язку, з'ясовується, що хакер може легко відправити один пакет відключити вас від маршрутизатора, і як тільки вони відключені вам, що вони можуть слухати - вони можуть понюхати ці пакети, як ви намагаєтеся відновити зв'язок з вашим маршрутизатором. І з цією інформацією вони можуть піти і розшифрувати решті частини вашого спілкування. Це ні в якому разі ніякої безпеки поза всяким уяви. Інша річ, яку ви можете зробити, коли ви налаштовуєте бездротових мереж або ви приєднатися до них - ви помітите, що тут, коли я приєднанні до цієї мережі, він запитує ім'я моєї мережі. Це також відомо як SSID. І ви бачите тут, що в правій у мене є вікно, яке показує мені доступні SSID. Там в Гарвардському університеті, CS50, CS50 і персоналу мережі. Тепер, як багато хто з вас знав, що CS50 персоналу мережі навколо? Деякі з вас. Не всі з вас. Проблема з цим, звичайно, в тому, що якби ми не поставити це на наш список ідентифікаторів SSID, ніхто б і не знав про це, швидше за все. Я сподіваюся. Якщо ви, хлопці, все намагаються зламати в нашій бездротової мережі. Але це те, що ви можете зробити, це дуже важливо, коли ви налаштовуєте маршрутизатора в домашніх умовах. Це, ймовірно, не відбудеться протягом декількох років для багатьох з вас, але майте на увазі, що збереження SSID, що звідти і також не називаючи його щось супер-загальний допоможе тримати вас в більш безпечне у довгостроковій перспективі. Остаточний пару речей, які ви можете зробити. Одним з них є HTTPS. Якщо ви знаходитесь в Starbucks, якщо Ви знаходитеся у громадських Wi-Fi області і ви вирішили зайти на свій банківський рахунок, доступ до Gmail, ваш Facebook, Переконайтеся, що ці сполуки переходять на HTTPS. Це додатковий рівень безпеки, додатковий рівень шифрування. Одна справа мати на увазі, тут, Як багато хто з вас коли-небудь натиснув на основі, що великий, червоний екран, який говорить: "Цей сайт може бути поганим". Я знаю, що є. Це, напевно, коли ви переглядаєте все, щоб піти подивитися Батьківщина або щось подібне до цього, чи не так? Так. (Сміх) Так. Там ви йдете. Ми знаємо, хто стежить за Батьківщину. Це великий, червоний екран тут Часто вказується, що щось фанки відбувається. Іноді це просто сам сайт не є безпечним, але це ж великий, червоний екран з'являється, коли люди намагаються Кріплення мережеві атаки на вас. Так що якщо ви бачите, що великий, червоний екран придумали в Starbucks, Не натискайте через нього. Погані новини. Погані новини несе. Остаточний річ, яку ви можете подивитися на є свого роду VPN. Це VPN доступні через Гарвард - vpn.fas.harvard.edu-- і що вона робить це насправді встановлює захищене з'єднання між вами і Гарварда, воронки трафіку через нього, і, таким чином, якщо ви сидите на місці, як Starbucks Ви можете підключитися до Гарварду, отримуємо, що безпека руху, а потім перейдіть в Гарварді. Знову ж, не зрозумілий. Люди можуть отримати в центрі. Вони можуть почати розірвати його, але це набагато більш безпечним, ніж покладатися на безпеку про Wi-Fi в поодинці. Добре. В цілому, При налаштуванні бездротових мереж, коли ви виходите на використання бездротового у громадських місцях - будь то Starbucks, будь то Five Guys, будь то b.good, щось в цьому роді - скрізь, де у них є Wi-Fi - бути в курсі вашого оточення. Будьте в курсі того, що люди можуть зробити. І бути безпечним. Не отримати доступ до банківського рахунку. Це може бути гірке розчарування, якщо хтось з'являється з паролем пізніше. При тому, що йдуть малинові! І я збираюся перетворити речі назад до Давида останнє слово. (Оплески) [Давид] Я думав, я б поділитися одне з особистого досвіду. Інструмент ви хотіли б грати з - хоча Apple, в значній мірі викорінити це питання якщо ви оновили програмне забезпечення з тих пір - , А до кінця цього насправді не бути в змозі довіряти програмне забезпечення, яке ми використовуємо, і точками Нейта, будучи в стані нюхати зовсім небагато з того, що роблять інші люди там - це частина програмного забезпечення, яка вийшла приблизно рік-і-півтора тому. [IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] Протягом деякого часу, ITunes - до iCloud, коли ви були синхронізацію плеєрах або Iphones або або Ipads з Itunes - в інтересах резервних копій, що ваш iPhone та інших пристроїв ці робили протягом деякого часу з використанням даних GPS. Ви всі знаєте, може бути, що ваш iPhone'ов і Андроїди і Windows Mobile телефонів і як у ці дні можна відстежувати, де ви знаходитеся в інтересах показує вам карти і подібні - добре, що Apple, і ці інші компанії роблять це вони зазвичай відстежують практично скрізь ви насправді було в інтересах поліпшення якості обслуговування. Один з них, ви можете отримати більше цільової реклами і т.п., а два, вони також можуть з'ясувати, де є бездротові точки доступу в світі, і це може допомогти в географічному положенні - на зразок тріангуляції положення людей. Коротше кажучи, всі ми йшли антени для деякої кількості часу. На жаль, Apple зробила дизайнерське рішення - або їх відсутність - не зашифровані цю інформацію, коли вона була бути резервні копії в Itunes. І те, що дослідник безпеки виявив, що це був просто величезний XML-файл - величезний текстовий файл - сидячи в програмному забезпеченні людей Itunes, і якби ви були просто трохи цікаво, Ви могли б піти колупатися історію вашого чоловіка, історія вашого сусіда по кімнаті, вашого брата історії і т.п., і завдяки вільне програмне забезпечення, ви можете побудувати всі ці GPS координати - широті і довготі. Отже, я насправді зробив це з моїм власним телефоном. Я підключений в моєму телефоні, і звичайно, моя версія Itunes не був зашифрований в той час, і те, що я був в змозі бачити, були мої власні шаблони. Ось Сполучених Штатів і кожен з цих синіх кіл являє де мені довелося були за ці попередні місяці володіння даного телефону.  Я проводжу багато часу, звичайно, в Північно-Сходу, деякий час в Каліфорнії, недовгою поїздки до Техасу, і якщо потім збільшити на цьому - це все ніби добре і цікаво, але я знав це. Більшість моїх друзів знали про це, але якщо у вас зануритися в більш глибокий, Ви бачите, де я проводжу більшу частину свого часу на північному сході. Якщо у вас зачепити деякі знайомі вид міста - це великий, синій пляма фарби по суті по центру Бостона, а потім я проводжу небагато часу в передмісті випромінююча з Бостона. Але я також роблю досить багато консультацій в цьому році. І в цьому році на східному узбережжі, і ви можете бачити мене і мій iPhone в кишені подорожі туди і назад між Бостоном і Нью-Йорку і Філадельфії далі вниз, а також проводити трохи відпустку на мисі, який є маленькою рукою там. Таким чином, кожна з цих точок являє собою деяке місце, де я був, і абсолютно непомітно для мене, вся ця історія була просто сидів там на моєму робочому столі комп'ютера. Якщо Ви масштабу - це насправді було трохи турбує. Я не пам'ятав, щоб коли-небудь бути в Пенсільванії, що конкретний рік. Але я хоч трохи складніше про це, і я зрозумів, ох, це було в тому, що поїздка і, звичайно ж, мій телефон зловив мене. Apple, з тих пір зашифрована ця інформація, але це занадто просто свідчення того, наскільки багато інформації, яка збирається про нас, і як легко - на краще чи на гірше - це прийнятно. Один з винос сподіваюся, від розмов Роба, від розмов Нейта і мало візуальних, як це сьогодні просто щоб бути все більш усвідомлюють цього так що навіть якщо - як точка Роба - we're роду різьбові, чи не так? Там не багато ми можемо зробити, коли справа доходить до деяких з цих загроз, але в кінці дня ми повинні довіряти щось або когось якщо ми дійсно хочемо використати ці технології. Принаймні, ми можемо приймати обгрунтовані рішення і розрахункові рішення або не Ми фактично повинні перевірити це особливо відчутно рахунки або ми повинні насправді бути відправка підозрюю, що трохи миттєве повідомлення  У Wi-Fi навколишнього середовища, як це. Таким чином, з урахуванням сказаного, просто не залишиться один тест, одна лекція залишається. Ми будемо бачити Вас в середу, то в понеділок. (Оплески і вигуки) [CS50TV]