Вопрос по схеме активации продукта

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

  1. Уникальный серийный номер. назначается пользователю
  2. Для машины пользователя создается уникальный идентификатор оборудования.

Предоставляя эту информацию поставщику, он выдает код активации.

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

Спасибо


person Omkar    schedule 09.12.2009    source источник
comment
[H] способ генерации кода активации, вероятно, отличается для каждого поставщика, который это делает. И, что не менее вероятно, это тщательно охраняемый секрет.   -  person Michael Todd    schedule 09.12.2009
comment
Убедитесь, что вы не раздражаете пользователей, кодируя 100% точное соответствие любого оборудования, но допускайте некоторые вариации. Мне не хотелось бы, чтобы программные пакеты не запускались просто потому, что я обновил второй жесткий диск или заменил мышь или видеокарту.   -  person Lasse V. Karlsen    schedule 30.01.2010


Ответы (3)


A really simple way of doing this is compiling a list of the PC's relevant hardware into a string and then running an MD5 hash over it. So your string would for e.g. contain

"Pentium 4 Dual Core 3.8 GHz, HDD1: 320GB"
etc There are many free implementations of MD5 hashing in almost every language, you can do a Google search for it.

Вы не говорите, на какую платформу вы нацеливаетесь, но если вы используете Windows, вы можете получить конфигурацию оборудования ПК, запросив WMI или используя вызовы Windows API. Например, класс физической памяти для просмотра в WMI - это Win32_PhysicalMemory < / а>.

При первой установке программного обеспечения этот хэш компилируется, а затем отправляется на сервер активации, который отправляет обратно соответствующий код, который будет соответствовать только этому хешу. Действительно простой / бесполезный пример - допустим, аппаратный хэш равен 123, а алгоритм проверки состоит в том, что после добавления аппаратного хэша и кода активации все цифры должны быть равны 9, сервер активации вернет 876. Программа добавит 2 коды вместе и получите 999, затем разблокируйте его для использования.

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

Однако: я настоятельно рекомендую вам не использовать этот метод защиты от копирования. Почему нет?

  • Каждый раз, когда пользователь обновляет свое оборудование, переустанавливает свой компьютер и т. Д., Вы, вероятно, понесете расходы на поддержку, помогая им повторно активировать программное обеспечение, и доставляете неудобства пользователю.
  • Если вы когда-нибудь прекратите работу своих серверов активации, продукта или закроете свою компанию, вы фактически закроете доступ для людей, которые заплатили за использование продукта.
  • Это в значительной степени превращает компьютер пользователя в аппаратный ключ - что на первый взгляд кажется хорошей идеей, но отговаривает пользователей от покупки программного обеспечения.

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

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

Я лично презираю любой продукт, если нет гарантии, что я смогу его использовать, если я заменю свой компьютер или компания прекратит работу. Это похоже на недавний случай, когда люди купили книгу Джорджа Оруэлла «1984» для своих Kindles, а затем, когда возник спор об авторских правах, Amazon удаленно удалил все копии этой книги, которые люди купили.

Просто мой 2с.

person Bork Blatt    schedule 09.12.2009

Как прокомментировал Майкл (Тодд), методы и схемы различаются в зависимости от поставщика. Если это действительно стандартно, наверное, проще "взломать", не так ли?

Я полагаю, ваша конечная цель - защитить свое программное обеспечение от несанкционированного использования?

Вот пара связанных сообщений SO:
Как вы защищаете свое программное обеспечение от незаконного распространения?
Способы остановить Программное пиратство?

ОБНОВЛЕНИЕ:
Чтобы ответить более прямо на вопрос ОП:

Я хотел бы знать, как генерируется код активации и каково его содержимое?
@: Может быть проприетарное хеширование / шифрование серийного номера. смешано с информацией о пользователе / ​​продукте / дате или практически чем-то еще.

Также какова общая схема после того, как код активации вводится в приложение на ПК пользователя, например, как он декодируется, сохраняется, проверяется в следующий раз?
@: В программном обеспечении, вероятно, есть какой-то алгоритм внутри, который может понять этот код, по крайней мере, для проверки его действительности. Может быть сохранен в виде файла, в реестре или даже встроен в существующий файл и т. Д.

person o.k.w    schedule 09.12.2009
comment
Да, конечно, я просто хочу знать, какова может быть общая схема защиты программного обеспечения. Потребовались некоторые идеи для начала. - person Omkar; 09.12.2009
comment
Хорошо, добавил больше информации в свой пост, см. Выше :) - person o.k.w; 09.12.2009

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

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

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

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

Программа использует три основных элемента данных:

  • [IC] Код установки: автоматически сгенерированный код; это может быть что угодно, созданное конкретной установкой и уникальное для данной установки. Он изменится при переустановке программного обеспечения и не зависит от того, кто его устанавливает. В прошлом некоторые поставщики использовали аппаратный хэш, но с таким же успехом это мог быть случайно сгенерированный код, который сохранялся для извлечения при каждом создании экземпляра. Удаление кода из хранилища по сути то же самое, что удаление программного обеспечения.
  • [UI] User ID: уникальный идентификатор зарегистрированного; вы можете называть это кодом разблокировки, кодом клиента, компании или серийным номером. Он однозначно идентифицирует, кто купил эту конкретную установку.
  • [HASH] Хеш: вычисленное значение; эта последняя часть аутентификации сообщает программному обеспечению, что оно зарегистрировано законно и готово к работе. Он должен быть получен из двух других частей и где-то храниться, либо в файловой системе, либо в реестре Windows, либо где-то еще.

Логический поток

В псевдокоде программа выполняет следующую процедуру:

begin:
  load IC
  if not IC: IC = generateIC
  load UI
  if not UI: UI = promptUser
testHash:
  load HASH
  if HASH=hash(IC,UI): goto valid
  HASH = activateLicense()
  if not HASH=hash(IC,UI): goto invalid    
valid:
  REV = revokeLicense()
  if REV: goto invalid
  done : run software
invalid:
  done : do not run software

generateIC:
  IC = some unique identifier
  store IC
  return IC
promptUser:
  UI = get id from user input
  store UI
  return UI
activateLicense:
  HASH = wwwResponse('activationRequest')
  store HASH
  return HASH
revokeLicense:
  REV = wwwResponse('checkIfRevoked')
  if REV: erase HASH
  return REV

Псевдокод также включает необязательный четвертый элемент:

  • [REV] Признак отозванной лицензии: компания-производитель программного обеспечения могла отслеживать количество активаций программного обеспечения и отозвать доступ злоумышленникам. Его не нужно сохранять, и его можно будет получить только при наличии доступного подключения к www.

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

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

Примечание.

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

person Octopus    schedule 11.04.2014