Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATmega16(32) Программный ключ защита от копирования на COM порт?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
researcher
Задача.
Нужно сделать защиту программного обеспечения на СОМ порту.
Порылся в сети, нашел КЛЮЧ ДЛЯ ЗАЩИТЫ ОТ КОПИРОВАНИЯ
http://svv.on.ufanet.ru/lpt_key.htm Мне такой вариант не подходит.

Думаю реализовать защиту в виде нескольких таблиц (таблицы защиты ATmega16(32)).
Алгоритм такой:
1). ПК => “случайной генерацией” запрашивает адрес таблицы и адрес байта в таблице.
2). ATmega16(32) => отсылает запрошенный байт.
3). ПК проверяет правильность полученного байта.

Может, кто-то уже делал что-то похожее, или видел где-то в сети?
Посоветуйте более надежный подход?
wodya
По-моему такой ключ легко взломать. Даешь ключу все адреса последовательно, а он выдает все значения. Обычно в ключах реализуют какие-нибудь функции, например хэш, можно с несколькими параметрами.
Описание всего того, что можно запихнуть в ключ можно найти, например, в ключах SmartKey.
Deka
На мой взгляд такую защиту несложно взломать. Достаточно перехватить обмен с ключём легальной программы. Защита станет гораздо эффективней, если Вы сможете перенести часть вычисления важных данных в ключ. Необходимо нагрузить ключ расчётами и размазать обращение к нему по всей программе. Тогда пока не хакнут Ваш ключ или не догадаются что он там вычисляет - все будут покупать ключи. Вот такое вот IMHO.
muravei
Цитата(wodya @ Jun 15 2007, 16:24) *
По-моему такой ключ легко взломать. Даешь ключу все адреса последовательно, а он выдает все значения.

А можно ввести паузу между ответами, и придется опрашивать пару тройку лет smile.gif
Но внутре компа слабое место остается.
Deka
Цитата(muravei @ Jun 15 2007, 16:57) *
А можно ввести паузу между ответами, и придется опрашивать пару тройку лет smile.gif
Но внутре компа слабое место остается.


Так вот для исключения слабого места внутри компа, надо часть функций вынести в ключ. А если ещё и обмен защитить при этом, то совсем хорошо будет.
rezident
Как тут уже говорили, пальник и утюг это лучшие приспособления для взлома самой хитрой защиты wink.gif
researcher
Цитата
Deka
1). ….надо часть функций вынести в ключ…
2). А если ещё и обмен защитить при этом, то совсем хорошо будет.

1). Что значить - вынести часть функций в ключ?
2). Как защитить обмен?
bodja74
Цитата(researcher @ Jun 15 2007, 17:27) *
1). Что значить - вынести часть функций в ключ?
2). Как защитить обмен?


1 2+2=4 smile.gif
2 2^(mask)=? ---> ?^(mask)=2 smile.gif
KRS
Цитата(researcher @ Jun 15 2007, 18:27) *
1). Что значить - вынести часть функций в ключ?


Самое простое - расшифровка/шифрование данных и/или некоторого кода программы

Цитата(researcher @ Jun 15 2007, 18:27) *
Как защитить обмен?

Защитить обмен врядли получится, можно будет сделать отвод между контроллером и компом и считать весь обмен.
А вот от отладки на компе можно защититься - сделав таймер в контроллере и если комп за нужное время ничего не ответил/не послал новые данные, выдавать ошибку и работать заново только с нуля.
bodja74
Анекдот:

Купил мужик прогу с ключом ,поставил на ноут ...
Опаньки ,а КОМ порта - та нет smile.gif smile.gif smile.gif

ЗЫ ,а что мешает привязать прогу к диску или винту?
Yura_K
Цитата
Самое простое - расшифровка/шифрование данных и/или некоторого кода программы

Это вряд ли. Если код или данные расшифрованы, то их можно просмотреть с помощью отладчика. Такой способ скорее всего может лишь усложнить взлом. Лучше, если программа в своих вычислениях будет вызывать функцию, выполняемую в контроллере, передавая ей параметры и получая от нее некоторое значение. Хотя это вроде уже предлагали выше. Только надо это реализовать так, чтобы простым перебором значений параметров нельзя было бы за определенное, достаточно большое время определить соответствующие значения возвращаемого значения.
defunct
Цитата(bodja74 @ Jun 15 2007, 18:20) *
ЗЫ ,а что мешает привязать прогу к диску или винту?

Norton Ghost мешает.

Цитата
Необходимо нагрузить ключ расчётами и размазать обращение к нему по всей программе.

+1
muravei
Цитата(defunct @ Jun 15 2007, 19:57) *
Norton Ghost мешает.

К серийному № не помешает.Хотя, это тоже -фигня.
oran-be
Программное обеспечение на ПК защитить невозможно. Яркий пример - HASP. Честный алгоритм "прыгающего" ключа. И чем закончилось? Народ написал драйвер, который эмулировалработу девайса, висящего на LPT. Все в конце концов взламывается, если только часть некоторой обработки не будет выненсена за пределы защищаемого ПК. Типа как фича в .Net технологии. Т. е., если есть входные параметры и есть выходные, между ними мжно воткнуть МК с функцией обработки. Если найдется, конечно, достаточно медленный поток данных.
wodya
А вообще, какое устройство надо защищать? Если конечных пользователей меньше 1000, то можете вообще не заморачиваться. Самой простой защиты вполне хватит.
Мы продаем оборудование, которое стоит как новый автомобиль, но поскольку конечных пользователей не очень много (в пределах 5000), то никто прогу и не взламывает.
Dog Pawlowa
Я не в курсе современных средств защиты, но знаю систему опознавания, которая применяется в ПВО. Суть проста - запросчик посылает сигнал с очень большим количеством бит. Ответчик высылает обратно ответ, содержащий только четыре бита. Противник может прослушать и запрос, и ответ. НО! Закономерность формирования ответа неизвестна и за одни сутки, пока действуют таблицы, недостаточно данных для анализа закономерности формирования ответа. Через сутки таблица меняется. Вероятность одного правильного случайного ответа очень велика (1/16), но для двух ответов она становится 1/256.
Таким образом можно легко построить систему ключей.
HardJoker
Цитата(researcher @ Jun 15 2007, 16:10) *
Задача.
Нужно сделать защиту программного обеспечения на СОМ порту.
Порылся в сети, нашел КЛЮЧ ДЛЯ ЗАЩИТЫ ОТ КОПИРОВАНИЯ
http://svv.on.ufanet.ru/lpt_key.htm Мне такой вариант не подходит.

Думаю реализовать защиту в виде нескольких таблиц (таблицы защиты ATmega16(32)).
Алгоритм такой:
1). ПК => “случайной генерацией” запрашивает адрес таблицы и адрес байта в таблице.
2). ATmega16(32) => отсылает запрошенный байт.
3). ПК проверяет правильность полученного байта.

Может, кто-то уже делал что-то похожее, или видел где-то в сети?
Посоветуйте более надежный подход?


http://www.alladin.ru/ - производитель HASP ключей и прочих аппаратно-программных средств защиты/идентификации. Если порыться на сайте, можно скачать описание пользователя, где разжеваны (в разумных пределах конечно) как принципы дейставия ключей, так и алгоритмы работы с ними.
GDaniloff
Проблема защиты всегда меня интересовала, не важно, через какой порт предполагалось защищаться: COM,LPT,USB...
Вот какие варианты защиты я встречал: таксофонная карта получает от таксофона запрос из 6 байт, и выдает ответ из 2-х байт. Ответ зависит не только от запроса, но и от количества единиц на карточке. Таксофон тоже высчитывает ответ и сравнивает с получнным. Злоумышленник может проанализировать ответы и построить таблицу, но ее размер будет 2^48=280 триллионов(!) слов. И это только для одного значения счетчика! smile.gif
Для компьютера такая защита не совсем подходит: взломщик найдет процедуру хеширования и сопрет.

Больше всего мне понравилась такая защита (не аппаратная): код полиморфный, защита от отладки, на анализ уйдет не один вечер. А программа стоит 200 руб. Такая тактика работает: я не нашел ни одного кряка к той программе! smile.gif

Чего делать не стоит, так это обращаться к ключу только в момент загрузки. Программная защита и то понадежнее будет.
Хороша идея динамической дешифрации кода: отладочное прерывание вызывается после каждой инструкции и изменяет код впереди стоящей команды. Причем ключ дешифровки меняется каждые 100 микросекунд. Но это из вотчины ДОС-приложений, в Win с прерываниями гораздо сложнее...

По поводу усложнения анализа обмена и составления таблиц вопросов-ответов могу посоветовать шифровать запрос случайной величиной, которая в дальнейшем отсеется. Тогда ключ не будет получать одинаковых запросов, и понять принцип его работы будет сложно. А если еще и ответы шифровать случайной величиной... smile.gif
Harbour
Я делал подобную фигню для защиты софта под linux'ом, работает через USB CDC, в случае с атмегой, приходилось ставить ftdi, в случае at91sam7 все проще. Девайсу передается кусок кода, который нужно расшифровать. подробности на моей home page.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.