Dünya çapında tanınan Türkiye'deki Mostbet bahis acentesinde çevrimiçi casinolarda oynayarak ve spor bahisleri yaparak unutulmaz dakikalar geçirin. Burada uygun oranlar, çeşitli bonuslar ve promosyonlar, bedava bahisler, bedava çevirmeler ve hızlı para çekme işlemleri bulacaksınız. Faydalı mobil uygulamamızı indirdiğinizde Mostbet bahisleriniz her zaman yanınızda.
0

Система лицензирования и удаленного обновления для серии EL4

arrow_left назад

Cоздание удобной, гибкой, и в то же время безопасной системы лицензирования и удаленного обновления данных является одной из основных задач при защите программного обеспечения. К сожалению, большинство уже существующих решений не удовлетворяют сразу всем этим условиям. В большинстве случаев слабым местом является защищенность самой системы и отсутствие реальной связи между результатом проверки лицензий и функционирования программы. У злоумышленника всегда есть возможность изменить функцию проверки лицензии (обычно для этого необходимо просто заставить ее возвращать “1” или “0”) и этого будет достаточно, чтобы программа считала, что ее модуль или опция разрешены к использованию. А информацию для обновления электронных ключей легко подменить или изучить.

В созданной нами системе лицензирования и удаленного обновления для электронных ключей SenseLock серии EL4 (кроме модели EL4-NET-RTC) мы постарались устранить этот недостаток, сохранив при этом гибкость настроек и простоту использования.

Мастер-ключ

Для работы c системой лицензирования и создания пакетов удалённого обновления, необходимо наличие мастер-ключа. Только с его помощью могут быть созданы пакеты обновлений, лицензии и записаны данные в ключи пользователей. Мастер-ключ предоставляется клиентам нашей компании по запросу.  Доступ к мастер-ключу осуществляется посредством ввода пароля. Без правильного пароля создание ключей пользователя, лицензий и пакетов удаленного обновления будет невозможно.

Программирование пользовательских ключей

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

Модуль “Программирование ключей” также позволяет производить следующие действия:

  • Настройка ПИН-кодов, которые будут установлены в ключе пользователя. ПИН-код пользователя должен совпадать с используемым в защищенной программе, ПИН-код разработчика может быть любым и должен храниться в надежном месте и не должен распространяться.
  • Начальный номер обновления (рекомендуется устанавливать равным “1” для новых ключей), максимальное количество лицензий и режим работы исполняемых модулей.
  • Установка идентификатора ATR, который будет установлен в ключе (может использоваться защищенной программой для опознания предназначенных для нее ключей), а также пакеты обновления и лицензий. Последние два параметра не являются обязательными.

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

Система удаленного обновления

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

Основные возможности системы удалённого обновления:

  • Безопасное удаленное обновление исполняемых модулей и файлов с данными, расположенными в электронном ключе SenseLock.
  • Возможность разрешить обновление только для электронного ключа с указанным идентификатором.
  • Защита от обновления старыми данными.

 

Система лицензирования

Основные возможности системы лицензирования:

  • Лицензии, функции по их проверке и результат находятся и выполняются в защищенном пространстве электронного ключа и не могут быть изменены злоумышленниками извне!
  • Создание до 255 лицензий в одном электронном ключе. Каждая лицензия имеет собственные независимые настройки.
  • Ограничение времени работы лицензии. Указывается начальная и конечная даты работы лицензии.
  • Ограничение количества запросов на получение лицензии. Данная возможность позволяет ограничить запуск защищаемой функции на произвольное (от 1 до 65535) количество раз.
  • Возможность безопасного удаленного обновления каждой лицензии.
  • Возможность привязки обновления лицензии к уникальному идентификационному номеру электронного ключа SenseLock. Это исключит несанкционированное использование обновления с электронными ключами других пользователей защищенного программного обеспечения.
  • Защита от обновления уже использованной в электронном ключе лицензией.
  • Получение информации о текущем значении параметров лицензии.
  • Возможность дальнейшего гибкого расширения функциональности системы лицензирования.

 

Принцип работы системы лицензирования

Использование модуля системы лицензирования с защищенным программным обеспечением происходит в два этапа:

Вызов исполняемого модуля лицензирования для получения и проверки лицензии

  1. Программа делает запрос в электронный ключ пользователя на получение необходимой лицензии.
  2. Исполняемый модуль лицензирования проверяет параметры лицензии.
  3. Устанавливается статус лицензии в зависимости от результата проверки. Статус проверки хранится в защищенном пространстве внутри электронного ключа пользователя и не может быть изменен извне.
  4. Результат проверки возвращается в защищенную программу. Данный результат носит исключительно информационный характер и никак не влияет на работу системы лицензирования в случае его изменения злоумышленником.

 

Вызов исполняемого модуля защищенного приложения для выполнения основных функций

  1. Защищенная программа вызывает записанный в электронный ключ пользователя исполняемый модуль разработчика с необходимыми параметрами.
  2. Исполняемый модуль перед выполнением защищенных функций производит проверку статуса лицензии. Это действие производится в защищенном пространстве электронного ключа пользователя и не может быть изменено извне.
    После проверки статуса лицензии разработчик может его сбросить, чтобы для следующего вызова защищенной функции было опять необходимо получать лицензию. Поведение системы лицензирования полностью контролируется разработчиком и зависит от общей схемы защиты.
  3. Результат работы защищенной функции или код ошибки возвращаются в программу.

Дополнительные функции системы лицензирования позволяют:

  • Освобождение полученной лицензии из защищенной программы. В этом случае внутри электронного ключа сбрасывается статус полученной лицензии.
  • Получение списка лицензий в электронном ключе пользователя.
  • Получение полной информации о лицензии по ее идентификатору (описывается структурой LM_RECORD_t).
  • Обновление лицензии в электронном ключе пользователя.

 

Пример использования

Пример получения лицензии и последующий вызов функции исполняемого модуля разработчика:

#define LIC_MODULE_1 0x01 
#define LIC_MODULE_1_VER 0x0100 
// Код программы ... 
/* Получение лицензии */ 
error = SLM_LicCheckout(&s4ctx, LIC_MODULE_1, LIC_MODULE_1_VER); 
if (error != ERR_LM_SUCCESS) 
    { 
        printf("Ошибка получения лицензии: %08X\n", error); return -1; 
    } 
/* Выполнение защищённой функции в электронном ключе */ 
error = ProtectedFunction1(param1, param2, &result); 
if (error != 0) 
    { 
        printf("Ошибка выполнения функции: %08X\n", error); 
    } else 
    { 
        printf("Результат выполнения: %08X\n", result); 
    } 
// Код программы ... 
/* Освобождение полученной лицензии */ 
SLM_LicCheckin(&s4ctx, LIC_MODULE_1);

Пример проверки статуса лицензии в исполняемом модуле разработчика:

DEFINE_AT(LM_STATUS_t, lic_stat, 0x0400, RAM_EXT); 
DEFINE_AT(unsigned char, reserved[150], 0x040B, RAM_EXT); 
IO_PKT_t *input = (IO_PKT_t*)pbInBuff; 
// Переменные, определения и код защищаемых функций ... 
void main() 
{ 
    switch (input->tag) 
    { 
    // Функция #1 
        case CMD_FUNC1 : 
             { // Проверка соответствия идентификатора полученной // лицензии 
             if (lic_stat.id != 1) 
                 { 
                      error = ERR_LICENSE_NOT_CHECKOUT; 
                      break; 
                 } 
             // Проверка статуса полученной лицензии 
             if (lic_stat.status != LIC_STAT_VALID) 
                 { 
                      error = ERR_LICENSE_NOT_VALID; 
                      input->buff = lic_stat.status; 
                      break; 
                 } 
             // Выполнение защищенной функции, если лицензия получена 
             error = func1(input->buff); 
             } 
             break; 
    // Функция #2 
        case CMD_FUNC2 : 
             { // Проверка соответствия идентификатора полученной лицензии 
             if (lic_stat.id != 2) 
                 { 
                      error = ERR_LICENSE_NOT_CHECKOUT; 
                      break; 
                 } 
             // Проверка статуса полученной лицензии 
             if (lic_stat.status != LIC_STAT_VALID) 
                 { 
                     error = ERR_LICENSE_NOT_VALID; 
                     input->buff = lic_stat.status; break; 
                 } 
             // Выполнение защищенной функции, если лицензия получена 
             error = func2(input->buff); 
             } 
             break; 
        default : 
             error = ERR_INVALID_FUNCTION; 
             break; 
} 
// Установка возвращаемого кода ошибки input->tag = error; 
// ... 
}

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

Стоимость

Для всех наших клиентов система безопасного удаленного обновления и лицензирования предоставляется бесплатно!

наверх