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


Автор: Competitor 13.1.2009, 12:25
Привет всем,
задача: создать серийник на основе уникальных характеристик железа (берутся через WMI), далее каким-либо образом пользователь должен связаться с вендором, который по серийнику выдаст ему активационный ключ, который пользователь введет в программу, и активирует ее.

Вопрос: как лучше организовать этот процесс?

Придумал вот такой алгоритм (возможно бред):
       Серийный номер пользователя будет не что иное, как открытый открытый ключ ассиметричного алгоритма шифрования (RSA) + примесь из закодированных характеристик железа юзера. 
       Вендор получает этот серийник, вытаскивает из него открытый ключ и характеристики железа. Далее шифрует эти характеристики железа симметричным алгоритмом, например AES (ключ шифрования hiddenKey1 зашит также в пользовательском ПО). Далее вычисляет хеш MD5 получившегося шифротекста, и далее снова шифрует этот хеш по средством открытого ключа юзера, и отправляет этот шифротекст ему обратно.
       Юзер расшифровывает это сообщение своим закрытым ключом. При этом получает хеш MD5. Далее снова его у себя вычисляет на основе характеристик железа и ключа hiddenKey1. И далее сравнивает оба хеша, определяя правильность активационного ключа.

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

Спасибо

Автор: CrackMe 18.1.2009, 18:46
лучшими являются схемы с использованием стойких асимметричных криптоалгоритмов (el-gamal, rsa, ecdsa), но слабой стороной системы будет получение hardware id, т.к. имея один ключ под конкретное железо можно подменить hwid и пользоваться лицензией где угодно. криптография в таком случае защитит лишь от создания генератора ключей (если нормально выбраны числа).

Автор: tva94 20.1.2009, 18:05
Я бы посоветовал что-то типа следующего: Юзер вводит Ключ1(это типа CD-key) на основе которого сгенерируем индивидуальный для него индефикатор (MD5). Потом собирем инфу о процессоре, винчестере и видеокарте и ихние индефикаторы хешируем. Потом собираем это до кучи и зашивровуем встроеным в прогу RSA ключём(открытым) и выводим в текст. Потом просим пользователя войти на сайт, где он вводит эту строку в поле. На нашем серваке разшифровуем закрытым RSA ключем и в БД смотрим на данные ключа. Если такой ключ есть, то смотрим на данные оборудования. Если заполнены, то сверить, и при несовпадении послать, при совпадении дать код подтверждения (для надежности лутше файликом). Если поля не заполнены, то мы приписуем эти данные в поля и даем юзверю код подтверждения. Я бы советовал сделать так, чтобы при установке была демка с определенными ДЛЛками для демки. Сделать отдельную прогу для активации(aktivator.exe) которая это все спросит. При правильности она из лежащего збоку файлика достает дллки(розшифровуя их) и вписует в определенное поле(ресурс) данные регистрации. Самая елементрарная, но сложноломаемая. И кстати - припмшите проверку целестности проги контрольным числом(дляна исполняемого файла + сумма значений байт или как сами захотите) чтобы не патчили. Потом ещё можна ещё что-то для роверки. Кароче сами додумывайте.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)