Обратная разработка MCU

Разблокировка микроконтроллеров — MikaTech

Наши ценности и цели

О компании MikaTech

Время пролетело незаметно: с того дня, когда мы в 1998 году выполнили наш первый проект по обратной разработке MCU 8051, до момента создания нашей миллионной лаборатории обратной разработки в 2012 году прошло 14 лет. Теперь мы начинаем новый бизнес по разработке встроенных систем визуализации и надеемся прослужить ещё 10 лет.

подпись Питер Ли Соучредитель и генеральный директор

Полный технический обзор микроконтроллеров

Основное определение и базовая архитектура

Микроконтроллер (в технической документации часто сокращается как µC, uC или MCU) представляет собой полностью интегрированную однокристальную миниатюрную вычислительную систему, которая объединяет в одном кремниевом кристалле выделенное процессорное ядро, встроенную энергозависимую память, энергонезависимые массивы хранения и настраиваемые периферийные устройства ввода-вывода общего назначения. Большинство распространённых микроконтроллеров используют NOR-флэш или однократно программируемую (OTP) ПЗУ для хранения постоянных исполняемых программных данных, а также небольшой блок высокоскоростной ОЗУ для временного хранения переменных во время выполнения. В отличие от автономных микропроцессоров, предназначенных для настольных ПК, игровых консолей или облачных серверов, каждый МК специально разработан для задач встроенного управления, требующих компактных размеров, низкого энергопотребления и экономически эффективного массового развёртывания. Тысячи линеек электронных продуктов полагаются на аппаратное обеспечение микроконтроллеров как на свой центральный логический мозг, начиная от автомобильных контроллеров трансмиссии и имплантируемого медицинского сенсорного оборудования до бытовых пультов дистанционного управления, офисной печатной техники, аккумуляторных дрелей, интерактивных игрушек и бесчисленных других встроенных систем с фиксированными функциями. Объединение ЦП, памяти и ввода-вывода на одном кристалле значительно сокращает общую стоимость материалов по сравнению с платами, использующими отдельные дискретные процессоры, микросхемы памяти и сигнальные чипы, что делает интеллектуальное цифровое управление осуществимым даже для недорогих потребительских товаров. Конструкции смешанных сигнальных микроконтроллеров расширяют эту возможность за счёт встраивания собственных аналоговых периферийных устройств, таких как аналого-цифровые преобразователи, для взаимодействия с непрерывными электрическими сигналами без внешних вспомогательных микросхем. Многие разработчики недооценивают, как слабые конфигурации блокировки по умолчанию на серийных микроконтроллерах обеспечивают несанкционированное считывание внутренней памяти, что открывает путь для операций дампа, извлечения прошивки и незаконного производства дублирующего оборудования, если на этапе программирования продукта игнорируются шаги усиления безопасности. Каждый МК поставляется со встроенными аппаратными примитивами безопасности, включая программируемые перемычки и регистры блокировки, которые производители могут активировать для обеспечения глобального состояния блокировки и блокировки внешнего отладочного доступа, однако большинство любительских и мелкосерийных коммерческих продуктов оставляют эти защиты отключёнными из соображений удобства разработки. Злоумышленники, нацеленные на незащищённые микроконтроллеры, используют две основные категории атак: неинвазивный глитчинг сигналов для временной разблокировки и инвазивную физическую декапсуляцию для постоянного изменения перемычек и захвата полных наборов данных дампа из флэш- и EEPROM-памяти. После получения необработанных двоичных файлов дампа злоумышленники проводят систематическое восстановление кода с последующей глубокой обратной разработкой для декодирования проприетарной управляющей логики, скрытой в исходной прошивке.

Микроконтроллеры поддерживают широкий спектр рабочих тактовых частот и разрядностей данных для удовлетворения различных требований к мощности и производительности. Сверхмаломощные 4-битные модели МК могут работать на тактовых частотах до 4 кГц, потребляя при этом всего несколько милливатт или даже микроватт. Эти низкоскоростные варианты оснащены настраиваемыми режимами сна, в которых основной генератор ЦП и большинство встроенных периферийных устройств полностью отключаются после получения триггера прерывания, такого как нажатие физической кнопки или сигнал внешнего датчика. В состояниях глубокого сна общее энергопотребление может упасть до нановатт, что позволяет устройствам на батарейках работать в течение многих лет без замены элементов питания. На противоположном конце спектра производительности высокоскоростные 16- и 32-разрядные микроконтроллеры обеспечивают производительность обработки, сравнимую с базовыми цифровыми сигнальными процессорами (DSP), что делает их подходящими для сложной фильтрации сигналов в реальном времени, обработки видео с высоким разрешением и алгоритмов быстрого управления двигателями, требующих быстрых математических вычислений ценой повышенного энергопотребления. Инженеры должны балансировать тактовую частоту, длину слова и настройки режимов сна при проектировании прошивки МК, чтобы найти компромисс между скоростью отклика и сроком службы батареи для любого целевого приложения. Отсутствие строгой защиты блокировки и перемычек на маломощных микроконтроллерах создаёт те же риски взлома, что и для высокопроизводительных вариантов; злоумышленники всё равно могут выполнить дамп флэш и считывание EEPROM после успешной разблокировки для извлечения проприетарных маломощных управляющих алгоритмов для клонирования дублирующих устройств.

Историческая эволюция аппаратного обеспечения микроконтроллеров

Первый в отрасли автономный однокристальный микропроцессор появился в 1971 году с разработкой Intel 4-битного 4004, за которым вскоре последовал более мощный Intel 8008. Ни один из этих чипов не содержал встроенной программной или пользовательской памяти, что вынуждало разработчиков подключать внешние ПЗУ, ОЗУ и микросхемы ввода-вывода для построения функциональных вычислительных схем. Эта дискретная архитектура делала общую стоимость системы слишком высокой для интеграции в доступные бытовые приборы и небольшие промышленные устройства автоматизации, создавая явный рыночный спрос на полностью автономное решение микроконтроллера. Смитсоновский институт официально приписывает инженерам TI Гари Буну и Майклу Кокрану изобретение первого в мире настоящего микроконтроллера в 1971 году, а их кремниевый чип TMS 1000 поступил в коммерческую продажу в 1974 году. Эта новаторская конструкция объединила ядро ЦП, постоянную память программ, энергозависимую память данных и внутренний тактовый генератор на одном кристалле исключительно для задач встроенного управления, заложив основу для всех современных архитектур МК. После того как TMS 1000 продемонстрировал коммерческую жизнеспособность полностью интегрированного однокристального управляющего оборудования, Intel ответила разработкой микроконтроллера Intel 8048, оптимизированного для промышленных и потребительских встраиваемых приложений, с началом массовых поставок в 1977 году. 8048 интегрировал как ОЗУ, так и ПЗУ без внешних зависимостей памяти и позже был развёрнут в более чем миллиарде компьютерных клавиатур вместе с миллионами других потребительских электронных устройств. Руководство Intel в то время признало огромный коммерческий успех линейки микроконтроллеров и значительно расширило финансирование НИОКР, посвящённых платформам разработки МК следующего поколения.

Все ранние семейства микроконтроллеров 1970-х и 1980-х годов выпускались в двух различных аппаратных вариантах, различающихся технологией программной памяти. Первый вариант интегрировал УФ-стираемую EPROM-память, для чего требовалось прозрачное кварцевое окно в пластиковом корпусе микросхемы, чтобы подвергать ячейки памяти с плавающим затвором воздействию ультрафиолета для полного стирания данных перед перепрограммированием. Второй распространённый вариант использовал однократно программируемые (OTP) ячейки ПЗУ, которые можно было записать только один раз на заводе или с помощью полевых программаторов, без встроенного метода очистки сохранённого кода после начального программирования. Внутренне EPROM и OTP использовали идентичные структуры памяти на транзисторах с плавающим затвором; единственное функциональное различие заключалось в конструкции корпуса. OTP-микроконтроллеры имели полностью непрозрачную пластиковую герметизацию, блокирующую всё УФ-излучение, что исключало любой практический способ стирания данных прошивки после программирования. EPROM-микросхемы требовали дорогой керамической упаковки с прецизионно вырезанными кварцевыми окнами, что повышало стоимость компонентов по сравнению с недорогими непрозрачными пластиковыми OTP-альтернативами. Обычное стекло не могло заменить кварц для оконного слоя из-за его естественной непрозрачности для ультрафиолета, что ещё больше увеличивало производственные затраты для EPROM МК. Разработчики, создающие прототипы, почти всегда выбирали оконные EPROM-микроконтроллеры для поддержки итеративного тестирования кода и многократных циклов перепрограммирования, в то время как продукция массового производства предпочитала более дешёвые OTP-чипы для снижения удельной стоимости компонентов и отпугивания простых атак считывания внешними программаторами. Даже ранние EPROM МК не имели встроенной аппаратной блокировки, поэтому любой незащищённый чип можно было использовать для операций дампа флэш хобби-программистами без продвинутых методов разблокировки или декапсуляции.

Ключевой сдвиг в отрасли произошёл в 1993 году, когда Microchip выпустила серию PIC16x84, первый массовый микроконтроллер, построенный на электрически стираемой программируемой постоянной памяти (EEPROM). В отличие от УФ-зависимой EPROM, EEPROM позволяла разработчикам быстро стирать и перезаписывать программный код с помощью электрических импульсов без необходимости в специализированном УФ-оборудовании, что упрощало быструю разработку прототипов и позволяло осуществлять истинное внутрисистемное программирование (ISP) непосредственно на собранных печатных платах. Ранние прототипы EEPROM существовали за годы до запуска PIC16x84, однако эти более ранние реализации страдали от хрупкой структуры выводов, склонной к перегоранию во время повторных циклов записи, и чрезмерных производственных накладных расходов, что делало их нерентабельными для серийных микроконтроллеров. Также в 1993 году Atmel выпустила первую в мире линейку микроконтроллеров на основе NOR-флэш, представив новый стандарт энергонезависимой памяти, сочетающий преимущества электрической перезаписи EEPROM с превосходной плотностью хранения и показателями циклов износа. Конкурирующие производители полупроводников быстро скопировали архитектуру EEPROM и флэш-памяти для своих собственных дорожных карт МК, постепенно отказавшись от дорогих оконных EPROM-конструкций в течение последующего десятилетия. К 2009 году объёмы оптовых закупок снизили цену 8-битных микроконтроллеров до менее чем 0,25 доллара за штуку, в то время как многие начальные 32-битные модели МК стоили примерно один доллар при заказе крупными партиями. Доступность современных микроконтроллеров породила огромные глобальные сообщества любителей, сосредоточенные вокруг популярных платформ, таких как Arduino, Raspberry Pico и платы разработки PIC, с тысячами примеров кода с открытым исходным кодом, которыми делятся онлайн разработчики-любители по всему миру. Заглядывая вперёд, магниторезистивная память с произвольным доступом (MRAM) представляет собой многообещающую технологию хранения следующего поколения для будущих конструкций микроконтроллеров, обладая практически бесконечной устойчивостью к перезаписи и экономией на этапе производства по сравнению с массивами флэш и EEPROM. Интеграция MRAM ещё больше изменит модели безопасности МК, изменяя взаимодействие перемычек и логики блокировки с внутрикристальным энергонезависимым хранилищем при обеспечении защиты от считывания.

Глобальный масштаб рынка и статистика реального развёртывания

Исследовательская фирма Semico ежегодно публикует отчёты об объёмах поставок микроконтроллеров во всём мире и показателях роста рынка. Примерно пятьдесят пять процентов всех проданных в мире полупроводниковых ЦП общего назначения относятся к категории 8-битных микроконтроллеров или компактных встроенных микропроцессорных ядер. Исторический анализ рынка Semico фиксирует более четырёх миллиардов отдельных 8-битных МК, поставленных по всем глобальным цепочкам поставок в 2006 календарном году. Последующее расширение рынка привело к росту выручки индустрии МК на 36,5 процента в годовом исчислении в 2010 году, за которым последовал несколько более медленный темп роста в 12 процентов в 2011 году по мере стабилизации глобальных цепочек поставок электроники. Типичное домашнее хозяйство в развитой промышленной стране содержит всего четыре настольных или портативных микропроцессора общего назначения, но при этом около тридцати шести отдельных микроконтроллерных микросхем, встроенных в бытовые приборы, пульты дистанционного управления и сенсорное оборудование. Пассажирский автомобиль среднего класса интегрирует минимум тридцать независимых микроконтроллеров, распределённых по системам управления двигателем, тормозным системам, информационно-развлекательным дисплеям, приводам дверных замков и подсистемам контроля давления в шинах. К другим распространённым потребительским устройствам, содержащим аппаратное обеспечение МК, относятся панели управления стиральных машин, логика таймеров микроволновых печей, стационарные и мобильные телефоны, интеллектуальные светильники и портативные носимые датчики. Производители контрафактной электроники нацелены на широко используемые модели микроконтроллеров для автомобилей и бытовой техники, выполняя полное извлечение прошивки после операций разблокировки и дампа для создания дублирующих плат управления, имитирующих функциональность оригинальных продуктов при сниженных производственных затратах. Нерегулируемая трансграничная торговля этими дублирующими встраиваемыми устройствами создаёт массовые нарушения прав интеллектуальной собственности и создаёт критическую угрозу безопасности для конечных потребителей, полагающихся на системы автоматизации транспортных средств и бытовой техники.

Принципы работы встроенной системы

Каждый микроконтроллер работает как автономная встроенная вычислительная подсистема, не требующая внешних ЦП, памяти или микросхем ввода-вывода для выполнения фиксированной управляющей логики. Подавляющее большинство микроконтроллеров, производимых сегодня, постоянно припаиваются к печатным платам и интегрируются внутрь более крупных механических или электрических устройств, а не функционируют как автономное вычислительное оборудование для прямого взаимодействия с пользователем. В то время как высокопроизводительные промышленные встроенные платформы работают под полноценными операционными системами на мощных 32-битных ядрах МК, бесчисленные простые встраиваемые системы работают без какого-либо уровня ОС, выполняя компактный рукописный код, хранящийся во внутренней флэш-памяти, с минимальными требованиями к ОЗУ. Стандартные периферийные устройства ввода и вывода, подключаемые к выводам GPIO МК, включают механические тумблеры, катушки электромагнитных реле, миниатюрные соленоидные приводы, индикаторные светодиодные матрицы, небольшие пользовательские жидкокристаллические дисплеи, радиоприёмопередатчики и аналоговые датчики окружающей среды, измеряющие температуру, влажность и интенсивность освещения. В отличие от настольных компьютеров, оснащённых полноразмерными клавиатурами, мониторами высокого разрешения, жёсткими дисками и выделенными печатающими устройствами, большинство встроенных систем на основе микроконтроллеров полностью исключают всё пользовательское интерактивное оборудование, работая автономно на основе заранее запрограммированной логики прошивки. Когда производители не настраивают защитные параметры блокировки и перемычек во время заводского программирования, эти необслуживаемые встроенные МК становятся лёгкой целью для злоумышленников, чтобы выполнить считывание, дамп флэш и EEPROM без физической декапсуляции. Даже простые недорогие сенсорные микроконтроллеры хранят критические калибровочные параметры во внутренней EEPROM-памяти, которую злоумышленники выбирают в первую очередь во время рабочих процессов дампа для ускорения полной обратной разработки проприетарного управляющего кода.

Механизм реакции на прерывания в реальном времени

Аппаратное обеспечение микроконтроллера должно обеспечивать постоянную, предсказуемую реакцию в реальном времени на внешние и внутренние триггеры событий, присутствующие в их встроенной операционной среде, что реализуется с помощью выделенных цепей обработки прерываний. Когда периферийное устройство генерирует сигнал прерывания, МК немедленно приостанавливает выполнение текущего потока инструкций для передачи управления в заранее написанную подпрограмму обслуживания прерывания (ISR), также называемую обработчиком прерывания. После завершения всей логики, связанной с триггерным событием, внутри ISR, микроконтроллер восстанавливает предыдущие состояния регистров ЦП и возобновляет обработку исходной последовательности кода с той точки, на которой она была прервана. Допустимые источники прерываний различаются в зависимости от архитектуры МК, но обычно включают сигналы переполнения внутренних таймеров, завершение циклов аналого-цифрового преобразования, изменения логического уровня на входных выводах GPIO, вызванные нажатием кнопок, и полный приём данных по последовательным шинам, таким как UART или I2C. Для встроенных систем с батарейным питанием, оптимизированных для минимального энергопотребления, сигналы прерываний служат единственным механизмом для вывода ядра из режимов глубокого сна, в которых все тактовые генераторы и домены питания периферии отключены. Злоумышленники могут использовать временные уязвимости прерываний во время неинвазивных атак глитчингом для временной разблокировки защищённого микроконтроллера и запуска несанкционированных последовательностей считывания дампа до повторного включения логики защиты блокировки микросхемы. Инженеры, разрабатывающие защищённую встроенную прошивку, реализуют иерархии приоритетов прерываний, которые ставят сигналы обнаружения взлома выше стандартных входов датчиков, запуская массовое стирание флэш- и EEPROM-памяти в случае обнаружения аномальных попыток разблокировки во время работы для блокировки полного восстановления кода и обратной разработки.

Разработка программ для микроконтроллеров и типы памяти

Вся исполняемая логика, развёртываемая на микроконтроллере, должна помещаться в ограниченную ёмкость его внутрикристального энергонезависимого массива памяти, поскольку добавление внешней расширенной памяти резко увеличило бы общие материальные затраты на продукт и площадь печатной платы. Разработчики используют компиляторы и трансляторы ассемблера для преобразования читаемого высокоуровневого синтаксиса программирования или мнемоник ассемблера в компактный двоичный машинный код, отформатированный для хранения в разделах флэш, EEPROM или OTP-памяти. В зависимости от модели МК и предполагаемого производственного процесса, хранилище программ может быть либо постоянно замаскировано на этапе производства полупроводников, либо многократно перезаписано с помощью полевого программирования после сборки печатной платы. Производители полупроводников часто выпускают специализированные версии каждой основной линейки микроконтроллеров для упрощения прототипирования прошивки для проектных групп. Ранняя разработка использовала оконные EPROM-микросхемы МК, допускающие УФ-стирание и многократные циклы перепрограммирования, однако эти модели устарели после 1998 года, когда доступные микроконтроллеры с EEPROM и флэш-памятью достигли массового рынка. Некоторые устаревшие архитектуры микроконтроллеров предлагали дополнительный режим работы, в котором программная память могла быть сопоставлена с внешними дискретными микросхемами; эта конфигурация стала чрезвычайно редкой в современном встраиваемом проектировании из-за широкого доступа к недорогим внутрисистемным программаторам, способным записывать внутреннюю флэш без внешнего аппаратного обеспечения памяти. Программируемая энергонезависимая память, интегрированная в аппаратное обеспечение МК, даёт два ключевых коммерческих преимущества: прошивка продукта может быть исправлена после отгрузки через удалённые или проводные каналы обновления, а изменения логики на последней стадии могут быть применены к полностью собранным печатным платам перед розничной дистрибуцией без полной переработки оборудования. Гибкое программируемое хранилище также сокращает общее время разработки продукта, устраняя необходимость в изготовлении пользовательских масок для каждого незначительного изменения кода. Для крупносерийных партий с неизменной управляющей логикой масочно-программируемые микроконтроллеры остаются экономически эффективной альтернативой, где двоичная прошивка встраивается непосредственно в кремний вместе с логическими вентилями процессора во время производства пластин. Настраиваемые варианты микроконтроллеров, такие как Atmel AT91CAP, интегрируют пустые реконфигурируемые логические блоки наряду со стандартными ядрами МК, позволяя клиентам добавлять проприетарные периферийные интерфейсы и цепи обработки сигналов, адаптированные к уникальным требованиям приложений. Пользовательские программируемые логические области повышают уникальность аппаратного обеспечения и повышают технический барьер для злоумышленников, пытающихся создать дублирующие устройства после извлечения прошивки.

Обзор встроенной периферии

Каждый стандартный МК содержит от нескольких до десятков настраиваемых выводов общего назначения (GPIO), доступных из программного кода. Каждый канал GPIO может быть динамически переключён между режимом ввода для захвата внешних уровней сигналов и режимом вывода для управления нагрузками, такими как светодиоды и небольшие катушки реле. При настройке как входные выводы GPIO считывают аналоговые или цифровые сигналы, поступающие от подключённых датчиков; в конфигурации вывода они подают ограниченный ток для активации внешних электронных компонентов. Большинство современных микроконтроллеров интегрируют встроенные аналого-цифровые преобразователи (АЦП) для перевода непрерывных аналоговых напряжений датчиков в дискретные целочисленные значения, которые ЦП может обрабатывать численно. Меньшее подмножество конструкций МК добавляет цифро-аналоговые преобразователи (ЦАП) для генерации переменных выходных напряжений для управления двигателями и генерации звуковых сигналов. Помимо цепей аналого-цифрового преобразования, микроконтроллеры оснащаются комплексными аппаратными модулями таймеров, включая программируемые интервальные таймеры (PIT), которые считают тактовые циклы и инициируют прерывания по достижении заданных пороговых значений. Периферийные устройства PIT лежат в основе подпрограмм периодической выборки датчиков для термостатов, систем мониторинга окружающей среды и запрограммированных последовательностей включения. Генераторы широтно-импульсной модуляции (ШИМ) представляют собой ещё одно повсеместное выделенное периферийное устройство, позволяющее аппаратному обеспечению МК регулировать подачу энергии на двигатели, светодиодные массивы и резистивные нагрузки без потребления избыточных тактов ЦП в непрерывном циклическом опросе. Универсальные асинхронные приёмопередатчики (UART) упрощают двунаправленную последовательную передачу данных с минимальной нагрузкой на ядро, в то время как дополнительное аппаратное обеспечение реализует стандартизированные протоколы последовательной шины, включая I²C и SPI, для межчиповой связи между основным МК и вспомогательными датчиками или микросхемами памяти, такими как внешние EEPROM. Злоумышленники нацеливаются на незащищённые шины SPI/I2C, подключённые к внешним модулям EEPROM, во время операций дампа для извлечения калибровочных данных, раскрывающих детали конфигурации блокировки и перемычек основного ядра микроконтроллера.

Плотность интеграции микроконтроллера и аппаратная структура

Многие архитектуры микроконтроллеров исключают отдельные внешние шины адреса и данных, встраивая ОЗУ и энергонезависимую флэш/EEPROM непосредственно на тот же кремниевый кристалл, что и ядро ЦП. Удаление внешних шинных дорожек значительно уменьшает общее количество выводов, необходимое для корпусированной микросхемы, обеспечивая меньшие, более дешёвые форм-факторы, такие как компактные QFN и SOT-корпуса для поверхностного монтажа. Хотя интеграция памяти и периферии на одном кристалле увеличивает индивидуальные затраты на производство кремния, общая стоимость материалов для встроенной системы значительно снижается за счёт уменьшения общего числа дискретных микросхем, монтируемых на печатную плату. Меньшее количество компонентов упрощает автоматизированные сборочные операции, снижает затраты на сборку и уменьшает статистическую вероятность отказов оборудования, вызванных дефектами пайки. Полностью функциональный автономный микроконтроллер обычно содержит следующие стандартные компоненты: ядро ЦП от маломощных 4-битных конструкций до высокопроизводительных 32/64-битных вариантов ARM Cortex, энергозависимую SRAM для хранения переменных во время выполнения, энергонезависимую ПЗУ/EEPROM/флэш для постоянного кода прошивки и калибровочных констант, дискретные цифровые выводы GPIO для подключения внешних сигналов, последовательные порты UART, контроллеры многоадресных шин I2C/SPI, периферийные устройства таймеров/ШИМ/счётчиков событий, внутреннюю схему генератора тактовой частоты, опциональные аналого-цифровые преобразователи АЦП/ЦАП и выделенные аппаратные интерфейсы, поддерживающие внутрисхемное программирование и отладку через JTAG или UPDI. Такой высокий уровень монолитной интеграции резко сокращает общую проводку и площадь печатной платы, необходимые для построения полной встроенной управляющей схемы, по сравнению с комбинациями дискретных ЦП-память-ввод-вывод. В корпусах МК с малым количеством выводов каждый физический вывод мультиплексируется для выполнения нескольких периферийных функций, выбираемых через запись в регистры прошивки, что позволяет одной компактной микросхеме поддерживать широкий спектр различных конструкций продуктов без перепроектирования оборудования. Две основные архитектуры памяти доминируют в топологии кремния микроконтроллеров: Гарвардская и фон Неймана. Гарвардские конструкции МК поддерживают полностью изолированные шины инструкций и данных, допускающие параллельные одновременные операции доступа к памяти, часто с разной разрядностью для слов программ и регистров данных (например, 12-битные инструкции флэш в паре с 8-битными байтами ОЗУ). Архитектуры фон Неймана объединяют инструкции и переменные в едином общем адресном пространстве памяти, упрощая реализацию самокодирующегося кода ценой потенциальных узких мест в шине памяти при высокоскоростной работе. Проектные группы должны взвешивать целевые тактовые частоты, сложность маршрутизации и стоимость конечного продукта при выборе между ядрами МК с гарвардской или фон-неймановской архитектурой. Большинство наборов инструкций МК отдают приоритет компактным командам побитовых манипуляций, оптимизированным для управления датчиками и исполнительными механизмами, поскольку многие распространённые встроенные операции полагаются на оценку однобитовых сигналов, для которых на настольных ЦП общего назначения потребовалось бы несколько дискретных линий ассемблера. Подавляющее большинство недорогих ядер микроконтроллеров полностью исключают аппаратные сопроцессоры с плавающей запятой, требуя выполнения всех десятичных арифметических вычислений с помощью программных подпрограмм, хранящихся во флэш-коде. Программные подпрограммы с плавающей запятой увеличивают занимаемую флэш-память и увеличивают задержку выполнения, создавая ещё один вектор атак, где считывание дампа флэш раскрывает проприетарные математические алгоритмы для обратной разработки с целью создания дублирующих продуктов.

Среды программирования микроконтроллеров и инструментарий

Ранняя разработка микроконтроллеров исключительно полагалась на написание кода на ассемблере вручную из-за ограниченной поддержки компиляторов и малой ёмкости памяти устаревших МК. Сегодня для создания встроенной прошивки полностью поддерживается широкий выбор языков программирования высокого уровня с использованием специализированных компиляторных инструментальных цепочек, адаптированных к каждой архитектуре МК. Стандартный C остаётся самым распространённым языком для разработки микроконтроллеров, с компиляторами от производителей, добавляющими расширения, специфичные для архитектуры, и обработку ограничений памяти для учёта аппаратных ограничений. Некоторые семейства микроконтроллеров требуют использования настроенных нестандартных диалектов C для обхода архитектурных особенностей ядра; компилятор SDCC, нацеленный на устаревшие ядра 8051, является ярким примером такого специализированного инструментария. Для многих микроконтроллерных платформ также доступны пользовательские образы интерпретаторов прошивки, такие как интерпретаторы BASIC для оригинальных чипов Intel 8052 и Zilog Z8, обеспечивающие интерактивное тестирование кода на устройстве без полной перекомпиляции после каждого изменения. Программные пакеты симуляции предоставляют среду разработки без риска, где инженеры проверяют логику прошивки МК без физического аппаратного обеспечения прототипа. В симуляторе разработчики могут изменять виртуальные состояния входных сигналов, проверять значения внутренних регистров ЦП и отслеживать полный поток выполнения инструкций для выявления логических ошибок до изготовления печатных плат. Симуляторы превосходно воспроизводят граничные условия временных сигналов, трудно воссоздаваемые на физическом лабораторном оборудовании, значительно ускоряя рабочие процессы восстановления кода и обратной разработки для исследователей безопасности, анализирующих захваченные данные дампа с заблокированных микроконтроллеров. Современный кремний МК интегрирует выделенное аппаратное обеспечение отладки на кристалле, доступное через проводные интерфейсы JTAG или UPDI, позволяя разработчикам подключать внутрисхемные эмуляторы для отладки прошивки с точками останова на собранном оборудовании. Без выделенных схем отладки полное считывание флэш- и EEPROM-данных было бы значительно сложнее во время авторизованного аудита безопасности или несанкционированных хакерских операций дампа.

Основные коммерческие семейства архитектур микроконтроллеров

Десятки конкурирующих архитектур ядер микроконтроллеров и производителей полупроводников заполняют глобальный рынок встроенной электроники по состоянию на 2008 год, с выпуском новых линеек продуктов ежегодно для нишевых маломощных или высокоскоростных приложений. Ключевые популярные семейства включают 32-битные ядра ARM Cortex-M, развёртываемые десятками производителей микросхем, 8-битные AVR и 32-битные платформы AVR32/AT91SAM от Atmel, смешанные сигнальные микроконтроллеры Cypress P8C на базе M8C, устаревшие 8-битные S08 и 32-битные ColdFire от Freescale, классическую 8-битную архитектуру Intel 8051, линейки МК Infineon XC800, XE166 и Aurix, встроенные ядра MIPS, 8-битные PIC, 16-битные dsPIC и 32-битные PIC32 от Microchip, ARM-микроконтроллеры серии NXP LPC, многопроцессорные чипы Parallax Propeller, промышленные встроенные ядра PowerPC, маломощные 8-битные МК Rabbit, микроконтроллеры RL78/RX/H8/V850 от Renesas, высокоскоростные производные 8051 и смешанные ARM-решения Silicon Labs, микроконтроллеры STM8 (8-бит) и STM32 (32-бит) на базе Cortex-M от STMicroelectronics, а также сверхмаломощные 16-битные MSP430 и 32-битные платформы C2000, ориентированные на DSP, от Texas Instruments. Ядра TLCS-870 8/16-бит от Toshiba представляют ещё одну широко распространённую архитектуру промышленных МК. Бесчисленные более мелкие специализированные варианты микроконтроллеров существуют для узких вертикальных рыночных сегментов, таких как медицинские имплантаты или аэрокосмические сенсорные системы, с сильно фрагментированными глобальными цепочками поставок среди конкурирующих производителей. Многие производители полупроводников поддерживают несколько различных линеек ядер МК для покрытия как недорогого любительского оборудования, так и высоконадёжного промышленного оборудования. Каждая уникальная архитектура реализует различные схемы защиты перемычек и блокировки, создавая разные уровни сложности для злоумышленников, пытающихся разблокировать, выполнить дамп флэш и EEPROM и полное извлечение прошивки для создания дублирующих устройств.

Соображения по проектированию задержки прерываний

В отличие от настольных ЦП общего назначения, оптимизированных для максимальной пропускной способности последовательных инструкций, аппаратное обеспечение микроконтроллеров отдаёт приоритет предсказуемой, минимальной задержке прерываний для рабочих нагрузок управления в реальном времени. Две основные цели проектирования определяют разработку цепей прерываний: уменьшение общей цикловой задержки между событием и выполнением ISR и устранение непредсказуемой вариативности задержки, нарушающей жёсткие сроки управления в реальном времени. Когда сигнал прерывания поступает, МК должен сохранить все активные значения регистров ЦП перед переходом к подпрограмме обработчика, а затем восстановить эти регистры после завершения обработки. Большие банки регистров увеличивают циклы сохранения/восстановления контекста и повышают задержку прерываний, что побуждает многие маломощные ядра МК реализовывать минимальные наборы регистров ценой более медленного выполнения обычного кода. Альтернативные аппаратные решения включают выделенные дублирующие теневые регистры, зарезервированные исключительно для подпрограмм обслуживания прерываний, чтобы исключить операции полного стека регистров во время переключения контекста. Дополнительные факторы, влияющие на задержку прерываний, включают глубину конвейера внутри ядра ЦП, максимальную длину критического участка, где прерывания временно маскируются, настраиваемые уровни приоритета прерываний и поддержку вложенного выполнения прерываний. Большинство RISC-подобных архитектур МК используют короткие конвейеры инструкций из трёх или менее ступеней и полностью перезапускаемые арифметические операции для снижения задержки. Критические сегменты кода, изменяющие общие глобальные переменные, часто отключают все прерывания временно во время выполнения, что увеличивает задержку для ожидающих событийных сигналов. Продвинутые ядра МК реализуют выборочное маскирование прерываний, где блокируются только конфликтующие каналы событий, а не все источники прерываний одновременно, ограничивая влияние задержки для несвязанных периферийных триггеров. Функциональность вложенных прерываний позволяет событиям с высоким приоритетом, критически важным для безопасности, прерывать код обработчика с более низким приоритетом, обеспечивая быструю реакцию на чувствительные ко времени управляющие сигналы даже при выполнении фоновых задач. Когда сигналы прерываний поступают один за другим без промежуточных тактов, оптимизированное аппаратное обеспечение МК использует логику хвостовых вызовов для пропуска избыточных циклов сохранения/восстановления регистров и снижения общей задержки. Начальные 8-битные микроконтроллеры не имеют большинства продвинутых аппаратных средств снижения задержки, что делает их более лёгкой целью для атак разблокировки на основе глитчинга, использующих временные окна во время инициализации перемычек и блокировки при включении питания.

Разбор технологии памяти микроконтроллера

Каждый функциональный микроконтроллер интегрирует два отдельных класса памяти: энергозависимое хранилище данных для переменных времени выполнения и энергонезависимое хранилище, предназначенное для постоянного кода прошивки и калибровочных констант. SRAM является универсальным выбором для энергозависимой памяти во всех поколениях МК, построенной на шеститранзисторных ячейках хранения с дополнительной транзисторной логикой внутри регистровых банков. Технология MRAM рассматривается как будущая замена SRAM из-за в четыре-десять раз большей плотности хранения и сопоставимой энергоэффективности для встраиваемых приложений. Многие конструкции МК добавляют дополнительные внутренние блоки EEPROM для хранения постоянных серийных номеров устройств, журналов состояния перемычек и калибровочных смещений датчиков, которые сохраняются после полных циклов питания без обновляющих сигналов. Если микроконтроллер не имеет встроенной EEPROM, инженеры-проектировщики часто подключают внешние последовательные EEPROM через шины SPI или I2C для долгосрочного хранения данных, что создаёт дополнительную уязвимость считывания, которую злоумышленники используют во время рабочих процессов дампа. Начиная с 2003 года, на рынок вышло новое поколение самопрограммируемых флэш-микроконтроллеров, обеспечивающих обновления прошивки на месте без внешнего программирования, подключённого к отладочным выводам. Несколько поколений энергонезависимой программной памяти были развёрнуты на протяжении истории развития МК. Ранние масочные ПЗУ микроконтроллеры хранили прошивку, встроенную в кремний во время производства пластин, без возможности перезаписи. Последующие EPROM-микросхемы требовали кварцевой оконной упаковки для стирания перед перепрограммированием, дорогостоящего производственного выбора, от которого отказались после созревания EEPROM и флэш. PIC16C84 от Microchip в 1993 году стал первым массовым МК, построенным на электрически стираемой EEPROM-памяти программ, полностью устранив требования УФ-стирания. В том же году Atmel выпустила первый в отрасли NOR-флэш микроконтроллер, утвердив флэш как стандартный формат хранения программ для всего современного встраиваемого оборудования. Эволюция энергонезависимой памяти напрямую влияет на аппаратную безопасность: более старые архитектуры EPROM и OTP МК не имеют надёжной защиты блокировки и перемычек, что делает их тривиальными для разблокировки и дампа флэш с помощью базовых программаторов без декапсуляции или глитчинга. Современные флэш-МК интегрируют многоступенчатые массивы перемычек и многоуровневые регистры блокировки для блокировки несанкционированного считывания, требуя инвазивной декапсуляции и физической модификации перемычек для достижения полного состояния разблокировки, прежде чем можно будет приступить к полному извлечению прошивки и обратной разработке для создания функционального дублирующего оборудования.

Общие вопросы об извлечении прошивок микроконтроллеров


  • Безопасно ли отправлять оплату в MikaTech?

    Если бы MikaTech была недобросовестной компанией, в интернете за 28 лет истории можно было бы найти массу негативных отзывов о её услугах

    Итак, ответ: ДА! Мы — хорошие люди.

    Почему выбирают Mikatech, нажмите здесь, чтобы узнать


  • Может ли Mikatech взломать микросхемы, не указанные на этом сайте?

    У разных производителей чипов разные номера деталей, но внутреннее ядро может быть выполнено по одной технологии. Было бы невозможно перечислить все номера деталей, к которым применима наша технология, такие как MYSON, STK, FEELING, ANALOG, FUJITSU, NOVATEK, LG/HYNDAI.

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

  • Будет ли защищена моя конфиденциальность?

    Mikatech Innovative Limited понимает важность конфиденциальности своих клиентов. В момент вашего обращения к Mikatech ваша личная информация будет защищена в соответствии с нашими внутренними регламентами, разработанными за годы практики. Mikatech использует эти данные для индивидуализации обслуживания и никогда не раскрывает их третьим лицам по каким-либо причинам.
    По каждому проекту мы удаляем все данные, материалы и коды через 60 дней после передачи файлов — это защищает нас и вашу конфиденциальность.

  • Законно ли пользоваться услугами Mikatech?

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


  • Я отправил вам письмо, почему нет ответа?

    • A. Наш почтовый сервер временно вышел из строя, ваше сообщение не было доставлено в наш почтовый ящик, даже если на экране отображается сообщение об успешной отправке. Пожалуйста, свяжитесь с нами снова.
    • B. Наш email распознаётся как спам вашим почтовым сервером, поэтому наш ответ был отклонён или перенаправлен в папку спама. Пожалуйста, удалите наш адрес из списка спама или проверьте папку спама, или используйте другой email для связи, например Gmail.
    • C. Ваше письмо распознано как спам нашим почтовым сервером и помещено в папку спама. Пожалуйста, используйте другой email для связи.



    Услуги разблокировки MCU


    время взлома микроконтроллера

    Лет

    28 +
    страны взлома микроконтроллеров

    Стран

    110 +
    клиенты по атакам на микроконтроллеры

    Клиентов

    5000 +
    разблокированные проекты микроконтроллеров

    Проектов

    60000 +