{60}, с помощью камер, считывающих ПИН-коды, а также удаленным способом – через интернет{61}.
Следовательно, чтобы разобраться с безопасностью интернета+, нам следует осознать, насколько в принципе сегодня защищен интернет. Следует выявить и проанализировать технологические, экономические, политические и криминальные тенденции развития цифрового мира и благодаря этому понять, что ожидает нас в ближайшем будущем.
Глава 1Компьютеры по-прежнему уязвимы
Соблюдение требований безопасности – это всегда компромисс. Иногда компромисс между безопасностью и удобством эксплуатации, время от времени – между безопасностью и функциональностью, а бывает, что компромисс между безопасностью и быстродействием. Наше стремление к комфорту, выбор в пользу него в ущерб безопасности – одна из главных причин уязвимости компьютеров. Справедливости ради стоит признать, что обеспечение безопасности компьютеров, как и информационной системы в целом, – задача поистине сложная.
В 1989 г. эксперт по безопасности интернета Юджин Спаффорд произнес знаменитую фразу: «Единственный по-настоящему безопасный компьютер – тот, что выключен, залит бетоном и под круглосуточной вооруженной охраной находится в герметичном помещении, стены которого обшиты свинцовыми листами. Но даже тогда меня одолевают сомнения»{62}. С тех пор прошло несколько десятков лет, однако почти ничего не изменилось.
Слова об уязвимости правдивы как по отношению к персональным компьютерам, изолированным от интернета, так и по отношению к устройствам, встроенным в приборы и подключенным к сети. Не так давно бывший директор Национального центра кибербезопасности США Род Бекстром сделал следующее умозаключение: 1) всё, что подключено к интернету, уязвимо; 2) к интернету подключается всё; 3) всё становится уязвимым{63}.
Защита компьютера настолько сложна, что у каждого исследователя в области безопасности на этот счет существует собственный афоризм. Вот мое изречение от 2000 г.: «Безопасность – это процесс, а не вещь»{64}.
Тому есть множество причин.
Я играю в Pokémon GО, и приложение часто сбоит – вылетает. Работа его крайне нестабильна, но не то чтобы подобное было чем-то из ряда вон выходящим. Каждому из нас приходилось сталкиваться с аналогичной проблемой либо при работе на компьютере, либо в процессе пользования смартфоном. Чтобы защитить хранящиеся в устройствах данные, мы создаем резервные файлы или используем системы, которые делают это автоматически. И даже тогда мы рискуем потерять важную информацию. Мы привыкли снисходительно относиться к издержкам «общения» с техникой такого типа, а потому, не ожидая от нее идеальной работы и внутренне готовясь к сюрпризам разного рода, пусть даже таковые нас совсем не радуют, перезагружаем компьютеры, когда те зависают.
Большинство компьютеров снабжены плохим ПО, потому что за редким исключением рынок не поощряет высококачественные программы. «Хорошо, быстро, дешево – выберите любые две из трех составляющих». Выбросить на рынок недорогую и быстро сделанную программу куда проще, чем корпеть над созданием качественного продукта. Что примечательно, на протяжении какого-то времени большинство из нас считает плохо написанное ПО достаточно хорошим.
Такой подход прижился в области компьютерных технологий и проявился на всех ее уровнях. Для среднестатистической компании гораздо важнее получить продукцию с опережением графика и в рамках бюджета, нежели приобрести качественное ПО. Университеты c большей вероятностью ограничатся кодом, который едва работает, чем приобретут надежную программу. И мы как потребители ПО чаще всего не готовы платить дополнительные деньги за его улучшение.
Современные программы содержат мириады ошибок, некоторые из них – неотъемлемая часть сложного ПО{65} (подробнее об этом позже), однако большинство возникает на начальном этапе создания программы и не исправляется в процессе разработки. Соответственно, к потребителю ПО поступает с ошибками. Способность работать с некачественным кодом свидетельствует о нашем мастерстве.
В 2002 г. руководство компании Microsoft всерьез задумалось над тем, чтобы свести к минимуму количество уязвимостей в системе безопасности своих программ, и на улучшение процесса разработки ПО ушло целое десятилетие{66}. Продукты Microsoft все еще несовершенны – это за пределами существующих на сегодняшний день технологических возможностей, – но качество их намного выше среднего уровня. Компания Apple славится своим высококачественным ПО{67}. Как и Google. Некоторые небольшие, но критически важные сегменты ПО с самого начала отличались высоким уровнем исполнения. Например, программы для авионики написаны в соответствии с очень жесткими стандартами качества. Также и в НАСА: контроль за качеством ПО космических челноков обязателен{68}.
Столь разное отношение к вопросам безопасности ПО у ИТ-специалистов разных отраслей продиктовано мерой ответственности и степенью рисков. Стратегически важные сферы имеют и более высокую степень защиты. Именно поэтому в НАСА действуют консервативные стандарты гарантии качества. На бытовом же уровне, пользуясь такими относительно высококачественными операционными системами, как Windows, macOS, iOS и Android, мы постоянно их обновляем и пропатчиваем.
Некоторые ошибки (баги) в ПО, безусловно, – уязвимости в системе безопасности, чем не преминут воспользоваться атакующие. Например, ошибка переполнения буфера позволяет злоумышленнику захватить контроль над компьютером и принудить его выполнять произвольные команды{69}. И таких багов множество. Точное количество не поддается исчислению. Мы не знаем, сколько ошибок следует рассматривать в качестве уязвимостей и сколько уязвимостей можно потенциально использовать{70}. На эту тему ведется самый настоящий диспут. Я твердо уверен, что большие программные системы содержат тысячи уязвимостей, а для взлома достаточно всего одной. Иногда ее просто найти, иногда – нет.
И хотя уязвимостей много, нельзя сказать, что они равномерно распределены по программе. Есть такие, которые выявить легко, и такие, которые выявить трудно. Инструменты, автоматически обнаруживающие и устраняющие или исправляющие целые классы уязвимостей, существенно повышают безопасность ПО. Очевидно, что, если кто-то выявил уязвимость, велика вероятность, что вскоре ее обнаружит (или уже обнаружил) другой. Heartbleed – большая брешь в безопасности интернета. Эту ошибку упускали из виду целых два года{71}, зато открыли с разницей в несколько дней два исследователя, действующих независимо друг от друга. Уязвимости Spectre и Meltdown в компьютерных чипах существовали по меньшей мере лет десять, пока в 2017 г. их не обнаружили сразу несколько человек{72}. Я не нахожу объяснения этому феномену, поэтому ограничимся констатацией того факта, что параллельное обнаружение уязвимостей – это реальность. К этому вопросу мы вернемся в главе 9, когда будем говорить о правительствах, накапливающих программные уязвимости с целью шпионажа и создания кибероружия.
Взрывное увеличение числа устройств, взаимодействующих с интернетом вещей, означает, что количество программ, строк кодов, а значит, ошибок и уязвимостей станет расти в геометрической прогрессии. Сохранение же дешевизны умных вещей – это привлечение к их созданию малоквалифицированных программистов, плохая отладка процесса разработки ПО и частое повторное использование кодов, то есть в случае широкого распространения уязвимости вред от нее будет огромным{73}.
Чтобы обезопасить устройства, которые мы используем в повседневной жизни (компьютеры, телефоны, автомобили, медицинские приборы, системы управления домом), от вторжения хакеров, недостаточно находить и устранять уязвимости в ПО. Нужно подходить к процессу создания ПО с совершенно других позиций. За этим будущее системы безопасности.
В апреле 2010 г. часть мирового интернет-трафика (15 %) изменила направление и прошла через серверы в Китае. Длилось это около 18 минут{74}. Мы не знаем, произошло ли это по распоряжению тамошнего правительства с целью протестировать возможности перехвата или хакеры действовали по собственной инициативе, зато знаем, как действовали атакующие: они нарушили протокол динамической маршрутизации (Border Gateway Protocol – BGP).
Протокол этот определяет, как интернет распределяет трафик по кабелям и соединительным узлам между интернет-провайдерами, странами и континентами. Чтобы система работала, аутентификация не требуется, а еще все безоговорочно доверяют любой информации о скорости и перегрузке каналов связи{75}. Поэтому BGP можно манипулировать. Из секретных документов, обнародованных работавшим на правительство [Соединенных Штатов] Эдвардом Сноуденом, мы узнали, что Агентство национальной безопасности США (АНБ) использует эту лазейку, чтобы «прослушивать» определенные потоки данных{76}. В 2013 г. некая компания сообщила о 38 случаях, когда интернет-трафик перенаправлялся на маршрутизаторы белорусских или исландских провайдеров