id: Гость   вход   регистрация
текущее время 08:09 23/01/2020
Владелец: unknown (создано 27/04/2011 12:18), редакция от 28/04/2011 10:38 (автор: unknown) Печать
Категории: криптография, софт, инфобезопасность, атаки, операционные системы, модель угрозы
http://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


 
На страницу: 1, 2 След.
Комментарии [скрыть комментарии/форму]
— unknown (02/05/2011 18:55)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Касательно лицензии обсуждение уходит в офф, но не стоит быть святее папы римского Ричарда Столлмана. Этот же вопрос проработан и учитывался FSF. Нет смысла требовать что-то с тех, кто пишет программу для себя (личное, приватное дело), организации (если это используется только внутри неё) или при их сотрудничестве. Требовать исходники может только пользователь программы. Он же может их не распространять остальным. Ему нельзя запретить распространять исходники, но нельзя и заставить в тех редких случаях, где сам пользователь-заказчик в этом незаинтересован.
разработка сложного проекта

pgpru.com живёт целиком на энтузиазме

Рад за столь высокую оценку, но всё-таки не стоит сравнивать. Если под сложным проектом считать действительно сложные программные разработки, то информационный интернет-ресурс — это технически простой проект. Лучше всего получаются сложные программные и исследовательские IT-проекты, где есть место для сотрудничества и сообщества и профессионалов на окладе.
— Гость (03/05/2011 19:14)   <#>
Набрасим ещё говна на вентилятор информации по поводу нелегитимного доступа к оперативной памяти. Итак, fileMemory Forensics over the IEEE 1394 Interface, Freddie Witherden, September 7, 2010. В частости, со стр. 24:
GNU/Linux: The old stack provides the module option phys_dma= to disable the unit. No such parameter is provided by the new "Juju" stack. However, it is worth noting that while the old stack always allows nodes access to the unit the new stack does so on an on-demand basis. Currently only the firewire-sbp2 module utilises the unit. Unloading this module will prevent use of the unit at the cost of disabling access to 1394 mass storage devices.
Там же:
Future work It is hypothesised that the Serial ATA (S-ATA) interface, along with its external variant eS-ATA, can also be used to acquire DMA to a target system. S-ATA is a widely deployed, hot-plug capable, interface for attaching disk drives to a system. Compared with the IEEE 1394 interface S-ATA boasts faster transfer speeds and greater availability. Further analysis of both the ATA specification and the capabilities of disk controllers is required to determine the viability of this approach.

Вообще, в гугле много ссылок на тему, ну, хотя бы, вот:
  1. fileFireWire Memory Dump of Windows XP.pdf
  2. Memory_Imaging:Firewire:
    It is possible for Firewire or IEEE1394 devices to directly access the memory of a computer. Using this capability has been suggested as a method for acquiring memory images for forensic analysis. Unfortunately, the method is not safe enough to be widely used yet. There are some published papers and tools, listed below, but they are not yet forensically sound. These tools do not work with all Firewire controllers and on other can cause system crashes. The technology holds promise for future development, in general should be avoided for now.
  3. Для ленивых уже давно есть масса готовых тулзов: Linux Memory Analysis.
  4. Reading RAM using FireWire.
  5. Physical memory attacks via Firewire/DMA.
  6. Cryptographic key recovery from Linux memory dumps.pdf. В частности, там на 4ой стр. говорится:
    2.3 Firmware breakpoints: Some type of platforms, notably the Sun Microsystems Sparc platform, allows for the user at the console to press a magic key-combo to suspend the operating system and hand over control to the built in firmware.
    Там же:
    2.5 Firewire: The Firewire standard, IEEE-1394, provides for Direct Memory Access (DMA) to the physical memory of the connected host. This can be used to image the entire RAM over the firewire-interface without interfering with the operating system [6].
    Т.е. тут почему-то наоборот, в противовес вышецитируемому про Linux, утверждается, что не важно какая ОС, т.к. доступ к оперативной памяти регламентирует не она, а, видимо, сам чипсет. Впрочем, при загрузке машины можно руками в настройках BIOS'а отключить порт fireware1. Там же, на стр. 11:
    The firewire system available in most modern laptops needs to be disabled
    Let's make panic! Мы все умрём!!

1BIOS управляет чипсетом, где отключается этот порт. Это — hardware specific фича, ОС такое не умеет.
— Гость (03/05/2011 20:15)   <#>
Всё новое — хорошо забытое старое :)

/comment27330:
ПО может быть модифицировано в памяти с помощью прямого подключения к железу (достаточно вставить PCI плату, подключить IDE или SATA устройство, или даже просто девайс к порту 1394). Это делается гораздо проще, чем кажется, и некоторые методы даже не требуют спецтехники.

/comment22086:
По словам технического директора компании Sophos Пола Даклина (Paul Ducklin), обнаруженная Бойли брешь не является ни дырой, ни багом в традиционном значении этих слов, так как предоставление доступа к ОЗУ является одной из функций FireWire. Чтобы обезопасить себя от несанкционированного доступа, он рекомендует, во-первых, ограничить доступ к компьютеру третьим лицам, и, во-вторых, отключить порт FireWire, если он не используется. Комментариев от Microsoft пока не поступало. На своем сайте Бойли утверждает, что корпорация Microsoft прекрасно знает обо всем этом (ссылаясь на спецификацию OHCI-1394), однако большая часть пользователей и понятия не имеют о том, что доступ к их системам получить настолько просто.
— Гость (03/05/2011 21:39)   <#>
достаточно вставить PCI плату

А вот и fileпруфлинк. Со стр.7:
Our procedure uses a PCI expansion card that can be installed into a computer before an incident occurs. When the machine powers up, the acquisition card configures and tests itself, then disables its PCI controller so that it does not respond to bus queries from the host system. Only when the device is actually enabled will it become a visible connection to the PCI bus. Due to the design of PCI, which is software- and operating system-independent, the attacker may see the device but may not be able to tamper with its actions.

The back of the PCI card has a physical switch and an interface to an external storage medium.
When the switch is enabled, the PCI controller on the card is activated and takes control of the
PCI bus. The card first suspends the CPU (a recommendation which will prevent an attacker
or legitimately executing application from modifying memory contents while the acquisition is in
process) and then uses Direct Memory Access (DMA) to copy the contents of physical memory to an
external non-volatile storage device, such as an IEEE1394 (Firewire) hard disk, Hitachi Microdrive
[9], or memory card. Once the physical memory has been successfully copied to the non-volatile
storage device, the CPU is resumed and the operating system continues to execute.

To verify our procedure, we designed and built a proof-of-concept device called "Tribble," which is functional in our laboratory environment. Tribble is based on an Intel IQ80303 processor [11] which contains a 100MHz Intel 80960JT (i960) core, a glueless interface to ROM and SDRAM, an I2C bus interface, and a number of general purpose I/O pins. ... The goal of this proof-of-concept device was to prove that system memory could be read via the PCI interface without modifying its contents.

В конце пишут, что ограничение их демонстрационного метода (возможно, не принципиальное по сути для PCI) — карту надо вставлять до офоренсячивания компа, а не после. Впрочем, если такое железо сделать предустановленным на большей части продаваемых компов, то задача "решается".
— unknown (04/05/2011 09:54)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Вы всё ещё залочиваете свой комп на скринсейвер? Тогда мы идём к вам!
— Avalon (18/05/2011 23:26)   профиль/связь   <#>
комментариев: 9   документов: 5   редакций: 0
Вариант с сенсорным датчиком (необязательно контактным) наверное наиболее приемлемый. Тогда задача решается в два этапа

1. Нахождение способа соединения датчика или устройства для него, с ПК по usb.
2. Создание драйвера usb-устройства чтобы при срабатывании датчика компьютер выключался.

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

Было бы интересно услышать практические пути решения этих этапов, они не выглядят слишком сложными.
— Гость (24/09/2011 14:41)   <#>
"Trusted Computing Group разработала спецификацию по обнулению памяти при загрузке через BIOS. Это возможно и предотвратит атаку, если она проводится после перезагрузки непосредственно на компьютере атакуемой стороны, но скорее всего планки оперативной памяти могут быть переставлены на другую машину."
Поясните пожалуйста?Тоесть если я работаю в системе,мне достоточно нажать reset и эта спецификация выполнит обнуление памяти? Правильно я понял?
— SATtva (25/09/2011 11:52)   профиль/связь   <#>
комментариев: 11543   документов: 1036   редакций: 4092
Да, если у Вас установлен чип TPM, поддерживающий эту версию спецификации. И если противник не охладит планки RAM, чтобы переставить их в полностью подконтрольную ему систему.
На страницу: 1, 2 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3