Добрый день. Попал на статейку, и появился вопрос. Как правильно и надежно очищать оперативную память перед выключением компьютера, чтобы нельзя было сделать дамп памяти? Желательно чтобы это было автоматически.
Коребутные настройки: при начале работы с coreboot можно взять за основу чужой / близкий к дефолтному конфиг для твоей платы, убедиться что он работает, а дальше плясать от него - вдумчиво читая описания опций в menuconfig нажатием кнопки ? на интересующем пункте меню и постепенно изменяя конфиг под себя, периодически проверяя что он пока ещё рабочий. А для настроек вроде таймингов оперативки: если лень много раз пересобирать / перепрошивать, можно подобрать их и в проприетарном БИОСе перед переходом на коребут; хотя, у меня и такой подбор не занял много времени, раза с пятого получил что хотел.
вы таки будет смеяться, но состояние SRAM после прекращения питания практически сразу теряется, ибо транзисторы маленькие и заряд держат мелкий.
в отличии от DRAM где заряд накапливается на специальном «большом» носителе. :)
зачем дергать пипиську, если она здесь не приделах :) аппаратный сброс не отключает обновление DRAM. и как следствие после сброса содержимое памяти не обнуляется.
к примеру такой вариант: берем комп, рам которого надо слить. подключаем к усб специально подготовленый диск (ну если есть вариант что биос запаролен, подключаем этот диск вместо диска ноутбука.), на котором в качестве загрузчика прописана программка, которая пишет на этот диск напрямую, без фс, некоторый заголовок, далее содержимое DRAM, и в конце какое-либо окончание, ну и лог на экран чтобы понять когда копирование закончилось.
и нажимаем сброс. комп перегружается в наш загрузчик, который просто сливает его содержимое в диск.
после чего этот диск подключаем к компу и сливаем данные между заголовком и окончанием в файл. будет практически полный дамп DRAM за исключение кода твоего загрузчика и ошметков от работы биоса.
фсе, профит.
триггеры держат состояние за счет заряда на затворе транзистора. т.к. за счет положительной обратной связи этот заряд постоянно обновляется от питания, триггер находится в одном положении.
при отключении питания заряд естественно сразу рассасывается и триггер переходит в неопределенное состояние.
Практически все современные материнские платы сделаны с учетом стандартов Trusted Computing Group, и умеют обнулять память при включении компьютера либо всегда, либо если компьютер был нештатно выключен. Это также регулируется софтово, ядром или юзерспейсом. В Ubuntu, например, эта опция включена по умолчанию (CONFIG_RESET_ATTACK_MITIGATION).
в ТТЛ биполярный транзистор управляется током, т.е. состояние определяется текущим током. при отключении питания ток мгновенно теряется и состояние триггера исчезает :)
хотя можно сказать в ТТЛ таки накапливается объемный заряд в режиме насыщения транзистора.
модификация в виде ТТЛШ уменьшило накопления заряда насыщения и потому имела большую скорость переключения при тех же условиях.
еще можно вспомнить ЭСЛ, где вообще режим насыщения был исключен, что давало бешеную скорость переключения в 2 ГГц в те времена, когда ТТЛ работал на единицах-десятках мегагерц.
если мне не изменяет память, система обновления DRAM для скорости работы внедрена непосредственно в микросхему. т.е. можно подать питание на планку памяти DRAM, выключить компутер и, не задействовав систему обнуления памяти при загрузке, перенести DRAM на другую машину без потери состояния.
но это так просто мысль вслух о вероятных методах обхода защит.
какой заряд накапливается тупо не помню, но его перезарядка все равно требует времени. почитай основы ТТЛШ.
гонять гигабайты информации впустую туда-сюда на большое расстояния между DRAM и контроллером или процом как минимум глупо. тем более что это надо делать каждые 50-100 мс…
но спорить не буду. подробностей не знаю.
контроллер может издалека управлять этим процессом, не вмешиваясь в непосредственно процесс обновления.
TheLinuxUser, выше описал решения. Разработчики Tails активно экспериментировали, на данном этапе уже есть вполне неплохое и рабочее решение. Адаптировать можно под любой дистрибутив.
Ну всё предусмотреть невозможно. В конечном итоге можно просто отвинтить бок у гроба и залить банки азотом. Впрочем, тот же Tails рассчитан на работу с ноутбука, а там с этим ситуация получше - вырубить энергию в помещении для «резервации» машины не получится - не даст АКБ, а времени(и удобства) выдернуть флешку будет больше. Выдернул - нет памяти.
Есть, правда, разработки для шифрования непосредственно содержимого ОЗУ, вроде RamCrypt, только он не соберётся с новым ядром, а обновлений не будет - это лишь университетская работа для «доказательства концепции».
Можно просто сделать так, чтобы корпус компьютера был герметичен (нельзя залить жидким азотом через щели), а на его вскрытие в полевых условиях требовалось больше тех минут, которые RAM хранит своё содержимое (надо понимать, что мы не в супергеройском фильме живём и даже спецслужбы не могут за долю секунды распилить толстый слой стали каким-нибудь карманным мега-лазером, а взрыв уничтожит содержимое). Наиболее наивная реализация - запереть компьютер в сейфе и наружу вывести провода для монитора и клавиатуры, при этом надёжно загерметизировать их. Так же, очевидно, не стоит экономить на дверях и что-нибудь сделать с окнами. Я читал, что хорошая дверь может до получаса держаться любым попыткам вскрытия (хотя в США вроде могут применить взрывчатку, но если поставить две двери на манер шлюза, то опять же будет как минимум несколько минут, потому что хорошую дверь с правильным расстоянием одним взрывом не выбить, либо взрыв уничтожит весь дом вместе с тобой и твоим компьютером, так что опять же уничтожать данные будет уже не актуально). За это время можно успеть хоть кувалдой всё расфигачить.
Предложу достаточно простой и топорный метод на случай если сильно надо затереть оперативную память. Берешь флешку или диск с записанным дистрибутивом Tails, загружаешься с него до появления рабочего стола, а дальше выключаешь комп.
Может и твой древний комп поддерживается опенсорсным БИОСом - или достаточно всего лишь матплату сменить на поддерживаемую, если лень портировать. Или это повод проапгрейдиться на коребутное железо - самое время посмотреть авито ;-)