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