Защита кода на AVR / Arduino и доставка обновлений


9
  1. Каков наилучший способ защиты кода, записанного на любом устройстве на базе AVR, от реинжиниринга?
  2. Какой простой способ предоставить обновления для конечных пользователей для самостоятельной прошивки без раскрытия кода? (Это с загрузчиком, который расшифровывает зашифрованное изображение?)

Не ругайте меня за продвижение DRM, я за открытые платформы - мне просто интересно, как это будет работать.


Не. Существует NO WAY , чтобы полностью предотвратить возможность злонамеренного человека обратного инжиниринга вашего аппаратного / программного обеспечения. Все, что предпринимаются анти-RE мерами, - это заставляет дольше двигаться назад.
Коннор Вольф

Ответы:


9

Первый:

На микросхеме установлены предохранители, которые могут быть установлены для предотвращения считывания кода с микросхемы внешними инструментами. Ищите предохранители в вашей спецификации и / или документации для программиста.

Он не идеален, но защищает вас от простых атак.

Во-вторых:

Вы не можете загрузить прошивку безопасно. AVR не может самостоятельно программировать охраняемые районы:

http://www.atmel.com/dyn/resources/prod_documents/doc1644.pdf

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


3
Если предохранители немного не идеальны, какой тип повреждения может обойти это?

1
@Anonymous - химическое травление крышки чипа и использование электронных микроскопов, лазеров и микрозондов для просмотра, взаимодействия и редактирования кремния. Стоит не менее 500 долларов, но может быть дешевле, чем какая-либо работа, которую stbra вкладывает в устройство.
Кевин Вермеер

@KevinVermeer Вы имели в виду 500 долларов? Мне кажется, это будет намного дороже, чем это.
NickHalden

Адам, произошла ошибка, поэтому я удалил свой комментарий
hulkingtickets

3

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

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


1

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


1
Я думаю, что @Adam Davis говорит, что если вы используете загрузчик (даже тот, который вы написали), то вы не можете запрограммировать блокировку битовых защищенных областей. Итак, если вы написали свой собственный зашифрованный загрузчик, вы не смогли бы предотвратить чтение чипа (выпуск 1). Похоже, это то, что я получаю по ссылке и таблице данных.
Лу

если загрузчик и код зашифрованы, это решит вторую проблему, первая проблема почти решена, если он использует достаточно безопасное шифрование. (скорость ОК может быть горлышком бутылки).
Rick_2047

Правда. @ Адам Дэвис предложил зашифрованный язык токенов выше.
Лу
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.