tgoop.com/Fourier_series/232
Last Update:
Сейчас будет офигенная инженерная история. Началось с обсуждения реконсолидации человечьей памяти — когда каждое чтение требует перезаписи воспоминаний. Про человеков потом, сейчас про железяки.
Оперативная память (которая DRAM) тоже требует перезаписи после чтения. Обычно так:
— Есть сеть ячеек. Каждая ячейка — это транзистор доступа плюс конденсатор. Если конденсатор заряжен до напряжения питания, это значение 1 у ячейки. Если разряжен — это значение 0.
— Ячейки сформированы в двухмерные матрицы. Условно по горизонтали приходят линии управления транзисторами доступа (word lines). По условной вертикали приходят линии чтения-записи (bit lines). Word line открывает строку таблицы для чтения и записи, а bit line получает значение из столбца.
— Для чтения битовая линия заряжается до половины напряжения питания. Потом к этой битовой линии подключается одна ячейка из строки, открытой для чтения.
— Если после подключения битовой линии в ней падает заряд, значит, там был 0. Если растёт — значит, там был 1.
— Заряд конденсатора никогда не равен точно 1, потому что конденсатор со временем разряжается. Условно, когда он не сможет дать половину напряжения питания, 1 превратится в 0.
— По результату усилений и сравнений на выход подаётся либо 0, либо 1 — в контроллер памяти или процессор.
— Поскольку происходит балансирование заряда между конденсатором и битовой линией, он разряжается в неё или заряжается от неё. И нужно восстановить заряд конденсатора. Пока вся строка ещё открыта, подаётся напряжение для регенерации.
— Горизонталь закрывается для доступа. Битовая линия перезаряжается для следующего цикла.
Этот цикл из перетеканий и регенерации заряда и есть чтение. По факту это разрушающее чтение с перезаписью. Но всей движухой управляет контроллер, для систем снаружи это выглядит как недеструктивная операция.
Есть ещё SRAM — статическая память. Там каждая ячейка хранится в виде триггера из 6 транзисторов. Во многих реализациях это быстрее, дороже, менее требовательно к питанию и занимает овердофига места на кристалле. Это может быть кэш-память процессора.
Вернёмся к DRAM. Конденсаторы теряют заряд не только на чтении, но и просто так. Гарантированное удержание значения обычно около 60 мс. Это означает массовые операции на всю память — ничего нельзя хранить долго, нужно постоянно обновлять всё.
И вот здесь и начинается настоящая история.
Заряды не исчезают мгновенно при отключении питания! Если нештатно сорвать питание с памяти, то она не будет очищена. Если ещё и охладить чип, саморазряд замедлится и будет можно удержать заряд на минуты.
В оперативной памяти хранятся ключи доступа к HDD (привет, Битлокер, Веракрипт), ключи SSL, пароли и прочие штуки, которые могут понадобиться замотивированному человеку. Для этого надо получить доступ к устройству, охладить его во время работы, потом резко выдернуть память и охладить дополнительно, а затем перенести на стенд, который в отличие от типовой BIOS не обнуляет всё на старте, а вычитывает.
Это и есть Cold Boot Attack.
Вот работа 2008 года, где показали, что атака холодной перезагрузкой позволяет извлечь ключи шифрования жёсткого диска, сессионные ключи и пароли SSL/TLS (если повезёт подловить момент, пока они в оперативной памяти), данные пользователей (сами расшифрованные документы). Если нет шифрования самой оперативки в реальном времени, конечно.
При -50°C 99% данных сохраняются больше пары минут в тогдашней памяти. Это можно сделать с помощью обычного баллончика со сжатым воздухом, применив его неправильно и распыляя жидкость прямо на чип при ещё подающемся питании.
При температуре жидкого азота (-196°C) потери данных минимальны даже через час. Это делается при снятии модуля уже после отключения.
Если снять горячий модуль и бросить его в ведро азота, а потом поставить на вычитывающий стенд, тоже будет работать в течение нескольких минут (только не вынимайте модуль из ведра руками).
То есть это как спереть hybernate-дамп.
#UDP
--
Вступайте в ряды Фурье!
BY Ряды Фурье
Share with your friend now:
tgoop.com/Fourier_series/232