Группа исследователей безопасности нашла (http://citp.princeton.edu/memory/) интересный способ получения секретных ключей, используемых при шифровании дисковых разделов такими системами, как BitLocker, FileVault, dm-crypt и TrueCrypt, имея физический доступ к работающей машине с зашифрованными данными.
Метод основан на способности оперативной памяти (DRAM) какое-то время сохранять информацию после отключения питания и отсутствия импульсов регенерации ее содержимого. Причем, чем ниже температура, тем дольше сохраняются данные, например, выдернув чип и поместив его в жидкий азот(-196 градусов C), данные удалось считать через несколько часов. При температуре -50 градусов, данные сохраняются более 10 минут. Получив таким образом чип памяти из работающей машины, среди содержимого памяти нетрудно выявить ключи шифрования и прочую конфиденциальную информацию.
В обычных условиях, после прекращения регенерации, DRAM память сохраняет свое содержимое от нескольких секунд до нескольких минут, поэтому пользователь, перезагрузив компьютер по питанию и не выждав определенное время, рискует тем, что секретные данные еще останутся в каких-то областях памяти. В качестве подтверждения был проведен нехитрый эксперимент (http://citp.princeton.edu/memory/exp/): компьютер был выключен, затем включен и загружен с помощью обычного дистрибутива Linux, после загрузки в памяти удалось найти следы запущенных в прошлой сессии программ.URL: http://citp.princeton.edu/memory/
Новость: http://www.opennet.me/opennews/art.shtml?num=14358
Паяльник всё ещё дешевле и гарантированно надёжней азотной камеры.
>Паяльник всё ещё дешевле и гарантированно надёжней азотной камеры.это называется не "паяльник", а "терморектальный криптоанализ" :-)
черт, ну нет спасенья от спецслужб :/
Блин, до чего техника дошла!
Скоро все пароли будут снимать с крошек еды, застрявшей в клаве.
Ужоснах...
самый надежный пароль -- тот что никому не нужен
>самый надежный пароль -- тот что никому не нуженв том то и дело.
если паролем закрыт манагерский десктоп в офисе - не велика ценность
а если в отпуске в турции позарез надо зайти и порулить счётом на котором $10млн., а кроме интернет-кафе ничего поблизости нет - 100 раз подумаешь.Если в интернет-кафе около каждого писюка стоит холодильник - ни за что не полезу на свой ящик в мэйл-ру :))) теперь каняво
>Если в интернет-кафе около каждого писюка стоит холодильник - ни за что
>не полезу на свой ящик в мэйл-ру :))) теперь канявоПро отпуск в турции -- верю, про счёт -- не вяжется ;)
Желающие могут озадачиться пиропатронами, никогда не используемым телефоном (с отдельными IMEI и симкой) и прочими мерами, но стоит ли так жить?..
Интересно, а "востанавливать" содержимое экранна монитора, памяти на растоянии иследуя изменения в магнитном поле работающего компьютора насколько сложно?
Впринцепи при наличии чуствительной аппаратуры и хороших алгоритмов выделения полезного сигнала несложно... Хотя дешевли воткнуть передатчик в "мамку" или "побеседовать" с персоналом... :)
Перехват видеосигнала (у телевизора который например показывает запись с видеоплейера) давно разработанная и применяемая технология.
С мониторами на аналоговом интерфесе (D-SUB) думаю проблем не возникало.
>Интересно, а "востанавливать" содержимое экранна монитора, памяти на растоянии иследуя изменения в
>магнитном поле работающего компьютора насколько сложно?Как-то (лет десять тому) пробегала программулька, которая при выставлении нужного видеорежима VGA играла при помощи монитора на частоте, укладывавшейся в 88--108MHz, нечто ловимое FM-приёмником... а точнее, "Fur Elise" Бетховена.
Смысл был в том, что даже с бытовой аппаратурой при некотором "подыгрывании" со стороны передатчика эффект вполне наблюдаем.
Только вот у меня тогда VGA ещё своего не было. :)
> Хотя дешевли воткнуть передатчик в "мамку"
Да вон в каких-то (делловских? не помню) буках нашли странный чип около клавиатуры год или два тому. Возможно, на schneier.com найдётся разбор.
>Интересно, а "востанавливать" содержимое экранна монитора, памяти на растоянии иследуя изменения в
>магнитном поле работающего компьютора насколько сложно?
>Впринцепи при наличии чуствительной аппаратуры и хороших алгоритмов выделения полезного сигнала несложно...
>Хотя дешевли воткнуть передатчик в "мамку" или "побеседовать" с персоналом... :)
>слово для гугля "пэмин"
Насколько я помню, цикл регенерации динамической памяти составляет единицы-десятки миллисекунд. После этого времени, при отсутствии регенерации, целостность содержимого памяти не гарантируется даже в работающей системе, хуже того, гарантируется разрушение информации. Так что "выдернуть чип и поместить его в жидкий азот" нужно с такой скоростью, что руки отвалятся. Можно, конечно, залить азотом живую машину, но не уверен, что она нормально переживет такой перепад температур.
С другой стороны, динамическая память по своей сути это набор конденсаторов, т.е. остаточный заряд должен иметь место быть. Но вот чтобы добраться непосредственно до этих конденсаторов нужно не только выдернуть чип, но и "разобрать" его.А "найти следы запущенных в прошлой сессии программ" можно и через триста лет, лишь бы своп никто не попортил. ;-)
>А "найти следы запущенных в прошлой сессии программ" можно и через триста
>лет, лишь бы своп никто не попортил. ;-)По ссылке написано как проверить гипотезу, и схема работает. Так что Вам на ЛОР, Уважаемый.
попробовал сделать, забил всю память (около 800 мб) переменной ARGON, затем выключил на секунду-две питание (выдернул шнур), загрузился, проверил че осталось в памяти.
действительно обнаружил несколько участков, заполненых словом ARGON
опыт проводил при температуре около 23-25 градусов.
ИМХО вероятность похищения секретных ключей этим методом достаточно низка, возможно, как пишут авторы, чтобы поиметь больше данных, нужно охладить систему, например углекислотным огнетушителем, но при этом велика вероятность поврежденя системы статическим электричеством.
>Насколько я помню, цикл регенерации динамической памяти составляет единицы-десятки миллисекунд. После этого
>времени, при отсутствии регенерации, целостность содержимого памяти не гарантируется даже в
>работающей системе, хуже того, гарантируется разрушение информации.В лаборатории можно прочитать историю динамической памяти до 6 итераций - память материала, без всякого азота. Поэтому это минимальное число для перезаписи во время затирания приватных данных. Но может быть сейчас уже и больше циклов требуется.
В таких критических условиях работает такое редкое оборудование, которое и соответствующим образом охраняется. Так что идея опять провалилась - сперва надо решать проблему с охраной оборудования, а потом уже думать про жидкий азот. :-)Либо в таких условиях работает оборудование в космосе, где пока и охрана не нужна, но куда физический доступ пока тоже осложнён. :-)
>В таких критических условиях работает такое редкое оборудование, которое и соответствующим образом
>охраняется. Так что идея опять провалилась - сперва надо решать проблему
>с охраной оборудования, а потом уже думать про жидкий азот. :-)
>
>
>Либо в таких условиях работает оборудование в космосе, где пока и охрана
>не нужна, но куда физический доступ пока тоже осложнён. :-)идеальный пример система "свой-чужой" в военной авиации-самолет плюхнулся,пропало эл.питание должны пропасть данные системы распознавания,а теперь читаем вышеприведенную новость...
такие дела.
на сколько известно из популярных передач, когда самолет "плюхается", то блок системы "свой-чужой" автоматически уничтожается спецзарядом. Поэтому чтобы завлядеть этим блоком и необходимо угонять самолет.
это вы сами придумали?!
для тех кто в танке поясняю-система хранения кодов свой-чужой сейчас представляет собой память,на которую оные и пишутся каждый раз заново перед взлетом, при падении память обесточивается,раньше этого было достаточно, теперь пожалуй и правда придется пиропатрон закладывать.
пример: падение российского СУ-27 в литве
Нет, это изучают на военной кафедре, например. Система распознавания может самоуничтожаться.
>идеальный пример система "свой-чужой" в военной авиации-самолет плюхнулся,пропало эл.питание должны пропасть данные системы распознавания,а теперь читаем вышеприведенную новость...при катастрофе оборудование "свой-чужой" самоуничтожается автоматически (должно по крайней мере) + пока до самолёта доберутся - память успеет 10 раз исчезнуть :)
Значит, надо делать такие корпуса, которые не сразу откроешь. А при включении, когда по системе идёт сигнал Reset, память должна обнуляться.
>Значит, надо делать такие корпуса, которые не сразу откроешь. А при включении,
>когда по системе идёт сигнал Reset, память должна обнуляться.Память должна обнуляться не при нажатии на Reset, а при попытке вскрытия корпуса компьютера. Ведь после вытаскивания памяти Reset не спасёт. Вопросы скорости вытаскивания памяти и помещения её в жидкий азот оставим пока потомкам. :-)
Выглядит туфтой. Всем известно каков цикл регенерации оперативы. Если она так хорошо всё хранит на кой чорт тогда она тысячи раз в секунду регенерится? за подробностями смотрите доку Ульриха Дрипера http://lwn.net/Articles/250967/По поводу ARGON не обольшайтесь, у меня тоже cat /proc/kcore | grep -a ARGON находит :). Догадайтесь почему.
>Выглядит туфтой. Всем известно каков цикл регенерации оперативы. Если она так хорошо
>всё хранит на кой чорт тогда она тысячи раз в секунду
>регенерится?Regeneration не есть Rewite
>По поводу ARGON не обольшайтесь, у меня тоже cat /proc/kcore | grep
>-a ARGON находит :). Догадайтесь почему.Т.е. вы искренне уверены, что одно выполнение grep ARGON забъет вам разные случайные места памяти словом ARGON ? :-)
Вера тут ни при чём, выполни и посмотри.
>Выглядит туфтой. Всем известно каков цикл регенерации оперативы. Если она так хорошо
>всё хранит на кой чорт тогда она тысячи раз в секунду
>регенерится? за подробностями смотрите доку Ульриха Дрипера http://lwn.net/Articles/250967/
>
>По поводу ARGON не обольшайтесь, у меня тоже cat /proc/kcore | grep
>-a ARGON находит :). Догадайтесь почему.Дорогой товарищ, у вас строка "ARGON" находится минимум потому, что она есть в аргументах grep'a, а аргументы где живут? правильно - в памяти! так что не надо рассказывать.
плюс к тому случайные совпадения тоже есть.
а на тему метода - очередной "нефиг-делать-давайте-велосипед-придумаем".
Ну а если,static const char WORD[8] = "NETROGEN";
и манипуляции с lseek() fseek() и read();
на предмет *fd =! &WORD + sizeof(WORD)
Я бы попробовал но у меня ECC на компе :)
Для тех кто ф танке....Прорыть всё память, кроме того места куда указывает &WORD + смещение в sizeof байтофф.
ну в примере был показан grep. а он такими манипуляциями не страдает.
>Дорогой товарищ, у вас строка "ARGON" находится минимум потому, что она есть в аргументах > grep'a, а аргументы где живут? правильно - в памяти! так что не надо рассказывать.Простите, Вы на какой пост отвечали? Я как раз про это в нем и говорю. И результаты поиска тоже живут в памяти.
>Простите, Вы на какой пост отвечали? Я как раз про это в
>нем и говорю. И результаты поиска тоже живут в памяти.И что из того, что 5 из 1000 совпадений будут связаны с работой grep ? Ситуации это не меняет. Ищите по grep 'AR''GON' или grep '[A][R][G][O][N]' если на то пошло.
>>
>>По поводу ARGON не обольшайтесь, у меня тоже cat /proc/kcore | grep
>>-a ARGON находит :). Догадайтесь почему.
>
>Дорогой товарищ, у вас строка "ARGON" находится минимум потому, что она есть
>в аргументах grep'a, а аргументы где живут? правильно - в памяти!
>так что не надо рассказывать.imho, правильнее было бы делать
dd if=/proc/kcore of=mem.bin && strings mem.bin | grep ARGON
>Выглядит туфтой. Всем известно каков цикл регенерации оперативы. Если она так хорошо
>всё хранит на кой чорт тогда она тысячи раз в секунду регенерится?Затем, что она "не так уж и хорошо" хранит. И если раз в сколько-то там не регенерировать, то _может_ забыть. Но никто не гарантирует, что _обязательно_ забудет. Когда-нибудь доводилось смотреть осциллографом напряжение на конденсаторе?
не есть, но еслиб оператива могла хотя бы 100мс держать свои данные то тогда бы не тратил контроллер памяти 40% времени на реген. Или 60%, уже не помню, в той доке что скинул выше всё написано
Можно глупый вопрос. А аллокатор при освобождении памяти её затирает или нет? Если да, то данная проблема практически не представляет опасности. Надо ж аварийно комп перегрузить...А вот если аллокатор не затирает, то можно непривилегированному процессу безо всяких перезагрузок постоянно память запрашивать-освобождать-запрашивать-освобождать и просматривать что там есть.... :)
>Можно глупый вопрос. А аллокатор при освобождении памяти её затирает или нет?
>Если да, то данная проблема практически не представляет опасности. Надо ж
>аварийно комп перегрузить...
>
>А вот если аллокатор не затирает, то можно непривилегированному процессу безо всяких
>перезагрузок постоянно память запрашивать-освобождать-запрашивать-освобождать и просматривать что там есть.... :)Алокатор мемсет не выполняет.
после команды free просто помечается как свободная. Данные остаются.
Вообще эта проблема решается очень легко и эффективно. При подаче питания на чип памяти делается превентивный мемсет на всю хранимую область.
>после команды free просто помечается как свободная. Данные остаются.
>Вообще эта проблема решается очень легко и эффективно. При подаче питания на
>чип памяти делается превентивный мемсет на всю хранимую область.Скорее при отключении. на случай если оперативу вытащат.
>>после команды free просто помечается как свободная. Данные остаются.
>>Вообще эта проблема решается очень легко и эффективно. При подаче питания на
>>чип памяти делается превентивный мемсет на всю хранимую область.
>
>Скорее при отключении. на случай если оперативу вытащат.При штатном отключении. Но это опять делает идею бесполезной. Кто прогарантирует штатность отключения? Само устройство просто должно быть таким, которое не может хранить данные без питания. Невозможность хранения без питания надо проектировать специально. Иначе слово "оперативная" неоправданно присутствует в названии памяти.
> При штатном отключении. Но это опять делает идею бесполезной. Кто прогарантирует штатность отключения?"Отключение" == "пропадание питания". На остатке заряда в аварийном конденсаторе вшитый в чип памяти контроллер даёт команду конденсаторам "сбросить заряд".
Хеее.... Если аллокатор мемсет не выполняет, получается, можно с любыми привилегиями попросить памяти, поскотреть что там, освободить, через некоторое время повторить. Глядишь, что-нибудь интересное найдётся. Смысл париться с перезагрузками нештатными? Но что-то не верится, что всё так плохо! Наверное обнуляет всё-таки...
>Хеее.... Если аллокатор мемсет не выполняет, получается, можно с любыми привилегиями попросить
>памяти, поскотреть что там, освободить, через некоторое время повторить. Глядишь, что-нибудь
>интересное найдётся. Смысл париться с перезагрузками нештатными? Но что-то не верится,
>что всё так плохо! Наверное обнуляет всё-таки...ОС очищает память процесса при завершении.
>>Наверное обнуляет всё-таки...
>ОС очищает память процесса при завершении."Освобождает" и "затирает" -- две большие разницы.
>>>Наверное обнуляет всё-таки...
>>ОС очищает память процесса при завершении.
>
>"Освобождает" и "затирает" -- две большие разницы.Случаи, когда из незатертой памяти можно прочитать критичные данные - предмет соответствующих бюллетенеей безопасности, такие выпускались неоднократно для разных ОС. Так что можно не обольщаться.
> Аллокатор при освобождении памяти её затирает или нет?В умных операционках делается так:
При освобождении память не обнуляется, а помещается в "пул грязных страниц".
Если страница отдаётся под кэширование диска, DMA-контроллер заливает туда данные с диска, затирая старое содержимое. Аналогично при некоторых операциях, гарантирующих затирание данных; обычно это запросе доверенных (чаще всего ядерных) модулей.
Если процессору нечего делать, он обнуляет грязные страницы, помещая их в "пул чистых страниц".
Alloc делается из "пула чистых страниц". Если в "пуле чистых страниц" пусто, то берётся память из "пула грязных страниц" или из кэша, обнуляется, и затем выдаётся запрашивающей задаче.
Надо в каждый системник пиропатрон встраивать, на датчик открытия корпуса :D
Лет lwfnm назад я такой эффект наблюдал в персоналках ЕС1040 или 1041 - там можно было загрузить свой знакогенератор, так после выключения/включения машины оперативная память не очищалась, но "сыпалась" - очертания букв сохранялись, но не все пиксели из маски букв. То есть некоторые ячейки памяти терялись.
на машинах типа Электроника УКНЦ и Yamaha после холодного рестарта достаточно было наисать
poke &h8000,255
poke &h8001,255
poke &h8002,255и полностью восстанавливался текст программы на бейсике. оно даже работало и позволяло отсэйвить текст на мега-дискетку 5,25 :)
>на машинах типа Электроника УКНЦ и Yamaha после холодного рестарта достаточно было
>наисать
>poke &h8000,255
>poke &h8001,255
>poke &h8002,255
>
>и полностью восстанавливался текст программы на бейсике. оно даже работало и позволяло
>отсэйвить текст на мега-дискетку 5,25 :)блин где-ж ты был когда я по 15 раз перенабирал текст программы)
дык мануал- читать надо было,там всё было описано