Защита программ от взлома электронными ключами Guardant

Обсуждения по программированию для ОС Windows безотносительно используемого языка программирования. Windows NT, Win32, Windows API, ядро и драйверы.
jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Защита программ от взлома электронными ключами Guardant

Сообщение jangle » 13.02.2013 (Ср) 23:12

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

Итак, демо-комплект с ключом Guardant Code Time обошелся мне в 580 рублей. В комплект входит сам ключ, диск с SDK разработчика и бумажка с демо-ключами.
Выглядит комплект так

Изображение

Вот фото ключа. Можно рассмотреть батарейку, она используется для питания часов реального времени. Срок жизни батареи не менее3 лет

Изображение

Характеристики ключа:

Микроконтроллер - 32-разрядная архитектура, Cortex-M3 (1.25 DMIPS @ 96 MHz)

Память для программ пользователя - 4 кбайт

Поддерживаемые аппаратные алгоритмы - AES-128, ECC160, SHA-256

Для компиляции загружаемых в ключ программ используется компилятор GCC.
Теперь хочу прикрутить этот ключ к приложениям на VB6. С переносом части функций внутрь ключа, для этого их придется перевести на Си и организовать взаимодействие с основным приложением. Свои результаты и примеры кода буду выкладывать в эту тему.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Защита программ от взлома электронными ключами Guardant

Сообщение jangle » 14.02.2013 (Чт) 11:32

Первая плохая новость. В Guardant SDK есть примеры на VB6 и VB.NET. Но они не работающие. В VB6 примере вообще отсутствует половина файлов.
VB.NET код крашится при запуске. Однако есть пример для Access, вытаскивает код оттуда и переносим в VB. При этом

1) В файле "test32.bas" надо удалить следующий код:

------------------------------------------------------------------------
Код: Выделить всё
Sub printf(ByVal Data As String)

Form_MainFrm.Form1.SetFocus
Form_MainFrm.Form1 = Form_MainFrm.Form1 + Chr$(13) + Chr$(10) + Data

Form_MainFrm.Form1.SelLength = 0

End Sub

Sub printl(ByVal Data As String)

Form_MainFrm.Form1.SetFocus
Form_MainFrm.Form1 = Form_MainFrm.Form1 + " " + Data
Form_MainFrm.Form1.SelLength = 0

End Sub


Вместо удаленного кода скопипастить этот:

Код: Выделить всё
Sub printf(ByVal Data As String)

Form1.MainFrm.SetFocus
Form1.MainFrm.Text = Form1.MainFrm.Text + Chr$(13) + Chr$(10) + Data

Form1.MainFrm.SelLength = 0

End Sub

Sub printl(ByVal Data As String)

Form1.MainFrm.SetFocus
Form1.MainFrm.Text = Form1.MainFrm.Text + " " + Data
Form1.MainFrm.SelLength = 0

End Sub


В файле GrdVB32.bas, в первой строке изменить значение "Public Const GrdContainerSize& =" с &H2000 на &H4000.

В функции
Код: Выделить всё
ErrorHandling
закоментить строку:
Код: Выделить всё
TerminateProcess GetCurrentProcess, lRes&


Это нужно чтобы IDE не падала в случае вызова не поддерживаемого алгоритма из ключа. Теперь нужно прогнать код и закоментировать те алгоритмы которые не работают в вашей версии ключа. Когда код начинает работать без ошибок, компилируем его в EXE. Теперь можно попробовать протестировать его работу на другой машине. Чтобы ключ смог работать без установки драйверов, нужно включить у него режим HID.

Чтобы перевести ключ в HID режим:
1. Загрузите прошивку из списка прошивок (или создайте новый
файл образа) и выполните команду меню Ключ | Включить HID-
режим работы ключа.
2. Запишите маску в ключ: выполните команду Ключ |Запись в
ключ
. При этом в меню напротив команды будет установлен флаг,
а кнопка [HID] на панели инструментов перейдет в «нажатое» по
ложение.
3. Переподсоедините ключ и протестируйте его работу в HID
режиме.

Настало время протестировать работу ключа на другой машине, я использовал для этой цели субноут Asus 900.
Для этого копируем на него:

1. Скомпилированный EXE файл
2. GrdAPI32.DLL

Вставляем ключ в USB порт и запускаем экзешник. Программа выводит лог своей работ. Ключ работает и отдает данные. Теперь можно начинать проектировать свою защиту.

Изображение

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Защита программ от взлома электронными ключами Guardant

Сообщение jangle » 14.02.2013 (Чт) 16:39

Теперь пример, как организовать вычисления аппаратных алгоритмов с помощью микропроцессора ключа.
В ключе Guardant Code используется чип Cortex-M3, его можно использовать как дополнительный процессор для криптографических вычислений. При этом центральный процессор компьютера не будет загружаться, что как бы основной плюс такого способа шифрования. Сначала нужно создать дескриптор алгоритма AES и сохранить образ в ключ. Тут ничего сложного и все описано в хелпе

Изображение

Нужно только запомнить номер аппаратного алгоритма. В данном случае он 0.

Изображение

Алгоритм шифрования вызывается строкой:

Код: Выделить всё
nRet = GrdCrypt(hGrd, 0, DataStrLength, szDataStr, GrdAM_Encrypt& + GrdAM_CBC& + GrdSC_All&, szInitVectorAES, szDataPsw, VarPtr(abyGrdAES_Context(0)))


где 0, это номер нашего алгоритма. Сам код примера находится в аттаче.
Вложения
crypt.zip
Аппаратное шифрование AES-128
(3.58 Кб) Скачиваний: 315

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Защита программ от взлома электронными ключами Guardant

Сообщение ger_kar » 15.02.2013 (Пт) 9:11

jangle писал(а):Итак, демо-комплект с ключом Guardant Code Time обошелся мне в 580 рублей.
А сколько будет стоить полноценный комплект и чем он отличается от демо комплекта?
jangle писал(а):Первая плохая новость. В Guardant SDK есть примеры на VB6 и VB.NET. Но они не работающие.
А у разработчика имеется служба поддержки на такие случаи? Может у них можно будет исправленные версии с сайта скачивать.
Бороться и искать, найти и перепрятать

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Защита программ от взлома электронными ключами Guardant

Сообщение jangle » 15.02.2013 (Пт) 10:04

ger_kar писал(а):А сколько будет стоить полноценный комплект и чем он отличается от демо комплекта?


Цены есть у них на сайте. Отличием от рабочего комплекта разработчика являются демонстрационные коды доступа. Они опубликованы и общеизвестны, что не позволяет использовать демо-комплект для защиты программ в коммерческих целях.

А у разработчика имеется служба поддержки на такие случаи? Может у них можно будет исправленные версии с сайта скачивать.


Мне пока не ответили в службе поддержки, на вопрос о VB примере

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 15.02.2013 (Пт) 10:10

jangle писал(а):Отличием от рабочего комплекта разработчика являются демонстрационные коды доступа. Они опубликованы и общеизвестны, что не позволяет использовать демо-комплект для защиты программ в коммерческих целях.

Хм.. А за что тогда вообще деньги?

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re:

Сообщение jangle » 15.02.2013 (Пт) 10:16

Qwertiy писал(а):Хм.. А за что тогда вообще деньги?


Его можно вернуть и получить назад деньги или обменять на любой рабочий ключ.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Защита программ от взлома электронными ключами Guardant

Сообщение ger_kar » 15.02.2013 (Пт) 18:34

jangle писал(а):Цены есть у них на сайте.
На каком? Можно ссылочку?
Бороться и искать, найти и перепрятать

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Защита программ от взлома электронными ключами Guardant

Сообщение jangle » 15.02.2013 (Пт) 18:38

ger_kar писал(а):На каком? Можно ссылочку?


http://www.guardant.ru/purchase/price/

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Защита программ от взлома электронными ключами Guardant

Сообщение ger_kar » 15.02.2013 (Пт) 19:07

Спасибо. К тому же еще и сайт оказался на русском, это замечательно.
Цены тоже вполне приемлемые - это тоже хорошо.
А вот условия поставки такие, что пока приедет в нашу глухомань подорожает еще на столько же, это не очень хорошо. Продавались бы такие штуки у нас - тоже бы взял для опытов :)
Бороться и искать, найти и перепрятать

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Защита программ от взлома электронными ключами Guardant

Сообщение jangle » 15.02.2013 (Пт) 19:16

ger_kar писал(а):Спасибо. К тому же еще и сайт оказался на русском, это замечательно.
Цены тоже вполне приемлемые - это тоже хорошо.
А вот условия поставки такие, что пока приедет в нашу глухомань подорожает еще на столько же, это не очень хорошо. Продавались бы такие штуки у нас - тоже бы взял для опытов :)


Ну есть еще китайские Senselock http://senselock.ru/, это вообще чума с точки зрения защиты от взлома. Еще не один продукт на них не взломали.
Единственный минус у них процессор слабый, но память больше чем у Guardant Code.


Вернуться в Windows-программирование

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

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

    TopList