Защищать AVR flash от чтения через ISP?


15

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

Установка байта блокировки на:

LB1/LB2 не позволит пользователю использовать загрузчик для загрузки новой прошивки.

BLB12/BLB11 и BLB01&BLB02 не помешает чтению flash через ISP, если я не ошибаюсь.

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

Ответы:


18

Вы не указали микросхему, в основном это относится к 8-битным устройствам Atmega, но это общая информация. Прочитайте раздел «Программирование памяти» для вашей спецификации конкретного чипа для получения более подробной информации!

При этом, как вы сказали, все устройства AVR содержат два бита блокировки с именами LB1 и LB2. Их программирование (до 0, низкий уровень) добавит защиту для содержимого, записанного во флэш-память и память EEPROM, в соответствии с таблицей ниже. Уровень защиты делится на три режима: режим 1 не обеспечивает защиты, а режим 3 обеспечивает максимальную защиту. Можно перейти к более высокому режиму защиты, просто перепрограммировав биты блокировки.

AVR позволяет менять «высокие» биты на «низкие», но не наоборот. Невозможно изменить «низкий» бит блокировки на «высокий», поэтому снижение уровня защиты невозможно. Чтобы очистить биты блокировки, требуется полная очистка чипа, которая стирает флэш-память.

Таблица битов блокировки AVR

Только эти 2 бита блокировки (LB1 и LB2) при низком уровне предотвратят кражу вашей прошивки 99,9% людей! Вероятно, более 99,9%. Почти всегда было бы проще перепроектировать ваш код.

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

Насколько мне известно (я могу ошибаться, но я думаю, что я имел бы проблему с этим раньше) на устройствах, которые имеют предохранители защиты загрузчика (BLB12 и BLB11), вы можете заблокировать свой пользовательский загрузчик раздел , отключить SPI и быть защищено от 97-98% людей.

Однако, когда ни один из битов блокировки не запрограммирован, функции блокировки памяти не включены !!!Отключение интернет-провайдера достаточно, чтобы заблокировать 70% людей.

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

Линейка Atmel AVR не относится к устройствам с высокой степенью защиты (если не указано иное!), И как таковые они абсолютно не гарантируют безопасность кода и не должны! Как и все незащищенные устройства (и, к сожалению, даже некоторые безопасные), они подвержены распространенным атакам!


редактировать

Я добавлю заголовок интерфейса программирования HV на борт. Но может ли кто-нибудь использовать программатор HV для чтения флэш-памяти? Я знаю, что программист HV может стереть чип, даже если ISP / Jtag отключены.

Я не думаю, что вы должны включать программиста HV в дизайн вашей платы, если в этом нет крайней необходимости, и вы точно знаете, что это ни с чем не вызовет проблем. Программист HV (сигналы 12 В) доступен только в качестве меры безопасности для программирования заблокированных (в основном, с ошибками) чипов. Теоретически это предназначено только для того, чтобы устройство ничего не читало. И я никогда не слышал о подвиге, который позволил бы читать.

Для обновления загрузчика (иногда) я добавлю заголовок интерфейса программирования HV. Но может ли кто-нибудь использовать программатор HV для чтения флэш-памяти? Я знаю, что программист HV может стереть чип, даже если ISP / Jtag отключены.

Я думаю, что может быть способ обновить заблокированную флеш-память через загрузчик (что-то делать с внутренним флагом записи и / или ISR может быть ???) Но мне придется искать свои заметки и, возможно, придется проверить это. Я не смогу сделать это в течение ~ 20 часов; поэтому я настоятельно рекомендую задать новый вопрос, касающийся только этого и для процессора, который вы упомянули. Это очень хороший вопрос !


+1 за последний комментарий, если все остальное терпит неудачу, любой парень может просто распаять чип и вставить его нам, отладчику / программисту AVR, чтобы сбросить биты блокировки, и ваша безопасность исчезла.
helloworld922

@Garrett Fogerlie: не знаю, что привело вас к мысли, что я пытаюсь украсть код, пожалуйста, дайте мне знать, и я исправлю свой вопрос, чтобы другие не думали так же. Я пытаюсь обеспечить минимальную защиту моего собственного кода, моего собственного загрузчика. Во всяком случае, еще пара вопросов по этому вопросу. Чип это ATMega328, хотя семейство будет использовать общее количество битов блокировки. Вы объяснили LB1и LB2, что я также описал в своем вопросе как ограничивающий вариант использования загрузчика в целях обновления. Так что это не вариант. Что касается BLB12и BLB11- это то, что я не понимаю. (продолжение следует)
Пабло

Установка этих битов НЕ помешает никому читать флэш (приложение + загрузчик) извне. Из таблицы видно, что эти биты будут просто блокировать команды LPM / SPM, но серийный программист не использует их. Что касается Отключения последовательного программирования и jtag, это еще один большой вопрос для меня. Для обновления загрузчика (иногда) я добавлю заголовок интерфейса программирования HV. Но может ли кто-нибудь использовать программатор HV для чтения флэш-памяти? Я знаю, что программист HV может стереть чип, даже если ISP / Jtag отключены.
Пабло

@ Пабло, извини, я не хотел обидеться. Когда я впервые увидел твой вопрос, идея о краже мне не пришла в голову; и я написал написал ответ, который был несколько сосредоточен на восстановлении заблокированного кода. Однако я был на работе, и перед отправкой этого ответа у меня была пауза ~ 2 часа. Затем, когда я вернулся, я заметил, что ответа до сих пор нет, и был немного удивлен, затем, перечитав ваш вопрос, я подумал, что «кража» могла быть причиной. Совсем не твоя вина, теперь я снял заявление об отказе от ответственности. Модель процессора была необходима из-за различий, перечисленных в этой таблице, а также из-за наличия 8/16/32-битного AVR ...
Гаррет Фогерли,

1
ъГарретт Фогерли: Я не хотел ставить программиста HV на борт, просто заголовок :) Но я понял, что это не обязательно, потому что биты блокировки сработали, и на всякий случай я могу использовать заголовок ISP для стирания чипа и перезаписи всей флэш-памяти на устройстве. Таким образом, чтобы подвести итог ответа на мой первоначальный вопрос - установка LB1 и LB2 не позволит никому читать всю область флэш-памяти И в то же время не помешает мне записывать память программ через загрузчик.
Пабло

3

Вы можете использовать биты блокировки на некоторых устройствах ATMega и по-прежнему обновлять свой код с помощью загрузчика.

Я запрограммировал LB1 и LB2 на ATMega 328. Затем вызвал загрузчик, обновил основную программу - все работало отлично.

Интернет-провайдер не может ни читать, ни записывать какие-либо flash / eeprom / fuses, но загрузчик все еще может писать раздел приложения.

Стирание чипа с провайдером очистит биты блокировки (LB1 и LB2), но также удалит весь flash / eeprom, таким образом вы можете защитить свой код (однако вы должны убедиться, что ваш загрузчик не может быть взломан)


3
Как это улучшает принятый в настоящее время ответ?
Игнасио Васкес-Абрамс

Обратите внимание, что, если у вас есть стандартный резидентный загрузчик в стиле Arduino, блокировка чтения будет почти бессмысленной, так как сам загрузчик имеет возможность чтения, если вы не используете расширенный режим только для 328P, который отключает загрузчик LPM для памяти приложения. В противном случае вам нужно изменить загрузчик, чтобы удалить его, за счет того, что вы больше не сможете проверять программирование. (Вы могли бы потенциально создать другой механизм проверки, но это было бы нестандартно, требуя от вас также изменить / заменить avrdude)
Крис Страттон,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.