Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Защита программ и Bootloader-ы
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
aforestman
Защита программ для многих является темой актуальной и производители охотно идут на встречу разработчикам. Они же (производители) пытаясь облегчить нам жизнь придумывают всякие ISP, Bootloader-ы и прочее. Но это все программы, а следовательно они потенциально опасны. Конечно Bootloder не Windows - много не наворочаешь, но и в паре килобайт кода могут поджидать неприятные сюрпризы:
1. Недокументированные вызовы
2. Функции без контроля входных параметров
3. Просто ляпы (ну это уже совсем маловероятно)

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

1. Phillips P89LPC922 (Просто предупреждение)
Bootloader содержит недокументированный вызов, позволяющий прочитать содержимое незащищенного кристалла. Фишка в том, что это нельзя сделать с помощью программатора (верификация не поддерживается).
К чести Philips надо сказать, что хорошо документированный исходник выложен у них на сайте, а сам Bootloader можно легко заменить.

2. Atmel AT89C51ED2 (Жалко тех, кто его использует)
Bootloader зашит в ПЗУ и имеет дыру, позволяющую его же средствами обойти защиту любого уровня. Причем, учитывая специфику кода, можно утвеждать что данную дыру имеют все кристаллы семейства AT89C51XX2.

К чему это я все.
Хотелось бы знать насколько серьезно по Вашему мнению следует относиться к теме защиты вообще, и следует ли тратить дополнительные время и средства на изучение устойчивости системы к взлому?
acex2
Цитата(aforestman @ Feb 17 2006, 05:48) *
2. Atmel AT89C51ED2 (Жалко тех, кто его использует)
Bootloader зашит в ПЗУ и имеет дыру, позволяющую его же средствами обойти защиту любого уровня. Причем, учитывая специфику кода, можно утвеждать что данную дыру имеют все кристаллы семейства AT89C51XX2.


А можно поподробнее вот про эту дырку?
Кнкн
Цитата(acex2 @ Feb 17 2006, 13:14) *
Цитата(aforestman @ Feb 17 2006, 05:48) *

2. Atmel AT89C51ED2 (Жалко тех, кто его использует)
Bootloader зашит в ПЗУ и имеет дыру, позволяющую его же средствами обойти защиту любого уровня. Причем, учитывая специфику кода, можно утвеждать что данную дыру имеют все кристаллы семейства AT89C51XX2.


А можно поподробнее вот про эту дырку?


Мне тоже интересно.
VslavX
MSP430 с загрузчиком версии 1.10 и младше тоже имеет дыру в безопасности из-за глюка. Поэтому мы в свое время от них и отказались. Не знаю, сделал TI уже маску с v1.30 или все еще обещает?
aforestman
Цитата
А можно поподробнее вот про эту дырку?

Суть в том, что чтобы вы не прописали в биты LB0-LB2 HSB, всегда существует возможность перейти в Atmel-овский бутлоадер (речь идет о версии 1.0.0) и с его помощью прочитать содержимое флэша и EEPROM.
Письмо мы им отправили месяца полтора назад, обещали исправить, как водится, as soon as possible.
acex2
Цитата(aforestman @ Feb 20 2006, 02:38) *
Суть в том, что чтобы вы не прописали в биты LB0-LB2 HSB, всегда существует возможность перейти в Atmel-овский бутлоадер (речь идет о версии 1.0.0) и с его помощью прочитать содержимое флэша и EEPROM.


Собственно, HSB и не должен защищать от доступа к флэш из ISP. Он защищает от доступа при помощи внешнего параллельного программатора.

Цитата
These security bits (HSB) protect the code access through the parallel programming interface. They are set by default to level 4. The code access through the ISP is still possible and is controlled by the "software security bits" which are stored in the extra Flash memory accessed by the ISP firmware.


Для блокировки ISP используется байт SSB.

Цитата
The SSB protects any Flash access from ISP command. The command "Program Software Security Bit" can only write a higher priority level. Only a full chip erase in parallel mode (using a programmer) or ISP command can reset the software security bits.
aforestman
Сильно извиняюсь за ошибку.
Вместо LB0-LB2 HSB следует читать LB0-LB1 SSB и далее по тексту.
acex2
Цитата(aforestman @ Feb 20 2006, 06:31) *
Сильно извиняюсь за ошибку.
Вместо LB0-LB2 HSB следует читать LB0-LB1 SSB и далее по тексту.


Ну да, бутлоадер вызывается без проблем и при установленном SSB на уровень 2.
Но читать обратно из флеша не дает. По крайней мере, через Flip и утилитку от mcu.cz.
Причем последняя заведомо не проверяет значение SSB перед попыткой чтения.

Мы можете пошагово расписать всю процедуру чтения из флэша защищенного чипа?
aforestman
Цитата
Мы можете пошагово расписать всю процедуру чтения из флэша защищенного чипа?

Вот что мы отоправляли на Atmel (протокол терминального режима).
Код
We tried to use your device AT89C51ED2 in our PLC design but
found a serious problem with ISP Bootloader protection.
See description:

We set Level2 security using FLIP
:020000050700F2FC.
We cannot read
:050000040000002000D7L
We cannot write
:020000030400F7P
********** Then we type next commmand
:040000xxxxxxxxxxxx.
************************************
And now we can read code
:050000040000002000D7
0000=0208600220038E828F832202200BAE82
0010=AF8322022013742D01760002201B1176 0020=01
And we can write Flash
:020000030400F7.

xxx из гуманитарных соображений
max_
а можно поподробнее о Phillips P89LPC922,
я так думаю все семейство этим страдает (интерес в частности по 936)
aforestman
Цитата
а можно поподробнее о Phillips P89LPC922,
я так думаю все семейство этим страдает (интерес в частности по 936)

Эта фича действительно присуща всем кристаллам (метка DCMD: в исходниках), однако дырой ее назвать нельзя. Вот пример:
Код
Формат команды
:05000009XXXXYYYY00CC
    XXXX - с адреса
    YYYY - по адрес
    CC   - контрольная сумма

Дамп зашищенного блока
Вводим
:050000090000001F00D3
нажимаем любую клавишу и ничего не получаем
0000=00000000000000000000000000000000
0010=00000000000000000000000000000000

Дамп незашищенного блока
Вводим
:050000091F001F1F0095
нажимаем любую клавишу и получаем
1F00=C1037452D195EFF1F4E173AB33EB6014
1F10=AD30AC317F80740078FF7696C2D112FF


Мы обычно собираем все константы программы с адреса 0x1C00 (последний блок для 922) и оставляем этот блок, включая бутлоадер, открытым, а первые семь защищаем.
Кстати эта фича почему-то не описана в UM, хотя она очень удобна при отладке.

Для интересущихся пособие по матчасти

Нажмите для просмотра прикрепленного файла
yornik
Кто из этого топика убрал всю содержательную инфу о дырках в BSL-загрузчике v.1.10 MSP430?
KiV
Цитата(yornik @ Feb 28 2006, 03:01) *
Кто из этого топика убрал всю содержательную инфу о дырках в BSL-загрузчике v.1.10 MSP430?


Вот мне тоже интересно, кто?
Или может уже стало незаконным говорить о недоработках чипов и программ?
Или кто-то считает, что таким образом можно защитить собственные изделия?

"Слово не воробей..." Если кто-то сказал о том, что дыра существует, кто-то другой сможет ее найти. Ведь не представляет большого труда прочитать загрузчик, дизассемблировать и найти лазейку. Тем более если знать, ЧТО искать.

А вообще-то хотелось-бы услышать, ПОЧЕМУ были удалены посты.
rezident
Цитата(KiV @ Feb 28 2006, 13:02) *
[А вообще-то хотелось-бы услышать, ПОЧЕМУ были удалены посты.

А вы не в курсе, что человек - хозяин своего слова? Захотел - дал, захотел - взял обратно biggrin.gif
ig_z
Цитата(KiV @ Feb 28 2006, 12:02) *
Цитата(yornik @ Feb 28 2006, 03:01) *

Кто из этого топика убрал всю содержательную инфу о дырках в BSL-загрузчике v.1.10 MSP430?


А вообще-то хотелось-бы услышать, ПОЧЕМУ были удалены посты.



Корневой топик на сахаре я прибил по просьбе собеседника.
Свои вопросы в этой конфе я убрал уже по личной инициативе, хотя там нет никакого криминала.
Кто убил начатую мной ветку в мсп430 конфе - я не в курсе, но подозреваю что это могут делать только модераторы.
Вопросы на сахаре и электрониксе я задал 22 февраля. До 25 обсуждение шло через пень колоду. Что произошло 26 я не знаю, а 27 все уже было кончено.
defunct
/оффтоп.

AT89S8253 вообще нормально лочится? кто работал с этим чипом, что можете сказать? У меня пока что получается прочитать все содержимое чипа независимо от значений LBx..
VslavX
На "Сахаре" появилась исходная информация по багу в BSL: BSL3 blink.gif
P.S. Этой информации - четыре года, так что - "Колумб не виноват".
Harbinger
Цитата(defunct @ Feb 28 2006, 22:56) *
/оффтоп.

AT89S8253 вообще нормально лочится? кто работал с этим чипом, что можете сказать? У меня пока что получается прочитать все содержимое чипа независимо от значений LBx..


Упс... Если не затруднит, можно поподробнее по e-mail? invariant(dog)rambler.ru
С 8252 вроде все нормально было. Но его снимают с производства.
yornik
На Сахаре я по-прежнему вижу лишь http://www.caxapa.ru/echo/msp.html?id=52230 - одни только отклики на удаленный пост, и новый http://www.caxapa.ru/echo/msp.html?id=52365. И в сухом остатке - kurt из программатора удалил фишку, о которой все в рунете знают, что ее можно сделать %)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.