+7 (909) 417-77-77 | order@ohm-electronics.ru
Способы чтения защищённых микроконтроллеров

Способы чтения защищённых микроконтроллеров

Способы чтения защищённых микроконтроллеров

При реверс-инжиниринге и репликации электронных устройств первый вопрос, определяющий дальнейший ход проекта, состоит в принципиальной возможности копирования электронных плат. Существует несколько причин, по которым копирование платы, во всяком случае полное, исключающее необходимость дополнительных разработок, может оказаться невозможным. К таким причинам относятся невозможность приобретения компонентов платы либо наличие на плате программируемых чипов с внутренней памятью без возможности её чтения. Разумеется, эти препятствия не являются абсолютными, существуют некоторые способы их обхода. В этом обзоре мы обсудим способы получения прошивок тех чипов, для которых производитель решил заблокировать такую возможность.

Механизмы защиты

Хотя тонкости реализации и технические различия в механизмах защиты интеллектуальной собственности играют важную роль при выборе стратегии атаки, с пользовательской точки зрения защита обычно устанавливается по похожим сценариям. Сразу упомянем о программной защите, когда программный код отказывается выполнять нужную функцию при копировании на другое физическое устройство. Такой тип защиты легко себе представить по аналогии с общеизвестной защитой компьютерных приложений от копирования, когда для запуска программы требуется ввести ключ. Обход таких защит также схож: проводится дизассемблирование программы и необходимое изменение кода. Такие защиты, хотя и встречаются во встраиваемых устройствах, всё же чаще, при желании защитить устройство от копирования, производитель довольствуется включением аппаратной защиты от чтения, предусмотренной производителем микросхемы.

В большинстве случаев защита устанавливается посредством записи определённого значения в специальную ячейку памяти, после чего перестают работать некоторые функции устройства, связанные с прочтением содержимого, записанного в его память, без возможности последующего изменения этого значения никаким способом, кроме полного сброса памяти. Реализация этого механизма отличается от устройства к устройству, точнее от серии к серии. Существуют варианты микроконтроллеров, в которых ограничивается только непосредственно чтение из памяти при сохранении прочих возможностей отладки, например, микроконтроллеры на ARM-архитектуре серий STM32F103 или nRF51. В других случаях полностью отключается всякое взаимодействие микроконтроллера с программатором, как в ATMEL SAM E70. Иногда (довольно часто) можно выбирать из этих двух вариантов (STM32 старших серий); есть варианты, при которых защита накладывается по отдельности на различные блоки памяти микроконтроллера, как в представителях серии PIC18 с большим объёмом памяти. Вспомним также и о парольной защите, как в микроконтроллерах Renesas серии M306 или Texas Instruments серии MSP430. Упомяну ещё два довольно редких случая: во-первых, когда прошивка хранится в виде Mask-ROM, зашиваемого на заводе литографическим методом при производстве чипа, примером чего могут служить многие старые процессоры компании Motorola.

Отдельно, в качестве предупреждения, отметим, что иногда любое подключение к программатору приводит к стиранию содержимого памяти и мгновенной готовности её к перезаписи, как в контроллерах Renesas серии H8.

Механизмы обхода защиты

К счастью, существуют методы обхода ограничений, возникающих при копировании электронных устройств. В частности, существуют методы обхода защиты микроконтроллеров от считывания. Эти методы разнообразны и многогранны: есть среди них дешёвые и широко известные, доступные любому человеку с начальной подготовкой в электронике, и есть сложные методы, требующие дорогостоящего оборудования и долгих исследований. В этой статье мы приведём общий обзор методик, позволяющих получить доступ к прошивке с установленной аппаратной защитой.

Важно отметить, что в результате копирования прошивки получаются двоичные файлы без исходного кода, и внесение в них изменений может оказаться трудоёмкой или даже нерешаемой задачей. Тоже относится и к возможной программной защите от использования программы в другом таком же микроконтроллере или ПЛИС, которая может использоваться совместно с аппаратной защитой от копирования.

Использование программных уязвимостей

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

Использование таких уязвимостей, как правило, не требует дорогостоящего специализированного оборудования, часто достаточно обыкновенного оборудования электронной лаборатории. Однако такой тип атак, как и практически все, может потребовать затрат значительных ресурсов на изучение общения между устройством и программатором, а также на программирование атаки.

Считывание «остаточной» памяти

Методика, основанная на том, что содержимое оперативной памяти сохраняется в течение некоторого времени после отключения питания микроконтроллера (это время зависит от температуры). Иногда удаётся использовать этот факт для получения прошивки.

Электрическая глитч-атака

Широко известный тип атаки, заключающийся в кратковременном отключении или понижении питания чипа, так называемый глитч. Для понимания механизма этой атаки нужно осознать, как происходит процесс общения микроконтроллера с программатором и, в общем, исполнение процессором инструкций программного кода. Как правило, в микроконтроллере присутствует специальный внутренний код, зашитый при изготовлении уже упомянутым литографским методом, называемый бутлодер (от англ. Bootloader – загрузчик). Он активируется при определённых условиях. Не вдаваясь в подробности, можно сказать, что программатор создаёт эти условия, и, в дальнейшем, общение микроконтроллера с программатором происходит через эту программу, в ней же имеется и функция считывания содержимого памяти микроконтроллера. Далее каждую инструкцию программного кода процессор исполняет последовательно, соответственно, можно говорить о том, что в определённый промежуток времени исполняется конкретная инструкция. При отключении или понижении питания инструкция не отрабатывается должным образом либо пропускается. Если найти такую инструкцию, при изменении которой процессор вместо ошибки выдаст действительный код из памяти, то получится прочитать прошивку.

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

Глитч-атака на тактовый сигнал

Атака, аналогичная предыдущей, за исключением того, что происходит не просадка питания, а кратковременное изменение тактового сигнала в схеме включения контроллера с внешним генератором тактового сигнала. Основным минусом данной атаки является то, что микроконтроллеры редко полагаются на внешний тактовый сигнал при работе бутлодера, генерация происходит внутри кристалла на встроенном RC-генераторе, таким образом доступ извне к нему отсутствует.

Электромагнитная глитч-атака

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

Оптическая атака

Класс атак, связанный с воздействием оптического излучения (как правило, ультрафиолетового диапазона) на открытый кристалл микроконтроллера или ПЛИС. Атака требует получения доступа к кристаллу, разрушения корпуса микросхемы, полного или частичного. После исследования кристалла примечаются области, которые могут быть связаны с защитой, затем эти области облучают. Применяются технологии точечного лазерного облучения либо маскирования остальной части кристалла. Эффект от облучения кристалла схож с эффектом стирания специальных микросхем памяти UVPROM. Такие микросхемы имеют специальное кварцевое окошко в корпусе, и их содержимое может быть стёрто при облучении ультрафиолетом. То же самое происходит и при данной атаке, но при этом нужно добиться, чтобы свет не попадал на память, содержащую программу. Затраты на проведение такого типа атак существенно выше, существует высокий риск порчи образца, требуется сложное и разнообразное оборудование, для вскрытия корпуса применяются опасные реактивы.

Оптическое считывание Mask ROM

Ранее был упомянут тип микроконтроллеров, для которых прошивка осуществляется при производстве микросхемы, и содержимое памяти физически присутствует на кристалле в виде перемычек. В таком случае считывание памяти программатором невозможно, интерфейса для него попросту не предусмотрено. Однако есть возможность считать память с фотографии кристалла, интерпретировав рисунок перемычек. Дополнительные сложности производитель может создать, расположив память под слоем металлизации, в таком случае её придётся удалять. Для своей области применения данный метод является практически безальтернативным.

Механическое воздействие на кристалл

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

Заключение

В данном обзоре мы рассмотрели основные методы защиты программируемых микросхем от несанкционированного копирования, а также разнообразные подходы к обходу этих защит. Каждый из представленных методов обладает своими преимуществами и недостатками, а также требует различного уровня технических навыков и оборудования. Важно понимать, что эффективность той или иной атаки во многом зависит от конкретной реализации защиты на целевом устройстве. В условиях постоянно развивающихся технологий производители микросхем продолжают совершенствовать механизмы защиты, что делает задачу реверс-инжиниринга всё более сложной. Однако, несмотря на все препятствия, изучение и понимание существующих методов обхода защиты остаётся важным аспектом в вопросе копирования электроники. Наша компания непрестанно следит за всеми новостями в этой области, постоянно совершенствуя свои методы и разрабатывая новые атаки.

Copyright © 2024 Ohm Electronics - All Rights Reserved
Ohm Electronics