реклама на сайте
подробности

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Лицензирование программы для микроконтроллера
d7d1cd
сообщение Apr 19 2016, 08:05
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Здравствуйте все! Есть устройство на базе микроконтроллера MSP430F249. Под этот микроконтроллер написана программа. Для того, чтобы программа выполняла свои основные функции, пользователь должен приобрести код активации и передать его в устройство. Код активации устанавливает время работы основных функций программы в сутках. Программа микроконтроллера не доступна пользователю (микроконтроллер заблокирован на чтение программы). Код активации будет вводиться в устройство посредством кнопок самого устройства и его ЖК дисплея. Код активации, естественно, должен быть устойчив к взлому. Посоветуйте, как реализовать данный функционал.

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

Если у кого-то есть другие идеи, поделитесь, пожалуйста.
Go to the top of the page
 
+Quote Post
amiller
сообщение Apr 19 2016, 08:25
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Что-то я как то слабо представляю себе, как пользователь вводит длинный код с помощью клавиатуры молча (не ругаясь матом).
Если уж Вы решаете вопросы монетизации использования устройства, то может стоило раскошелиться на встроенный GSM-модем?
И сделать нормальный сервер лицензирования и обновления ПО?
Или реализуйте связь с компьютером, где будет ПО, предназначенное для получения лицензий через интернет.

Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 19 2016, 08:58
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(amiller @ Apr 19 2016, 11:25) *
Что-то я как то слабо представляю себе, как пользователь вводит длинный код с помощью клавиатуры молча (не ругаясь матом).
Если уж Вы решаете вопросы монетизации использования устройства, то может стоило раскошелиться на встроенный GSM-модем?
И сделать нормальный сервер лицензирования и обновления ПО?
Или реализуйте связь с компьютером, где будет ПО, предназначенное для получения лицензий через интернет.

Как пользователь будет вводить код активации - это другой вопрос и он не рассматривается в этой теме (хотя хочется сказать, что это будет не так сложно, как можно подумать). GSM не выход, так как устройство может использоваться там, где нет сотовой связи. Компьютер не хочу использовать по той причине, что тогда пользователю кроме устройства нужен будет еще компьютер и преобразователи для связи с устройством. Устройство должно быть полностью автономным и не требовать для своей работы или настройки GSM модема, компьютера и прочих аксессуаров. Вместе с этим, подобрать код активации устройства должно быть неоправданно сложно (хотя, с учетом того, что ввод кода осуществляется через кнопки, подобрать его уже сложно).
Go to the top of the page
 
+Quote Post
slanted
сообщение Apr 19 2016, 09:15
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 140
Регистрация: 2-01-08
Пользователь №: 33 768



Цитата(amiller @ Apr 19 2016, 12:25) *
Что-то я как то слабо представляю себе, как пользователь вводит длинный код с помощью клавиатуры молча (не ругаясь матом).


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

Цитата(d7d1cd @ Apr 19 2016, 12:05) *
Сейчас есть следующая идея. Программа в устройстве пользователя генерирует ключ шифрования случайным образом. Пользователь с помощью кнопок устройства определяет этот ключ и передает его продавцу лицензий. Продавец лицензий с помощью этого ключа создает код активации, в который "вшит" нужный срок действия программы, и продает этот код пользователю устройства. Пользователь вводит код активации в устройство. Программа устройства, если код активации "правильный", устанавливает время работы.


Обычный challenge-response. На больших железках это реализуется с помощью асимметричной криптографии: private key есть только у продавца, он им подписывает файл лицензии. Public key вшивается в устройство, с его помощью софт проверяет, что подсунутая лицензия действительно от продавца.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 19 2016, 09:50
Сообщение #5


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Если у МК есть уникальный серийный номер, то можно им воспользоваться. В STM32 есть. Если нет, можно свой создать при программировании.
Ответный код должен в некой комбинации с серийным номером давать разрешение на работу.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 19 2016, 10:10
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(slanted @ Apr 19 2016, 12:15) *
Обычный challenge-response. На больших железках это реализуется с помощью асимметричной криптографии: private key есть только у продавца, он им подписывает файл лицензии. Public key вшивается в устройство, с его помощью софт проверяет, что подсунутая лицензия действительно от продавца.

Где можно почитать про данный метод?
Go to the top of the page
 
+Quote Post
slanted
сообщение Apr 19 2016, 15:01
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 140
Регистрация: 2-01-08
Пользователь №: 33 768



Цитата(d7d1cd @ Apr 19 2016, 14:10) *
Где можно почитать про данный метод?

https://en.wikipedia.org/wiki/Digital_signature
https://en.wikipedia.org/wiki/Challenge%E2%..._authentication
последнее все ж больше интерактивная штука, если вдруг надумаете gsm модем туда ставить или что-то такое.
Go to the top of the page
 
+Quote Post
amiller
сообщение Apr 19 2016, 15:19
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Я всё же считаю в цепочке взаимодействия самым ненадёжным элементом человека.
И вводить руками длинные неупорядоченные ключи всё же сложно.
Если нет связи и компьютера поблизости, то я бы предложил такой вариант:
В устройстве должен стоять какой то съёмный носитель информации (flash-card) или что-то подобное. На этом носителе в кодированном виде хранятся сгенерированные ключи, производится отсчёт времени работы в любом формате.
По истечению времени работы носитель вынимается и вставляется в компьютер (планшет, смартфон), в котором работает ПО, способное продлить лицензию.
Хотя это тоже сложно.
Ещё лучше поставить в устройство блютуз-адаптер за 2 доллара. А затем просто подойти к устройству со смартфоном. Далее всё происходит автоматически: В устройстве происходит продление времени работы, а со смартфона соответствующее время списывается.
Ну а далее нужно продумать механизм, как владелец смартфона будет покупать время у производителя устройств. Конечно путь сложный, но однозначно более удобный для пользователя.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 20 2016, 12:05
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(amiller @ Apr 19 2016, 18:19) *
Я всё же считаю в цепочке взаимодействия самым ненадёжным элементом человека.
И вводить руками длинные неупорядоченные ключи всё же сложно.
Если нет связи и компьютера поблизости, то я бы предложил такой вариант:
В устройстве должен стоять какой то съёмный носитель информации (flash-card) или что-то подобное. На этом носителе в кодированном виде хранятся сгенерированные ключи, производится отсчёт времени работы в любом формате.
По истечению времени работы носитель вынимается и вставляется в компьютер (планшет, смартфон), в котором работает ПО, способное продлить лицензию.
Хотя это тоже сложно.
Ещё лучше поставить в устройство блютуз-адаптер за 2 доллара. А затем просто подойти к устройству со смартфоном. Далее всё происходит автоматически: В устройстве происходит продление времени работы, а со смартфона соответствующее время списывается.
Ну а далее нужно продумать механизм, как владелец смартфона будет покупать время у производителя устройств. Конечно путь сложный, но однозначно более удобный для пользователя.

То, что в этой цепочке самый не надежный это человек, я полностью согласен. Однако, еще человек хитер и жаден. Даже если перейти через все ограничения (нет сотовой связи и прочее) и организовать лицензирование в автоматическом режиме, то это даст какую-то реальную возможность взломать систему лицензирования, так как будет электронный доступ в прибор (имеется ввиду ввод ключа). Поэтому был реализован ввод ключа через кнопки, когда ввод большого количества ключей будет очень долгим по времени. Если покупателю будет проблематично часто вводить код (по причине кривых рук или еще чего-то), то он может купить ключ лицензии на очень долгий срок (например на 2 года), далее, используя матерный язык, постороннюю помощь и прочие инструменты, он вводит код в устройство и забывает об этом кошмаре на 2 года.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 20 2016, 12:45
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (d7d1cd @ Apr 20 2016, 15:05) *
...забывает об этом кошмаре на 2 года.

Лично я сразу-бы забыл о таком кошмаре ВООБЩЕ не покупая такое устройство.



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
controller_m30
сообщение Apr 20 2016, 14:10
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 24-02-09
Пользователь №: 45 309



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

И никаких кодов вводить не надо. Включил и работает. Время вышло - остановилось устройство. Хочет чтоб работало 10 лет: пусть купит 3 устройства на 3 года и 1 устройство на год rolleyes.gif

Сообщение отредактировал controller_m30 - Apr 20 2016, 14:11
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 20 2016, 18:29
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(zltigo @ Apr 20 2016, 15:45) *
Лично я сразу-бы забыл о таком кошмаре ВООБЩЕ не покупая такое устройство.

Лично я, не зная что это за устройство, от подобных заявлений воздержался бы...

Цитата(controller_m30 @ Apr 20 2016, 17:10) *
Можно проще. Срок работы устройства задавать при изготовлении.
Сделать три разновидности устройств, отличающихся временем работы: "пробник на неделю", на год, и на (допустим) три года.
"Пробник на неделю" продаётся по себестоимости изготовления + какая-то гипотетическая выгода за неделю (или без неё, как угодно).
На год - по цене выгоды за год.
На три - по цене выгод за три года.

И никаких кодов вводить не надо. Включил и работает. Время вышло - остановилось устройство. Хочет чтоб работало 10 лет: пусть купит 3 устройства на 3 года и 1 устройство на год rolleyes.gif

Спасибо за совет. Подобная схема не подойдет по той причине, что устройство может не использоваться какое-то время. В результате покупатель потратит деньги зря и вообще вряд ли согласится на таких условиях покупать устройство.
Хочется сказать, что ввод кода в устройство не является проблемой раз и не является темой для обсуждения здесь два. То, что устройство будет лицензироваться кодом активации и то, что он будет вводиться с кнопок это решенный вопрос. Вопросом данной темы является как более надежно и безопасно создавать и идентифицировать код активации.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 20 2016, 21:44
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (d7d1cd @ Apr 20 2016, 21:29) *
Лично я, не зная что это за устройство, от подобных заявлений воздержался бы...

Лично я зная, что уникальных устройств для уникальных целей не бывает, сделал это заявление.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 21 2016, 05:13
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(zltigo @ Apr 21 2016, 00:44) *
Лично я зная, что уникальных устройств для уникальных целей не бывает, сделал это заявление.

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

Выше приведенный опус был лирическим отступлением. Теперь призываю всех вернуться к моим баранам.

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

Сообщение отредактировал d7d1cd - Apr 21 2016, 05:14
Go to the top of the page
 
+Quote Post
controller_m30
сообщение Apr 21 2016, 05:26
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 24-02-09
Пользователь №: 45 309



Перейти от единиц измерения "байт" к единицам измерения "бит".
Полезную информацию, которая допустим содержится только в двух байтах - разбиваем на биты, и перемешиваем с битами ещё к примеру 10 байт ("балласт"). Не с байтами, а с битами.
Можно ещё добавить CRC-код к полезной информации. Разбить его на биты, и тоже беспорядочно смешать с битами "балласта".
Go to the top of the page
 
+Quote Post

5 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 16:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.04126 секунд с 7
ELECTRONIX ©2004-2016