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]