Как защитить скетч от недобросовестного покупателя

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014
Вот у Белова вычитал. Может это ОНО:
 
Ячейки защиты и идентификации:
Исторически сложилось так, что даже самые первые модели микро-
контроллеров имели программируемые ячейки защиты информации.
Микроконтроллеры AVR также имеют такую защиту. Это специальные
ячейки, подобные конфигурационным.
Каждый микроконтроллер имеет, как минимум, две защитные ячейки
LB1 и LB2. Запись и чтение этих ячеек возможны только в режиме про-
граммирования. При записи нуля в LB1 блокируется запись данных во
Flash- и EEPROM-память. Одновременно блокируется возможность
изменять конфигурационные ячейки.
Если записать ноль еще и в LB2, то блокируется и возможность чтения
всех данных. После этого узнать содержимое вашей программы будет
невозможно. Для повторного использования микроконтроллера нужно
подать команду «Стирание микросхемы». При этом вся информация
теряется, а способность чтения и модификации возвращается.
Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Только что пришёл в голову физическо-извращенческий метод) 

Суть в том, что после программирования МК мы просто под корень обрезаем одну/все ножки программирования, т.е SCK/MISO/MOSI. Лучше использовать МК без бутлоадера, тогда не надо будет корябать UART. А хардварный SPI не такая уж и большая потеря)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Yarik.Yar пишет:

А хардварный SPI не такая уж и большая потеря)

Особливо на Tiny85, где кроме него всего два пина остаются :)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Желающим прятать свой код подкину идейку: как известно, через JTAG и/или SPI можно перепрограммировать фьюзы и соответственно считать/перепрошить МК. Поступаем просто: эти ноги в проге используем "на выход", задействуя сразу по включению .. всё. :)

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

Arhat109-2 пишет:

как известно, через JTAG и/или SPI можно перепрограммировать фьюзы и соответственно считать/перепрошить МК. Поступаем просто: эти ноги в проге используем "на выход", задействуя сразу по включению .. всё. :)

нда... как всё оказывается просто - в "проге" нужно ноги на выход... и всё - JTAG и/или SPI аппаратный интерфейс работать перестанет.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Для надежности можно ещё скомпилять так, чтобы бутлоадер не "включался", а сразу шел старт с нуловего адреса программы. Что-то мешает? :)

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

Arhat109-2 пишет:

Для надежности можно ещё скомпилять так, чтобы бутлоадер не "включался", а сразу шел старт с нуловего адреса программы. Что-то мешает? :)

ок. объясню, что мешает:

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

тебе - обычная безграмотность. 

ты вроде читал http://arduino.ru/forum/programmirovanie/kak-ispolnit-svoi-kod-do-initsi... но нихрена не понял по причине, указанной мной выше.

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

ЕвгенийП, ну д, проблемка)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Клапауций 322, так яж и отписал: закрыть возможность второго нулевого адреса при старте - делается настройкой фьюзов. Фсё, нет нулевого адреса загрузчика. А чтобы "запустить" прошивку, надо подключиться к JTAG или SPI .. как вам это "удастся" в пропаянной плате, где эти ноги запаяны как выхода с навесным железом? Мы жеж о "встроенном" МК, не? :)

Оставляем "прошивку" только через UART, для контролируемых обновлений, встраивая переход на загрузчик в скетч .. и фсё.

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

Arhat109-2 пишет:

Клапауций 322, так яж и отписал: закрыть возможность второго нулевого адреса при старте - делается настройкой фьюзов. Фсё, нет нулевого адреса загрузчика.

при каком "старте"?

перевод МК в режим программирования происходит так:

после этого никакие "проги" ниоткуда не запускаются.

Arhat109-2 пишет:

А чтобы "запустить" прошивку, надо подключиться к JTAG или SPI .. как вам это "удастся" в пропаянной плате, где эти ноги запаяны как выхода с навесным железом? Мы жеж о "встроенном" МК, не? :)

запаяны, как что? у взломщика, так понимаю, должны руки из жопы расти...

Arhat109-2 пишет:

Оставляем "прошивку" только через UART, для контролируемых обновлений, встраивая переход на загрузчик в скетч .. и фсё.

ну, вот - плату залили ебоксидкой, покрыли тремя слоями брони, ноги запаяны как выхода, SPI и JTAG недоступен вследствие рукожопости взломщика... и, тут вот оно счатье - UART! заливай/сливай - счастье есть, его не может не быть.

и, как же заливать обновления, если ты загрузчик утилизировал в целях безопасности?

==============

Arhat109-2, прекращай убеждать меня и форумчан в собственной безграмотности.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Я уже однажды отписывал свое мнение к вопросу "как защитить от недобросовестного покупателя" .. ДОГОВОРОМ. Это стеб, если до вас ещё не дошло. :)

terminal
Offline
Зарегистрирован: 02.09.2015

Знаю как защитить код ! Если кому интересно то первый этап это строить свое устройство по схеме 

http://www.terminal-kom.ru/index.php/proektatmel

Данная схема дает возможность удаленного программирования Вашего устройства.

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

По вот такому типу http://www.shop.terminal-kom.ru/exe/Project1.exe

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

Страница с передаваемым кодом как пример http://www.shop.terminal-kom.ru/ код открыт.

Ну и третий этап это размещение демо версий и версий ограниченного срока действия на Вашем сайте в свободном доступе.

Ну и доступ к загрузке зарегистрированным пользователсям. Вот и вся бизнес модель.

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

terminal пишет:

Знаю как защитить код !
.................
Вот и вся бизнес модель.

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

terminal
Offline
Зарегистрирован: 02.09.2015

Опоздал лет на 10 :)))

diakin
diakin аватар
Offline
Зарегистрирован: 04.06.2016

Q. Can I build a commercial product based on Arduino?
A. Yes, with the following conditions:

  • Physically embedding an Arduino board inside a commercial product does not require you to disclose or open-source any information about its design.
  • Deriving the design of a commercial product from the Eagle files for an Arduino board requires you to release the modified files under the same Creative Commons Attribution Share-Alike license. You may manufacture and sell the resulting product.
  • Using the Arduino core and libraries for the firmware of a commercial product does not require you to release the source code for the firmware. The LGPL does, however, require you to make available object files that allow for the relinking of the firmware against updated versions of the Arduino core and libraries. Any modifications to the core and libraries must be released under the LGPL.
  • The source code for the Arduino environment is covered by the GPL, which requires any modifications to be open-sourced under the same license. It does not prevent the sale of derivative software or its inclusion in commercial products.
    -------------
    Но вот что за ботва с "object files"?  Типа при обновлении библиотеки заказчик побежит перекомпилировать и перезаливать прошивку? ) Но формальное требование есть.
    А где их там ардуино сохраняет при компиляции?

    (https://www.arduino.cc/en/Main/FAQ)