Есть задача - надо чтобы программу:
- нельзя было свободно скопировать на другой комп;
- чтобы можно было ограничинить срок ее работы по дате;
- чтобы было ограничение по количеству запусков;
- чтобы можно было удаленно разрешить работать ей на другом компе;
- чтобы можно было удаленно продлить срок работы, изменить количество запусков;
Пока представляю себе это так:
Есть программа, при первом запуске (когда еще нет ключа) она
определяет серийный номер жесткого диска и на основании него
генерирует какое-то число. Пользвателю для работы надо ввести в ответ ключ. Ключ вероятно будет получаться по электронной почте так что он может быть достаточно длинным.
В ответном ключе должна содержаться информация и о винте и о дате до которой работать и о количестве запусков и проч.
Про дату. Дату беру обычную - системную. Я знаю что ее легко изменить, но вроде как нет смысла работать если дата другая - на всех документах будет стоять не правильная дата. И еще - при запуске и во время работы проверять чтобы дата была всегда следующая больше предыдущей. Если вдруг дата последнего окончания работы больше чем сейчас то останавливаемся. Чтоб не баловались.
Защиту от взлома пока не продумываю. Если надо будет то прикручу
потом. Немного читал про это. Но пока не актуально. Главное чтобы
элементарными действиями (копирование файлов, редактирование) нельзя было обмануть программу.
Привязываться вроде как достаточно по номеру жестного диска, можно
конечно еще по чему-нибудь. (версия операционки и номер сервис-пака)
Все данные хранить в ини-файле. Вот только вроде получается надо
во-первых шифровать данные тот же передаваемый ключ. А во вторых надо подтвердить что это мои данные, то есть надо что-то типа цифровой подписи ставить в ини файл. Чтобы нельзя было изменить данные.
Собственно вопросы:
1. Насколько вообще работоспособен такой способ? Может я чего-то не
увидел и его можно легко обойти?
2. алгоритм шифрования ключа (содержащего информацию о сроках и проч.) есть что-нибудь готовое, чтоб и не очень сложно, но и не стыдно было. Что есть уже классического на эту тему?
3. Подтверждение подлинности информации. Как поставить цифровую
подпись? Теорию помню слабо. Есть ли готовые примеры?
Спасибо за внимание. Сам вижу что много написал, но хочется
посоветоваться.