id: Гость   вход   регистрация
текущее время 00:21 21/09/2018
Владелец: unknown (создано 27/04/2011 12:18), редакция от 28/04/2011 10:38 (автор: unknown) Печать
Категории: криптография, софт, инфобезопасность, атаки, операционные системы, модель угрозы
https://www.pgpru.com/Новости/2011/AmnesiaПрограмнаяЗащитаОтАтакХолоднойПерезагрузки
создать
просмотр
редакции
ссылки

27.04 // Amnesia: програмная защита от атак холодной перезагрузки


Дисковое шифрование является важной мерой безопасности для множества пользователей, включая представителей государственных организаций, корпораций, активистов, профессионалов по безопасности и частных лиц, обеспокоенных своей приватностью.


К сожалению, исследования показали возможность лёгкой утечки ключа шифрования в руки злоумышленника при наличии физического доступа к включенному компьютеру, на котором смонтированы шифрованные диски. Так называемая атака Хельдермана позволяет даже слабооснащённому противнику выключить компьютер, переставить планки памяти в другую машину (в ряде случаев загрузиться на той же машине) и с помощью специально подготовленных загрузочных дисков считать остаточную информацию, которая может сохраняться в оперативной памяти в течении нескольких минут после выключения. Это время может быть увеличено до часов путём криостатирования, что однако не является необходимым на практике. Поскольку ключ шифрования находится в памяти в развёрнутом виде после выполнения алгоритма вычисления ключевого расписания, то его легко обнаружить среди остаточных повреждённых данных и по его фрагментам восстановить исходный ключ шифрования. Т.о., даже повреждение самих частей развёрнутого ключа, не только не мешает их обнаружению, но и позволяет восстановить исходный (неразвёрнутый) ключ.


Патрик Симмонс из университета Урбана-Шампейн, Иллинойс, утверждает, что ему удалось разработать программное решение этой проблемы. За основу разработки была взята модификация системы шифрования Linux loop-aes (набор модулей ядра и патчей к системным утилитам). Выбор loop-aes вместо dm-crypt в работе не обосновывается, но возможно предположить, что это связано с хорошей проработкой ассемблерных реализаций криптоалгоритмов в loop-aes, что оказалось очень подходящим для этой работы. Ему удалось добиться снижения скорости по сравнению с обычным шифрованием не более, чем в два раза.


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


Стоит вспомнить предыдущие попытки решения. Первые из них предложила сама группа Хельдермана после открытия им атак холодной перезагрузки. Удаление ключей из памяти сразу после размонтирования является лишь дополнительной ограничительной мерой и не решает поставленную задачу. Полумерой является и обфускация. Модификация аппаратной платформы, включающая датчики вторжения или установку специальных криптопроцессоров — сравнительно дорогой, трудноовнедряемой и ненадёжной. Заклеивание эпоксидной смолой — непрактичной.


В работе, Tilo Muller, Andreas Dewald, and Felix C. Freiling. Aesse: a cold-boot resistant implementation of aes. In Proceedings of the Third European Workshop on System Security, EUROSEC '10, pages 42­47, New York, NY, USA, 2010. ACM, было представлено программное решение AESSIE. Единственный ключ шифрования сохранялся в MMX-регистрах процессора, а затем доступ кода на уровне пользователя к этим регистрам закрывался. Шифрование или расшифрование алгоритмом AES производилось на основе инструкций MMX или SSE на уровне ядра. Метод замедлял шифрование примерно в 6 раз, позволял работать только с одним развёрнутым в MMX-регистрах ключом одновременно и вызывал замедление или невозможность работы программ, которым требовались MMX-инструкции.


На конференции Black Hat 2008 было предложено вычислять ключ в памяти путём хэширования массива большого размера. Повреждение хотя бы одного бита при деградации памяти не позволит противнику вычислить ключ, но пользовательской системе придёться вычислять ключ заново, каждый раз при обращении к блоку данных для (рас)шифрования. Это привело бы к большому снижению производительности и не решило бы проблему хранения развернутого ключа.


Юрген Пэйбель в 2009 году предлагал использовать кэш L1 для хранения развёрнутого ключа и блокирования к нему доступа памяти. Работа памяти без кэширования привела бы к двухсоткратному снижению производительности не только программы дискового шифрования, но и всех остальных программ.


Пользователи, устроившие мозговой штурм на Linux-Crypto, советовали разработать новые шифры, с таким ключевым расписанием, чтобы быть стойкими к частичной утечке данных из развёрнутого ключа. Даже несмотря на то, что разработка принципиально нового шифра является слишком сложным решением, оно неэффективно и по другой причине: существующие методы холодной перезагрузки достигли уровня, позволяющего считывать неповреждёнными 99,9% содержимого памяти. При таких показателях практически все раундовые подключи будут всё-равно доступными с высокой вероятностью.


Trusted Computing Group разработала спецификацию по обнулению памяти при загрузке через BIOS. Это возможно и предотвратит атаку, если она проводится после перезагрузки непосредственно на компьютере атакуемой стороны, но скорее всего планки оперативной памяти могут быть переставлены на другую машину.




Патрик Симмонс, автор Amnesia, предложил использовать т.н. performance counter registers (Intel: MSRs 0xC1, 0xC2, 0x309, 0x30A; AMD: MSRs 0xC0010004, 0xC0010005, 0xC0010006, 0xC0010007) для хранения одного AES-ключа.


Далее алгоритм шифрования работает так:


  • Отключить прерывания.
  • Прочитать мастер-ключ из MSR и записать в регистры.
  • Прочитать шифрованный ключ тома из памяти в регистры.
  • Расшифровать ключ тома без сохранения каких-либо промежуточных данных в RAM.
  • Прочитать буфер открытого текста из RAM в регистры.
  • Зашифровать открытый текст, используя ключ тома без сохранения каких-либо временных данных в памяти.
  • Записать шифртекст в буфер шифртекста
  • Обнулить все регистры, содержащие данные, связанные с ключом.
  • Включить прерывания.
  • Выйти из функции.

Алгоритм расшифрования работает по аналогии:


  • Отключить прерывания.
  • Прочитать мастер-ключ из MSR и записать в регистры.
  • Прочитать шифрованный ключ тома из памяти в регистры.
  • Расшифровать ключ тома без сохранения каких-либо промежуточных данных в RAM.
  • Прочитать буфер шифртекста из RAM в регистры.
  • Расшифровать шифртекст, используя ключ тома без сохранения каких-либо временных данных в памяти.
  • Записать открытый текст в буфер открытого текста.
  • Обнулить все регистры, содержащие данные, связанные с ключом.
  • Включить прерывания.
  • Выйти из функции.

Таблица регистров, особенности алгоритма, "подводные камни" (например сложности с отключением некоторых прерываний) подробно перечислены в работе. Приведены недостатки альтернативного решения на TPM (модулях доверенных вычислений). Опубликованы результаты тестов производительности (бенчмарк-тестов).


В качестве недостатка метода автор считает привязку к конкретным архитектурным решениям процессора, что требует различных ассемблерных модулей, однако считает, что возможно в будущих моделях процессоров появятся специализированные регистры памяти для проведения операций с чувствительными данными, по аналогии с тем, как компания Intel внедрила инструкции для быстрого выполнения алгоритма AES.


К функциональным ограничениям относится то, что метод не позволяет использовать технологию "suspend to RAM", что подразумевает утечку ключа в память.


Другие ограничения и потенциальные уязвимые места:


  • Ключевая информация в виде пароля или строки попадает в ядро через UNIX-pipe (конвейер) и таким образом остаётся в памяти, пока ядро безопасно не обнулит эти данные в памяти. Автору пока не удалось реализовать эту процедуру должным образом.
  • Joint Test Action Group (JTAG) — порт тестирования работоспособности процессора, из которого можно считать его внутренние регистры. Злоумышленник может подключиться к этому порту на работающей машине и считать данные всех регистров, включая те, где Amnesia хранит мастер-ключ. Этот порт на x86-процессорах нужен, как правило, только на этапе их производства и крайне редко используется после их продажи. Как правило, при этом он и не имеет разводки подключения. Однако, обеспокоенным пользователям рекомендуется удалить или повредить этот порт на своём процессоре или разбить его предохранитель безопасности.
  • Немаскируемые прерывания (NMI). Они не могут быть отключены, так как возникают в результате ошибок аппаратной части. Атакующий может вызвать точно спланированные ошибки в аппаратной части, чтобы получить короткий промежуток времени для чтения регистров. Эта атака считается слишком сложной и малопрактичной из-за этого крайне короткого промежутка времени, но в будущем могут быть предприняты меры защиты и против высокооснащённого атакующего. Они будут включать изменение поведения операционной системы определённым образом.

Исследователь предлагает усовершенствовать свою методику для противодействия руткиту fileForenscope (Framework for Live Forensics). Это форенсик-средство с технологиями руткита использует атаку холодной перезагрузкой (т.е. применимо после физического доступа к компьютеру) и продолжает удерживать в памяти SSL и SSH сеансы захваченного компьютера, не только извлекая ключи, но и поддерживая активные сетевые соединения, что позволяет противнику, участвующему в захвате компьютера или сервера пользователя, также осуществить захват управляемой им сети как физически (например, используя несколько скоординированных групп захвата), так и удалённо (осуществлять MITM-атаки, получать несанкционированный удалённый доступ к другим машинам приватной сети и т.д.).


Для нейтрализации Forenscope-атак, автор предлагает развивать поддержку проекта Amnesia не только для дискового шифрования, но и в отношении шифрования чувствительных областей TCP-стека и для SSH/SSL-ключей. Как только мастер-ключ будет уничтожен в процессоре, установка руткита Forenscope методом холодной перезагрузки не поможет противнику перехватить данные шифрованных сетевых соединений, используя их для неавторизованного доступа к приватным сетям или извлечения сеансовых ключей.


Другим направлением исследования является изучение вопроса поддержки шифров, альтернативных AES. Шифры, с зависящими от ключа S-блоками или сложным ключевым расписанием могут хуже адаптироваться к исполнению в Amnesia.


Ещё одним направлением будет появление дополнений к языкам программирования более высокого уровня, которые бы позволили программистам получать прямой контроль над регистрами, что избавило бы их от переизобретения такого рода языков на ассемблере.


Наконец, после проведения всех исследований, автор приглашает всё Linux-сообщество активно внедрять предложенные меры защиты от атак холодной перезагрузкой в стандартное ядро.


Источник: Cryptography and Security Archive


 
Много комментариев (23) [показать комментарии/форму]
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3