Снятие дампа памяти ключа

Все, что касается электронных ключей SenseLock, но не попадает по тематике в остальные форумы раздела

Снятие дампа памяти ключа

Сообщение tipoc » Ср, 26 ноя 2008 15:24

Интересно, а в чем суть этого метода? Отсюда Взлом программного обеспечения:
"Использование эмулятора ключа (англ. key emulator) — способ используется для обмана защит, построенных на использовании в качестве защиты аппаратного ключа (как правило подключаемого к LPT или USB порту компьютера). Заключается в снятии дампа внутренней памяти ключа. Файл с содержимым этой памяти подается на вход специальной программе - эмулятору, которая подключает свой драйвер-фильтр в стек драйверов и обманывает защищенную программу, эмулируя работу с аппаратным ключом. В случаях наличия в программе обращений к ключу для аппаратного шифрования участка памяти этот метод используется в связке с методом Бинарный патч."

Что значит снятие дампа памяти ключа? Что находится в этой памяти?
Это производится физическим взломом самого ключа или программным способом? Задаю данный вопрос, т.к. работал только с ключами senselock, для которого данный прием скорее всего бесполезен :)
tipoc
 
Сообщения: 100
Зарегистрирован: Пт, 22 фев 2008 01:47

Сообщение hijaq » Ср, 26 ноя 2008 15:49

Функционал основной массы электронных ключей сводится, по сути, к двум типам низкоуровневых операций: чтение/запись памяти ключи и преобразование данных.

Память ключа может состоять из нескольких областей: открытых на чтение, открытых на чтение и запись, скрытых от пользователя. В этой памяти можно хранить любые данные (от нескольких байт до ~4 килобайт), например на кого зарегистрирована программа, ключи шифрования, дата окончания работы программы и т.п.. Для создания эмулятора читается вся возможная память либо через API, либо используя недокументированные возможности ключа. В общем, суть такова, что всё что читается из ключа защищенной программой - точно также читается и дампером для создания эмулятора.

Функции преобразования. Обычно они идентичны во всей линейке ключей и их разница между клиентами заключается лишь в "векторе инициализации" преобразования (а следовательно, взламывается не один продукт одного производителя, а все продукты всех производителей, защищенные тем типом ключа, для которого функция стала известна). Этот вектор хранится в памяти ключа и в большинстве случаев недоступен для чтения через API. Если взломщику известен алгоритм преобразования, то для создания полной эмуляции ключа ему необходимо знание значения вектора (может быть установлен производителем ключа и зависеть от клиента, может устанавливаться самим клиентом). Для этого есть несколько путей:
1. Вычисление из некоторого количества заведомо правильных запросов и ответов функции преобразования.
2. Чтение скрытых областей памяти используя уязвимости или недокументированные возможности ключа (например, инженерные пароли).

К SenseLock'у применение данных методик практически неприменимо в виду другой организации работы и полной индивидуализации ключей каждым разработчиком.
hijaq
Site Admin
 
Сообщения: 213
Зарегистрирован: Пт, 06 апр 2007 14:50

Сообщение tipoc » Ср, 26 ноя 2008 16:04

Вот всегда было интересно: а нафига вообще нужны эти функции преобразования? Это насколько я понимаю, в основном криптографические функции (типа симметричного шифрования).
И какой вообще от них толк, если моя программа не нуждается в их работе? Я же не могу написать свою функцию преобразования (это уже будет вынос кода), а использую только встроенные.
tipoc
 
Сообщения: 100
Зарегистрирован: Пт, 22 фев 2008 01:47

Сообщение tipoc » Ср, 26 ноя 2008 16:06

Т.е кракер просто вычленит вызовы этих функций преобразования из моего кода (пропатчит его). Ведь результат работы этих функций мне нафиг не нужен в моей программе.
tipoc
 
Сообщения: 100
Зарегистрирован: Пт, 22 фев 2008 01:47

Сообщение hijaq » Ср, 26 ноя 2008 16:23

Если программа не нуждается в функциях шифрования, то, исходя из опыта, в 90% случаев создается таблица "правильных" значений ответов и потом результат преобразования сравнивается со значением из этой таблицы. В паре-тройке процентов случаев используются более сложные варианты - хранятся не сами ответы, а их хэши, и не в таблице, а размазаны по программе.

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

Примерно так взлом и выглядит в тех случаях, когда функции преобразования неизвестны. В эмулятор записывается считанная из ключа память и вытащенные тем или иным способом правильные ответы на запросы. Либо в исполняемый файл записываются уже расшифрованные по ключу данные/код, а запросы на преобразование удаляются.
hijaq
Site Admin
 
Сообщения: 213
Зарегистрирован: Пт, 06 апр 2007 14:50

Сообщение tipoc » Чт, 27 ноя 2008 07:33

Вобщем, полная лажа :)))
Слабое место то в программе все равно.
tipoc
 
Сообщения: 100
Зарегистрирован: Пт, 22 фев 2008 01:47

Сообщение Max Rusov » Чт, 27 ноя 2008 16:56

Защита - всегда слабое место. Мы хоть и используем Senslock, но все равно остановились на принципе вопрос/ответ. Выносить в ключ алгоритм - идея красивая, но на практике не всегда реализуемая.
Max Rusov
 
Сообщения: 27
Зарегистрирован: Чт, 10 янв 2008 16:25

Сообщение Anton » Чт, 27 ноя 2008 19:22

Только при помощи "запросов/ответов" тоже можно защищать. Но трудозатраты на нормальную защиту на "запросах/ответах" превосходят трудозатраты на поиск и вынос какого-то участка коода (алгоритма) в РАЗЫ ! Это не пустые слова. Знаю несколько проектов, защищенных по принципу "запрос/ответ", сломать которые практически невозможно до того момента, пока не будет "насчитан" алгоритм. Однако в разработку методики и самой защиты этих проектов было вложено ОЧЕНЬ много усилий. А также были привлечены настоящие мастера, которые явно не по наслышке знакомы со всеми известными приёмами взлома программного обеспечения.
Anton
Site Admin
 
Сообщения: 195
Зарегистрирован: Пт, 06 апр 2007 15:32

Сообщение Max Rusov » Чт, 27 ноя 2008 20:08

Я долго думал, но не смог придумать какой участок кода вынести в ключ, чтобы не пострадала надежность и производительность системы (у нас ключем защищен многопользовательский сервер).

Сложность взлома защиты, построенной по принципу запрос/ответ пропорциональна (IMHO) количеству точек в программе, где происходит обращение к ключу. А их легко добавить сколько угодно (вставляется одна строчка - include). Таблицу вопросов/ответов можно перегенерировать при каждом Build'e. А криптоключ, по которому она строится, из ключа вытащить невозможно (считается :) )
Max Rusov
 
Сообщения: 27
Зарегистрирован: Чт, 10 янв 2008 16:25

Сообщение tipoc » Пт, 28 ноя 2008 13:18

Кстати, наткнулся на любопытную статейку небезызвестного Дмитрия Склярова "Аппаратные ключи защиты" про обычные донглы. Читать здесь http://rus.dongla.net/articles/dongles.html
tipoc
 
Сообщения: 100
Зарегистрирован: Пт, 22 фев 2008 01:47

Сообщение tipoc » Сб, 29 ноя 2008 10:30

Кстати, по поводу секретности алгоритма. Еще Брюс Шнайер высказывался категорически против секретных алгоритмов шифрования. От них больше вреда, чем пользы. Да и принцип Кирхгофа гласит, что надежность алгоритма шифрования должна зависеть только от секретности ключа, а не от самого алгоритма.
tipoc
 
Сообщения: 100
Зарегистрирован: Пт, 22 фев 2008 01:47

Сообщение Vano » Вт, 16 дек 2008 06:35

tipoc писал(а):Кстати, по поводу секретности алгоритма. Еще Брюс Шнайер высказывался категорически против секретных алгоритмов шифрования. От них больше вреда, чем пользы. Да и принцип Кирхгофа гласит, что надежность алгоритма шифрования должна зависеть только от секретности ключа, а не от самого алгоритма.

Вы забываете одну особенность, что связка программа+ключ работают во вражеском окружении и поэтому все что известно программе - известно и взломщику. Если в ключе будут использованы известные алгоритмы, то достаточно будет найти только вектор инициализации (о чем шла речь немного выше). В случае неизвестных алгоритмов ключ превращается в "черный ящик" и проблема эмуляции ключа сводится к обнаружению алгоритма работы этого ящика либо к сбору всех пар запрос/ответ и реализации табличного эмулятора (даже в этом случае взломщик может собрать не всю базу запрос/ответ если обращение к ключу размазаны по всей программе).
Vano
 
Сообщения: 25
Зарегистрирован: Пн, 29 сен 2008 17:03
Откуда: Russia, E-burg

Re: Снятие дампа памяти ключа

Сообщение KAZI » Чт, 15 окт 2009 10:07

Ну еще не забывайте одного..что просто банально китайцы спилят ваш проц в ключе,кристал которого залит компаундом прямо на плате..
А когда спилят..то весь алгоритм рассыпится как песок на клумбе...
Не имей сто защиьт,а имей сто друзей и никто твой софт не сломает...
KAZI
 
Сообщения: 3
Зарегистрирован: Чт, 15 окт 2009 09:58

Re: Снятие дампа памяти ключа

Сообщение Anton » Чт, 15 окт 2009 11:27

Восемь лет уже пилят, пока никто не спилил... Максимум, что смогли сделать красиво, так это растворить компаунд.
Дальше дело не пошло. Может вскоре опубликую фотографию кристалла, если это кому-то интересно и если автор фотографии не будет против.
Также приведу ссылку на протокол испытания и присвоения кристаллу сертификата EAL5: http://www.commoncriteriaportal.org/fil ... /0203a.pdf
Anton
Site Admin
 
Сообщения: 195
Зарегистрирован: Пт, 06 апр 2007 15:32

Re: Снятие дампа памяти ключа

Сообщение KAZI » Чт, 15 окт 2009 19:10

Anton писал(а):Восемь лет уже пилят, пока никто не спилил... Максимум, что смогли сделать красиво, так это растворить компаунд.
Дальше дело не пошло. Может вскоре опубликую фотографию кристалла, если это кому-то интересно и если автор фотографии не будет против.
Также приведу ссылку на протокол испытания и присвоения кристаллу сертификата EAL5: http://www.commoncriteriaportal.org/fil ... /0203a.pdf


Фото кристала опубликуйте,чтобы в 400 раз увеличино было под реальным микроскопом..
Любой кристал это банальный набор полевых транзисторов...лучше транзистора еще ничего не изобрели.. :D
Атмелы,пики и многое другое тоже не пилили в свое время... просто никто в китай еще толком не отправил данную финтифлюшку...
Да и тема интересная по очищищению разного рода мусора из ехешника...
KAZI
 
Сообщения: 3
Зарегистрирован: Чт, 15 окт 2009 09:58

След.

Вернуться в Разное

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron