Сейчас будет офигенная инженерная история. Началось с обсуждения реконсолидации человечьей памяти —

27 января 2025 г.

Сейчас будет офигенная инженерная история. Началось с обсуждения реконсолидации человечьей памяти — когда каждое чтение требует перезаписи воспоминаний. Про человеков потом, сейчас про железяки.

Оперативная память (которая 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

Вступайте в ряды Фурье! Ну какой вы хакер без ведра и ноутбука?

🔥 194 71 👍 58 38 🆒 15 😁 14