Перейти к содержанию
    

Лицензирование программы для микроконтроллера

Может RFID? А в метке шифрованная информация. Просто и удобно - поднес, ключ введен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насмешек я не писал. Критику - да. Моя критика не уменьшит возможного дохода от изделия, так и переживать не о чем. Успехов!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насмешек я не писал.

 

Тогда к чему это:

Или дальнейших насмешек боится?

 

Моя критика не уменьшит возможного дохода от изделия, так и переживать не о чем. Успехов!

Здесь полностью с Вами согласен. Спасибо за пожелание успехов!

 

Может RFID? А в метке шифрованная информация. Просто и удобно - поднес, ключ введен.

Можно кратко об этой технологии?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно кратко об этой технологии?

 

Ключи от домофона http://ru.aliexpress.com/wholesale?catId=0...archText=EM4305

http://www.emmicroelectronic.com/sites/def...205-4305_ds.pdf

 

Есть немного памяти куда можно записать данные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Если у кого-то есть другие идеи, поделитесь, пожалуйста.

 

В свое время делал нечто подобное - для компакт-дисков. Только у меня, в отличие от переменного количества суток, функционал выдавался порциями, и поэтому алгоритм был немного попроще, но это не принципиально.

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

всю тему не осилил, если пишу боян - сори

 

просто берете серийный номер устройства + срок лицензии + еще что хотите (например случайное чисто)

добавляете CRC

потом обычным AES-128 (да и DES можно, наверно) код

к коду прилепить еще CRC для проверки ввода

 

в устройстве открываете (AES ключ секретен так же, как и прошивка), проверяете CRC, серийный номер и дату

 

по-моему получать что-то из устройства будет излишне

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

всю тему не осилил, если пишу боян - сори

 

просто берете серийный номер устройства + срок лицензии + еще что хотите (например случайное чисто)

добавляете CRC

потом обычным AES-128 (да и DES можно, наверно) код

к коду прилепить еще CRC для проверки ввода

 

в устройстве открываете (AES ключ секретен так же, как и прошивка), проверяете CRC, серийный номер и дату

 

по-моему получать что-то из устройства будет излишне

Вы написали не боян. Скажите, зачем нужен серийный номер?

 

Что если делать так: срок лицензии + "мусор" из случайных чисел + CRC ранее перечисленного. Далее шифруем все это с помощью AES. После вычисляем CRC шифровки. Передаем шифровку с CRC покупателю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы написали не боян. Скажите, зачем нужен серийный номер?

 

Что если делать так: срок лицензии + "мусор" из случайных чисел + CRC ранее перечисленного. Далее шифруем все это с помощью AES. После вычисляем CRC шифровки. Передаем шифровку с CRC покупателю.

 

Да, это вполне годный вариант аутентификации. Только вам не нужен AES, вам нужен криптографический хэш типа sha1.

 

Кстати, а какой-нибудь разъем в устройстве предусмотрен? Совать туда физический ключ — EEPROM'ку с подписью любой нужной длины.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, а какой-нибудь разъем в устройстве предусмотрен? Совать туда физический ключ — EEPROM'ку с подписью любой нужной длины.

Разъема в устройстве нет.

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем, как в той сказке: "думал, думал и наконец придумал". А точнее, наверное, решил делать следующим образом.

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А пользователя как собираетесь определять, по фамилии? Все равно идет идентификация запрашиваемого. Чем лучше серийного номера? По серийному номеру и номеру запроса (год, второй.. ) вычисляйте свою ПСП. Криптостойкость - одинаковая.

"думал, думал..." гора родила мышь.

 

А если пользователь сменился? Держать в своем компе список всех пользователей? А если какая-то случайная потеря пользователя произойдет? Обратится к вам человек, "имею ваш прибор, хочу продлить жизнь". А вы ему - "а откуда прибор к вам попал? Опишите того человека, что продал вам его - лысый, с длинным носом?"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А пользователя как собираетесь определять, по фамилии? Все равно идет идентификация запрашиваемого. Чем лучше серийного номера? По серийному номеру и номеру запроса (год, второй.. ) вычисляйте свою ПСП. Криптостойкость - одинаковая.

"думал, думал..." гора родила мышь.

 

А если пользователь сменился? Держать в своем компе список всех пользователей? А если какая-то слусчайная потеря пользователя произойдет? Обратится к вам человек, "имею ваш прибор, хочу продлить жизнь". А вы ему - "а откуда прибор к вам попал? Опишите того человека, что продал вам его - лысый, с длинным носом?"

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Время-то вы как-то будете иметь в приборе? Чтобы год работы отсчитать.

Если кто-то захочет на 5 лет лицензию купить, в следующий раз посчитаете для S/N и 2021. Э... срок-то надо уже заложить... Тогда задавайте сейчас год окончания лицензии. И пусть прибор работает, вычисляет код, пока он не совпадет со сроком окончания... Наверное, можно придумать проще.

Если интервалы будут меньше года, используйте еще и месяц. Например, 201605.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если кто-то захочет на 5 лет лицензию купить, в следующий раз посчитаете для S/N и 2021. Э... срок-то надо уже заложить... Тогда задавайте сейчас год окончания лицензии. И пусть прибор работает, вычисляет код, пока он не совпадет со сроком окончания... Наверное, можно придумать проще.

Ну а разве не удобнее задавать в лицензионном ключе время действия в сутках? С учетом того, что я планирую хранить время действия в 2-х байтах, то максимум - это 65535 суток или 179 с лишним лет. Более чем предостаточно! В этом случае нет никакой привязки к дате. Пользователь может купить код и сколь угодно долго не вводить его в прибор. При этом его срок действия не теряется. И это намного проще!

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

Изменено пользователем d7d1cd

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...