Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Все современные модели локальных ключей Guardant позволяют лицензировать работу приложения, ограничивая количество его запусков. Это удобная технология, как для создания демо-версий, так и в других случаях.
Чтобы ограничить число запусков приложения:
1. Запустите утилиту программирования ключа GrdUtil.exe, загрузите нужный файл образа.
2. Выберите аппаратный алгоритм, который будет использоваться для защиты. Установите нужное число запусков программы с помощью 4-хбайтового счетчика алгоритма, как это описано ниже.
Важно! Автозащита
1. Для ограничения числа запусков приложения можно использовать только алгоритмы типа GSII64 или AES128.
2. В процессе автозащиты происходит множественный вызов аппаратного алгоритма, и если запрограммировать ключ до автозащиты, то указанное заранее значение счетчика уменьшится. По этой причине лучше предварительно защитить исполняемый файл с помощью Мастера автозащиты или строчной утилиты, и только потом прописать в ключ нужное значение счетчика.
3. Запишите маску в ключ.
Теперь при каждом старте приложения счетчик алгоритма автоматически будет декрементироваться на единицу – в случае использования автозащиты, либо, в случае использования Guardant API, декрементировать счетчик нужно самостоятельно, производя вызов алгоритма.
После того, как значение счетчика обнулится, приложение перестанет запускаться.

...

1. Выберите в маске аппаратный алгоритм, который будет использоваться для защиты, и выполните команду меню Редактировать | Свойства поля.
2. В появившемся диалоге Свойства поля, вкладка Свойства алгоритма/ защищенной ячейки, установите флаг С уменьшением счетчика и задайте значение счетчика в появившемся поле:
Image Removed
3. Нажмите на кнопку [Применить] и закройте диалог.
Запишите маску в ключ.

...

Электронные ключи Guardant Time/ Net Time / Code Time оснащены часами реального времени и позволяют ограничивать астрономическое время работы защищенного приложения.
Anchor_1._Ограничение_«чистого»_1._Ограничение_«чистого» Anchor_Установка_счетчика_аппаратного_1_Установка_счетчика_аппаратного_1 Anchor_2._Ограничение_астрономическог_2._Ограничение_астрономическог Anchor_2._Ограничение_астрономического_2._Ограничение_астрономического

Смысл технологии ограничения времени заключается в том, что работоспособность алгоритма зависит от таймера (RTC), встроенного в ключ.

С помощью ключей с часами реального времени можно реализовывать различные лицензионные политики, влияющие на время работы защищенного приложения:

  • Приложение сможет работать только после активации алгоритма, которая произойдет по наступлению указанной даты
  • Приложение перестанет работать после деактивации алгоритма, которая произойдет по наступлению указанной даты
  • Срок работы приложения ограничен заданным периодом работоспособности, т. н. «временем жизни», алгоритма. Алгоритм активируется при первом запуске приложения и деактивируется по истечению «времени жизни»

...

...

Установка

...

временной

...

зависимости

...

алгоритма

UI Steps
title

...

Установка временной зависимости алгоритма

...


UI Step

Выберите в маске для ключа с RTC аппаратный алгоритм, который будет использоваться для защиты, и выполните команду меню

...

«Образ ключа | (Поле) Свойства поля».


UI Text Box
typewarning

При автозащите установка временной зависимости имеет смысл только для алгоритма типа GSII64 и AES128, и именно того, который будет использоваться для защиты

...

Image Added

UI Step

В появившемся диалоге Свойства поля перейдите на вкладку Временные зависимости

...

...


UI Step

...

С помощью флагов установите нужные временные зависимости (подробное описание см. в таблице ниже).
Запишите

...

образ в ключ.

Элементы управления диалога «Временные зависимости»:

Элемент интерфейса

Назначение

Флаг Время автоматической активации

Если флаг установлен, то алгоритм (а, следовательно, и защищенное приложение) станет работоспособным только после наступления указанной даты активации

Комбинированное поле ввода/ календарь для установки даты активации

Установка календарной даты активации аппаратного

...

алгоритма.

Дату можно установить как непосредственно в поле ввода, так и используя календарь

Флаг Время автоматической деактивации

Если флаг установлен, то аппаратный алгоритм (а, следовательно, и защищенное приложение) перестанет быть работоспособным сразу после наступления указанной даты деактивации

Комбинированное поле ввода/ календарь для установки даты деактивации

Установка календарной даты деактивации аппаратного алгоритма

Флаг Время жизни алгоритма

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

Отсчет времени работы начинается после первого

...

обращения к алгоритму (после первого старта приложения)

UI Text Box
typewarning

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


Поля ввода периода работоспособности алгоритма

Указание временного периода работоспособности алгоритма в формате лет:мес:дн:час:мин:сек

Флаг

...

Алгоритм изменяется каждые…

Если флаг установлен, то определитель алгоритма будет постоянно изменяться через определенный временной промежуток, начиная с указанной даты (см. FlipTime)

Поле ввода, указывающее через сколько дней изменится алгоритм

Установка периодичности изменения определителя алгоритма для механизма FlipTime (в днях)

Комбинированное поле ввода/ календарь для установки даты первого изменения алгоритма

Установка календарной даты активации механизма FlipTime


FlipTime. Изменение ответов

...

алгоритма через указанный период времени

В ключах с RTC реализована технология FlipTime, позволяющая автоматически изменять значения, возвращаемые алгоритмом ключа по наступлению заданного временного значения.
Важно!

UI Text Box
typewarning

Технология FlipTime неприменима к ячейкам типа «Загружаемый код» в ключах Guardant Code Time!

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

Чтобы использовать механизм FlipTime, разработчик должен знать, какие ответы вернет алгоритм в каждом случае. Для решения этой задачи в комплект разработчика включена консольная утилита FlipTime.exe, генерирующая массивы вопросов-ответов алгоритму для каждого факта изменения определителя.

Чтобы активировать механизм FlipTime: 1.

  1. Выделите в маске ключа c RTC нужный алгоритм, выполните команду меню

...

  1. Образ ключа | (Поле) Свойства поля

...

  1.  и перейдите на вкладку Временные зависимости.

...

  1. Установите флаг Алгоритм изменяется каждые… и в появившемся поле задайте период (в днях) изменения алгоритма.

...

  1. С помощью комбинированного поля/календаря определите дату, по достижении которой механизм FlipTime будет задействован.

...

  1. Сохраните маску и запишите ее в ключ (команда меню Ключ |

...

  1. (Операции с ключом) Записать образ в ключ).

...

  1. Запустите утилиту FlipTime.exe и, следуя ее указаниям, получите массивы вопросов-ответов алгоритма после каждого факта изменения определителя.

...

  1. Используйте полученные массивы в приложении согласно заданным временным зависимостям.

...

UI Text Box
typewarning
  1. Технология FlipTime предназначена для использования только при защите с помощью Guardant API. Недопустимо ее использование при автозащите!

...

  1. Пользоваться FlipTime следует с известной осмотрительностью, т. к. если в расчетах при проектировании защиты, программировании ключа или защите приложения будет допущена ошибка, то ее достаточно сложно будет диагностировать и исправлять в «боевых» условиях, когда ключ находится у конечного пользователя.

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

Установка запрета на изменение времени

В ключах Guardant Time/ Time Net/ Code Time можно задавать новое значение для встроенного таймера при помощи специальной функции Guardant API (см. описание GrdSetTime).

Однако если такая необходимость и возникает, то, как правило, на этапе программирования ключа (например, при реализации утилиты прошивки ключа, альтернативной GrdUtil.exe).

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

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

UI Text Box
typeinfo

Важно!
В RTC-ключах, поступающих с производства компании «Актив», а также в образах, создаваемых для RTC-моделей, блокировка времени уже выставлена по умолчанию (см. состояние флага Запретить изменение времени в ключе в Панели инструментов/ленточном интерфейсе GrdUtil.exe).

Категорически не рекомендуется менять умолчательное значение без особой необходимости.

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

Image Added 
В случае отсутствия блокировки изменения времени в ключе загрузите в Редактор нужный образ RTC-ключа, проверьте состояние флага Запретить изменение времени, и если он не установлен, выполните команду меню Ключ | (Режимы) Запретить изменение времени в ключе. После этого запишите образ в ключ.

В результате в ключе будет выставлен глобальный флаг GrdGF_Pro-tectTime (см. описание GrdProtect), и изменение состояния таймера станет невозможным без инициализации памяти ключа.