Существуют также способы, с помощью которых процесс может случайно отправить информацию в хранилище, включая дамп ядра, файл подкачки (swapping) или использование фрагмента собственной памяти для перезаписи конфиденциальных данных. Подкачка – это стратегия, используемая операционными системами, чтобы притвориться, что медленный жесткий диск на самом деле является оперативной памятью и что у машины больше памяти, чем есть на самом деле. Это было более заметно, когда память была дорогой, диск – медленным, а алгоритмы подкачки были менее продуманы, что в большинстве случаев означает, что это, вероятно, все еще происходит на дешевых устройствах. Если ваша операционная система не позволяет пометить память как «непригодную для отправки в файл подкачки», то секреты, такие как криптографические ключи, могут остаться в файлах подкачки, когда отключится питание машины.
Существуют также атаки, которые заставляют процесс выдавать информацию. Иногда это просто плохо оформленные сообщения об ошибках: «cannot connect to database with username dba and password secret1!». Иногда на информацию влияет злоумышленник. Ошибка Heartbleed позволяла клиенту запросить сообщение определенного размера для возврата, и код копировал это количество данных из памяти (вместо того чтобы заполнять память нулями, счетчиком или 0xdeadbeef). Скопированная память могла содержать секреты, такие как криптографические ключи, комбинации имени пользователя и пароля или другую произвольную информацию. Положительным моментом было то, что злоумышленник с трудом мог предсказать, что именно вернется, или повлиять на это. Отрицательным моментом было то, что атака допускала практически неограниченное количество запросов.
Существует огромное количество информации о том, кто с кем разговаривает и кто слушает. На какие аккаунты вы подписаны в X (Twitter)? К каким группам вы присоединились на Facebook? Даже если вы не взаимодействуете и не публикуете посты, ваш выбор может быть использован для того, чтобы сделать выводы. Это могут быть хорошие или плохие выводы, но поскольку эта книга об угрозах, мы сосредоточимся на активном участии Люка Скайуокера в Восстании и его готовности говорить о своем желании присоединиться к повстанцам и сражаться с Империей. Кроме того, в круг его общения входит подозреваемый радикал, которого он называет Старый Бен, беглый религиозный фанатик, известный как Оби-Ван Кеноби. (Здесь я опираюсь на мнение блогера, пишущего под ником Comfortably Smug [Smug, 2015].)
Связанные данные
Данные связываются самыми разными способами. Например, по адресу я могу найти список тех, кто живет в этом месте. Адрес может быть использован для определения расы, дохода и других демографических факторов. Я могу сделать вывод о родстве между жителями по имени и возрасту. Я могу ошибаться, но меня вряд ли накажут за то, что я ошибаюсь, если только я не делаю это в стране с законами о неприкосновенности частной жизни, которые были обновлены в этом столетии. Поток интересных вещей, которые можно было бы вывести, может показаться бесконечным.
Вы можете принимать решения о том, что открыто, а что нет. Например, X (Twitter) раскрывает имена пользователей, но не номера телефонов. Но любой, у кого есть учетная запись в X (Twitter), может искать пользователей по номеру телефона и сопоставлять их с людьми, чьи номера телефонов у них есть. Если API для этой функции позволяет загрузить список контактов, то он также позволяет осуществлять поиск по номеру телефона. Если вы загружаете много контактов, вы можете создать список сопоставлений «сотовый телефон с ником в X (Twitter)». Для людей, которые держат свой номер мобильного телефона в тайне, такое раскрытие информации было бы нарушением неприкосновенности частной жизни.
Обработка информации требует энергии. Наблюдение за энергией, потребляемой или излучаемой компьютером или его компонентами, является неиссякаемым источником захватывающего раскрытия информации. Оно варьируется от выяснения экспонент открытых ключей до отслеживания телефонов через уровни батареи после того, как кто-то очистит свои файлы cookie. (Каждый единичный бит в экспоненте требует вычислений, а нулевые биты – нет, поэтому наличие большего количества единичных битов приводит к потреблению большего количества энергии.) Вы можете контролировать потребление энергии напрямую, подключив компьютер к устройству, предназначенному для мониторинга энергопотребления (с помощью собственного или интеллектуального счетчика, который отбирает тысячи образцов в секунду) или просто спросив его: «Эй, веб-браузер, сколько заряда батареи осталось? Я хотел бы все значимые цифры, пожалуйста» [Fleishman, 2016].
Технология также излучает энергию в других формах, часто в виде тепла и звука. Мониторы спроектированы так, чтобы излучать информацию в зрительном диапазоне, и парень рядом со мной в самолете постоянно смотрит на то, что я пишу. Но атака срабатывает издалека. Мониторы рисуют и обновляют пиксели последовательно, поэтому каждая отображаемая линия может быть реконструирована с помощью фотоэлектрического элемента, смотрящего в телескоп. Мониторы также испускают излучение за пределами видимого спектра, и разведывательные агентства очень интересуются этим, а значит, используют его в своих интересах. Любители и ученые создали системы для реконструкции дисплеев с расстояния в сотни метров. Поскольку атаки всегда совершенствуются, возможность реконструировать содержимое дисплея, вероятно, коммерчески доступна. Мониторы, вероятно, также излучают звук интересным образом, но я не знаю никого, кто бы его реконструировал. Процессор и его корпус также излучают свет и звук. Звук был использован для восстановления криптографических ключей. Было показано, что эти атаки работают как в лабораториях, так и в шумном окружении, таком как центры обработки данных.
Наши компьютеры становятся намного меньше, и разработчики включают в них датчики, в том числе компасы, датчики местоположения, гироскопы, микрофоны и камеры, а также радиоприемники, содержащие в себе (в приблизительном порядке увеличения мощности передачи) NF, Bluetooth, Wi-Fi и сотовые протоколы. В течение следующих нескольких лет датчики станут намного лучше и гораздо более распространенными. В 2019 году был случай похищения японской поп-звезды. Похититель смог прочитать знак автобуса, который отразился в ее глазу на фотографии в новостях, использовать эту информацию, чтобы определить, где она живет, а затем похитить ее. (К счастью, она не пострадала.) Датчики намного лучше, чем мы ожидаем.
Все эти побочные эффекты случайны. Когда они намеренно используются для связи, они называются скрытыми каналами. Скрытый канал – это связь между двумя сторонами, которая должна быть незамечаемой и даже в принципе незаметной. Первый публичный анализ этой возможности был проведен при проверке договора о ядерных испытаниях. Соединенные Штаты и Советский Союз договорились о размещении на своей территории особо важных приборов с возможностью отправки сообщений домой. Возникла проблема: как гарантировать, что сообщения, отправляемые датчиками, будут касаться только ядерных испытаний? Очевидно, что это создает требование, чтобы сообщение было в открытом виде, но тогда оно может быть подменено или видоизменено.
Цифровые подписи идеально подходят для этого! Чтобы гарантировать, что каждая подпись уникальна, мы обычно добавляем случайный вектор инициализации (IV). Представьте себе датчик, который создает подписанные сообщения, где каждое сообщение состоит из самого сообщения, s и s=rsak (IV, message, padding). Если вектор инициализации IV должен быть случайным, то как продемонстрировать, что на самом деле это не секретное зашифрованное сообщение? Вы не можете принять IV извне без серьезных проблем с безопасностью, и мы, конечно, не хотим, чтобы русские посылали зашифрованные сообщения на свои датчики, спрятанные в IV или подписях! Проблема скрытых каналов остается нерешенной, и вряд ли она станет решаемой. (Публикация исходного кода не гарантирует, что этот код соответствует исполняемому файлу, даже если вы скомпилируете его самостоятельно. Создатель Unix Кен Томпсон объясняет, почему это так, в своей тьюринговской лекции 1984 года).
Вы называете это кабелем, а для меня это антенна
Роберт Моррис (старший) повторял это снова и снова. В то время многие устройства использовали кабели для передачи данных из одной точки в другую, и его мнение заключалась в том, что все эти кабели (и их разъемы) действовали как антенны. Сегодня мы заменили многие кабели передатчиками, перейдя от неявных побочных эффектов проводов к явному Bluetooth, и мы редко останавливаемся, чтобы рассмотреть все причины, по которым что-то при этом может пойти не так.
Мало того что сигнал передается, но и по мере передвижения вашего тела через электромагнитные поля вы возмущаете их настолько, что производимый эффект измерим: как жесты, так и набор текста могут быть измерены по данным, поступающим от антенн и передатчиков в окружающей среде.
Все будет обнаружено с помощью времени
Время, затрачиваемое на вычисления, часто зависит от данных. Опытные игроки в покер часто считают секунды перед тем, как сделать ход, потому что быстрые ставки или сбросы могут привести к утечке информации.
Несколько классических примеров технологий включают проверку паролей. Одним из ранних примеров был алгоритм 1960-х годов, который выполнял посимвольное сравнение введенных и сохраненных паролей и возвращал сообщение об ошибке, когда пароли не совпадали, раскрывая количество правильно совпадающих символов. Один из вариантов этой проблемы упоминается в классической статье Морриса и Томпсона «Безопасность паролей: история болезни» [Morris and Thompson, 1979]. Они писали: «Шифрование выполнялось только в том случае, если имя пользователя было действительным, потому что в противном случае не было зашифрованного пароля, который можно было бы сравнить с предоставленным паролем. В результате ответ запаздывал примерно на полсекунды, если имя было действительным, и был немедленным, если оно было недействительным. Злоумышленник мог узнать, является ли конкретное имя пользователя действительным». Другой классический пример, когда время, необходимое для вычисления экспоненты, «очевидно» зависит от данных. Вы можете оптимизировать время, необходимое для сдвига битов, когда экспонента имеет нулевой бит, и, таким образом, время экспонирования зависит от веса Хэмминга экспонента. (Вес Хэмминга – это количество единичных битов в строке. Как упоминалось в разделе «Побочные эффекты и скрытые каналы», каждый единичный бит в экспоненте требует вычислений [Kocher, 1996].) Атаки по времени в сети имеют больший джиттер, чем при локальных измерениях. В локальной сети этот джиттер может составлять всего несколько наносекунд, а «через интернет» – порядка микросекунд [Crosby, 2009; Hale, 2009].