После того как вы избавитесь от диска, вас больше не волнует, что файлы на нем подделаны, но конфиденциальные данные в них по-прежнему подвержены разглашению. Шифрование жестких дисков и других хранилищ данных – хорошее начало для защиты, и это очень надежная защита, если делать ее аккуратно.
Резервное копирование на удаленную площадку – это крайний случай данных в состоянии покоя. Получить уверенность в том, что манитные ленты хранятся в безопасности или уничтожены, может быть непросто, поэтому шифрование записей означает, что уничтожение (или потеря) ключа технически так же эффективно, как и уничтожение самой ленты. Разработка криптографического хранилища ключей, которое было бы столь же надежным, как и лежащие в его основе механизмы резервного копирования, является сложной задачей. Именно эта сложность, а не требования сюжета, заставила Империю хранить данные в незашифрованном виде в архивах Скарифа.
Многолетняя практика АНБ по уничтожению физических устройств с каждым годом кажется все более пророческой.
Данные в движении – это данные, которые передаются по радио, по проводам или каким-либо другим способом, например на информационном носителе из рук в руки, на грузовике или спасательной капсуле. (Дроид в спасательной капсуле – это всего лишь данные в движении.) Как бы ни перемещались данные, вы не можете полагаться на операционную систему или другую программу для их защиты. Данные, перевозимые курьером, также могут рассматриваться как данные в движении, и защита данных при этом может быть слабее. Корабль принцессы Леи «Тантив IV» защищен меньше, чем база повстанцев. Курьер с портфелем, полным криптографических ключей, должен поддерживать дисциплину в течение длительного периода времени, чтобы сохранить ключи в безопасности.
Данные в движении могут быть раскрыты по причине того, что они отправлены в открытом виде, из-за сбоя в криптографии или в маршрутизации. Порой раскрытие случается потому, что канал не защищен, а порой потому, что сообщения не защищены. (Подробнее о каналах и сообщениях см. главу 2 «Вмешательство и целостность».) Можно также представить раскрытие метаданных нескольких типов: наличие и время связи, адреса, количественные характеристики (объем и частота) и даже инструментарий. Простой для понимания пример метаданных об инструментах заключается в том, что X (Twitter) рассказывает, какая операционная система и какой инструмент используются для твитов. По крайней мере, один производитель телефонов на базе Android наказал сотрудника за твиты с iPhone.
Как обсуждалось в главе 2, разница между каналом и сообщением очень важна. Канал передает сообщения. Например, сообщения электронной почты передаются по каналу SMTP. Вы можете зашифровать сообщения с помощью PGP, S/MIME или других инструментов шифрования электронной почты, а также зашифровать канал SMTP с помощью StartTLS. Вы должны делать и то и другое, потому что канал защищает заголовки и содержимое при перемещении сообщений между серверами, в то время как шифрование сообщений защищает содержимое, хранящееся на этих серверах. Аналогичным образом в главе 1 была представлена идея угрозы «обезьянка посередине» (MITM), когда сообщения направляются злоумышленнику, и он может просто наблюдать, а не вмешиваться. Аутентификация является особенно важным типом сообщений, которые необходимо защитить: отправка незащищенных паролей – это как в ужасные 1990-е годы.
Существует несколько распространенных причин, по которым данные, как правило, не шифруются. Иногда инженер даже не задумывается об этом. В других случаях инженер считает, что приемники слишком дороги или сложны в сборке или установке. Совместимость или функционирование также могут затруднить развертывание. (Примечательно, что еще в 2014 году видео с дронов Predator не шифровалось [Schactman, 2012; Pocock, 2015].) Сбои в работе криптовалют происходят из-за плохого выбора или оценки алгоритма. Во время Второй мировой войны в Германии было несколько оценок надежности криптосистемы «Энигма». Все эти оценки привели к неверным выводам. То, что приписали совпадению, на самом деле было изобретением союзниками компьютера. Хотя ваши противники, вероятно, тратят меньше и вряд ли у них есть Алан Тьюринг, у них может быть кто-то почти такой же гениальный. Чаще, чем плохие алгоритмы, встречаются плохие методы управления ключами. Ключи подвержены всем угрозам разглашения, описанным в этой главе, и их гораздо легче украсть, чем другую информацию. Например, 2048-битный ключ можно легко закодировать в двух твитах старого образца; если вы кодируете 8 байт на DNS-запрос, то это всего лишь 32 поиска для таких доменов, как ifgdnexp.threatsbook.com. При большем количестве поисков имена могут выглядеть еще менее подозрительными. Эти каналы менее полезны, если вы хотите украсть копию открытого текста.
Поразительно, но не вся информация проходит через интернет. Есть и другие системы, в которых до сих пор используются радиоприемники или кабели. Иногда люди путают «частный» характер сети с функциями «конфиденциальности». Существует долгая история ошибочных предположений о том, что приемники (или передатчики) будут слишком сложными в сборке или установке. Это повлияло на сотовые телефоны, системы глобального позиционирования, подводные кабели и многое другое.
При надежном шифровании данных с помощью хорошо управляемых ключей могут быть захвачены метаданные, которые раскрывают факт взаимодействия. Никакое шифрование не поможет ботану, который ежедневно обменивается электронными письмами с лидером повстанцев Мон Мотмой. Конечно, эти большие файлы могут быть фотографиями внуков или еще какой-нибудь совершенно невинной информацией. В этом-то и заключается проблема с метаданными.
Метаданные сообщений могут быть интерпретированы. Почему кто-то постоянно звонит на горячую линию по вопросам наркомании? Является ли он зависимым, получает ли помощь для близкого человека или создает программу помощи для своего работодателя? Способность разных наблюдателей или участников по-разному описывать один и тот же набор наблюдений часто называют эффектом Расёмона, в честь прекрасного одноименного фильма 1950 года. Некоторые наблюдатели даже утверждают, что «Расёмон» лучше, чем «Звездные войны», или что его режиссер Куросава оказал большое влияние на Джорджа Лукаса. Все это было бы вопросом интерпретации, если бы Лукас не признал влияние Куросавы.
Если вы думаете, что беспокойство по поводу метаданных преувеличено, я закончу цитатой Майкла Хейдена, бывшего главы АНБ: «Мы убиваем людей на основе метаданных» [Ferran, 2014].
Границы понятий «в покое / в движении»
Коробка магнитных лент с резервными копиями падает с грузовика. Электронное письмо сохраняется на диске. В этих двух случаях данные находятся в состоянии покоя или в движении? Важно, чтобы вы не зацикливались на такого рода вопросах. Причина для беспокойства есть: метаданные в твите привели к проблеме. Вам следует думать о том, где существуют данные в вашей системе, куда они передаются и что это может означать. Моя книга о моделировании угроз начинается с цитаты статистика Джорджа Бокса: «Все модели неправильны; некоторые модели полезны» (Threat Modeling: Designing for Security [Wiley, 2014]).
Процессы рассказывают миру о себе самыми разными способами. Процессы, которые прослушивают сеть, часто выдают баннер с сообщением вроде «Sendmail 4.6.2, работающий на 32-битной OpenVMS Alpha, уязвим к CVE-2002-1234». Ладно, это небольшое преувеличение. Вам нужно выполнить поиск по баннеру, чтобы получить список известных уязвимостей, часть из которых может быть пропатчена без изменения номера версии. Даже если ваш процесс не выдает истинный баннер, у него, вероятно, есть заголовки, которые меняются с изменением версии.
Поведения процесса часто бывает достаточно, чтобы идентифицировать его. Например, возможно, он одинаково реагирует на HELO и helo, но не на ELHO и elho. Возможно, ваш брандмауэр автоматически разрывает соединения или, отправляет обратно пакет FIN или RST. Злоумышленники будут каталогизировать такие изменения для дальнейшего фингерпринтинга, то есть использовать подобное поведение для идентификации данного программного обеспечения и применять эту идентификацию для фокуса следующего этапа атаки.
Процессы содержат данные. Вы используете Word, чтобы открыть документы об увольнении, и вы используете EmpireCAD, чтобы взглянуть на планировку «Звезды смерти».
После этого данные процессы, очевидно, имеют копию данных, но процессы также содержат данные, относящиеся к безопасности, в том числе следующие:
• криптографические ключи;
• случайные числа;
• информация о распределении памяти;
• авторизованные дескрипторы файлов или сокетов.
Каждый из них должен оставаться в секрете. Распределение памяти важно, когда оно рандомизируется для защиты от атак (например, рандомизация распределения адресного пространства, описанная далее в главе 7 «Предсказуемость и случайность») или когда конец стека содержит «канарейку» для предотвращения перезаписи. Авторизованные дескрипторы файлов могут оставаться открытыми, когда процесс разветвляется и выполняет другой процесс, или могут быть иным образом доступны другому объекту.
Также существуют угрозы разглашения информации, когда процесс намеренно отправляет данные в логи или файлы отладки. В качестве простых примеров можно привести пароли, введенные вместо имен пользователей, но данные о подключении (по IP-адресу, имени пользователя или имени компьютера) обычно регистрируются. Разные системы по-разному подходят к конфиденциальности системных журналов. В Windows есть отдельный журнал безопасности, который доступен для записи только процессами с привилегией SeAuditPrivilege, и для его чтения требуется SeSecurityPrivilege [Microsoft, 2017]. Unix имеет множество файлов журналов с различными разрешениями. На уровне приложений необходимо подумать о том, что и где регистрируется и кому и для чего нужен доступ к этому.