Pull to refresh

Comments 27

То есть, как я понял, кроме как засветив участок кристалла до сих пор не возможно понизить уровень RDP.

В некоторых случаях срабатывают Glitch-атаки. Но их нужно проводить в строго определённое время между снятием сигнала сброса, иногда отсчёт идёт с момента подачи питания.

Например, была статья https://habr.com/ru/post/500246/ хотя здесь используют глитч на пине сброса.

https://habr.com/ru/company/ntc-vulkan/blog/480500/ - Здесь RaccoonSecurity описывает уже vcc-glitch, когда ядро МК пропускает инструкцию, либо неверно её интерпретирует при просадке питания.

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

Ну, грубо говоря, здесь и используется вариация глитча.

Но зачем там механическое реле?
Почему не p-channel mosfet ?

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

Честно говоря, все эти доблестные взломщики настолько достали, что хочется собственноручно свернуть голову паре-тройке этих благородных джентльменов.
Защита становится настолько сложной, что приходится тратить дополнительно месяцы для разработки. Я занимался разработкой для NXP'шных LPC и rt1176, где защита на 10 порядков сложнее, чем описанная выше для stm Весь кошмар заключается в том, что описана она крайне непонятно, люди, отвечающие на форуме сами не знают ничего толком и приходится связываться напрямую с NXP "через завсклад и директор магазин" и только там находятся люди, способные ответить на вопросы. Кроме того все шаги одноразовые(OTP). Вы начитались документации, нужно пробовать, прожгли фьюз, потом оказывается, что в документации ошибка, это скопипасчено из предыдущих документаций и уже улучшено. Вам остается только отковырять мк и прилеплять новый.
Особенно понравилась мольба одного чела на NXP'шном форуме. Он пишет: "пожалуйста, люди, помогите, мне не нужны все ваши 100 уровней защиты во время работы, защита после утилизации и перед всходом луны. Может кто-нибудь сказать, как мне защитить ее от чтения!!! Просто и без выкрутасов!!! Help!!!". Ан нет, брат, - отвечают ему,- вот документация на 1067 листов, читай.

А нефиг устанавливать все эти защиты, и усложнять жизнь людям, которые потом будут это ремонтировать.

хочется собственноручно свернуть голову паре-тройке этих благородных джентльменов

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

Я утратил способность ясно излагать свои мысли.

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

Какой-такой информации? Пользовательской? Ну так зашифруйте на хеш от пользовательского пароля и спрашивайте этот пароль каждый раз. Ах, вы свой исполняемый код "защитить" хотите? А нахрена? Чего там такого у вас "украдут"? Секретные протоколы общения по шине которые нужны чтобы обеспечить вендор-лок и непригодность к ремонту, да? Так и хорошо что украдут.

Чего там такого у вас "украдут"?

"Чо там у вас красть. У вас красть-то нечего". (прячет за спину). Смешно.

Вы уж совсем категоричны. Вы извините но я делаю девайс, это мое ноухау. Я вложил в R&D кучу денег и продаю. Почему я не имею право защитится от слива прошивок? Потому что лично вы хотите чинить? Чините. Причем тут прошивка? Вендор лок? Ну да, в разумных пределах он вполне возможен - особенно в автономных МК.

Вот у меня есть устройства на стандартных элементах - sx1276, STM, MCP23017, DS3231. Первые версии создавал на макетке с али. Сейчас я эти решения произвожу через один известный китайский сайт и продаю людям тут, в РФ. Я честно пишу - я вам продаю устройство для таких-то целей, выполняющих определенную функцию, да, я хочу на этом заработать, я нифига не альтруист, я на эти деньги провожу R&D, даю гарантию и улучшаю свои устройства. Если какой-то уася залезет в устройство, срисует схему, что мне собственно-то ||, могу и сам ее отдать и сможет повторять из говна и палок - пускай, мне не жалко, могу еще ссылки дать на Али на компоненты.

Но вот простите программу написанную, с мною не любимой математикой, курением десятка форумов и сайтов, общением со специалистами, заказанные за деньги алгоритмы на АСМ, клиентское приложение - нет. Это то что я хочу запретить копировать. Пусть пишет сам, пусть ломает голову, пусть думает как впихнуть в эти ограничения то что запихал я. Пусть сам думает над тем как от одной батареи работать весь сезон в 4 месяца. Пусть сам откладывает со своей зарплаты большую часть на заказы дев-версий и обкатки на макете в течении трех лет, с откладыванием похода к врачу с гнилыми зубами. И это не преувеличение - я заказывал новые ревизии плат, корпуса и дев-бордов новых компонентов, вместо того чтоб себе сделать зубы в течении двух лет! Но теперь лично я хочу получать деньги за свой труд. И если будет слив - я-то просто заброшу этот проект, разорюсь и пойду на обычную работу, а вот условный Уася - врядли сможет поддерживать и разивать ту штуку которую я придумал, иначе он-бы уже давно сделал свое.

Если вы считаете что воровство это хорошо - ну чтож, желаю чтоб результат вашего интеллектуального труда тоже украли и продавали. Тогда и будете писать что вы рады что это произошло.

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

Я с вами согласен по всем изложенным пунктам. Сижу сейчас и ломаю голову над МК (ощущаю себя тупым). И с опонентом тоже согласен. Порой исправить баг было бы в пору. Но, тут как говориться порядочность хакера и какие цели он преследует. Улучшить для всех? Или улучшить и слямзить чтоб не вложив и рубля - поднять бабла?

Так статья как раз о том, что "воровство и утечку информации" защита не предотвращает. Зато усложняет ремонт до полной невозможности, потому что для ремонта одного-двух экземпляров вся вышеупомянутая возня не имеет практического смысла.

есть ключи

нет ключей

стереть, сбросив защиту и залить заново

Да. Но сначала надо откуда-то скачать. Например у тех,

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

ну или самому осваивать это мастерство.

В некоторых устройствах эта защита избыточна

И чтобы такое происходило как можно реже, те, кто ее включает должны страдать, читая 1067 листов документации, чтобы мысль "а может ну ее нафиг" посещала чаще.

В режиме RDP level 1 при подключении отладчика ограничивается доступ только к FLASH памяти, тогда как SRAM остается доступна.
А можно ли зашить в SRAM временную прошивку, которая и передаст нам содержимое flash? Или мы можем только читать SRAM?

Мы можем писать в SRAM, но теоретически сможем выполнить толькой 1-2 операции, а потом будем получать hard fault, т.к шина будет заблокирована

UFO just landed and posted this here

Сбросить биты можно и в домашних условиях самодельным рентгеном: вполне доступно, страшные дозы рентгена не требуются, с напряжением 60..80кв на аноде кенотрона, удавалось получить первые битые биты во флеш памяти уже через 10минут экспозиции ;)

В описанном методе тоже используется вполне обычная лампа для экспозиции, однако даже не думал что можно рентгеном и ведь не придется снимать крышку!

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

UFO just landed and posted this here

Не узучал вопрос, но вероятно есть

Насколько я знаю, у них экспозицией участка кристалла фьюзы сбрасывают, после чего считывают обычным программатором.

Могу попросить о ссылке на какую-нибудь статью об этих МК?

Ох, давно я про это читал... Если вспомню где и/или найду в заметках - обязательно поделюсь!

Ну кто ставит только Level 1 - сам виноват. С установленным Level 2 ИМХО достаточно проверять при старте не понизился ли уровень защиты и если да, то повысить ее обратно (процесс довольно быстрый). Еще можно при старте переопределить ножки SWDIO и SWDCK. Также можно в OTP память при первом старте записывать случайную последовательность, которой потом можно шифровать критические данные (если важны именно они, а не сам код прошивки). OTP расположена рядом с fuse битами и при засветки там гарантированно что-нибудь поменяется и расшифровать дамп уже не получится никак.

Ну и для защиты от glitch аттак можно на этапе проверки контролной суммы и/или level'а добавить случайные задержки от встроенного генератора случайных чисел (все старшие stm32 его имеют)

Sign up to leave a comment.

Articles