Конференція vbstreets - перегляд теми - захист програм від злому електронними ключами guardant

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

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

Конференція vbstreets - перегляд теми - захист програм від злому електронними ключами guardant

Ось фото ключа. Можна розглянути батарейку, вона використовується для живлення годин реального часу. Термін життя батареї не менш 3 років

Конференція vbstreets - перегляд теми - захист програм від злому електронними ключами guardant

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

Пам'ять для програм користувача - 4 кбайт

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

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

Перша погана новина. У Guardant SDK є приклади на VB6 і VB.NET. Але вони не працюють. У VB6 прикладі взагалі відсутня половина файлів.
VB.NET код краш при запуску. Однак є приклад для Access, витягає код звідти і переносимо в VB. При цьому

1) У файлі "test32.bas" треба вилучити наступний код:

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

Sub printl (ByVal Data As String)

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

Замість вилученого коду скопіпастіть цей:

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

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

Sub printl (ByVal Data As String)

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

У функції Код: Виділити все ErrorHandling закоментіть рядок: Код: Виділити все TerminateProcess GetCurrentProcess, lRes

Це потрібно щоб IDE не падала в разі Телефон не підтримуваного алгоритму з ключа. Тепер потрібно прогнати код і закоментіровать ті алгоритми які не працюють у вашій версії ключа. Коли код починає працювати без помилок, компілюємо його в EXE. Тепер можна спробувати протестувати його роботу на іншій машині. Щоб ключ зміг працювати без установки драйверів, потрібно включити в нього режим HID.

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

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

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

Вставляємо ключ в USB порт і запускаємо екзешник. Програма виводить лог своїй робіт. Ключ працює і віддає дані. Тепер можна починати проектувати свій захист.

Конференція vbstreets - перегляд теми - захист програм від злому електронними ключами guardant

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

Конференція vbstreets - перегляд теми - захист програм від злому електронними ключами guardant

Потрібно тільки запам'ятати номер апаратного алгоритму. В даному випадку він 0.

Конференція vbstreets - перегляд теми - захист програм від злому електронними ключами guardant

Алгоритм шифрування викликається рядком:

Код: Виділити все 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 Кб) Завантажень: 96

jangle писал (а): Отже, демо-комплект з ключем Guardant Code Time обійшовся мені в 580 рублів.

А скільки буде коштувати повноцінний комплект і чим він відрізняється від демо комплекту?

jangle писал (а): Перша погана новина. У Guardant SDK є приклади на VB6 і VB.NET. Але вони не працюють.

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

Боротися і шукати, знайти і переховати

ger_kar писал (а): А скільки буде коштувати повноцінний комплект і чим він відрізняється від демо комплекту?

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

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


Хм. А за що тоді взагалі гроші?

Ура! Вийшла нова версія Unreal Commаnder'а!

Дякуємо. До того ж ще й сайт виявився російською, це чудово.
Ціни теж цілком прийнятні - це теж добре.
А ось умови поставки такі, що поки приїде в нашу глухомань подорожчає ще на стільки ж, це не дуже добре. Продавалися б такі штуки у нас - теж би взяв для дослідів

Боротися і шукати, знайти і переховати

ger_kar писал (а): Дякую. До того ж ще й сайт виявився російською, це чудово.
Ціни теж цілком прийнятні - це теж добре.
А ось умови поставки такі, що поки приїде в нашу глухомань подорожчає ще на стільки ж, це не дуже добре. Продавалися б такі штуки у нас - теж би взяв для дослідів

Схожі статті