Читать книгу «Кибергейт: Как выжить в мире умных вещей» онлайн полностью📖 — Брюса Шнайера — MyBook.

Часть I
Тенденция

Пару лет назад мне понадобилось заменить термостат. Я много путешествую, поэтому в свое отсутствие хотел экономить электричество. Новый термостат представлял собой подключенный к интернету компьютер, которым можно управлять со смартфона. Переключать программы, следить за температурой – и все удаленно. Очень удобно.

В то же время обнаружилось, что при использовании термостата могут возникнуть проблемы. В 2017 г. некий хакер хвастался в интернете, что удаленно взломал умный термостат Heatmiser (у моего устройства другой производитель){50}. Другая группа кибервзломщиков продемонстрировала возможности вируса-вымогателя, созданного для атаки на термостаты двух популярных американских брендов (опять же, моего среди них нет), и потребовала определенную сумму в биткойнах за его деактивацию{51}. Если хакеры cумели внедрить вирус-вымогатель, то они могли бы включить термостат в сеть ботов и использовать его для атаки на другие интернет-сайты. Это был исследовательский проект, в ходе которого ни один термостат не пострадал, а все инженерные коммуникации остались в целости и сохранности. Однако опасность, что в любой момент могут атаковать именно мой термостат и это повлечет за собой непредсказуемые последствия, сохраняется.

Когда речь заходит о безопасности интернета+, нужно помнить о двух вещах.

Вещь первая: принципы обеспечения безопасности наших компьютеров и смартфонов становятся принципами обеспечения безопасности абсолютно всего. Поэтому, когда вы задумываетесь о незащищенности ПО, уязвимости входа в систему, аутентификации, обновлений, то есть о том, что мы будем обсуждать в части I, – все это относится не только к компьютерам и телефонам, но и к термостатам, автомобилям, холодильникам, имплантированным слуховым аппаратам, кофейникам, уличному освещению, дорожным знакам и вообще ко всему. Компьютерная безопасность становится всеобщей безопасностью.

Вещь вторая: уроки, извлеченные из практической реализации принципов компьютерной безопасности, касаются абсолютно всего. За последние несколько десятилетий специалисты в сфере компьютерной безопасности столкнулись с совершенно новым явлением – цифровой гонкой вооружений, многое узнали о природе компьютерных сбоев и осознали важность устойчивости системы (обо всем этом мы обязательно поговорим). Ранее подобного рода уроки имели отношение исключительно к компьютерам. Сейчас они имеют отношение абсолютно ко всему.

Проблема обеспечения компьютерной безопасности приобрела иные масштабы. Риски, связанные с проникновением интернета во все сферы нашей жизни, поистине огромны. Реальной угрозой нашего времени становится техническая возможность удаленно воздействовать на любые системы, будь то GPS-навигация мирового судоходства{52}, двигатели самолетов{53} и автомобилей{54}, электростанции, заводы по переработке токсичных отходов, медицинские приборы{55}, что неизбежно спровоцирует сбой в этих системах и приведет к гибели множества людей. На карту поставлена безопасность наций и целых государств. Не к столь катастрофичным, но оттого не менее значимым последствиям способно привести вмешательство хакеров в процесс электронного голосования на выборах, атака на умные дома с целью нанести ущерб имуществу конкретных людей{56}, взлом банковской системы ради экономического коллапса.

Цифровая безопасность – это гонка вооружений между атакующей и обороняющейся сторонами. Подумайте о борьбе между рекламодателями и противниками рекламы. Если вы используете блокировщик рекламы (по всему миру так поступают около 600 млн человек){57}, то наверняка заметили, что некоторые сайты применяют программы – антиблокировщики рекламы, которые препятствуют ознакомлению с контентом до тех пор, пока вы не отключите антибаннер{58}. Подумайте о борьбе между спамерами, разрабатывающими новые методы принудительной рассылки навязчивой рекламной информации, и компаниями – их противниками{59}. Мошенничество с кликами – примерно то же самое: жулики используют различные трюки, чтобы убедить крупные компании, такие как Google, в том, что по ссылкам на платные рекламные объявления переходят реальные люди и что Google задолжал деньги мошенникам, тогда как Google пытается их вычислить. Никогда не прекращается гонка вооружений в области мошенничества с кредитными картами: атакующая сторона совершенствуется в методах взлома кредиток, а компании, их выпускающие, совершенствуют способы защиты. Нападениям со стороны хакеров подвергаются и банкоматы: военные действия ведутся с помощью скиммеров, миниатюрных устройств, которые крадут информацию с «пластика»{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 случаях, когда интернет-трафик перенаправлялся на маршрутизаторы белорусских или исландских провайдеров{77}. В 2014 г. турецкое правительство использовало этот способ, чтобы подвергнуть цензуре отдельные сегменты интернета. В 2017 г. трафик нескольких основных американских операторов связи был ненадолго перенаправлен к неизвестному интернет-провайдеру{78}. Не думайте, что подобные атаки практикуют исключительно службы государственных органов: в 2008 г. на Defcon[7] было продемонстрировано, что это может сделать кто угодно{79}.

В самом начале эры интернета мерами его защиты были действия, предотвращающие физические атаки на сеть. Благодаря этому отказоустойчивая архитектура интернета обрабатывала сбои или повреждения серверов и соединений, но не справлялась с систематическими атаками на базовые протоколы. Многие из них остаются незащищенными до сих пор. Не обеспечивается безопасность в строке «от кого» в электронной почте: кто угодно может выдать себя за кого угодно. Отсутствует безопасность в службе доменных имен (Domain Name Service – DNS), которая переводит интернет-адреса из понятных человеку названий в воспринимаемые компьютером адреса, а также в протоколе сетевого времени (Network Time Protocol – NTP), призванном синхронизировать процессы. Небезопасны и оригинальные протоколы языка разметки гипертекста HTML (HyperText Markup Language), лежащие в основе работы Всемирной паутины, и даже протокол защищенной передачи гипертекстовых данных https (HyperText Transfer Protocol Secure). Атакующим по силам нарушить любой.

Протоколы разрабатывались в 1970-е – начале 1980-х гг., когда предполагалось, что интернет будет использоваться рядом исследовательских организаций, но не для решения глобальных или критически важных задач. Профессор Массачусетского технологического института и один из создателей раннего интернета Дэвид Кларк вспоминает: «Не нужно считать, что мы не задавались вопросом безопасности. Мы осознавали, что есть люди, которым не следует доверять, и полагали, что сможем исключить их из процесса пользования интернетом»{80}. Действительно, именно так все и было.

Еще в 1996 г. бытовало мнение, что безопасность – сфера ответственности конечных точек, то есть компьютеров, за которыми сидят люди, а не самой сети. Вот что было написано в том же 1996 г. в рекомендациях Инженерного совета интернета (Internet Engineering Task Force – IETF) – организации, определяющей стандарты индустрии: «Желательно, чтобы интернет-операторы защищали приватность и аутентичность трафика, но это не требование архитектуры. Конфиденциальность и аутентификация – ответственность конечных пользователей, она должна реализовываться в протоколах, которые они используют. Конечные точки не должны зависеть от конфиденциальности или добросовестности операторов. Последние могут выбрать предоставление определенного уровня защиты, но это вторично по отношению к ответственности конечных пользователей по защите самих себя»{81}.

И это неправильно. В главе 6 мы поговорим о сквозной сетевой модели, при которой сеть не должна нести ответственность за безопасность, как предписывал IETF. Но люди настолько привыкли не учитывать обстоятельства, что не приняли в расчет даже аспекты безопасности, которые имело смысл включать только в сеть.

Исправить ситуацию оказалось очень сложно. Еще в 1990-е гг. IETF, чтобы предотвратить атаки, выпустил предложения по укреплению безопасности BGP, но те оказались уязвимы в части коллективного принятия безопасной системы. Дело в том, что защищенная система будет эффективной и экономически выгодной, если ее примет достаточное количество сетей. Те же, кто включается первым, несет финансовые издержки. Результатом такой ситуации становится ложный стимул: каждый предпочитает подождать и предоставить другим возможность стать первым{82}. В результате мы имеем то, что имеем: спустя 20 лет после того, как мы впервые заговорили о проблеме безопасности интернета, решения по-прежнему нет.

Аналогичным образом обстоит дело с модулями безопасности службы доменных имен – DNSSEC[8] (Domain Name System Security Extensions). Это обновление, которое решило бы проблемы безопасности протокола DNS. С тех пор как 20 лет назад технологическое сообщество приняло решение внедрить это обновление, дело с места не сдвинулось: все выжидают, когда большинство сайтов примут DNSSEC и тем самым подтвердят его эффективность{83}.

Многофункциональность компьютеров означает, что против нас могут использоваться любые методы

Помните телефоны, какие стояли в доме у родителей или у бабушки с дедушкой? Те аппараты разрабатывались и изготавливались как телефон, и их функции не выходили за рамки возможностей, заложенных производителем. Сравните их с устройством в вашем кармане. Это не совсем телефон – это компьютер с телефонным приложением. И, как вы знаете, он умеет намного больше, чем обеспечивать аудиокоммуникацию. Он и фотографирует, и снимает видео, и позволяет обмениваться сообщениями, и читать электронные книги, и много чего еще. Выражение «для этого есть приложение» нельзя использовать по отношению к старомодному телефону, зато вполне естественно произнести в адрес компьютера, который умеет совершать телефонные звонки.