1 00:00:00,000 --> 00:00:02,750 [Powered by Google Translate] [Тиждень 10] 2 00:00:02,750 --> 00:00:04,750 [David J. Малан] [Harvard University] 3 00:00:04,750 --> 00:00:07,000 [Це CS50.] [CS50.TV] 4 00:00:08,520 --> 00:00:13,240 >> Все в порядку! Це CS50, але не набагато довше. 5 00:00:13,240 --> 00:00:14,740 Це початок тижня 10. 6 00:00:14,740 --> 00:00:18,780 У середу ми нашу вікторину, а потім в наступний понеділок у нас є святковий торт 7 00:00:18,780 --> 00:00:22,030 як ми пройшли повне коло весь шлях назад від тижня нулю. 8 00:00:22,030 --> 00:00:25,200 Сьогодні ми поговоримо про один з моїх улюблених тем, по правді кажучи - 9 00:00:25,200 --> 00:00:29,000 , Що безпека і недоторканність приватного життя і наслідки всіх апаратних засобів і програмного забезпечення 10 00:00:29,000 --> 00:00:31,000 що всі ми використовуємо ці дні. 11 00:00:31,000 --> 00:00:33,300 Щоб бути чесним, існує багато загроз там 12 00:00:33,300 --> 00:00:35,430 що, якщо ви дійсно не зупинився, щоб думати про них, 13 00:00:35,430 --> 00:00:36,920 вони насправді досить складно. 14 00:00:36,920 --> 00:00:40,070 Справа в точку - якщо кожен з вас коли-небудь завантажено частина програмного забезпечення 15 00:00:40,070 --> 00:00:42,660 вимикання Інтернету і встановити його на свій комп'ютер, 16 00:00:42,660 --> 00:00:45,220 Ви займалися в значній мірі довіри, вірно? 17 00:00:45,220 --> 00:00:50,220 Існує нічого запобігши Skype або Chrome, або будь-якої частини програмного забезпечення 18 00:00:50,220 --> 00:00:54,770 Ви встановили на свій комп'ютер, від просто видалити всі файли на жорсткому диску; 19 00:00:54,770 --> 00:00:58,260 від завантаження всіх файлів на жорсткому диску, на сервері деякі поганий хлопець; 20 00:00:58,260 --> 00:01:01,650 читати всі ваші листи, від перехоплення всі ваші миттєві повідомлення. 21 00:01:01,650 --> 00:01:05,040 Тому що реальність сьогодні з більшістю сучасних операційних систем 22 00:01:05,040 --> 00:01:10,040 там дійсно не так багато стіну між програм, які ми встановлюємо, 23 00:01:10,040 --> 00:01:14,220 і ви, і я в значній мірі тільки вид через наші пальці і приймаючи на віру 24 00:01:14,220 --> 00:01:17,750 , Що додаток ми завантажили безкоштовно, або, що те, що на 99 центів, 25 00:01:17,750 --> 00:01:20,140 насправді абсолютно сприятливим. 26 00:01:20,140 --> 00:01:23,090 Але, як ми бачили через C, і тепер PHP і JavaScript, 27 00:01:23,090 --> 00:01:25,420 з цією можливістю, щоб виразити себе програмно, 28 00:01:25,420 --> 00:01:30,300 Ви можете зробити практично все, що ви хочете з програмою, користувач сам або сама могла зробити. 29 00:01:30,300 --> 00:01:32,390 >> Отже, сьогодні ми орієнтуємося на цю тему - 30 00:01:32,390 --> 00:01:35,360 Не тільки деякі загрози, але й оборону. 31 00:01:35,360 --> 00:01:37,540 Дійсно, у світі безпеки в цілому, 32 00:01:37,540 --> 00:01:39,040 там ніби цієї кішки-мишки, 33 00:01:39,040 --> 00:01:41,990 і я наважуюсь сказати, що погані хлопці майже завжди є ногу. 34 00:01:41,990 --> 00:01:45,880 Коли справа доходить до прийняття переваги апаратного та програмного забезпечення на наші власні персональні комп'ютери, 35 00:01:45,880 --> 00:01:51,250 Ми повинні розуміти, що поганий хлопець, просто потрібно знайти одну просту помилку - 36 00:01:51,250 --> 00:01:56,150 один експлуатувати, одна помилка - в частині програмного забезпечення ми написали або працює 37 00:01:56,150 --> 00:01:58,280 для того, щоб йому або їй взяти на себе всю нашу систему. 38 00:01:58,280 --> 00:02:02,870 З іншого боку, ми - хороші хлопці - потрібно залатати і виправити всі ці помилки 39 00:02:02,870 --> 00:02:04,900 і уникнути всіх цих недоліків. 40 00:02:04,900 --> 00:02:07,870 І так, я наважуся сказати, в цілому, погані хлопці мають перевагу. 41 00:02:07,870 --> 00:02:10,840 Які класи, як це і наступні класи дійсно про 42 00:02:10,840 --> 00:02:14,830 не про викладанні вам, як вести битви, що ці погані хлопці роблять, 43 00:02:14,830 --> 00:02:18,220 але про те, як захистити себе або, принаймні, як зробити розрахована рішення 44 00:02:18,220 --> 00:02:22,970 що так, я знаю, що це частина програмного забезпечення, дійсно може прочитати всі мої повідомлення електронної пошти, 45 00:02:22,970 --> 00:02:27,040 але я в порядку з цим, тому що значення це приносить мені з іншого боку. 46 00:02:27,040 --> 00:02:31,060 >> Я дуже радий бути з'єднані 2 з найрозумніших людей, яких я знаю - 47 00:02:31,060 --> 00:02:33,060 Роб Боуден і Nate Хардісон. 48 00:02:33,060 --> 00:02:36,850 Роб збирається взяти нас на екскурсію по самим низьким рівнем безпеки теги - 49 00:02:36,850 --> 00:02:42,470 що і компілятор, який, до цих пір, ми всі прийшли до любові і довіри. Роб Боуден. 50 00:02:42,470 --> 00:02:47,790 [Оплески] 51 00:02:47,790 --> 00:02:50,280 >> [Роб] Все в порядку. Девід дуже багато прийняті всі моє поневіряння 52 00:02:50,280 --> 00:02:52,320 що я збираюся познайомити з, але - 53 00:02:52,320 --> 00:02:58,070 Кілька тижнів тому ви бачили приклад переповнювання буфера атаки 54 00:02:58,070 --> 00:03:01,900 яка є прикладом того, хакер зламав деякі частини програмного забезпечення 55 00:03:01,900 --> 00:03:06,060 що вони не повинні бути злому. 56 00:03:06,060 --> 00:03:09,690 Інший бік цієї 57 00:03:09,690 --> 00:03:14,470 Іноді у вас є програмне забезпечення, яке шкідливих сама по собі. 58 00:03:14,470 --> 00:03:17,070 Він навіть не повинні бути зламаний. 59 00:03:17,070 --> 00:03:20,670 Людина, яка написала програмне забезпечення хоче зламати вас. 60 00:03:20,670 --> 00:03:22,190 >> Давайте просто стрибати прямо в коді, 61 00:03:22,190 --> 00:03:28,560 поглянути на "login.c". 62 00:03:28,560 --> 00:03:33,390 Тут, дурна програма, яка перевіряє ім'я користувача та пароль. 63 00:03:33,390 --> 00:03:39,420 Тут ви безперечно повинні бути освоїтися з C знову для вікторини. 64 00:03:39,420 --> 00:03:43,470 По-перше, ми використовуємо отримати рядків, щоб описати ім'я користувача, 65 00:03:43,470 --> 00:03:46,280 Потім ми використовуємо отримати рядок, щоб захопити пароль, 66 00:03:46,280 --> 00:03:50,680 а то у нас деякі тривіальні перевірки за все, це ім'я користувача "грабувати"? 67 00:03:50,680 --> 00:03:52,710 І це пароль "thisiscs50"? 68 00:03:52,710 --> 00:03:56,900 Або, це ім'я користувача "Томі" і пароль "я <3javascript"? 69 00:03:56,900 --> 00:03:58,980 Якщо один з них є випадок, 70 00:03:58,980 --> 00:04:01,980  Потім ми просто будемо друкувати "Успіх", і тоді ми маємо доступ. 71 00:04:01,980 --> 00:04:07,690 В іншому випадку, ми будемо друкувати "невірний логін", а потім, звичайно, 72 00:04:07,690 --> 00:04:11,120  З пам'яттю ескіз рядків Танос, ми безкоштовно ім'я користувача та пароль. 73 00:04:11,120 --> 00:04:15,560 Це тривіальна програма входу в систему, 74 00:04:15,560 --> 00:04:18,110 і якщо ви думаєте про те, коли ви входите в прилад, 75 00:04:18,110 --> 00:04:22,350 це досить схожі - або навіть увійти в свій комп'ютер - 76 00:04:22,350 --> 00:04:24,930 є тільки деякі логін програма, яка дає вам доступ. 77 00:04:24,930 --> 00:04:31,840 Тут ми, трапляється, є жорстко пограбувати ',' thisiscs50 ',' Томмі ',' я <3javascript, 78 00:04:31,840 --> 00:04:34,950 але, ймовірно, є деякі файл десь на вашій операційній системі 79 00:04:34,950 --> 00:04:38,690 який має список імен користувачів, які можуть увійти в систему 80 00:04:38,690 --> 00:04:41,740 і список паролів, пов'язаних з цими іменами користувачів. 81 00:04:41,740 --> 00:04:46,090 Зазвичай паролі не просто зберігаються в незашифрованому вигляді, як це. 82 00:04:46,090 --> 00:04:50,360 Існує свого роду шифрування, але це буде зробити для нашого прикладу. 83 00:04:50,360 --> 00:04:57,000 >> Скоро в наш компілятор - 84 00:04:57,020 --> 00:05:00,780 це буде дуже просто. 85 00:05:00,780 --> 00:05:04,800 Ми повинні вказати принаймні деякі файли, які ми хочемо зібрати, 86 00:05:04,800 --> 00:05:10,200 , А потім тут - ці рядки 87 00:05:10,200 --> 00:05:12,520 тільки читання файлу. 88 00:05:12,520 --> 00:05:16,080 Він читає весь файл в один великий буфер, 89 00:05:16,080 --> 00:05:19,000 і тоді ми нульовим символом нашого буфера, як завжди, 90 00:05:19,000 --> 00:05:21,000 і, нарешті, ми просто компіляції файлу. 91 00:05:21,000 --> 00:05:24,090 Ми не збираємося подивитися, як компіляція дійсно реалізований, 92 00:05:24,090 --> 00:05:26,820 а як натяк, він просто викликає Clang. 93 00:05:26,820 --> 00:05:32,370 Ми збираємося використовувати цю програму для компіляції речі, а не Clang. 94 00:05:32,370 --> 00:05:39,260 Одна з проблем, ми починаємо з те, що ми бачимо, ми хочемо, щоб скласти наш компілятор, 95 00:05:39,260 --> 00:05:43,620 Але якщо ми не збираємося використовувати Clang, я не знаю, що я збираюся зібрати с. 96 00:05:43,620 --> 00:05:46,700 Це загальна проблема відома як початкова завантаження. 97 00:05:46,700 --> 00:05:53,080 Так, тільки на цей раз, я збираюся використовувати Clang для компіляції нашого компілятора. 98 00:05:53,080 --> 00:05:58,800 >> Якщо ви вважаєте, GCC і Clang - 99 00:05:58,800 --> 00:06:03,200 цих програм, цих компіляторів постійно оновлюються, 100 00:06:03,200 --> 00:06:10,010 і тих, компіляторів складений з використанням GCC і Clang. 101 00:06:10,010 --> 00:06:14,890 Clang є лише однією великою C або C + + програм, 102 00:06:14,890 --> 00:06:19,510 так що компілятор вони використовують для компіляції, яка Clang. 103 00:06:19,510 --> 00:06:26,820 Тут, зараз, ми просто будемо використовувати наш компілятор для компіляції нашого компілятора, 104 00:06:26,820 --> 00:06:33,830 і ми можемо навіть сказати - '/ компілятора. »,« compiler.c', 'COMPILE.c', '-о компілятора. 105 00:06:33,830 --> 00:06:37,250 Зауважте, що це точна команди я побіг раніше - 106 00:06:37,250 --> 00:06:41,330 просто замінити Clang с. / компілятора. 107 00:06:41,330 --> 00:06:44,990 І тепер у нас є інший компілятор, але це точно так само. 108 00:06:44,990 --> 00:06:47,510 Це просто викликає Clang. 109 00:06:47,510 --> 00:06:55,050 >> Ми збираємося використовувати наш компілятор для компіляції наших входу в програму. 110 00:06:55,050 --> 00:07:03,030 Добре - ". / Компілятор login.c-O логін". 111 00:07:03,030 --> 00:07:06,160 Таким чином, невизначена посилання на "GetString". 112 00:07:06,160 --> 00:07:11,250 Є "-lcs50". Добре. 113 00:07:11,250 --> 00:07:13,790 Так що тепер у мене є наш вхід в програму. 114 00:07:13,790 --> 00:07:16,790 Запуск цього - отримати "Будь ласка, введіть ваше ім'я користувача". 115 00:07:16,790 --> 00:07:22,140 Одним із прикладів є Роб. Будь ласка, введіть свій пароль - thisiscs50. 116 00:07:22,140 --> 00:07:24,930 І успіх! У мене є доступ. 117 00:07:24,930 --> 00:07:28,350 Запуск його знову і введення деяких невірний пароль - 118 00:07:28,350 --> 00:07:30,350 або невірне ім'я користувача і пароль - 119 00:07:30,350 --> 00:07:32,860 невірний логін. 120 00:07:32,860 --> 00:07:37,740 Добре. Нічого цікавого про це досі. 121 00:07:37,740 --> 00:07:43,100 Але, давайте подивимося на вхід знову - 122 00:07:43,100 --> 00:07:47,850 і це буде кілька тривіальний приклад, 123 00:07:47,850 --> 00:07:59,330 але давайте додамо ще тут і кажу, інакше, якщо ((STRCMP (ім'я користувача, "хакер") == 0 && 124 00:07:59,330 --> 00:08:14,510 STRCMP (пароль "LOLihackyou") == 0)) 125 00:08:14,510 --> 00:08:26,280 Так що тепер, Е ("зламали Тепер у вас є доступ до \ п!».); Добре. 126 00:08:26,280 --> 00:08:36,240 Компіляція цього - компілятор login.c-о-вхід lcs50 - 127 00:08:36,240 --> 00:08:40,190 Зараз працює логін - і якщо я використовую моє ім'я користувача хакер 128 00:08:40,190 --> 00:08:44,740 і пароль LOLihackedyou - 129 00:08:44,740 --> 00:08:47,780 А я друкую це неправильно там раніше? 130 00:08:47,780 --> 00:08:52,990 У login.c--ihack - Я зроблю зламаний, тому що я думаю, що зробити це пізніше. 131 00:08:52,990 --> 00:08:56,270 Добре. Перекомпіляція. 132 00:08:56,270 --> 00:09:01,500 Повторний запуск - Хакер - LOLihackedyou - 133 00:09:01,500 --> 00:09:03,650 Зламаний! Тепер у вас є доступ в Інтернет. 134 00:09:03,650 --> 00:09:06,580 >> Там не здається, що особливої ​​різниці 135 00:09:06,580 --> 00:09:10,890 тому що це точно такий же чек я робив для інших користувачів і паролі. 136 00:09:10,890 --> 00:09:17,720 Крім того, велика справа в тому, що якщо інші люди дивляться на цю login.c-- 137 00:09:17,720 --> 00:09:24,020 скажімо, якщо я передам це від мого партнера, і вони відкривають цей файл, 138 00:09:24,020 --> 00:09:29,870 і вони читають це, вони будуть бачити - добре, чому у вас ці рядки коду тут? 139 00:09:29,870 --> 00:09:33,320 Очевидно, що це не те, що повинно бути у вашій програмі. 140 00:09:33,320 --> 00:09:41,590 У деяких програмах - як і будь пропрієтарне програмне забезпечення, яке не відкритим вихідним кодом - 141 00:09:41,590 --> 00:09:46,200 Ви ніколи не побачите цих рядків коду. 142 00:09:46,200 --> 00:09:50,440 Щось на зразок Skype або щось - всі ви знаєте, 143 00:09:50,440 --> 00:09:57,600 Skype на вашому комп'ютері, і є тільки деякі конкретні ім'я користувача і пароль комбінації 144 00:09:57,600 --> 00:10:01,580 яка буде увійти в Skype якимось особливим чином. 145 00:10:01,580 --> 00:10:04,230 Ми не знаємо про це, і люди не знають про це, 146 00:10:04,230 --> 00:10:09,640 тому що вони не добираються, щоб читати вихідний код, щоб побачити, що там цей отвір. 147 00:10:09,640 --> 00:10:11,800 >> Те, що ми називаємо це - 148 00:10:11,800 --> 00:10:16,530 хоча це не дуже розумний приклад - 149 00:10:16,530 --> 00:10:18,970 це називається задніх дверей. 150 00:10:18,970 --> 00:10:22,320 Якщо ви думаєте, через задні двері вашого будинку. 151 00:10:22,320 --> 00:10:26,640 Ось, якщо б я перевірки з іменами користувачів пограбувати »або« автомат », 152 00:10:26,640 --> 00:10:28,580 , Який був би, як за допомогою "парадні двері". 153 00:10:28,580 --> 00:10:33,700 Ось таким чином я повинен надійно увійти в систему. 154 00:10:33,700 --> 00:10:37,630 Але якщо я входжу з цим ім'ям користувача і паролем - 155 00:10:37,630 --> 00:10:40,630 те, що за допомогою "задні двері". 156 00:10:40,630 --> 00:10:42,810 Це не було навмисним спосіб потрапити в програму, 157 00:10:42,810 --> 00:10:45,350 але він все ще працює. 158 00:10:45,350 --> 00:10:49,160 І люди взагалі не повинні знати про ці задніх дверей. 159 00:10:49,160 --> 00:10:53,050 Ми збираємося виправити це. 160 00:10:53,050 --> 00:10:55,610 Давайте повернути це до нашої початкової login.c, 161 00:10:55,610 --> 00:11:05,510 і давайте подивимося на наш новий компілятор. Добре. 162 00:11:05,510 --> 00:11:08,460 Все, що тут є такий самий. 163 00:11:08,460 --> 00:11:10,460 Ми читання всього файлу в буфер. 164 00:11:10,460 --> 00:11:14,400 Все, що тут те ж саме. 165 00:11:14,400 --> 00:11:16,180 Ми тільки що зібрали файл. 166 00:11:16,180 --> 00:11:19,770 Але тепер у мене є ця велика, якщо тут 167 00:11:19,770 --> 00:11:24,140 говорить, що, якщо файл, що я, виявляється, є компіляцією login.c, 168 00:11:24,140 --> 00:11:27,390 Потім я роблю щось особливе. 169 00:11:27,390 --> 00:11:29,900 Що це щось особливе? 170 00:11:29,900 --> 00:11:33,820 Я бачу тут кілька рядків називається «рубати», 171 00:11:33,820 --> 00:11:35,950 і, дивлячись на ці рядки коду - 172 00:11:35,950 --> 00:11:41,990 це ті ж рядки коду - Думаю, я зробив використання »ihack ', а не' ihacked« до - 173 00:11:41,990 --> 00:11:44,240 Дивлячись на ці рядки коду, 174 00:11:44,240 --> 00:11:47,880 вони точно такий же рядків коду, які я мав у login.c раніше. 175 00:11:47,880 --> 00:11:51,130 Але тепер, замість того, щоб їх в login.c, 176 00:11:51,130 --> 00:11:54,290 Я збираюся покласти їх у свій компілятор. 177 00:11:54,290 --> 00:12:00,240 >> Ці рядки коду я збираюся хочете вставити в login.c. 178 00:12:00,240 --> 00:12:06,350 Ці рядки коду - буфер, який спочатку знаходився мій login.c 179 00:12:06,350 --> 00:12:11,080 більше не збирається бути досить великим, тому що тепер я хочу також додати цей хак 180 00:12:11,080 --> 00:12:12,940 в середині моєї програми. 181 00:12:12,940 --> 00:12:16,350 Все це робить створює новий буфер, який є досить великим - 182 00:12:16,350 --> 00:12:22,020 як для вихідного файлу і додаткових рядків коду - рубати - що я хочу, щоб вставити туди. 183 00:12:22,020 --> 00:12:24,920 Ось що помітив - 184 00:12:24,920 --> 00:12:29,200 символ * шаблоном = "/ / позбавити їх доступу!" 185 00:12:29,200 --> 00:12:33,760 Якщо ми оглянемося на login.c, 186 00:12:33,760 --> 00:12:37,690 ми бачимо тут цей коментар - позбавити їх доступу! 187 00:12:37,690 --> 00:12:42,360 У login.c, цей коментар виглядає абсолютно нешкідливо, 188 00:12:42,360 --> 00:12:48,270 так що ви не підозрюєте злого умислу саме з цього коментаря. 189 00:12:48,270 --> 00:12:55,600 Але в нашому компіляторі, ми спеціально будемо дивитися на цей рядок коду, 190 00:12:55,600 --> 00:12:57,600 а потім, коли ми знаходимо його - 191 00:12:57,600 --> 00:13:03,330 ці рядки коду вставки наші зламати цю позицію. 192 00:13:03,330 --> 00:13:06,910 Таким чином, ми ітерації по всій login.c, 193 00:13:06,910 --> 00:13:12,080 Ми вставки, що рубати саме там, де він говорить позбавити їх доступу, 194 00:13:12,080 --> 00:13:15,890 і тоді ми збираєте - не оригінальна login.c 195 00:13:15,890 --> 00:13:20,340 але новий login.c з цим рубати вставляється прямо в «позбавити їх доступу. 196 00:13:20,340 --> 00:13:29,190 >> Тепер я хочу, щоб скомпілювати мій новий компілятор, що рубати участь. 197 00:13:29,190 --> 00:13:36,900 Я не збираюся використовувати Clang, так що давайте скопіювати компілятор ми використовували раніше 198 00:13:36,900 --> 00:13:48,420 і використовувати його - так, компілятор compiler.c COMPILE.c-про evil_compiler. 199 00:13:48,420 --> 00:13:50,870 Тепер наш злий компілятор - 200 00:13:50,870 --> 00:13:54,310 якщо ми використовуємо наше зло компілятор для компіляції будь-який інший файл, 201 00:13:54,310 --> 00:13:57,980 Файл буде становити, як слід. 202 00:13:57,980 --> 00:13:59,980 Це абсолютно нормально. 203 00:13:59,980 --> 00:14:06,870 Але якщо ми використовуємо наше зло компілятор для компіляції логін - 204 00:14:06,870 --> 00:14:14,920 Таким чином, / evil_compiler login.c-о-вхід lcs50. - 205 00:14:14,920 --> 00:14:21,310 дивлячись на login.c знову, немає абсолютно нічого тут. 206 00:14:21,310 --> 00:14:25,770 Це наша звичайна ', якщо це або пограбувати або Томмі ми знаходимося в, інакше ми з'. 207 00:14:25,770 --> 00:14:31,620 Але коли ми запускаємо наш виконуваний, це буде працювати, як звичайно. 208 00:14:31,620 --> 00:14:36,640 Запуск знову - хакер, LOLihackyou - 209 00:14:36,640 --> 00:14:39,000 Зламаний! Тепер у вас є доступ в Інтернет. 210 00:14:39,000 --> 00:14:43,560 Просто дивлячись на login.c, ви не думаєте, що щось не так. 211 00:14:43,560 --> 00:14:46,960 Але компілятор, який використовується для компіляції login.c 212 00:14:46,960 --> 00:14:53,820 спеціально розроблений, щоб вставити цей хак в програмі. 213 00:14:53,820 --> 00:14:57,320 Ми тільки переїхали наші вихідної задачі. 214 00:14:57,320 --> 00:15:02,880 Спочатку у нас були ці рядки коду в login.c, що якщо хтось дивився на них, 215 00:15:02,880 --> 00:15:05,470 вони були б, як, навіщо вони тут? 216 00:15:05,470 --> 00:15:09,550 Тепер, якщо хтось буває, щоб подивитися на наш компілятор, 217 00:15:09,550 --> 00:15:12,140 вони будуть виглядати в цих рядках коду і сказати, 218 00:15:12,140 --> 00:15:15,290 Чому вони тут? 219 00:15:15,290 --> 00:15:17,210 Таким чином, ми повністю не вирішена наша проблема. 220 00:15:17,210 --> 00:15:22,510 Але ми можемо використовувати цю ідею ще раз. 221 00:15:22,510 --> 00:15:26,260 >> Поглянувши на нашу третю версію компілятора, 222 00:15:26,260 --> 00:15:32,500 це та ж ідея. 223 00:15:32,500 --> 00:15:36,240 Ми читаємо весь файл в буфер тут, 224 00:15:36,240 --> 00:15:39,660 Ми компіляції файлу сюди, 225 00:15:39,660 --> 00:15:44,220 і у мене є якась рядок рубати тут, 226 00:15:44,220 --> 00:15:47,710 але зверніть увагу на файл, який насправді я зараз злому. 227 00:15:47,710 --> 00:15:52,260 Я злому compiler.c 228 00:15:52,260 --> 00:15:54,590 Чи не login.c. 229 00:15:54,590 --> 00:15:57,780 Але те, що я вставки в compiler.c? 230 00:15:57,780 --> 00:16:04,600 Я вставці цього коду, який є точною коду в наших попередніх компілятор, 231 00:16:04,600 --> 00:16:10,540 яка повинна була вставити код в login.c. 232 00:16:10,540 --> 00:16:13,360 Ось наш, якщо STRCMP файл login.c 233 00:16:13,360 --> 00:16:19,370 , А потім вставити в login.c речі зламати наш. 234 00:16:19,370 --> 00:16:26,010 Це новий компілятор призначений для створення компіляторів 235 00:16:26,010 --> 00:16:30,390 , Який призначений для компіляції входу зловмисно. 236 00:16:30,390 --> 00:16:34,320 Ми побачимо, чому це допомагає нам. 237 00:16:34,320 --> 00:16:40,630 Все інше те ж саме, так що він працює саме так, як він працював з нашим попереднім компілятора. 238 00:16:40,630 --> 00:16:45,550 Ми просто ітерації по всій нашій COMPILE.c. 239 00:16:45,550 --> 00:16:48,190 Але тепер, замість того, щоб шукати "позбавити їх доступу" 240 00:16:48,190 --> 00:16:51,490 Ми шукаємо 'компіляції файлу. 241 00:16:51,490 --> 00:16:53,750 Де компіляції файлу? 242 00:16:53,750 --> 00:16:57,210 Дивлячись на наші зовсім невинних compiler.c, 243 00:16:57,210 --> 00:17:01,340 це прямо тут, внизу. 244 00:17:01,340 --> 00:17:06,500 Цей коментар - компіляції файлу - знову ж таки, що виглядає абсолютно нешкідливо. 245 00:17:06,500 --> 00:17:11,599 Але, на наш шкідливих версію компілятора, 246 00:17:11,599 --> 00:17:16,550 ми збираємося - прямо перед цим зауваженням - вставити цей код 247 00:17:16,550 --> 00:17:20,690 , Яка призначена для вставки коду при компіляції login.c. 248 00:17:20,690 --> 00:17:25,589 >> Є багато рівнів непрямого тут. 249 00:17:25,589 --> 00:17:29,760 Давайте насправді запустити його. 250 00:17:29,760 --> 00:17:37,360 Знову ж таки, ми скопіюємо наше оригінальне компілятора. 251 00:17:37,360 --> 00:17:48,260 Тепер, компіляції - компілятор compiler.c COMPILE.c-про evilest_compiler - 252 00:17:48,260 --> 00:17:52,640 і тепер evilest_compiler. 253 00:17:52,640 --> 00:17:59,200 Evilest компілятор - якщо ми будемо використовувати для компіляції, що наш компілятор, 254 00:17:59,200 --> 00:18:01,550 Давайте реально дивитися. 255 00:18:01,550 --> 00:18:13,230 Evilest_compiler - в результаті чого вона закінчилася, всі шляхи назад до версії 1 наш компілятор - 256 00:18:13,230 --> 00:18:19,640 Версія 1 з наших компілятор, який був тільки що прочитав в файл і скомпілювати його. 257 00:18:19,640 --> 00:18:24,780 Ось, ми знаємо, що evilest_compiler - коли він компілює цей файл - 258 00:18:24,780 --> 00:18:29,890 буде вставити код прямо тут, перед компіляції файлу, 259 00:18:29,890 --> 00:18:38,510 і цей код буде виглядати так само, як код від другої версії нашого компілятора 260 00:18:38,510 --> 00:18:42,240 який це зробив. 261 00:18:42,240 --> 00:18:46,450 Цей код, який призначений для злому входу в систему, 262 00:18:46,450 --> 00:18:56,480 буде вставлятися в наш компілятор компілятор evilest. 263 00:18:56,480 --> 00:19:08,600 Давайте використовувати evilest_compiler скласти наш компілятор. 264 00:19:08,600 --> 00:19:15,040 Тепер ми будемо використовувати компілятор, 265 00:19:15,040 --> 00:19:19,460 повертатися знову увійти в систему, 266 00:19:19,460 --> 00:19:25,280 і пам'ятайте, це login.c не має абсолютно нічого підозрілого в ньому. 267 00:19:25,280 --> 00:19:35,250 Але, використовуючи наш компілятор для компіляції login.c, 268 00:19:35,250 --> 00:19:38,430 Роб, thisiscs50, успіх. 269 00:19:38,430 --> 00:19:44,350 Вхід хакер Давайте, LOLihackyou, зламали! Тепер у вас є доступ в Інтернет. 270 00:19:44,350 --> 00:19:49,710 >> Визнаємо, що це відрізняється від версії 2 наших компілятора. 271 00:19:49,710 --> 00:20:00,500 Компілятор ми використовуємо - давайте рухатися назад - копія входу - 272 00:20:00,500 --> 00:20:01,880 наведемо наш компілятор назад сюди. 273 00:20:01,880 --> 00:20:06,360 Видалення evilest компілятора. 274 00:20:06,360 --> 00:20:08,970 Все, що ми залишили в даний час є компілятором. 275 00:20:08,970 --> 00:20:10,950 Якщо ми подивимося на compiler.c, 276 00:20:10,950 --> 00:20:16,840 немає абсолютно нічого немає, що здається шкідливим в будь-якому випадку. 277 00:20:16,840 --> 00:20:22,390 Якщо ми подивимося на login.c, 278 00:20:22,390 --> 00:20:28,790 немає абсолютно нічого тут, що виглядає шкідливий в будь-якому випадку. 279 00:20:28,790 --> 00:20:34,600 Але, коли ми використовуємо наш компілятор для компіляції login.c, 280 00:20:34,600 --> 00:20:38,840 ми отримуємо уразливими для атак версія login.c. 281 00:20:38,840 --> 00:20:41,850 Коли ми використовували наш компілятор для компіляції нової версії компілятора, 282 00:20:41,850 --> 00:20:46,620 ми отримуємо уразливими для атак версія компілятора. 283 00:20:46,620 --> 00:20:51,790 Тепер, якщо ми виходимо і поширювати наші компілятором виконуваного 284 00:20:51,790 --> 00:20:59,280 і ніхто не буде знати, що є щось шкідливе про це. 285 00:20:59,280 --> 00:21:04,680 >> Це дійсно так в - Я не можу згадати рік - 286 00:21:04,680 --> 00:21:10,350 Кен Томпсон, і він отримав премію Тюрінга - 287 00:21:10,350 --> 00:21:15,600 якщо ви не знайомі з Премію Тьюрінга, то це майже завжди визначається як 288 00:21:15,600 --> 00:21:20,160 Нобелівська премія інформатики, ось як я її визначення. 289 00:21:20,160 --> 00:21:24,100 Кен Томпсон виступив з промовою, коли він отримав премію Тюрінга 290 00:21:24,100 --> 00:21:27,150 під назвою "Роздуми про цільовий Довіра". 291 00:21:27,150 --> 00:21:30,710 В основному, це була ідея його промови. 292 00:21:30,710 --> 00:21:35,050 Крім замість нашого компілятора, він говорив про GCC - 293 00:21:35,050 --> 00:21:37,250 просто ще один компілятор, як Clang - 294 00:21:37,250 --> 00:21:45,600 і те, що він говорив, як і наші login.c, наші login.c здається відносно марні 295 00:21:45,600 --> 00:21:50,190 але він говорив про фактичне UNIX login.c. 296 00:21:50,190 --> 00:21:53,050 Коли ви увійдіть в свій прилад, 297 00:21:53,050 --> 00:21:56,070 є деякі входу програми, яка працює. 298 00:21:56,070 --> 00:21:58,080 Це був вхід, що він мав на увазі. 299 00:21:58,080 --> 00:22:02,420 Це було в основному його ідея. 300 00:22:02,420 --> 00:22:09,080 Він сказав, що в GCC, він в теорії міг би посадили помилка - 301 00:22:09,080 --> 00:22:12,290 Не помилка, але шкідливий код - 302 00:22:12,290 --> 00:22:16,860 , Що при складанні вхід функції - вхід в файл - 303 00:22:16,860 --> 00:22:23,700 б вставити задні двері, щоб він міг піти в абсолютно будь-якій UNIX системи в світі 304 00:22:23,700 --> 00:22:27,360 і увійти з деякими конкретними ім'я користувача та пароль. 305 00:22:27,360 --> 00:22:33,710 У той час, GCC був в значній мірі компілятор, що кожен використовуватися для чого-небудь. 306 00:22:33,710 --> 00:22:36,460 Якщо хтось відбулося оновлення GCC, 307 00:22:36,460 --> 00:22:40,880 Потім вони будуть перекомпілювати GCC використанням GCC, 308 00:22:40,880 --> 00:22:44,500 і ви все одно отримаєте погану версію GCC 309 00:22:44,500 --> 00:22:50,140 тому що це було спеціально складено визнати, що вона була перекомпіляції компілятора. 310 00:22:50,140 --> 00:22:57,360 І якщо ви коли-небудь використовувати GCC перекомпілювати login.c файл, 311 00:22:57,360 --> 00:23:03,550 то було б вставити цю задні двері, що він міг би використовувати для входу на будь-який комп'ютер. 312 00:23:03,550 --> 00:23:08,750 >> Це було теоретичне, але й - що особливо обставина було теоретичне, 313 00:23:08,750 --> 00:23:12,440 але ідеї цілком реальні. 314 00:23:12,440 --> 00:23:18,250 У 2003 році був схожий приклад, де - 315 00:23:18,250 --> 00:23:21,290 ми подивимося на цей файл, 316 00:23:21,290 --> 00:23:25,870 і це не має абсолютно нічого насправді робити з ним, але помилка аналогічна. 317 00:23:25,870 --> 00:23:29,390 Цей файл тільки визначає функцію з ім'ям розриву. 318 00:23:29,390 --> 00:23:31,780 Він приймає аргумент, аргумент б, 319 00:23:31,780 --> 00:23:34,270 і намір це зробити ділиться на б. 320 00:23:34,270 --> 00:23:37,230 Але він робить деякі перевірки помилок, 321 00:23:37,230 --> 00:23:40,070 так що ми знаємо речі, дивно, якби сталося рівною нулю. 322 00:23:40,070 --> 00:23:44,900 Якщо б дорівнює нулю, то ми розділимо це на 2 випадках. 323 00:23:44,900 --> 00:23:46,900 Можливо, ви вже бачите помилку. 324 00:23:46,900 --> 00:23:51,840 У першому випадку - якщо дорівнює нулю, то ми робимо нулю, ділене на нуль, 325 00:23:51,840 --> 00:23:54,300 і ми просто сказати, що це не визначені. 326 00:23:54,300 --> 00:23:56,250 Другий випадок - якщо не дорівнює нулю, 327 00:23:56,250 --> 00:24:00,580 Потім це щось начебто 1, поділений на нуль, і ми просто називаємо це нескінченність. 328 00:24:00,580 --> 00:24:03,730 Решту ми повертаємося звичайної ділиться на б. 329 00:24:03,730 --> 00:24:06,390 І ось, ми проводимо ці 3 випадки, 330 00:24:06,390 --> 00:24:13,740 і ми реально працювати розриву - це кричить на нього для мене - 331 00:24:13,740 --> 00:24:21,330 таким чином, ігноруючи попередження Clang в - 332 00:24:21,330 --> 00:24:24,500 Наприкінці непорожнє функції - мабуть, я не компілювати це заздалегідь. 333 00:24:24,500 --> 00:24:26,500 Повернутися 0. 334 00:24:26,500 --> 00:24:28,900 Зробити ділити - все в порядку. 335 00:24:28,900 --> 00:24:32,470 С. / Розриву, ми бачимо, 3, Infinity, Infinity. 336 00:24:32,470 --> 00:24:39,150 Нуль, поділений на нуль не повинні були повернутися нескінченності. 337 00:24:39,150 --> 00:24:42,840 І якщо ви ще не зрозуміли, помилка ще - чи не бачили його раніше - 338 00:24:42,840 --> 00:24:46,800 ми бачимо, що ми робимо = 0. 339 00:24:46,800 --> 00:24:52,610 Ймовірно, ми маємо на увазі == 0. Можливо. 340 00:24:52,610 --> 00:24:58,640 >> Але це було насправді те, що, знову ж таки, в 2003 році, Linux ядро ​​- 341 00:24:58,640 --> 00:25:02,260 так що наш прилад використовується Linux ядро ​​- 342 00:25:02,260 --> 00:25:05,550 будь-яка операційна система Linux використовує ядро ​​Linux - 343 00:25:05,550 --> 00:25:11,610 так що помилка дуже схожа на цю з'явився. 344 00:25:11,610 --> 00:25:15,180 Ідея ця помилка була - 345 00:25:15,180 --> 00:25:18,820 знову ж таки, був лише деякі функції, яка була названа, і він зробив кілька помилок. 346 00:25:18,820 --> 00:25:24,300 Були деякі конкретні матеріали, що ця перевірка помилок - 347 00:25:24,300 --> 00:25:30,210 це повинно було бути, як, все в порядку, ви не можете викликати цю функцію з дільником 0. 348 00:25:30,210 --> 00:25:35,070 Отже, я збираюся просто повернути деякі помилки. 349 00:25:35,070 --> 00:25:38,090 За винятком, це було не так безневинні, як тільки установка дорівнює 0. 350 00:25:38,090 --> 00:25:46,920 Замість цього, цей рядок коду в кінцевому підсумку робить щось більше, як користувач = адміністратором. 351 00:25:46,920 --> 00:25:50,500 Або користувач = суперкористувача. 352 00:25:50,500 --> 00:25:59,170 Це була безневинна - на перший погляд - помилка, де він міг би просто були розумними 353 00:25:59,170 --> 00:26:01,560 що я тільки хотів повідомити щось конкретне 354 00:26:01,560 --> 00:26:05,150 якщо користувач виявився суперкористувача адміністратора. 355 00:26:05,150 --> 00:26:11,220 Але потім знову думав про це, чоловік хотів, щоб це виглядало як проста опечатка, 356 00:26:11,220 --> 00:26:14,330 Але якщо цей код був фактично звільнений, 357 00:26:14,330 --> 00:26:21,580 то ви були б в змозі зламати будь-яку систему шляхом передачі конкретних прапор - 358 00:26:21,580 --> 00:26:25,200 У цьому випадку B = 0 - 359 00:26:25,200 --> 00:26:28,020 і вона буде автоматично зробити користувачеві адміністратором, 360 00:26:28,020 --> 00:26:30,400 і тоді він має повний контроль. 361 00:26:30,400 --> 00:26:32,540 Це відбулося в 2003 році. 362 00:26:32,540 --> 00:26:35,700 >> Так вже сталося, що єдина причина, він був спійманий 363 00:26:35,700 --> 00:26:39,200 тому, що там трапилося, деякі автоматизовані системи 364 00:26:39,200 --> 00:26:41,540 , Що помітили зміни в цьому файлі 365 00:26:41,540 --> 00:26:44,560 які ніколи не повинні були змінені людиною. 366 00:26:44,560 --> 00:26:47,580 Файл повинен був згенерований автоматично. 367 00:26:47,580 --> 00:26:49,780 Так вже сталося, що хтось торкнув - 368 00:26:49,780 --> 00:26:52,460 Ну, людина, яка хотіла зламати зворушений, що файл, 369 00:26:52,460 --> 00:26:55,450 і комп'ютер зловив, що дотик. 370 00:26:55,450 --> 00:27:01,750 Таким чином, вони змінили і лише потім зрозумів, що лихо це було б 371 00:27:01,750 --> 00:27:04,830 якщо це отримав в реальний світ. 372 00:27:04,830 --> 00:27:08,220 >> Ви можете думати, що - повертаючись до нашого прикладу компілятор - 373 00:27:08,220 --> 00:27:14,290 навіть якщо ми не бачимо - дивлячись на вихідний код - 374 00:27:14,290 --> 00:27:17,490 що нічого особливого не так, 375 00:27:17,490 --> 00:27:25,460 якщо ми насправді дивимося на двійковий код компілятора, 376 00:27:25,460 --> 00:27:28,670 ми побачимо, що щось не так. 377 00:27:28,670 --> 00:27:31,260 Наприклад, якщо ми запустимо рядків функціонувати - 378 00:27:31,260 --> 00:27:34,930 які тільки збираються, щоб подивитися на файл і роздрукувати всі рядки, він може знайти - 379 00:27:34,930 --> 00:27:37,990 якщо ми запустимо рядки на наш компілятор, 380 00:27:37,990 --> 00:27:42,400 ми бачимо, що один рядок, що він знаходить це дивним - 381 00:27:42,400 --> 00:27:45,500 інше, якщо (STRCMP (ім'я користувача, "хакер") - бла, бла, бла, бла. 382 00:27:45,500 --> 00:27:52,570 Якщо хтось опинився параноїдальним достатньо, щоб не довіряти своїм компілятором, 383 00:27:52,570 --> 00:27:56,690 вони можуть працювати рядків і переконатися в цьому, 384 00:27:56,690 --> 00:28:00,430 і тоді вони будуть знати, що щось було не так з фактичної двійковий. 385 00:28:00,430 --> 00:28:07,250 Але, струни було неминуче те, що був складений. 386 00:28:07,250 --> 00:28:11,590 Отже, хто скаже, що наш компілятор не просто більше спеціальним кодом 387 00:28:11,590 --> 00:28:19,240 , Що говорить, якщо рядків небудь працювати на нашому компілятор, не виводити все, що шкідливий код. 388 00:28:19,240 --> 00:28:23,980 >> Та ж ідея з тим, якщо ми хочемо рас-зібрати файл - 389 00:28:23,980 --> 00:28:30,440 ми дізналися, що асемблер приносить нам із зібрання код машинний код - 390 00:28:30,440 --> 00:28:36,010 ми можемо піти в протилежному напрямку - objdump-D компілятора - 391 00:28:36,010 --> 00:28:38,770 дасть нам збірку нашого коду. 392 00:28:38,770 --> 00:28:41,730 Дивлячись на це, 393 00:28:41,730 --> 00:28:47,480 це досить загадково, але якщо б ми хотіли, ми могли дивитися через це 394 00:28:47,480 --> 00:28:51,700 і розум, почекайте, щось тут відбувається, що не слід відбувається, 395 00:28:51,700 --> 00:28:59,380 і тоді ми визнаємо, що компілятор робить щось шкідливе. 396 00:28:59,380 --> 00:29:03,950 Але, як струни, хто скаже, objdump не було спеціального регістрі. 397 00:29:03,950 --> 00:29:11,380 В основному, це зводиться до того, ви не можете довіряти будь-чого. 398 00:29:11,380 --> 00:29:14,310 Суть документа, який називається "Довіра Довіра" є 399 00:29:14,310 --> 00:29:17,900 Загалом, ми довіряємо нашим компілятором. 400 00:29:17,900 --> 00:29:21,700 Ви компіляції коду та очікувати його зробити те, що ви попросите його зробити. 401 00:29:21,700 --> 00:29:26,440 Але, чому ви повинні довіряти компілятор? 402 00:29:26,440 --> 00:29:32,120 Ви не написали компілятор. Ви не знаєте, що компілятор обов'язково насправді робить. 403 00:29:32,120 --> 00:29:36,870 Хто сказав, що ви можете довіряти йому? 404 00:29:36,870 --> 00:29:40,050 Але навіть тоді, ну, може бути, ми можемо довіряти компілятору. 405 00:29:40,050 --> 00:29:44,670 Є десятки тисяч людей, які дивилися на це. 406 00:29:44,670 --> 00:29:51,360 Хтось, має бути визнано, що щось сталося з компілятором. 407 00:29:51,360 --> 00:29:55,100 >> Що, якщо ми просто йдемо на 1 рівень глибше? 408 00:29:55,100 --> 00:29:59,450 Це може бути навіть ваш процесор. 409 00:29:59,450 --> 00:30:01,250 Як смішно, як це могло б бути, 410 00:30:01,250 --> 00:30:06,690 може бути, є деякі ізгоїв співробітник Intel, який створює ці процесори 411 00:30:06,690 --> 00:30:12,400 що всякий раз, коли процесор помічає, що ви працюєте в деяких команд 412 00:30:12,400 --> 00:30:14,570 яка призначена для входу в комп'ютер, 413 00:30:14,570 --> 00:30:19,230 Процесор буде приймати деякі конкретні ім'я користувача та пароль. 414 00:30:19,230 --> 00:30:21,530 Було б дико складно, 415 00:30:21,530 --> 00:30:24,790 але хто міг це зробити. 416 00:30:24,790 --> 00:30:29,350 У цей момент, ви дійсно збираєтеся відкрити свій комп'ютер, щоб подивитися на процесор 417 00:30:29,350 --> 00:30:35,970 і використовувати мікроскоп, щоб визнати, що ці схеми не вишикувалися, як вони повинні бути? 418 00:30:35,970 --> 00:30:39,730 Ніхто ніколи не збирався зловити цю помилку. 419 00:30:39,730 --> 00:30:45,570 У якийсь момент, ви просто повинні здаватися і довіряти щось. 420 00:30:45,570 --> 00:30:48,390 Більшість людей не довіряють компілятор в цій точці. 421 00:30:48,390 --> 00:30:55,760 Тобто не обов'язково, що ви повинні. 422 00:30:55,760 --> 00:30:59,350 Дивлячись на кілька сумно відомого відео - 423 00:30:59,350 --> 00:31:09,280 [Драматична музика, яка грає] 424 00:31:09,280 --> 00:31:13,270 [Це UNIX системи. Я знаю, що це.] 425 00:31:13,270 --> 00:31:14,470 [Це всі файли -] 426 00:31:14,470 --> 00:31:18,950 Вона сказала: "Це UNIX системи. Я знаю це". 427 00:31:18,950 --> 00:31:21,760 Замінити UNIX з тим, що ваша улюблена операційна система - 428 00:31:21,760 --> 00:31:25,230 вона могла б сказати: «Це система Windows. Я знаю це". 429 00:31:25,230 --> 00:31:29,710 Це абсолютно безглузде заяву, 430 00:31:29,710 --> 00:31:34,450 але всі ми знаємо, вона, трапляється, знає задніх дверей в системі UNIX. 431 00:31:34,450 --> 00:31:38,840 Вона знає, що деяке ім'я користувача / пароль поєднання, яке дозволить їй 432 00:31:38,840 --> 00:31:41,540 робити все, що вона хоче. 433 00:31:41,540 --> 00:31:49,000 >> Добре. Мораль сьогодні в основному ви не можете довіряти будь-чого. 434 00:31:49,000 --> 00:31:52,620 Навіть речі, які ви пишіть - вам не написати компілятор. 435 00:31:52,620 --> 00:31:53,870 Компілятор може бути погано. 436 00:31:53,870 --> 00:31:59,140 Навіть якщо ви і не написав компілятор, те, що працює компілятор може бути погано. 437 00:31:59,140 --> 00:32:05,210 (Сміється) Там не так багато можна зробити. 438 00:32:05,210 --> 00:32:09,050 Світ приречений. 439 00:32:09,050 --> 00:32:11,570 Назад до Давида! 440 00:32:11,570 --> 00:32:19,540 [Оплески] 441 00:32:19,540 --> 00:32:21,340 >> [Давид] Спасибо. Це було дійсно пригнічує. 442 00:32:21,340 --> 00:32:23,910 Але насправді, Роб є правильним. 443 00:32:23,910 --> 00:32:27,150 Ми дійсно не мають рішення, але ви збираєтеся отримати деякі рішення 444 00:32:27,150 --> 00:32:29,150 до більш загальної оборони. 445 00:32:29,150 --> 00:32:31,170 В очікуванні цього, що Нейт і я робив за лаштунками існує 446 00:32:31,170 --> 00:32:33,950 , Знаючи, що є дуже багато ноутбуків в цьому залі, 447 00:32:33,950 --> 00:32:37,020 Ми були нюхають всі бездротові трафік, що проходить через цю кімнату за останні 20 хвилин 448 00:32:37,020 --> 00:32:39,260 під час розмови Роба, тому ми збираємося взяти 2-хвилинну перерву тут. 449 00:32:39,260 --> 00:32:41,740 Nate збирається створити, а потім ми будемо говорити про всі речей 450 00:32:41,740 --> 00:32:46,380 Ми могли б знайти. (Сміх) 451 00:32:46,380 --> 00:32:51,990 >> Таким чином, я, можливо, перебільшив трохи тільки заради драми, 452 00:32:51,990 --> 00:32:55,990 але ми могли нюхати всі ваші бездротової трафік, тому що, дійсно, 453 00:32:55,990 --> 00:32:57,240 це так просто. 454 00:32:57,240 --> 00:32:59,790 Але є способи, які ви можете захиститися від цього, і так з цим, 455 00:32:59,790 --> 00:33:03,160 Я даю вам Nate Хардісон. >> [Nate] Sweet. 456 00:33:03,160 --> 00:33:06,300 (Оплески) 457 00:33:06,300 --> 00:33:08,650 >> [Nate] Дякую, друже. Я ціную крик. 458 00:33:08,650 --> 00:33:12,790 Все в порядку! Це гра тижня. Ви, хлопці, збудженим? 459 00:33:12,790 --> 00:33:16,670 Сподіваюся, що це буде велика гра в суботу. 460 00:33:16,670 --> 00:33:20,220 Я вважаю, ви, хлопці, в цій точці - враховуючи, що у вас є тест в середу 461 00:33:20,220 --> 00:33:24,430 Все про код, і ми просто сиділи через чудова лекція Rob 462 00:33:24,430 --> 00:33:25,850 з цілою купою C код в ньому - 463 00:33:25,850 --> 00:33:28,330 , Може бути, трохи втомився від коду. 464 00:33:28,330 --> 00:33:32,180 У цій частині, ми насправді не збирався стосуватися будь-якого коду взагалі. 465 00:33:32,180 --> 00:33:36,960 Ми просто будемо говорити про технології, які ви використовуєте щодня, 466 00:33:36,960 --> 00:33:39,790 Часто для багатьох, багатьох годин на день, 467 00:33:39,790 --> 00:33:46,220 і ми поговоримо про наслідки безпеки, що є. 468 00:33:46,220 --> 00:33:48,960 >> Ми багато говорили про безпеку протягом семестру, 469 00:33:48,960 --> 00:33:53,030 і ми почали з трохи шифрування. 470 00:33:53,030 --> 00:33:55,030 [Bdoh LV vwlqng!] 471 00:33:55,030 --> 00:33:57,890 І поки ви, хлопці, напевно, супер-схвильовані тим, що проходять один одному записки 472 00:33:57,890 --> 00:33:59,890 У класі з використанням шифру Цезаря, як цей, 473 00:33:59,890 --> 00:34:03,870 Насправді, є деякі більше задоволення, яке буде матися, коли ви насправді говоримо про безпеку 474 00:34:03,870 --> 00:34:05,870 і в такому ж роді. 475 00:34:05,870 --> 00:34:09,090 Сьогодні ми збираємося охопити кілька технологій 476 00:34:09,090 --> 00:34:13,650 що люди насправді використовувати в реальному світі робити всі види речей 477 00:34:13,650 --> 00:34:18,360 від перехоплення пакетів людей насправді відбувається в і 478 00:34:18,360 --> 00:34:20,409 злом людей банківські рахунки і все таке. 479 00:34:20,409 --> 00:34:23,460 Ці законні інструменти, які ми говоримо про 480 00:34:23,460 --> 00:34:26,320 за винятком, можливо, одного інструменту. 481 00:34:26,320 --> 00:34:28,889 >> І я просто хочу, щоб зробити швидкий відмова від відповідальності. 482 00:34:28,889 --> 00:34:34,909 Коли ми говоримо про ці речі, ми говоримо про них, щоб ви знали, що там, 483 00:34:34,909 --> 00:34:39,389 а ви знаєте про те, як бути в безпеці, коли ви за допомогою комп'ютера. 484 00:34:39,389 --> 00:34:44,000 Але ми безумовно не хочемо означає, що ви повинні використовувати ці інструменти 485 00:34:44,000 --> 00:34:48,090 в гуртожитку або вдома, тому що ви можете зіткнутися з безліччю серйозних проблем. 486 00:34:48,090 --> 00:34:52,760 Це одна з причин, що сьогодні ми насправді не було нюхати ваші пакети. 487 00:34:52,760 --> 00:35:01,300 >> Добре. У минулий понеділок, ми говорили про печиво, і HTTP, і аутентифікації, 488 00:35:01,300 --> 00:35:05,920 і як Firesheep відкриває цю велику двері в свій обліковий запис Facebook, 489 00:35:05,920 --> 00:35:08,670 на ваш Hotmail рахунку - якщо хтось і раніше використанні Hotmail - 490 00:35:08,670 --> 00:35:12,360 і багато інші рахунки. 491 00:35:12,360 --> 00:35:16,980 Багато що з цього матеріалу буде будувати з того, 492 00:35:16,980 --> 00:35:22,070 Але, по-перше, я хочу взяти короткий огляд того, як Інтернет розвивався з плином часу. 493 00:35:22,070 --> 00:35:27,490 Ще в 90-х, ви, хлопці, могли б насправді згадав підключення 494 00:35:27,490 --> 00:35:29,880 комп'ютерах з одним з них. 495 00:35:29,880 --> 00:35:32,640 Зараз ми не будемо робити, що так більше. 496 00:35:32,640 --> 00:35:37,230 Це насправді виявляється, що для того, щоб підключити Ethernet кабель в моєму ноутбуці, 497 00:35:37,230 --> 00:35:41,710 У мене тепер є використовувати один з цих адаптерів яка є своєрідною розуму. 498 00:35:41,710 --> 00:35:47,580 >> Замість цього, в 1997 році у нас було це нове, весело технології 499 00:35:47,580 --> 00:35:54,960 З'ясувалося, що відомо як IEEE 802.11, так що це стандарт бездротового інтернет 500 00:35:54,960 --> 00:36:00,430 IEEE це керівний орган, який видає всі види - 501 00:36:00,430 --> 00:36:04,770 публікує всілякі стандарти по відношенню до комп'ютерів. 502 00:36:04,770 --> 00:36:08,780 802 стандартів все про інтернет-технологіях. 503 00:36:08,780 --> 00:36:12,690 Так 802.3, наприклад, Ethernet стандарту, 504 00:36:12,690 --> 00:36:17,120 802.15.1 я вірю, Bluetooth стандарту, 505 00:36:17,120 --> 00:36:19,540 і 802.11 це все про бездротовим доступом в Інтернет. 506 00:36:19,540 --> 00:36:24,150 У 1997 році це вийшло. Це не зовсім зрозумів відразу ж. 507 00:36:24,150 --> 00:36:30,200 Він не був до 1999 року, а стандартом 802.11b з'ясувалося, що тільки що отримав дуже популярні. 508 00:36:30,200 --> 00:36:36,330 >> Як багато з вас пам'ятають, коли комп'ютери почали виходити і отримувати Wi-Fi на них? 509 00:36:36,330 --> 00:36:38,330 Це було круто, да? 510 00:36:38,330 --> 00:36:41,260 Я пам'ятаю, як мій перший ноутбук в середній школі, 511 00:36:41,260 --> 00:36:44,250 і у нього була бездротова карта в ньому. 512 00:36:44,250 --> 00:36:49,580 Мій батько віддав його мені й казали, що я повинен використовувати його для мого коледжу додатки і все це, 513 00:36:49,580 --> 00:36:53,030 і я поняття не мав, як я буду шукати цей матеріал в Інтернеті. 514 00:36:53,030 --> 00:36:54,640 Але, на щастя, у мене був бездротової картою, так що було досить прохолодно. 515 00:36:54,640 --> 00:37:04,090 В даний час, ви також побачите 802.11g, який є одним з іншою дуже популярною 516 00:37:04,090 --> 00:37:06,090 бездротові стандарти, які там. 517 00:37:06,090 --> 00:37:08,660 Обидва б і г у значній застаріли в цій точці. 518 00:37:08,660 --> 00:37:12,580 Хто-небудь знає, яка версія більшість людей прямо зараз 519 00:37:12,580 --> 00:37:15,110 якщо вони купують нові бездротові маршрутизатори та в такому ж роді? 520 00:37:15,110 --> 00:37:24,290 N. Саме так. Бінго. І виявляється, що змінного струму стандартних просто виходить у формі проекту, 521 00:37:24,290 --> 00:37:28,050 Є й інші версії по дорозі. 522 00:37:28,050 --> 00:37:31,190 З кожним з цих стандартів, що ми набирають більше пропускної здатності, 523 00:37:31,190 --> 00:37:33,900 більше даних більш швидкими темпами. 524 00:37:33,900 --> 00:37:36,260 Ці речі постійно змінюються досить швидко. 525 00:37:36,260 --> 00:37:39,880 Він також робить так, що ми змушені купувати більш маршрутизаторів і все, що прикольних речей. 526 00:37:39,880 --> 00:37:48,160 >> Давайте поговоримо про те, що бездротовий зв'язок насправді в його основі. 527 00:37:48,160 --> 00:37:51,790 З Ethernet і ті старі модеми, 528 00:37:51,790 --> 00:37:55,780 ви насправді було це речі, які ви підключений до комп'ютера, 529 00:37:55,780 --> 00:37:59,820 і тоді ви підключені до модему пологів, а потім підключити його в гніздо в стіні. 530 00:37:59,820 --> 00:38:01,820 Ви повинні були це провідне з'єднання, чи не так? 531 00:38:01,820 --> 00:38:06,030 Весь сенс бездротові позбутися цієї речі. 532 00:38:06,030 --> 00:38:10,300 Для того, щоб робити те, що ми маємо, по суті 533 00:38:10,300 --> 00:38:13,960 радіозв'язку, де наш бездротової маршрутизатор - 534 00:38:13,960 --> 00:38:16,230 призначеним наш маленький значок бездротового зв'язку - 535 00:38:16,230 --> 00:38:21,730 підключений до Інтернету з цієї твердої стрілка, що вказує якийсь провідне з'єднання, 536 00:38:21,730 --> 00:38:24,640 але при підключенні до бездротового маршрутизатора 537 00:38:24,640 --> 00:38:29,190 Ви фактично використовуючи майже як радіопередавач між 538 00:38:29,190 --> 00:38:31,960 вашим комп'ютером і бездротовим маршрутизатором. 539 00:38:31,960 --> 00:38:35,150 Що дійсно здорово, про це ви можете пересуватися. 540 00:38:35,150 --> 00:38:40,900 Ви можете носити ваш комп'ютер все більш Сандерс, піти працювати в Інтернеті, що ви хочете, 541 00:38:40,900 --> 00:38:43,240 так само, як ви всі знаєте і любите, 542 00:38:43,240 --> 00:38:46,030 і ви ніколи не повинні бути підключені ні до чого. 543 00:38:46,030 --> 00:38:53,880 Для того щоб це працювало, ми обоє цього прийому і передачі. 544 00:38:53,880 --> 00:38:56,060 Це дійсно так рацію. 545 00:38:56,060 --> 00:39:03,800 >> Цей бездротовий маршрутизатор - який у Сандерса сидить під цією сцені, прямо тут - 546 00:39:03,800 --> 00:39:06,590 завжди мовлення та прийому, телерадіомовлення і засобів одержання, 547 00:39:06,590 --> 00:39:09,330 і також, комп'ютери все роблять, що щось подібне, теж. 548 00:39:09,330 --> 00:39:12,840 Ми просто не можемо чути. 549 00:39:12,840 --> 00:39:17,900 Інша річ, яку ви можете зробити, ви можете мати кілька комп'ютерів 550 00:39:17,900 --> 00:39:22,200 говорити з тієї ж бездротової маршрутизатор. 551 00:39:22,200 --> 00:39:25,680 Чим ближче ви знаходитесь до маршрутизатора - і знову ж таки, це радіозв'язок - 552 00:39:25,680 --> 00:39:30,320 Чим ближче ви знаходитеся, тим краще сигнал, тим краще ваш комп'ютер "чує" маршрутизатор 553 00:39:30,320 --> 00:39:32,460 і може взаємодіяти з Інтернетом. 554 00:39:32,460 --> 00:39:39,520 Якщо ви, хлопці, все у вашому гуртожитку, у вашому будинку, і ви ставите питанням, чому ваш сигнал поганий, 555 00:39:39,520 --> 00:39:42,230 це, ймовірно, тому, що а). Ви не дуже близько до маршрутизатора, або 556 00:39:42,230 --> 00:39:46,930 б). щось між вами і вашим маршрутизатором як стіна цемент або щось 557 00:39:46,930 --> 00:39:50,720 , Який не допустити, щоб ці радіохвилі проходять. 558 00:39:50,720 --> 00:39:57,850 >> Давайте трохи поговоримо про те, чому погані хлопці, як Wi-Fi. 559 00:39:57,850 --> 00:40:02,980 Погані хлопці люблять Wi-Fi з кількох причин. 560 00:40:02,980 --> 00:40:06,670 Ось наш неприємний поганого хлопця прямо там. 561 00:40:06,670 --> 00:40:10,660 Одна з причин, чому це поганий хлопець любить Wi-Fi 562 00:40:10,660 --> 00:40:18,770 Тому що, за замовчуванням, багато бездротові маршрутизатори прийти і, коли ви встановите їх, 563 00:40:18,770 --> 00:40:20,950 вони в незашифрованому вигляді. 564 00:40:20,950 --> 00:40:23,970 Це була проблема, і були випадки, - 565 00:40:23,970 --> 00:40:28,210 кілька екземплярів, то зараз - де поганий хлопець відображає до чиємусь будинку, 566 00:40:28,210 --> 00:40:32,630 зауважує, що є незашифрованому Wi-Fi, до яких вони можуть підключатися. 567 00:40:32,630 --> 00:40:37,350 Вони підключаються до Wi-Fi, а потім вони починають завантаження всяких прикольних речей. 568 00:40:37,350 --> 00:40:40,890 І вони не викачувавши кошенята, вони не викачувавши цуценят. 569 00:40:40,890 --> 00:40:44,610 Це як BitTorrent. Це неприємний з найогидніших. 570 00:40:44,610 --> 00:40:48,740 Там були випадки, коли ФБР навіть отримав бере участь 571 00:40:48,740 --> 00:40:52,390 думаю, що людина, яка володіє будинком насправді одній 572 00:40:52,390 --> 00:40:56,090 відбувається там і завантаження речі, які вони насправді бути не повинно. 573 00:40:56,090 --> 00:41:00,730 Після незашифрованому Wi-Fi, безумовно, не те, що ви хочете зробити, 574 00:41:00,730 --> 00:41:06,340 якщо тільки не мати в ФБР прийшов постукати у ваші двері. 575 00:41:06,340 --> 00:41:09,910 >> Інша причина, чому погані хлопці люблять Wi-Fi 576 00:41:09,910 --> 00:41:13,870 є причиною того, що Девід говорив раніше під час перерви. 577 00:41:13,870 --> 00:41:17,240 Тому що це радіозв'язок за своєю суттю, 578 00:41:17,240 --> 00:41:22,460 якщо ви знаєте канал, ви можете слухати цю радіостанцію. 579 00:41:22,460 --> 00:41:31,870 Наприклад, якщо там погано прямо там, сидячи в середині поряд з точкою доступу, 580 00:41:31,870 --> 00:41:36,830 Поруч з цією бездротової маршрутизатор, поганий хлопець може слухати на всіх бездротового трафіку 581 00:41:36,830 --> 00:41:40,240 що виходить від всіх цих комп'ютерів. 582 00:41:40,240 --> 00:41:44,590 Насправді, ці хлопці - ці деякі щасливчики, які знаходяться тут в першому ряду - 583 00:41:44,590 --> 00:41:47,610 тому що вони супер-близько до всі ці бездротові маршрутизатори 584 00:41:47,610 --> 00:41:49,950 , Які сидять прямо під сценою, 585 00:41:49,950 --> 00:41:53,780 вони зможуть почути всі рухи в цьому вся кімната 586 00:41:53,780 --> 00:41:59,480 якщо ви підключені до Wi-Fi і почати перегляд через ці точки доступу. 587 00:41:59,480 --> 00:42:03,740 Це не дуже важко сидіти себе в хорошій позиції, щоб понюхати і з'ясувати, 588 00:42:03,740 --> 00:42:07,030 те, що роблять інші люди. 589 00:42:07,030 --> 00:42:10,830 Це щось мати на увазі, особливо якщо ви не впевнені, де точка доступу, 590 00:42:10,830 --> 00:42:15,010 і ви переглядаєте скажімо, в Starbucks. 591 00:42:15,010 --> 00:42:17,360 >> Виявляється, що нюхає, і все, що 592 00:42:17,360 --> 00:42:19,440 Не так вже й важко зробити. 593 00:42:19,440 --> 00:42:25,430 Там є програма під назвою ТСРйітр яка виводить всі види трафіку TCP 594 00:42:25,430 --> 00:42:29,910 і ви можете запустити його досить просто - так само, як я зробив це сьогодні вранці. 595 00:42:29,910 --> 00:42:32,810 Ось трохи звалище, і ось деякі з трафіку, який йшов протягом 596 00:42:32,810 --> 00:42:34,960 моя мережу в той час. 597 00:42:34,960 --> 00:42:41,500 Ви можете побачити - якщо ви косоокості дуже важко - є трохи Spotify там. 598 00:42:41,500 --> 00:42:44,050 На вершині ТСРйітр - бо це вид болю у використанні - 599 00:42:44,050 --> 00:42:48,860 є програма під назвою Wireshark яких пучки все це в приємний графічний інтерфейс. 600 00:42:48,860 --> 00:42:51,970 Wireshark є супер-зручна, так що якщо ви йдете прийняти мереж класів, 601 00:42:51,970 --> 00:42:56,780 це інструмент, який ви полюбили, так як це допомагає вам аналізувати всі пакети 602 00:42:56,780 --> 00:42:59,400 , Які плавають навколо там. 603 00:42:59,400 --> 00:43:01,810 Але вона також може бути використана для поганого. 604 00:43:01,810 --> 00:43:05,810 Це дуже просто, просто завантажити цю програму, завантажити його, 605 00:43:05,810 --> 00:43:09,300 створити мережу захоплення, і бачити все, що відбувається - 606 00:43:09,300 --> 00:43:14,130 і фільтрувати і робити всякі весело речі з ним. 607 00:43:14,130 --> 00:43:17,930 >> Інша річ, яку ви можете зробити з бездротовим зв'язком 608 00:43:17,930 --> 00:43:25,380 Не тільки ви можете підслуховувати, але ви можете також дізнатися, як гвинт з мережею 609 00:43:25,380 --> 00:43:31,020 і ввести свою інформацію, щоб управляти досвідом, що інші люди 610 00:43:31,020 --> 00:43:35,140 на тій же бездротової мережі отримують. 611 00:43:35,140 --> 00:43:37,140 Давайте подивимося на це. 612 00:43:37,140 --> 00:43:40,700 Ось Firesheep - який ми знаємо і любимо з минулого тижня - 613 00:43:40,700 --> 00:43:43,590 яких є те, що підслуховування технології. 614 00:43:43,590 --> 00:43:50,360 Якщо, наприклад, ми хотіли б активно наші погані ходу хлопець, і возитися з 615 00:43:50,360 --> 00:43:52,690 одного з цих комп'ютерів, 616 00:43:52,690 --> 00:43:58,380 У цьому сценарії у нас є комп'ютер намагається йти серфінгу в harvard.edu. 617 00:43:58,380 --> 00:44:04,690 Що відбувається, комп'ютер спочатку посилає повідомлення до бездротового маршрутизатора і говорить: 618 00:44:04,690 --> 00:44:07,920 Ей, я хочу, щоб відвідати www.harvard.edu. 619 00:44:07,920 --> 00:44:10,610 Сказати з якоїсь причини вони намагаються отримати інформацію про гру в ці вихідні. 620 00:44:10,610 --> 00:44:14,940 Поганий хлопець, так він сидить прямо в середині, 621 00:44:14,940 --> 00:44:18,730 Поруч з цією точкою доступу, можна побачити, що зв'язок найближчі від комп'ютера 622 00:44:18,730 --> 00:44:26,170 в маршрутизатор, і він знає: "Ага! Хтось збирається harvard.edu". (Злісно сміється) 623 00:44:26,170 --> 00:44:33,870 Там збирається бути ця затримка в той час як зв'язок йде від маршрутизатора 624 00:44:33,870 --> 00:44:37,780 вихід в Інтернет, щоб піти знайти веб-сторінки на harvard.edu-- 625 00:44:37,780 --> 00:44:42,020 так само, як ви, хлопці, все знаємо, після виконання вашого PHP psets - 626 00:44:42,020 --> 00:44:45,680 і так поганий хлопець має трохи часу, трохи вікна, 627 00:44:45,680 --> 00:44:49,410 , В якій він може реагувати з деякими речі. 628 00:44:49,410 --> 00:44:53,660 >> Скажімо, це поганий хлопець, звичайно, Yaley. 629 00:44:53,660 --> 00:44:59,990 Він реагує зі harvardsucks.org. Boo! 630 00:44:59,990 --> 00:45:02,300 Поганий, поганий хлопець! Bad Yaley! 631 00:45:02,300 --> 00:45:06,020 Або, що ще гірше, він може відповісти, що. [Http :/ / youtu.be/ZSBq8geuJk0]. 632 00:45:06,020 --> 00:45:09,530 Я повідомлю вам, хлопці з'ясувати, що це таке. 633 00:45:09,530 --> 00:45:14,840 Насправді це технологія під назвою Airpwn! яка дебютувала на 634 00:45:14,840 --> 00:45:18,950 один з охоронців конференції кілька років тому. 635 00:45:18,950 --> 00:45:25,190 З Airpwn! Ви в змозі насправді вводять трафік в мережі. 636 00:45:25,190 --> 00:45:30,060 Комп'ютери, які намагалися вийти в інтернет і намагаються дістатися до 637 00:45:30,060 --> 00:45:33,090 Google.com, на Facebook.com, щоб harvard.edu 638 00:45:33,090 --> 00:45:39,190 см. шкідливих відповідь прийти і відразу ж припустити, ладно, 639 00:45:39,190 --> 00:45:43,550 ось і відповідь, яку я чекав і в кінцевому підсумку отримати зміст від 640 00:45:43,550 --> 00:45:48,860 harvardsucks.org або nameyourfavoriteshocksite.com, 641 00:45:48,860 --> 00:45:55,270 і ви можете бачити, як швидко буде погіршуватися. 642 00:45:55,270 --> 00:46:00,190 >> Всі ці види речей не може бути зроблено 643 00:46:00,190 --> 00:46:05,870 з цими проводового з'єднання, так як з проводовим з'єднанням 644 00:46:05,870 --> 00:46:08,710 Важко, щоб шпигувати на трафік. 645 00:46:08,710 --> 00:46:13,020 Якщо я поганий хлопець, і на одному кінці знаходиться комп'ютер 646 00:46:13,020 --> 00:46:14,460 і на іншому кінці ваш роутер - модем - 647 00:46:14,460 --> 00:46:20,180 Тільки так я можу потрапити між цьому зв'язку є насправді з'єднати комп'ютер 648 00:46:20,180 --> 00:46:22,180 В десь в середині 649 00:46:22,180 --> 00:46:26,820 чи зробити щось інше з маршрутизатором, то вниз за течією. 650 00:46:26,820 --> 00:46:33,360 Але з бездротовим, воно може бути також просто, як, сидячи в першому ряду аудиторії, 651 00:46:33,360 --> 00:46:38,200 і ви можете робити всякі неприємні речі людям в спину. 652 00:46:38,200 --> 00:46:41,570 >> Давайте поговоримо про те, як можна захиститися від деяких з цих речей. 653 00:46:41,570 --> 00:46:46,860 Люди, які розробили бездротові стандарти - 802.11 - 654 00:46:46,860 --> 00:46:50,820 вони не є німим людям будь-якого натяжкою. 655 00:46:50,820 --> 00:46:56,110 Це здорово технології і, коли він дебютував у 1999 році, 656 00:46:56,110 --> 00:47:00,780 вони вийшли з цього стандарту називається WEP. 657 00:47:00,780 --> 00:47:03,360 Тут можна побачити, коли ви намагаєтеся приєднатися до бездротової мережі, 658 00:47:03,360 --> 00:47:07,450 у вас є всі види різних параметрів безпеки. 659 00:47:07,450 --> 00:47:11,800 Це почасти біль, тому що є 6 всі разом 660 00:47:11,800 --> 00:47:14,790 і він ніколи дійсно має сенс яких 1 приєднатися. 661 00:47:14,790 --> 00:47:19,190 Це 1 на самому верху перше, що вони придумали називається WEP. 662 00:47:19,190 --> 00:47:27,960 WEP розшифровується як Wired Equivalent Privacy, я вважаю, 663 00:47:27,960 --> 00:47:31,730 Чи не бездротової протокол шифрування, який є загальним неправильним. 664 00:47:31,730 --> 00:47:36,170 Тому що він намагається дати вам еквівалентної конфіденційність і безпеку захист 665 00:47:36,170 --> 00:47:40,590 еквівалентним провідної мережі 666 00:47:40,590 --> 00:47:46,710 З WEP, що закінчується це відбувається, 667 00:47:46,710 --> 00:47:52,300 у вас є простий, маленький пароль, який ви вводите, і що служить для шифрування 668 00:47:52,300 --> 00:47:56,210 всі ваші зв'язки між вашим комп'ютером і маршрутизатором. 669 00:47:56,210 --> 00:47:58,210 >> У чому проблема з WEP, хоча? 670 00:47:58,210 --> 00:48:01,470 Пароль з WEP дійсно короткий, 671 00:48:01,470 --> 00:48:04,900 а також все, що використовує точно такий же пароль, 672 00:48:04,900 --> 00:48:07,610  і тому це дуже легко розшифрувати. 673 00:48:07,610 --> 00:48:10,580 Так що дуже швидко люди зрозуміли, що WEP була проблема, 674 00:48:10,580 --> 00:48:16,100 і єдина причина, ви бачите його з'являтися ще на цей малюк - 675 00:48:16,100 --> 00:48:18,890 Є кілька старих систем, які дійсно використовують WEP - 676 00:48:18,890 --> 00:48:25,710 те, що ви замість цього слід шукати є WPA і WPA2 навіть стандарти 677 00:48:25,710 --> 00:48:29,130 , Які були випущені пізніше. 678 00:48:29,130 --> 00:48:35,040 Ці системи є набагато краще піти на захист бездротовий доступ в Інтернет. 679 00:48:35,040 --> 00:48:41,090 Тим не менш, вони все ще мають деякі hackability. 680 00:48:41,090 --> 00:48:44,010 Є інструменти, які можуть піти і зробити це. 681 00:48:44,010 --> 00:48:47,490 Одна річ, зокрема, що може бути огидно, що 682 00:48:47,490 --> 00:48:55,370 При підключенні і аутентифікації в безпроводових маршрутизаторів і використання свого роду 683 00:48:55,370 --> 00:49:00,940 шифрованого зв'язку, з'ясовується, що хакер може легко відправити один пакет 684 00:49:00,940 --> 00:49:03,990 відключити вас від маршрутизатора, 685 00:49:03,990 --> 00:49:07,220 і як тільки вони відключені вам, що вони можуть слухати - 686 00:49:07,220 --> 00:49:11,800 вони можуть понюхати ці пакети, як ви намагаєтеся відновити зв'язок з вашим маршрутизатором. 687 00:49:11,800 --> 00:49:16,800 І з цією інформацією вони можуть піти і розшифрувати решті частини вашого спілкування. 688 00:49:16,800 --> 00:49:24,580 Це ні в якому разі ніякої безпеки поза всяким уяви. 689 00:49:24,580 --> 00:49:30,060 >> Інша річ, яку ви можете зробити, коли ви налаштовуєте бездротових мереж 690 00:49:30,060 --> 00:49:35,460 або ви приєднатися до них - ви помітите, що тут, коли я приєднанні до цієї мережі, 691 00:49:35,460 --> 00:49:37,640 він запитує ім'я моєї мережі. 692 00:49:37,640 --> 00:49:41,060 Це також відомо як SSID. 693 00:49:41,060 --> 00:49:48,610 І ви бачите тут, що в правій у мене є вікно, яке показує мені доступні SSID. 694 00:49:48,610 --> 00:49:52,690 Там в Гарвардському університеті, CS50, CS50 і персоналу мережі. 695 00:49:52,690 --> 00:49:59,180 Тепер, як багато хто з вас знав, що CS50 персоналу мережі навколо? 696 00:49:59,180 --> 00:50:01,910 Деякі з вас. Не всі з вас. 697 00:50:01,910 --> 00:50:08,800 Проблема з цим, звичайно, в тому, що якби ми не поставити це на наш список ідентифікаторів SSID, 698 00:50:08,800 --> 00:50:10,930 ніхто б і не знав про це, швидше за все. 699 00:50:10,930 --> 00:50:16,090 Я сподіваюся. Якщо ви, хлопці, все намагаються зламати в нашій бездротової мережі. 700 00:50:16,090 --> 00:50:18,700 Але це те, що ви можете зробити, це дуже важливо, коли ви налаштовуєте 701 00:50:18,700 --> 00:50:20,280 маршрутизатора в домашніх умовах. 702 00:50:20,280 --> 00:50:22,820 Це, ймовірно, не відбудеться протягом декількох років для багатьох з вас, 703 00:50:22,820 --> 00:50:29,010 але майте на увазі, що збереження SSID, що звідти і також не називаючи його 704 00:50:29,010 --> 00:50:34,630 щось супер-загальний допоможе тримати вас в більш безпечне у довгостроковій перспективі. 705 00:50:34,630 --> 00:50:38,070 >> Остаточний пару речей, які ви можете зробити. Одним з них є HTTPS. 706 00:50:38,070 --> 00:50:44,760 Якщо ви знаходитесь в Starbucks, якщо Ви знаходитеся у громадських Wi-Fi області 707 00:50:44,760 --> 00:50:52,620 і ви вирішили зайти на свій банківський рахунок, доступ до Gmail, ваш Facebook, 708 00:50:52,620 --> 00:50:56,140 Переконайтеся, що ці сполуки переходять на HTTPS. 709 00:50:56,140 --> 00:50:59,800 Це додатковий рівень безпеки, додатковий рівень шифрування. 710 00:50:59,800 --> 00:51:01,520 Одна справа мати на увазі, тут, 711 00:51:01,520 --> 00:51:04,740 Як багато хто з вас коли-небудь натиснув на основі, що великий, червоний екран, який говорить: 712 00:51:04,740 --> 00:51:07,480 "Цей сайт може бути поганим". 713 00:51:07,480 --> 00:51:09,710 Я знаю, що є. 714 00:51:09,710 --> 00:51:13,090 Це, напевно, коли ви переглядаєте все, щоб піти подивитися Батьківщина або щось подібне до цього, чи не так? 715 00:51:13,090 --> 00:51:19,900 Так. (Сміх) Так. Там ви йдете. Ми знаємо, хто стежить за Батьківщину. 716 00:51:19,900 --> 00:51:24,540 Це великий, червоний екран тут 717 00:51:24,540 --> 00:51:28,600 Часто вказується, що щось фанки відбувається. 718 00:51:28,600 --> 00:51:32,530 Іноді це просто сам сайт не є безпечним, 719 00:51:32,530 --> 00:51:35,520 але це ж великий, червоний екран з'являється, коли люди намагаються 720 00:51:35,520 --> 00:51:37,520 Кріплення мережеві атаки на вас. 721 00:51:37,520 --> 00:51:40,220 Так що якщо ви бачите, що великий, червоний екран придумали в Starbucks, 722 00:51:40,220 --> 00:51:42,440 Не натискайте через нього. 723 00:51:42,440 --> 00:51:45,350 Погані новини. Погані новини несе. 724 00:51:45,350 --> 00:51:51,490 >> Остаточний річ, яку ви можете подивитися на 725 00:51:51,490 --> 00:51:54,120 є свого роду VPN. 726 00:51:54,120 --> 00:52:00,280 Це VPN доступні через Гарвард - vpn.fas.harvard.edu-- 727 00:52:00,280 --> 00:52:03,260 і що вона робить це насправді встановлює захищене з'єднання 728 00:52:03,260 --> 00:52:06,460 між вами і Гарварда, воронки трафіку через нього, 729 00:52:06,460 --> 00:52:12,160 і, таким чином, якщо ви сидите на місці, як Starbucks 730 00:52:12,160 --> 00:52:19,030 Ви можете підключитися до Гарварду, отримуємо, що безпека руху, а потім перейдіть в Гарварді. 731 00:52:19,030 --> 00:52:21,950 Знову ж, не зрозумілий. Люди можуть отримати в центрі. 732 00:52:21,950 --> 00:52:25,850 Вони можуть почати розірвати його, але це набагато більш безпечним, ніж покладатися на безпеку 733 00:52:25,850 --> 00:52:28,620 про Wi-Fi в поодинці. 734 00:52:28,620 --> 00:52:32,570 >> Добре. В цілому, 735 00:52:32,570 --> 00:52:34,580 При налаштуванні бездротових мереж, 736 00:52:34,580 --> 00:52:37,250 коли ви виходите на використання бездротового у громадських місцях - 737 00:52:37,250 --> 00:52:43,430 будь то Starbucks, будь то Five Guys, будь то b.good, 738 00:52:43,430 --> 00:52:46,440 щось в цьому роді - скрізь, де у них є Wi-Fi - 739 00:52:46,440 --> 00:52:48,440 бути в курсі вашого оточення. 740 00:52:48,440 --> 00:52:50,440 Будьте в курсі того, що люди можуть зробити. 741 00:52:50,440 --> 00:52:53,890 І бути безпечним. Не отримати доступ до банківського рахунку. 742 00:52:53,890 --> 00:52:58,740 Це може бути гірке розчарування, якщо хтось з'являється з паролем пізніше. 743 00:52:58,740 --> 00:53:05,480 При тому, що йдуть малинові! І я збираюся перетворити речі назад до Давида останнє слово. 744 00:53:05,480 --> 00:53:11,270 (Оплески) 745 00:53:11,270 --> 00:53:14,360 >> [Давид] Я думав, я б поділитися одне з особистого досвіду. 746 00:53:14,360 --> 00:53:19,940 Інструмент ви хотіли б грати з - хоча Apple, в значній мірі викорінити це питання 747 00:53:19,940 --> 00:53:22,710 якщо ви оновили програмне забезпечення з тих пір - 748 00:53:22,710 --> 00:53:26,670 , А до кінця цього насправді не бути в змозі довіряти програмне забезпечення, яке ми використовуємо, 749 00:53:26,670 --> 00:53:33,270 і точками Нейта, будучи в стані нюхати зовсім небагато з того, що роблять інші люди 750 00:53:33,270 --> 00:53:37,010 там - це частина програмного забезпечення, яка вийшла приблизно рік-і-півтора тому. 751 00:53:37,010 --> 00:53:39,010 [IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] 752 00:53:39,010 --> 00:53:41,010 Протягом деякого часу, ITunes - до iCloud, коли ви були синхронізацію плеєрах або Iphones або 753 00:53:41,010 --> 00:53:45,570 або Ipads з Itunes - в інтересах резервних копій, 754 00:53:45,570 --> 00:53:48,340 що ваш iPhone та інших пристроїв ці робили протягом деякого часу 755 00:53:48,340 --> 00:53:50,340 з використанням даних GPS. 756 00:53:50,340 --> 00:53:52,710 >> Ви всі знаєте, може бути, що ваш iPhone'ов і Андроїди і Windows Mobile телефонів 757 00:53:52,710 --> 00:53:55,410 і як у ці дні можна відстежувати, де ви знаходитеся в інтересах показує вам карти 758 00:53:55,410 --> 00:53:59,440 і подібні - добре, що Apple, і ці інші компанії роблять це 759 00:53:59,440 --> 00:54:02,650 вони зазвичай відстежують практично скрізь ви насправді було в інтересах 760 00:54:02,650 --> 00:54:05,380 поліпшення якості обслуговування. 761 00:54:05,380 --> 00:54:07,170 Один з них, ви можете отримати більше цільової реклами і т.п., 762 00:54:07,170 --> 00:54:10,740 а два, вони також можуть з'ясувати, де є бездротові точки доступу в світі, 763 00:54:10,740 --> 00:54:14,780 і це може допомогти в географічному положенні - на зразок тріангуляції положення людей. 764 00:54:14,780 --> 00:54:18,520 >> Коротше кажучи, всі ми йшли антени для деякої кількості часу. 765 00:54:18,520 --> 00:54:22,180 На жаль, Apple зробила дизайнерське рішення - або їх відсутність - 766 00:54:22,180 --> 00:54:26,590 не зашифровані цю інформацію, коли вона була бути резервні копії в Itunes. 767 00:54:26,590 --> 00:54:30,330 І те, що дослідник безпеки виявив, що це був просто величезний XML-файл - 768 00:54:30,330 --> 00:54:33,810 величезний текстовий файл - сидячи в програмному забезпеченні людей Itunes, 769 00:54:33,810 --> 00:54:35,400 і якби ви були просто трохи цікаво, 770 00:54:35,400 --> 00:54:38,990 Ви могли б піти колупатися історію вашого чоловіка, історія вашого сусіда по кімнаті, 771 00:54:38,990 --> 00:54:41,050 вашого брата історії і т.п., 772 00:54:41,050 --> 00:54:44,590 і завдяки вільне програмне забезпечення, ви можете побудувати всі ці GPS координати - 773 00:54:44,590 --> 00:54:46,590 широті і довготі. 774 00:54:46,590 --> 00:54:48,590 >> Отже, я насправді зробив це з моїм власним телефоном. 775 00:54:48,590 --> 00:54:51,210 Я підключений в моєму телефоні, і звичайно, моя версія Itunes не був зашифрований в той час, 776 00:54:51,210 --> 00:54:53,900 і те, що я був в змозі бачити, були мої власні шаблони. 777 00:54:53,900 --> 00:54:56,970 Ось Сполучених Штатів і кожен з цих синіх кіл являє 778 00:54:56,970 --> 00:55:01,670 де мені довелося були за ці попередні місяці володіння даного телефону. 779 00:55:01,670 --> 00:55:04,940  Я проводжу багато часу, звичайно, в Північно-Сходу, деякий час в Каліфорнії, 780 00:55:04,940 --> 00:55:08,690 недовгою поїздки до Техасу, і якщо потім збільшити на цьому - 781 00:55:08,690 --> 00:55:11,120 це все ніби добре і цікаво, але я знав це. 782 00:55:11,120 --> 00:55:13,890 Більшість моїх друзів знали про це, але якщо у вас зануритися в більш глибокий, 783 00:55:13,890 --> 00:55:17,090 Ви бачите, де я проводжу більшу частину свого часу на північному сході. 784 00:55:17,090 --> 00:55:20,330 Якщо у вас зачепити деякі знайомі вид міста - 785 00:55:20,330 --> 00:55:24,670 це великий, синій пляма фарби по суті по центру Бостона, 786 00:55:24,670 --> 00:55:29,510 а потім я проводжу небагато часу в передмісті випромінююча з Бостона. 787 00:55:29,510 --> 00:55:32,780 Але я також роблю досить багато консультацій в цьому році. 788 00:55:32,780 --> 00:55:36,090 І в цьому році на східному узбережжі, і ви можете бачити мене 789 00:55:36,090 --> 00:55:41,920 і мій iPhone в кишені подорожі туди і назад між Бостоном і Нью-Йорку 790 00:55:41,920 --> 00:55:47,510 і Філадельфії далі вниз, а також проводити трохи відпустку 791 00:55:47,510 --> 00:55:50,340 на мисі, який є маленькою рукою там. 792 00:55:50,340 --> 00:55:53,030 Таким чином, кожна з цих точок являє собою деяке місце, де я був, 793 00:55:53,030 --> 00:55:56,970 і абсолютно непомітно для мене, вся ця історія була просто сидів там 794 00:55:56,970 --> 00:55:58,410 на моєму робочому столі комп'ютера. 795 00:55:58,410 --> 00:56:00,470 Якщо Ви масштабу - це насправді було трохи турбує. 796 00:56:00,470 --> 00:56:04,190 Я не пам'ятав, щоб коли-небудь бути в Пенсільванії, що конкретний рік. 797 00:56:04,190 --> 00:56:07,840 Але я хоч трохи складніше про це, і я зрозумів, ох, це було в тому, що поїздка 798 00:56:07,840 --> 00:56:11,160 і, звичайно ж, мій телефон зловив мене. 799 00:56:11,160 --> 00:56:14,180 >> Apple, з тих пір зашифрована ця інформація, 800 00:56:14,180 --> 00:56:17,380 але це занадто просто свідчення того, наскільки багато інформації, яка збирається про нас, 801 00:56:17,380 --> 00:56:20,850 і як легко - на краще чи на гірше - це прийнятно. 802 00:56:20,850 --> 00:56:23,340 Один з винос сподіваюся, від розмов Роба, від розмов Нейта 803 00:56:23,340 --> 00:56:27,370 і мало візуальних, як це сьогодні просто щоб бути все більш усвідомлюють цього 804 00:56:27,370 --> 00:56:31,160 так що навіть якщо - як точка Роба - we're роду різьбові, чи не так? 805 00:56:31,160 --> 00:56:33,920 Там не багато ми можемо зробити, коли справа доходить до деяких з цих загроз, 806 00:56:33,920 --> 00:56:37,130 але в кінці дня ми повинні довіряти щось або когось 807 00:56:37,130 --> 00:56:38,510 якщо ми дійсно хочемо використати ці технології. 808 00:56:38,510 --> 00:56:43,150 Принаймні, ми можемо приймати обгрунтовані рішення і розрахункові рішення або не 809 00:56:43,150 --> 00:56:46,390 Ми фактично повинні перевірити це особливо відчутно рахунки 810 00:56:46,390 --> 00:56:49,330 або ми повинні насправді бути відправка підозрюю, що трохи миттєве повідомлення 811 00:56:49,330 --> 00:56:52,180  У Wi-Fi навколишнього середовища, як це. 812 00:56:52,180 --> 00:56:54,990 >> Таким чином, з урахуванням сказаного, просто не залишиться один тест, одна лекція залишається. 813 00:56:54,990 --> 00:56:57,740 Ми будемо бачити Вас в середу, то в понеділок. 814 00:56:57,740 --> 00:57:02,100 (Оплески і вигуки) 815 00:57:02,100 --> 00:57:06,100 [CS50TV]