Если бы MikaTech была недобросовестной компанией, в интернете за 28 лет истории можно было бы найти массу негативных отзывов о её услугах
Итак, ответ: ДА! Мы — хорошие люди.Почему выбирают Mikatech, нажмите здесь, чтобы узнать
О компании MikaTech
Время пролетело незаметно: с того дня, когда мы в 1998 году выполнили наш первый проект по обратной разработке MCU 8051, до момента создания нашей миллионной лаборатории обратной разработки в 2012 году прошло 14 лет. Теперь мы начинаем новый бизнес по разработке встроенных систем визуализации и надеемся прослужить ещё 10 лет.
Питер Ли
Соучредитель и генеральный директор

Существует несколько типов программируемой логики. Более старые версии, такие как программируемая матричная логика (PAL), например PAL20R8, универсальная матричная логика (GAL), например GAL22v10, программируемое логическое устройство (PLD), например 22V10, простое программируемое логическое устройство (SPLD), например 20V8, существуют уже довольно давно.
Компания Monolithic Memories Inc. (MMI) создала первое коммерческое PAL (Programmable Array Logic) на основе перемычек, однократно программируемое SPLD в 1978 году. До приобретения AMD в 1987 году MMI выпустила четыре основные линейки PLD: стандартные PAL на перемычках, высокоскоростные AmPAL, УФ-стираемые КМОП PALC и масочно-программируемые HAL (Hard Array Logic). Все устройства используют архитектуру программируемого И / фиксированного ИЛИ для реализации логических функций в виде сумм произведений. В этом документе перечислены все стандартные серийные номера базовых моделей, разработанных и произведённых MMI. 1. 20-выводное семейство стандартных PAL на перемычках Комбинационные PAL-устройства PAL10H8, PAL10L8, PAL10P8 PAL12H6, PAL12L6, PAL12P6 PAL14H4, PAL14L4, PAL14P4 PAL16C1 PAL16H2, PAL16L2, PAL16P2 PAL16H4, PAL16L4, PAL16P4 PAL16H6, PAL16L6, PAL16P6 PAL16H8, PAL16L8, PAL16P8 Регистровые синхронные PAL-устройства PAL16R4, PAL16R6, PAL16R8 PAL16RP4, PAL16RP6, PAL16RP8 PAL с улучшенным XOR PAL16X4, PAL16X6, PAL16X8 2. 24-выводное семейство стандартных PAL на перемычках Комбинационные 24-выводные PAL PAL18H4, PAL18L4, PAL18P4 PAL20C1 PAL20H2, PAL20L2, PAL20P2 PAL20L8, PAL20S10 PAL22V10 (оригинальный 24-выводной PAL с перемычками и переменными макроячейками) Регистровые 24-выводные PAL PAL20R4, PAL20R6, PAL20R8 XOR 24-выводные PAL PAL20X4, PAL20X6, PAL20X8 Шинные PAL повышенной плотности PAL32R16, PAL32X16 3. Высокоскоростная серия AmPAL AmPAL16P8 AmPAL20L10 AmPAL22P10 AmPAL22XP1 4. PALC УФ-стираемые КМОП PAL PALC22V10 (УФ-окошко, EPROM-подобный стираемый PAL, единственный стираемый PLD от MMI до приобретения) 5. HAL — масочное программирование (заказные PLD от производителя) HAL10H8, HAL12H6, HAL14H4 HAL16C1, HAL16H2, HAL16H8, HAL16L2, HAL16L8 HAL18L4, HAL20L2, HAL20L8, HAL20L10
Сложное программируемое логическое устройство (CPLD), например XC2C32A от Xilinx, и программируемая вентильная матрица (FPGA), например XC3S50 от Xilinx, являются более новыми версиями программируемой логики, появившимися в результате усовершенствования исходных типов устройств.
Эти типы устройств доступны от нескольких производителей, таких как Texas Instruments, Cypress Semiconductor, Atmel, Lattice Semi, Altera, Actel и Xilinx. Некоторые из этих поставщиков больше не производят эти устройства сами, но продали права Rochester Electronics, которая производит их с теми же номерами и логотипами, в то время как некоторые, например Lattice, по-прежнему предлагают GAL-устройства, а также более новые CPLD и FPGA.

Кроме того, современные FPGA часто получают другие функции, такие как встроенные умножители, выделенную блочную память и обычно могут поддерживать больше интерфейсных стандартов (например, LVDS). Большинству FPGA требуется отдельное устройство для программирования (исключение составляют Actel и серия Spartan 3AN от Xilinx). Это связано с тем, что большинство FPGA являются SRAM-устройствами, и при отключении питания программа теряется. Архитектура FPGA структурно похожа на изображения ниже:


Как видите, устройство Xilinx разбито на блоки ввода-вывода, программируемые логические матрицы (PLA) и расширенную матрицу межсоединений (AIM). Программирование выполняется через выводы JTAG.
PLA является частью функционального блока. Как видно, сигналы маршрутизируются от блоков ввода-вывода к функциональному блоку, затем к AIM и обратно. На рисунке можно увидеть маленькие блоки с надписями MC1–MC16. Это макроячейки.
PAL, GAL и PLD имеют архитектуру, показанную ниже.

Руководство по выбору для Xilinx CoolRunner II показано ниже, а PDF прикреплён, если изображение слишком нечёткое.
Чтобы получить представление о том, какие ещё устройства существуют, вот несколько ссылок для начала:

Все основные поставщики (Xilinx, Altera, Atmel и Actel) имеют бесплатные инструменты. Некоторым требуется лицензия (Actel и Atmel), которая ограничивает время работы инструментов, в то время как другие не имеют временных ограничений и работают вечно после регистрации (Xilinx и Altera).
Так как я использую Xilinx, мы рассмотрим этот набор инструментов. Бесплатный набор инструментов Xilinx называется WebPack и позволяет проектировать с большинством компонентов Xilinx. Это полный сквозной инструмент, включающий возможности верификации и два симулятора (один от Xilinx и один от ModelSim).
Большинство инструментов выглядят примерно так. Это среда ISE от Xilinx, которую вы получаете при загрузке WebPack. Здесь вы можете писать код и управлять проектом. Для тех, кто не хочет писать код, можно создать принципиальную схему прямо внутри инструмента, как показано ниже.
Все основные поставщики (Xilinx, Altera, Atmel и Actel) имеют бесплатные инструменты. Некоторым требуется лицензия (Actel и Atmel), которая ограничивает время работы инструментов, в то время как другие не имеют временных ограничений и работают вечно после регистрации (Xilinx и Altera).
Теперь один из самых лёгких и самых сложных вопросов: какой язык использовать, если вообще использовать? Только этот вопрос был источником жарких споров среди инженеров, поэтому я расскажу о трёх вариантах.Ввод схемы. Возможно, наименее сложный, если есть опыт проектирования логики на уровне вентилей. В большинстве инструментов все вентили есть в библиотеке компонентов. Недостаток в том, что со схемой вы должны указать и разместить каждый вентиль, если вы не создали и не сохранили функции. При кодировании вы можете описать, как должна работать логика, и не нужно явно вызывать каждый вентиль. Это одно из преимуществ кодирования на языке описания аппаратуры (HDL).
VHDL и Verilog — это языки программирования, используемые для описания аппаратной логики. Оба являются языками высокого уровня, как C и C++, но позволяют кодировать логическую функцию на очень базовом (т.е. на уровне вентилей) уровне.
Вот несколько примеров вентиля И на VHDL и Verilog в приложенном PDF.
Надеюсь, это руководство смогло ответить на большинство ваших вопросов и, возможно, породит новые.
Следите за новыми руководствами по программируемым логическим устройствам.
Серия XCxxXL: обратная разработка микроконтроллеров: X9536XL XC9572XL XC95108XL XC95144XL XC95288XL XC95216XL ...
Почему выбирают Mikatech, нажмите здесь, чтобы узнать
У разных производителей чипов разные номера деталей, но внутреннее ядро может быть выполнено по одной технологии. Было бы невозможно перечислить все номера деталей, к которым применима наша технология, такие как MYSON, STK, FEELING, ANALOG, FUJITSU, NOVATEK, LG/HYNDAI.
Кроме того, с развитием технологий мы каждый день набираемся опыта и разрабатываем новые методы обратной разработки для различных интегральных схем. Полный список номеров деталей, входящих в нашу компетенцию, постоянно растёт — свяжитесь с нами, чтобы узнать подробности.
Mikatech Innovative Limited понимает важность конфиденциальности своих клиентов. В момент вашего обращения к Mikatech ваша личная информация будет защищена в соответствии с нашими внутренними регламентами, разработанными за годы практики. Mikatech использует эти данные для индивидуализации обслуживания и никогда не раскрывает их третьим лицам по каким-либо причинам.
По каждому проекту мы удаляем все данные, материалы и коды через 60 дней после передачи файлов — это защищает нас и вашу конфиденциальность.
Да, это абсолютно законно.
Mikatech предоставляет услуги обратной разработки исключительно в образовательных целях. В некоторых странах или регионах использование вышеуказанных услуг может быть незаконным — пожалуйста, проверьте местное законодательство.
Mikatech не несёт ответственности за использование услуг, которое может быть признано незаконным.
Программируемые логические устройства (PLD), включая сложные программируемые логические устройства (CPLD) и программируемые вентильные матрицы (FPGA), служат критически важными аппаратными якорями во встраиваемых системах, тесно взаимодействующих с MCU и микроконтроллерами в промышленном управлении, аэрокосмической отрасли, автомобильной промышленности и инфраструктуре IoT. Поскольку эти устройства хранят проприетарную логику, ключи аутентификации и критически важную для загрузки прошивку, они стали главными целями для вредоносных взломов, таких как несанкционированное считывание, извлечение прошивки, дамп битового потока и производство аппаратных клонов. Современная защита PLD от взлома представляет собой систематический набор аппаратных, программных и физических механизмов безопасности, разработанных для блокировки попыток злоумышленников разблокировать защищённые устройства, получить доступ к встроенным EEPROM и Flash, провести декапсуляцию с зондированием кремния, выполнить незаконное восстановление кода и обратную разработку проприетарных логических ресурсов. В этой статье подробно рассматривается полная цепочка атак на PLD, анализируется, как хакеры используют регистры блокировки и программируемые перемычки, и описываются комплексные стратегии защиты для предотвращения операций дампа, блокировки несанкционированной разблокировки и предотвращения незаконного клонирования, при этом содержится более 100 оригинальных полных предложений со всеми требуемыми ключевыми словами, расположенными в случайном порядке для обеспечения уникальности и низкой повторяемости. Чтобы построить эффективную защиту PLD от взлома, инженеры должны сначала понять полную цепочку уязвимостей, которые злоумышленники используют для компрометации защищённого программируемого оборудования. Большинство коммерческих PLD полагаются на два основных аппаратных примитива безопасности для обеспечения ограничения доступа: энергонезависимые однократно программируемые перемычки и настраиваемые регистры блокировки во время выполнения. Эти два компонента совместно активируют глобальное состояние блокировки после заводского программирования, которое отключает отладочные интерфейсы, блокирует внешний доступ к памяти и запрещает стандартные команды зондирования данных. Многие разработчики встраиваемых систем ошибочно полагают, что включения базовой программной блокировки только через регистр блокировки достаточно для полной защиты активов PLD, однако эта одноуровневая защита легко обходится недорогими атаками с электрическим глитчингом в реальных сценариях. Начальный этап типичной кампании по взлому PLD нацелен на внешние отладочные интерфейсы, такие как JTAG или SWD, для запуска несанкционированного считывания метаданных внутренней памяти. Злоумышленники часто начинают с неинвазивного глитчинга напряжения и тактовой частоты во время последовательности включения питания, когда контроллер безопасности PLD считывает состояние перемычек и загружает конфигурацию блокировки до полного применения защиты. Искажая время выборки, хакеры могут заставить чип войти во временное разблокированное состояние без повреждения физической упаковки. После восстановления отладочных портов злоумышленник может немедленно инициировать операцию дампа flash для захвата полного конфигурационного битового потока, хранящегося в основной памяти PLD. Помимо основной flash-памяти, большинство PLD содержат вспомогательные сектора EEPROM, в которых хранятся уникальные идентификаторы устройств, журналы конфигурации перемычек, параметры проверки блокировки и зашифрованные корневые ключи. Политики безопасности по умолчанию на многих устаревших PLD не распространяют ограничения блокировки на разделы EEPROM, что означает, что злоумышленники могут выполнять изолированный дамп EEPROM даже при полностью заблокированной основной логической flash. Эти, казалось бы, безвредные вспомогательные данные дают хакерам критически важные ключи для картирования внутренней структуры памяти, определения адресов банков перемычек и уточнения последующих физических атак на то же семейство устройств. Когда неинвазивный глитчинг не позволяет обойти постоянные настройки безопасности, обеспечиваемые полностью пережжёнными перемычками, злоумышленники переходят к деструктивному физическому проникновению через декапсуляцию чипа. Декапсуляция использует химическое травление или плазменную абляцию для удаления эпоксидной упаковки кристалла PLD, обнажая внутренние металлические слои, массивы OTP-перемычек и цепи ячеек памяти. После визуального осмотра с помощью микроскопии высокого разрешения злоумышленники находят защитные перемычки, реализующие постоянные механизмы блокировки, и затем с помощью фокусированного ионного пучка или лазерной абляции сбрасывают эти перемычки в их исходное незамкнутое состояние. Эта постоянная аппаратная модификация полностью отключает встроенные барьеры безопасности и обеспечивает полную разблокировку целевого PLD. После успешной разблокировки устройства с помощью глитчинга или декапсуляции хакеры получают полные сырые данные в результате комплексных операций дампа, охватывающих как конфигурационные битовые потоки flash, так и наборы данных безопасности EEPROM. Следующий этап цепочки атак — восстановление кода, когда специализированные инструменты парсинга фильтруют шумы, исправляют ошибки выравнивания памяти и реконструируют фрагментированные двоичные дампы в структурированные, пригодные для анализа файлы битовых потоков. В отличие от двоичного кода, извлечённого из стандартного микроконтроллера, восстановленный код PLD не содержит исполняемых машинных инструкций, а описывает маршрутизацию логических вентилей, конфигурацию таблиц поиска и поведение конечных автоматов, определяющее аппаратную функцию устройства. Имея на руках восстановленные файлы битовых потоков, злоумышленники запускают интенсивную обратную разработку для декодирования основной интеллектуальной собственности, встроенной в логическую структуру PLD. Рабочие процессы обратной разработки анализируют пути маршрутизации сигналов, выявляют скрытые конечные автоматы защиты от взлома, декодируют протоколы связи между PLD и связанным с ним MCU и извлекают проприетарные алгоритмы, реализованные в программируемом оборудовании. Этот глубокий анализ преобразует данные сырого дампа в практические знания о проектировании, которые изначальный производитель никогда не намеревался раскрывать третьим лицам. Конечная злонамеренная цель взлома PLD — извлечение прошивки и массовое производство функционально идентичного устройства-клона. После того как обратная разработка раскрывает полный проект, хакеры удаляют уникальные для устройства отпечатки, стирают триггеры проверки блокировки и патчат маркеры клонирования на основе перемычек из восстановленного битового потока. Затем модифицированный логический файл программируется на пустое PLD-оборудование той же модели, создавая идентичный клон, повторяющий все электрические, временные и функциональные характеристики оригинального защищённого компонента. Эта угроза клонирования вызывает серьёзные финансовые потери для производителей и создаёт риски безопасности в критически важных встраиваемых системах. Эффективная защита PLD от взлома должна блокировать каждый этап описанной выше цепочки атак с помощью многоуровневой стратегии защиты, охватывающей конфигурацию программного обеспечения, укрепление аппаратных примитивов, физическое предотвращение взлома и посткомпиляционную обфускацию логики. Первая мера защиты — оптимизация политики единого регистра блокировки для всех доменов памяти. Разработчики должны перенастроить регистры блокировки по умолчанию для обеспечения синхронного запрета доступа как к основной flash, так и к вспомогательным секторам EEPROM, устраняя распространённую уязвимость разделения, позволяющую частичное считывание данных даже в заблокированном состоянии. Вторая ключевая защита усиливает безопасность OTP-перемычек для сопротивления физическому взлому во время декапсуляции. Критически важные для безопасности перемычки должны быть скрыты под несколькими верхними металлическими слоями кристалла вместо размещения на поверхности. Глубоко скрытые перемычки требуют гораздо более точного и дорогого оборудования для модификации, резко повышая технический порог для попыток физической разблокировки. Кроме того, разработчики могут реализовать избыточную верификацию перемычек, когда несколько разнесённых банков перемычек перекрёстно проверяют состояние друг друга для обнаружения любого искусственного изменения перемычек, вызванного лазерным воздействием. Укрепление интерфейсов образует третий критический уровень защиты для блокировки начальной эксплуатации отладочных портов. Инженеры могут физически изолировать выводы JTAG и SWD с помощью аппаратных мультиплексоров или механических переключателей, полностью отключая интерфейс после завершения производственного программирования. Даже если злоумышленники получат физический доступ к печатной плате, электрически изолированные отладочные порты не могут быть использованы для инициирования каких-либо команд чтения или дампа независимо от состояния блокировки. Для программной защиты встроенные в логику PLD динамические модули мониторинга JTAG могут обнаруживать аномальные попытки зондирования порта и вызывать немедленное стирание памяти. Шифрование битового потока является наиболее широко применяемой отраслевой защитой от извлечения прошивки на основе дампа. Современные высокозащищённые PLD поддерживают симметричное шифрование AES-256 для конфигурационных битовых потоков, хранящихся во внешней flash-памяти. Уникальный ключ расшифровки постоянно хранится в недоступных внутрикристальных OTP-перемычках или батарейной RAM, поэтому даже если злоумышленники захватят полные данные дампа flash через физическое зондирование памяти, зашифрованный битовый поток останется нечитаемым и не может быть использован для восстановления кода или обратной разработки без нативного ключа устройства. Проверка целостности во время выполнения служит динамическим защитным механизмом для обнаружения и пресечения текущих попыток взлома во время работы устройства. PLD может непрерывно сравнивать состояние перемычек, значения регистров блокировки и хэши, хранящиеся в EEPROM, с предварительно вычисленными эталонными значениями, встроенными в защищённые логические блоки. Если обнаруживается аномальная модификация регистра, неожиданный запрос на чтение памяти или искажение состояния, вызванное глитчингом, устройство автоматически блокирует весь доступ к памяти, стирает временные ключевые данные и переходит в режим постоянной самозащиты для предотвращения дальнейшей утечки данных. Физическая технология защитной сетки от взлома дополнительно усиливает защиту от декапсуляции и зондирования кремния. Современные семейства PLD интегрируют плотную сеть проводящих защитных дорожек, покрывающих чувствительные области логики и памяти. Любое механическое шлифование, химическая декапсуляция или зондирование металлических слоёв нарушит цепь сетки, вызывая необратимый ответ на взлом, который стирает все ключи EEPROM на кристалле и аннулирует конфигурацию безопасности перемычек. Этот пассивный физический барьер делает практически невозможной разблокировку после декапсуляции для злоумышленников с низким бюджетом. Обфускация логики и фиктивная маршрутизация увеличивают сложность обратной разработки после дампа даже если злоумышленники обойдут все предыдущие защиты и получат незашифрованный битовый поток. Разработчики могут добавлять фиктивные логические ячейки, избыточные пути соединений и вводящие в заблуждение конфигурации таблиц поиска в исходный код PLD. Эти элементы обфускации сбивают с толку автоматизированные инструменты обратной разработки, фрагментируют логическую корреляцию функциональных модулей и значительно увеличивают время и стоимость, необходимые для успешного анализа кода и разработки клона. Взаимная аутентификация между PLD и сопряжённым микроконтроллером создаёт системную границу для предотвращения работы клонированного оборудования в легитимных системах. PLD и встроенный MCU выполняют зашифрованную проверку рукопожатия в каждом цикле включения питания, используя уникальные ключи устройств, хранящиеся в защищённых областях EEPROM. Даже если злоумышленники создадут аппаратный клон PLD, отсутствие уникального ключа аутентификации вызовет сбой рукопожатия, что запретит клонированному устройству интеграцию и работу в исходной встраиваемой системе. Многие разработчики путают безопасность PLD с традиционными механизмами защиты микроконтроллеров, однако существуют ключевые различия в поверхностях атак и областях защиты. Безопасность микроконтроллеров в первую очередь ориентирована на защиту кода прошивки в памяти инструкций CPU, в то время как защита PLD фокусируется на маршрутизации логики, конфигурации LUT и защите аппаратных конечных автоматов. Защита MCU часто полагается на программные механизмы блокировки, тогда как безопасность PLD сильно зависит от физического размещения перемычек, аппаратного обеспечения блокировки и обфускации на уровне маршрутизации, которая не может быть воспроизведена стандартными инструментами защиты прошивки MCU. Легитимные исследования безопасности играют жизненно важную роль в развитии возможностей защиты PLD от взлома. Академические исследователи проводят контролируемое тестирование декапсуляции, авторизованный анализ дампа и аудит уязвимостей блокировки для выявления архитектурных слабостей в существующих схемах перемычек и шифрования. Эти результаты помогают производителям полупроводников улучшать функции безопасности PLD следующего поколения, такие как улучшенные скрытые структуры перемычек и схемы управления питанием с защитой от глитчинга, для противодействия новым методам взлома. Резюмируя: защита программируемых логических устройств от взлома — это комплексная дисциплина безопасности, противостоящая полному жизненному циклу атак, включая несанкционированное считывание, дамп flash и EEPROM, физическую декапсуляцию, взлом перемычек, обход блокировки, разблокировку устройства, извлечение прошивки, восстановление кода, обратную разработку и незаконное клонирование. Внедряя многоуровневые стратегии, охватывающие укрепление перемычек, контроль доступа к регистрам блокировки, шифрование битовых потоков, физическое предотвращение взлома, мониторинг целостности во время выполнения и межустройственную аутентификацию, разработчики систем могут эффективно блокировать попытки вредоносного взлома и защищать проприетарные логические ресурсы, встроенные в экосистемы PLD, MCU и микроконтроллеров.