Создание открытого проекта с защитой от копирования

Ну, или формализовать плагин так, чтобы он использовал набор констант. А их уже засылать через Serial, а закрытая прошивка их в EEPROM пущай сует и высовывает.

Сам не пробовал, но вроде у STM с защитой вышел облом - так были украдены дампы STLink …

На счёт этого не беспокоюсь, уровень знаний у покупателей такой же как у меня или ниже - то есть НИКАКОЙ.

это не вариант. Я даже не знаю с чем сравнить. Например есть прокси сервер SQUD - он ставится и дальше админ пишет свои фильтра на своё усмотрение используя все ресурсы ПК. Вот и тут мне нужно похожее в мире MK. Но исходники “squd” должны быть не доступны.

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

2 лайка

Если проводить аналогию с миром пэка и сквидами, то на плату следует припаять второй STM, который будет доступен для прошивки пользователем, а обмен производить с основным МК по SPI или ещё как.

1 лайк

А чё его писать? Есть же готовый Брейнфак!

1 лайк

тем более. уже вон готовый есть.

Понятно, что ничего не понятно. Один человек ответил, что у stm есть готовое решение, все остальные, что велосипед придётся изобретать самому. Вот и как тут быть новичку.

Учиться, пробовать, считать экономическую эффективность. Таков путь.

наморщить свой мосх, вместо чужих

1 лайк

Нет, нету. Есть документация, где разжевано, как это можно сделать. Делать всё равно придется самому.

https://www.st.com/resource/en/application_note/an4968-proprietary-code-read-out-protection-pcrop-on-stm32f72xxx-and-stm32f73xxx-microcontrollers-stmicroelectronics.pdf

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

  • или ОЧЕНЬ сложным, для того, чтобы его анализ на заложенные проверки был бы нецелесообразен
  • или быть неполным, ровно для того, чтобы злодею пришлось копаться в дизассемблере.

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


может быть не очень понятно вышло?
Дело в том, что защищенная область либо должна содержать существенную часть кода, либо не имеет смысла, так как её функционал может быть смоделирован или отключен.


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


Дисклеймер:

Я против таких подходов. Я лично - сторонник открытых исходников. Тем более речь не идет о деньгах. Распространяй по лицензии LGPL твое авторство никуда не денется, и слава - вся твоя.

2 лайка

во, теперь развеяли сомнения, документ описывает флаги PCROP. А всё остальное костылить самому.

Так я ж Вам сразу про это сказал. Мастурба́ция — это форма самостоятельного удовлетворения своей сексуальной потребности.

Ну так и сделай как у него - Пусть админ пишет конфиг-файлы и пуляет их через твоё приложение в МК. Такой вариант не рассматривается?

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

Самое главное не забудьте про уровень вашего покупателя. Чаще всего это уровень Plug&Play. И под этот уровень надо писать программную оболочку. Именно вам писать, если Вы хотите организовать.

Но ведь до жопы у нас все эти лицензии, не так ли?

Это пока не захотелось “нагнуть” кого либо.

1 лайк

У “нас” сейчас страна изолирована от мира. Но во первых это не навсегда ;), а во вторых у “нас” тут тоже работает ГитХаб и планируют какой-то местный аналог сделать. Таким образом все инструменты для славы - есть. Авторство кода подтверждается размещением на гитхабе, сохранение авторства - обеспечено LGPL. Это если интересует лишь слава и репутация.
Если реально хочется контроля, то я написал - как это делают - проприетарный загрузчик, проверяющий подпись. Подпись генерится только под контролем автора при сборке прошивки на сервере автора. Вариант обхода - написание своего аналога с ноля :wink: