В компьютерной безопасности атака с холодной загрузкой (или, в меньшей степени, атака с перезагрузкой платформы ) — это тип атаки по побочному каналу , при которой злоумышленник, имеющий физический доступ к компьютеру, выполняет дамп оперативной памяти компьютера (ОЗУ). ) , выполнив полный сброс целевой машины. Обычно атаки с холодной загрузкой используются для получения ключей шифрования из работающей операционной системы в злонамеренных или уголовных целях. [1] [2] [3] Атака основана на свойстве остаточной намагниченности данных DRAM и SRAM для извлечения содержимого памяти, которое остается читаемым в течение секунд или минут после отключения питания. [2] [4] [5]
Злоумышленник, имеющий физический доступ к работающему компьютеру, обычно выполняет атаку с «холодной загрузкой», загружая машину с «холодной» загрузкой и загружая облегченную операционную систему со съемного диска, чтобы сбросить содержимое предзагрузочной физической памяти в файл. [6] [2] Затем злоумышленник может проанализировать данные, выгруженные из памяти, чтобы найти конфиденциальные данные, такие как ключи , используя различные формы атак с поиском ключей . [7] [8] Поскольку атаки с холодной загрузкой нацелены на оперативную память , схемы полного шифрования диска , даже с установленным доверенным платформенным модулем, неэффективны против такого рода атак. [2] Это связано с тем, что проблема в основном аппаратная ( незащищенная память), а не программная . Однако злонамеренный доступ можно предотвратить, ограничив физический доступ и используя современные методы, позволяющие избежать хранения конфиденциальных данных в оперативной памяти .
Модули памяти DIMM постепенно теряют данные по мере потери питания, но не теряют все данные сразу при отключении питания. [2] Для некоторых модулей памяти временной интервал атаки можно продлить до часов или даже недели, охладив их замораживающим спреем и жидким азотом. Более того, поскольку биты со временем исчезают в памяти, их можно восстановить, поскольку они исчезают предсказуемым образом. [2] Следовательно, злоумышленник может выполнить дамп памяти ее содержимого, выполнив атаку с холодной загрузкой. Возможность успешного выполнения атаки с холодной загрузкой значительно различается в зависимости от системы, типа памяти, производителя памяти и свойств материнской платы, и ее может быть сложнее реализовать, чем программные методы или атаку DMA . [9] Хотя в настоящее время основное внимание уделяется шифрованию дисков, любые конфиденциальные данные, хранящиеся в памяти, уязвимы для атаки. [2]
Злоумышленники осуществляют атаки с холодной загрузкой, принудительно и резко перезагружая целевой компьютер, а затем загружая предустановленную операционную систему с USB-накопителя , компакт-диска или по сети . [3] В тех случаях, когда выполнить полную перезагрузку целевой машины нецелесообразно, злоумышленник может альтернативно физически удалить модули памяти из исходной системы и быстро поместить их на совместимую машину под контролем злоумышленника, которая затем загружается для доступа к Память. [2] Затем можно выполнить дальнейший анализ данных, выгруженных из ОЗУ .
Подобный тип атаки также может быть использован для извлечения данных из памяти, например, атака DMA , которая позволяет получить доступ к физической памяти через высокоскоростной порт расширения, такой как FireWire . [3] Атака с холодной загрузкой может быть предпочтительнее в определенных случаях, например, когда существует высокий риск повреждения оборудования. Использование высокоскоростного порта расширения в некоторых случаях может привести к короткому замыканию или физическому повреждению оборудования. [3]
Атаки с холодной загрузкой обычно используются для цифровых криминалистических расследований , вредоносных целей, таких как кража, и восстановления данных. [3]
В некоторых случаях атака с холодной загрузкой используется в цифровой криминалистике для криминалистического сохранения данных, содержащихся в памяти, в качестве доказательств уголовного преступления. [3] Например, когда сохранить данные в памяти другими способами нецелесообразно, может быть использована атака «холодной загрузки» для выполнения дампа данных, содержащихся в оперативной памяти . Например, атака с холодной загрузкой используется в ситуациях, когда система защищена и доступ к компьютеру невозможен. [3] Атака с холодной загрузкой также может потребоваться, если жесткий диск зашифрован с помощью полного шифрования диска и потенциально содержит доказательства преступной деятельности. Атака с холодной загрузкой обеспечивает доступ к памяти, которая может предоставить информацию о состоянии системы в данный момент, например о том, какие программы запущены. [3]
Атака с холодной загрузкой может использоваться злоумышленниками для получения доступа к зашифрованной информации, такой как финансовая информация или коммерческая тайна, со злыми намерениями. [10]
Обычной целью атак с холодной загрузкой является обход программного шифрования диска. Атаки с холодной загрузкой, когда они используются в сочетании с атаками с поиском ключей , оказались эффективным средством обхода схем полного шифрования диска различных поставщиков и операционных систем , даже если используется безопасный криптопроцессор Trusted Platform Module (TPM) . [2]
В случае приложений шифрования диска, которые можно настроить так, чтобы операционная система загружалась без ввода PIN-кода перед загрузкой или наличия аппаратного ключа (например, BitLocker в простой конфигурации, которая использует TPM без PIN -кода двухфакторной аутентификации). или USB-ключ), временные рамки атаки вообще не ограничиваются. [2]
BitLocker в конфигурации по умолчанию использует доверенный платформенный модуль , которому не требуется ни PIN-код , ни внешний ключ для расшифровки диска. При загрузке операционной системы BitLocker извлекает ключ из доверенного платформенного модуля без какого-либо взаимодействия с пользователем. Следовательно, злоумышленник может просто включить компьютер, дождаться начала загрузки операционной системы , а затем выполнить атаку с холодной загрузкой на компьютер, чтобы получить ключ. В связи с этим для обхода этой уязвимости в реализации BitLocker по умолчанию следует использовать двухфакторную аутентификацию , такую как ПИН-код перед загрузкой или съемное USB-устройство, содержащее ключ запуска вместе с доверенным платформенным модулем. [11] [5] Однако этот обходной путь не мешает злоумышленнику получить конфиденциальные данные из памяти или получить ключи шифрования, кэшированные в памяти.
Поскольку дамп памяти можно легко выполнить, выполнив атаку с холодной загрузкой, хранение конфиденциальных данных в оперативной памяти, например ключей шифрования для полного шифрования диска , небезопасно. Было предложено несколько решений для хранения ключей шифрования в областях, отличных от оперативной памяти . Хотя эти решения могут снизить вероятность взлома полного шифрования диска, они не обеспечивают защиты других конфиденциальных данных, хранящихся в памяти.
Одним из решений для хранения ключей шифрования в памяти является хранение ключей на основе регистров. Реализациями этого решения являются TRESOR [12] и Loop-Amnesia. [13] Обе эти реализации модифицируют ядро операционной системы таким образом, что регистры ЦП (в случае TRESOR — регистры отладки x86 , а в случае Loop-Amnesia — регистры профилирования AMD64 или EMT64) могут использоваться для хранения ключей шифрования, а не для хранения ключей шифрования. БАРАН. Ключи, хранящиеся на этом уровне, нелегко прочитать из пользовательского пространства и теряются при перезагрузке компьютера по любой причине . И TRESOR, и Loop-Amnesia должны использовать генерацию ключей « на лету » из-за ограниченного пространства, доступного для хранения криптографических токенов таким способом. В целях безопасности оба отключают прерывания, чтобы предотвратить утечку ключевой информации в память из регистров ЦП во время шифрования или дешифрования, и оба блокируют доступ к регистрам отладки или профиля.
В современных процессорах x86 есть две потенциальные области для хранения ключей: регистры SSE , которые фактически можно сделать привилегированными, отключив все инструкции SSE (и обязательно любые программы, использующие их), и регистры отладки, которые были намного меньше, но не имели такие проблемы.
Было разработано доказательство распространения концепции под названием «паранойс», основанное на методе регистров SSE . [14] Разработчики утверждают, что «при запуске TRESOR на 64-битном процессоре, поддерживающем AES-NI , нет снижения производительности по сравнению с общей реализацией AES », [15] и он работает немного быстрее, чем стандартное шифрование, несмотря на необходимость перерасчет ключей. [12] Основное преимущество Loop-Amnesia по сравнению с TRESOR заключается в том, что она поддерживает использование нескольких зашифрованных дисков; Основными недостатками являются отсутствие поддержки 32-битного x86 и худшая производительность на процессорах, не поддерживающих AES-NI.
«Замороженный кеш» (иногда известный как «кэш в оперативной памяти») [16] может использоваться для безопасного хранения ключей шифрования. Он работает путем отключения кэша L1 процессора и использует его для хранения ключей, однако это может значительно ухудшить общую производительность системы до такой степени, что она станет слишком медленной для большинства целей. [17] [ нужен лучший источник ]
Аналогичное решение на основе кэша было предложено Guan et al. (2015) [18] за счет использования режима кэша WB (обратная запись) для хранения данных в кэшах, что сокращает время вычислений алгоритмов с открытым ключом.
Mimosa [19] в IEEE S&P 2015 представила более практичное решение для криптографических вычислений с открытым ключом против атак с холодной загрузкой и атак DMA. Он использует аппаратную транзакционную память (HTM), которая изначально была предложена как механизм спекулятивного доступа к памяти для повышения производительности многопоточных приложений. Строгая гарантия атомарности, обеспечиваемая HTM, используется для предотвращения несанкционированного одновременного доступа к пространству памяти, содержащему конфиденциальные данные. Закрытый ключ RSA шифруется в памяти ключом AES, защищенным TRESOR. По запросу в рамках транзакции HTM выполняется вычисление закрытого ключа RSA: сначала закрытый ключ расшифровывается в памяти, а затем выполняется расшифровка или подписание RSA. Поскольку закрытый ключ RSA в виде простого текста появляется только как измененные данные в транзакции HTM, любая операция чтения этих данных приведет к отмене транзакции — транзакция вернется к исходному состоянию. Обратите внимание, что закрытый ключ RSA зашифрован в исходном состоянии и является результатом операций записи (или расшифровки AES). В настоящее время HTM реализуется в кэшах или буферах хранения, оба из которых расположены в процессорах, а не во внешних микросхемах оперативной памяти. Таким образом, атаки с холодной загрузкой предотвращаются. Mimosa противостоит атакам, которые пытаются прочитать конфиденциальные данные из памяти (включая атаки с холодной загрузкой, атаки DMA и другие программные атаки), и она приводит лишь к небольшому снижению производительности.
Передовая практика рекомендует отключать все зашифрованные несистемные диски, когда они не используются, поскольку большинство программ шифрования дисков предназначены для безопасного стирания ключей, кэшированных в памяти, после использования. [20] Это снижает риск того, что злоумышленник сможет спасти ключи шифрования из памяти, выполнив атаку с холодной загрузкой. Чтобы свести к минимуму доступ к зашифрованной информации на жестком диске операционной системы, компьютер следует полностью выключать, когда он не используется, чтобы снизить вероятность успешной атаки с холодной загрузкой. [2] [21] Однако данные могут оставаться читаемыми от десятков секунд до нескольких минут в зависимости от физического устройства оперативной памяти в машине, что потенциально позволяет злоумышленнику получить некоторые данные из памяти. Настройка операционной системы на выключение или переход в спящий режим, когда она не используется, вместо использования спящего режима может помочь снизить риск успешной атаки с холодной загрузкой.
Обычно атаку с холодной загрузкой можно предотвратить, ограничив физический доступ злоумышленника к компьютеру или усложнив проведение атаки. Один из методов заключается в припаивании или приклеивании модулей памяти к материнской плате , чтобы их нельзя было легко извлечь из разъемов и вставить в другую машину, находящуюся под контролем злоумышленника. [2] Однако это не мешает злоумышленнику загрузить компьютер жертвы и выполнить дамп памяти с помощью съемного USB-накопителя . Такие меры смягчения , как безопасная загрузка UEFI или аналогичные подходы к проверке загрузки, могут быть эффективными для предотвращения загрузки злоумышленником специальной программной среды для выгрузки содержимого припаянной основной памяти. [22]
Шифрование оперативной памяти (ОЗУ) снижает вероятность того, что злоумышленник сможет получить ключи шифрования или другие материалы из памяти посредством атаки с холодной загрузкой. Этот подход может потребовать внесения изменений в операционную систему, приложения или оборудование. Один из примеров аппаратного шифрования памяти был реализован в Microsoft Xbox . [23] Реализации на более новом оборудовании x86-64 доступны от AMD, а также на Intel Willow Cove и новее.
Программное шифрование всей памяти аналогично хранению ключей на базе ЦП, поскольку материал ключа никогда не передается в память, но является более полным, поскольку все содержимое памяти зашифровано. Как правило, операционная система расшифровывает и читает на лету только непосредственные страницы. [24] Реализации программных решений шифрования памяти включают: коммерческий продукт от PrivateCore . [25] [26] [27] и RamCrypt — патч для ядра Linux, который шифрует данные в памяти и сохраняет ключ шифрования в регистрах ЦП аналогично TRESOR . [12] [24]
Начиная с версии 1.24, VeraCrypt поддерживает шифрование ключей и паролей в оперативной памяти. [28]
Совсем недавно было опубликовано несколько статей, в которых подчеркивалась доступность обычных процессоров x86 и ARM с повышенной безопасностью. [29] [30] В этой работе процессор ARM Cortex A8 используется в качестве основы, на которой построено решение для полного шифрования памяти. Сегменты процесса (например, стек, код или куча) могут шифроваться индивидуально или в составе. Эта работа знаменует собой первую реализацию полного шифрования памяти на процессоре общего назначения. Система обеспечивает как конфиденциальность, так и защиту целостности кода и данных, которые шифруются повсюду за пределами процессора.
Поскольку атаки с холодной загрузкой нацелены на незашифрованную оперативную память , одним из решений является стирание конфиденциальных данных из памяти, когда она больше не используется. «Спецификация предотвращения атак сброса платформы TCG», [31] являющаяся ответом отрасли на эту конкретную атаку, заставляет BIOS перезаписывать память во время POST , если операционная система не была завершена корректно. Однако эту меру все равно можно обойти, удалив модуль памяти из системы и прочитав его обратно в другой системе под контролем злоумышленника, которая не поддерживает эти меры. [2]
Эффективная функция безопасного стирания заключается в том, что в случае сбоя питания ОЗУ очищается менее чем за 300 мс до отключения питания в сочетании с безопасным BIOS и контроллером жесткого диска/SSD, который шифрует данные на портах M-2 и SATAx. . Если бы сама ОЗУ не содержала последовательных данных или других данных, а тайминги хранились в BIOS с некоторой формой отказоустойчивости, требующей аппаратного ключа для их изменения, было бы практически невозможно восстановить какие-либо данные, а также было бы невосприимчиво к атакам TEMPEST . «Человек в оперативной памяти» и другие возможные методы проникновения. [ нужна ссылка ] [32]
Некоторые операционные системы, такие как Tails, предоставляют функцию, которая безопасно записывает произвольные данные в системную память при выключении операционной системы, чтобы предотвратить атаку с холодной загрузкой. [33] Однако стирание видеопамяти по-прежнему невозможно, и по состоянию на 2022 год это все еще открытая заявка на форуме Tails. [34] Потенциальные атаки, которые могут использовать эту уязвимость:
Атаку с холодной загрузкой можно предотвратить, гарантируя, что на атакуемом оборудовании не хранятся никакие ключи.
Скремблирование памяти может использоваться для минимизации нежелательных паразитных эффектов полупроводников, которые являются особенностью современных процессоров Intel Core . [38] [39] [40] [41] Однако, поскольку скремблирование используется только для декорреляции любых шаблонов в содержимом памяти, память может быть дескремблирована с помощью атаки дескремблирования. [42] [43] Следовательно, шифрование памяти не является эффективным средством защиты от атак с холодной загрузкой.
Спящий режим не обеспечивает дополнительной защиты от атаки «холодной загрузки», поскольку в этом состоянии данные обычно все еще находятся в памяти. Таким образом, продукты полнодискового шифрования по-прежнему уязвимы для атак, поскольку ключи находятся в памяти и их не нужно вводить повторно после выхода машины из состояния низкого энергопотребления.
Хотя ограничение параметров загрузочного устройства в BIOS может немного затруднить загрузку другой операционной системы, прошивка современных чипсетов имеет тенденцию позволять пользователю переопределять загрузочное устройство во время POST , нажав указанную горячую клавишу. [5] [44] [45] Ограничение вариантов загрузочного устройства не помешает удалению модуля памяти из системы и повторному считыванию в альтернативной системе. Кроме того, большинство чипсетов предоставляют механизм восстановления, позволяющий сбросить настройки BIOS до значений по умолчанию, даже если они защищены паролем. [10] [46] Настройки BIOS также можно изменить во время работы системы, чтобы обойти любые применяемые ею меры защиты, такие как очистка памяти или блокировка загрузочного устройства. [47] [48] [49]
Атаку с холодной загрузкой можно адаптировать и провести аналогичным образом на смартфонах Android . [50] Поскольку в смартфонах нет кнопки сброса, холодную перезагрузку можно выполнить, отсоединив аккумулятор телефона, чтобы принудительно выполнить полный сброс. [50] Затем на смартфон прошивается образ операционной системы, который может выполнить дамп памяти . Обычно смартфон подключается к машине злоумышленника через USB- порт.
Обычно Android- смартфоны безопасно стирают ключи шифрования из оперативной памяти , когда телефон заблокирован. [50] Это снижает риск того, что злоумышленник сможет получить ключи из памяти, даже если ему удалось провести атаку с холодной загрузкой телефона.
{{cite book}}
: CS1 maint: отсутствует местоположение издателя ( ссылка )