Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Технологии защиты программного обеспечения > Проверка активационного ключа |
Автор: 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) которая это все спросит. При правильности она из лежащего збоку файлика достает дллки(розшифровуя их) и вписует в определенное поле(ресурс) данные регистрации. Самая елементрарная, но сложноломаемая. И кстати - припмшите проверку целестности проги контрольным числом(дляна исполняемого файла + сумма значений байт или как сами захотите) чтобы не патчили. Потом ещё можна ещё что-то для роверки. Кароче сами додумывайте. |