Оглавление

Введение

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

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

RTL-дизайн против списка соединений

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

Разработка RTL стала намного проще в 1983 году, когда министерство обороны разработало первый язык описания оборудования (HDL) для документирования поведения специализированных интегральных схем (ASIC). ) конструкции. VHDL и Verilog были представлены примерно в одно и то же время и до сих пор остаются двумя самыми популярными HDL. Эти языки были созданы как специализированный компьютерный язык для программирования цифровых логических схем. Если мы возьмем приведенную выше диаграмму RTL и преобразуем ее в код Verilog — это будет выглядеть так:

always @(posedge clk) 
begin
    Q <= D;
end
assign D = ~Q;

Этот простой фрагмент кода можно синтезировать для обсуждаемой конструкции логических вентилей. Логический синтез — это автоматизированный процесс преобразования языка HDL, такого как Verilog или VHDL, в оптимизированное описание на уровне ворот. При обратном проектировании изображений кремниевых кристаллов первая цель — понять, как мы можем взять все эти слои и преобразовать их в список соединений транзисторов. Глядя на что-то вроде вентиля XOR с двумя входами без значков компонентов RTL для замены транзисторов, мы можем разработать эту схему:

Проще говоря, для создания этого комплементарного списка соединений металл-оксид-полупроводник (КМОП) потребовалось всего шесть транзисторов. С этого момента в нашем путешествии по обратному проектированию вы должны преобразовать этот список соединений в схему RTL, а затем в HDL, как видно из изображений и фрагментов кода выше.

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

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

Определение аппаратных троянов

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

  • Уменьшение эффективной энтропии генератора случайных чисел
  • Выдача злоумышленнику информации о внутренней работе процессора.

Ниже вы найдете пример аппаратного троянца, активируемого пороговым напряжением (HTVth) в комбинационной схеме (2-входовой вентиль И-НЕ).

Согласно документу Проникновение аппаратного троянца, запускаемого пороговым напряжением, в современную структуру FPGA — методология обнаружения и смягчение последствий: :

  • Задача передачи троянской схемы должна быть линейной.
  • Чувствительность к изменениям температуры и порогового напряжения должна быть очень высокой.
  • Изменение на выходе должно быть достаточно большим для изменения на входе.
  • Должны сохраняться незначительная временная деградация и устойчивость к изменениям процесса.

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

В этом примере злоумышленник может легко контролировать выход логического элемента И-НЕ с двумя входами. С A(1) NAND B(0) == AB(1) мы ожидаем, что вход 1 и 0 даст на выходе высокое напряжение. При вставленном трояне уравнение для A NAND B будет иметь противоположный предполагаемый результат. Триггер аппаратного троянца (HWT) может так же легко изменить определенные входные контакты или изменить ожидаемые результаты. Это может помочь получить доступ к встроенным учетным данным, ключам, коду и многому другому.

Вставка троянов

Есть много способов вставить троянов, потому что есть много разных типов троянов. Один тип имеет возможность размещать фиксированные входы, подающие на два триггера, таким образом, чтобы микросхема по-прежнему проходила встроенную проверку самотестирования (BIST). Это может упростить обход механизма безопасности отладки. Второй тип включает возможность сделать атаки по сторонним каналам более доступными. Третий тип, трояны на стадии макета, могут быть внедрены в нескольких точках, особенно если несколько сторонних IP-ядер объединены в одном проекте. В принципе, одна разработка может стать жертвой нескольких троянцев, созданных разными группами злоумышленников.

Вставка RTL — один из самых популярных способов внедрения аппаратных троянов. Сам троянец может быть объектом системного уровня, который преобразуется в мошеннический RTL или может быть доставлен во время компоновки ASIC. Кроме того, троянец может маскировать подготовку, изменяя данные, чтобы замаскировать схему, которая уже находится в производстве. Это достигается с помощью технологий повышения разрешения (RET), таких как оптическая коррекция приближения (OPC), которая корректирует для волнообразного поведения света при травлении наноразмерных атрибутов самых современных интегральных схем. Дополнительную информацию можно найти в Википедии о кассетах.

Чередование маски может, например, изменить полярность легирующей примеси внутри транзистора, с n-типа на p-тип или наоборот. Исследователи из Института безопасности полупроводников Хорста Герца заявили, что это будет крайне сложно обнаружить, особенно если это будет сделано после регистрации. Подделка, безусловно, может внести изменения непосредственно перед изготовлением маски.

В приведенном выше случае, который был представлен Becker et al, инвертор мог быть сфальсифицирован для обеспечения неправильного выхода. Например, Vdd может быть всегда высоким при переключении маски p-легирующей примеси на версию n-типа или изменить его силу за счет уменьшения ширины p-канального металлооксидного полупроводника ( ПМОП-транзистор. На изображении выше p-примесь охватывает всю область Vdd, но на схеме Trojan (справа) она занимает только более половины транзисторов на стороне Vdd.

Трояны, способные воздействовать более чем на один путь, имеют больше шансов быть обнаруженными. При низкой вероятности перехода трояны вряд ли повлияют на энергопотребление схемы. Даже если сети выбираются из некритических путей без общих сегментов, обнаружить троянов с помощью методов, основанных на задержке, будет крайне сложно. Этот процесс тестирования был применен к схеме Ethernet MAC 10GE, и чип был синтезирован на технологическом узле 90 нм. Ему был поставлен троянец-компаратор, который следит за проводами шины данных. Логика компараторов, как показано ниже, переключается при изменении шины данных и поэтому потребляет значительное количество энергии.

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

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

Если мы посмотрим на троянов с точки зрения макета, игра немного изменится. В большинстве случаев при проектировании схем остается много неиспользуемых пространств или даже областей, которые подвергаются химической механической полировке (CMP). Троянские клетки, размещенные в области, не используемой схемой, оказывают большее влияние на энергопотребление схемы, чем все остальные методы, перечисленные выше.

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

Подготовка образцов, микроскопические изображения и тестирование

Использование методов обратного оптического проектирования может многое открыть исследователю. Обычные микроскопы, такие как составной, стерео- или даже металлургический, могут использоваться для обнаружения троянов, но отраслевой стандарт склоняется к сканирующим электронным микроскопам (SEM), поскольку ИС становятся меньше. Расширенные возможности необходимы для того, чтобы иметь возможность проводить дальнейшие исследования. Чтобы даже подготовить чип для показа скрытых троянов, некоторые вещи делаются с легированием, что требует использования химического травителя.

Как видно на увеличенном изображении ниже, затвор оригинальной конструкции (КМОП-инвертор) модифицирован путем применения другой полярности легирующей примеси к дискретным частям активной области затвора.

Согласно исследованию, проведенному Университетом Северной Каролины, они смогли зафиксировать мощность транзисторов на определенном значении и/или даже имели возможность изменять мощность транзисторов аналогичным образом.

Университет Флориды провел аналогичное исследование по обнаружению троянов с использованием различных напряжений луча на специальном CMOS-чипе. Используя этот метод, они смогли использовать быстрые алгоритмы визуализации SEM, обработки изображений и компьютерного зрения для обнаружения изменений вставки, удаления и модификации между чипом, свободным от троянов, и IC в процессе аутентификации (IUA). .

Как обсуждалось выше, необходима подготовительная работа, чтобы подготовить чип к визуализации, поскольку электроны не могут проникнуть в толстый слой подложки из диоксида кремния (SiO₂). Широко используемый метод удаления SiO₂ — механическая полировка, так как его легче контролировать, чем что-то вроде погружения стружки в плавиковую кислоту, как показано в моей последней статье.

Чтобы поддерживать равномерное утончение подложки, исследователи использовали VarioMill. Этот продукт использует лазерное химическое травление, пятиосную адаптивную микрообработку с ЧПУ и спектрометрию видимого/ИК-излучения для утончения задней стороны толщиной до 1 мкм.

Цель здесь состоит в том, чтобы взять изображения SEM из IUA и сравнить их с золотым IC. Для SEM необходимо установить определенные параметры, чтобы получить эффективное изображение IUA, например, напряжение луча, поле зрения, время пребывания (скорость) и разрешение. С этими настройками микроскоп можно запрограммировать на отображение всей ИС.

Исследователи внесли изменения в уровень легирования, чтобы смоделировать активность троянца, который затем был получен с помощью РЭМ. В некоторых из этих примеров злоумышленник потенциально может заменить вентиль NAND на вентиль NOR, который, по сути, будет реализовывать собственную вредоносную логику с помощью таких методов, как модификация активной области, маскировка ячеек на 1-м металлическом слое или путем вставки/удаления логики. на активной области (т.е. добавление инвертора).

Современные микроконтроллеры и ЦП имеют от 10 000 до миллиардов вентилей, и для анализа потребуется множество изображений с микроскопа. Вот почему автоматизация играет ключевую роль, когда речь идет о сборе информации как о номинальных цепях, так и о цепях с троянами.

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

Теперь мы рассмотрим раздел, в котором аппаратный троян создается с помощью инструментов Electronic Design Automation (EDA) с открытым исходным кодом, чтобы показать, как он выглядит на уровне пользовательского дизайна.

ASIC Дизайн собственного HWT

Теперь, когда у нас была возможность узнать об аппаратных троянцах из множества разных источников, я подумал, что было бы интересно создать свой собственный от RTL до GDSII, где мы могли бы фактически просматривать наш чип с помощью программного обеспечения для 3D-рендеринга, такого как GDS3D. Прелесть разработки нашего собственного зараженного чипа заключается в том, что мы можем увидеть, как использовать инструменты с открытым исходным кодом для этого, а также иметь возможность смотреть на интегральную схему без микроскопа, поскольку мы можем увеличивать столько, сколько захотим, с помощью программного обеспечения. .

Давайте рассмотрим схему на уровне затвора обычной логической схемы И-ИЛИ с 4 входами рядом с той же схемой, но со вставленным трояном. Мы преобразуем это в код Verilog, а затем используем либо QFlow с PDK OSU, либо Openlane на PDK Skywater130 для создания файлов GDSII, чтобы мы могли просмотреть дизайн ASIC, как если бы мы смотрели на него в увеличенном масштабе. объектив.

По словам Димитриса Мориса, Шарля Гуэрта и Нектариоса Георгиоса Цуцоса, ворота помечаются в порядке оценки (сначала G1, затем G2 и т. д.). Трассировка выполнения также показана в строках таблиц, которые будут отображать выходные данные четырех регистров State Machine (SM), которые определяются переменными r0 — r3. Выделенные и подчеркнутые значения в таблицах показывают, какая переменная моделирования была перезаписана после оценки логического элемента. На диаграмме (а) показана схема, которая выдает 1, когда все четыре входа установлены на высокий уровень. На диаграмме (б) показана та же схема, что и (а), после внедрения примера троянца, который активируется только тогда, когда все входы установлены на 1.

У нас есть два способа преобразовать логику уровня ворот в Verilog: либо вручную, либо с помощью Цифрового инструмента. Мы можем нарисовать схемы и преобразовать программное обеспечение в HDL по нашему выбору. Я выберу более ленивый вариант Б.

module non_active_hwt (
  A,
  B,
  C,
  D,
  Y
);
  input A;
  input B;
  input C;
  input D;
  output Y;
  assign Y = ((((A & B) | (C & D)) | (C & D)) & D);
endmodule

Сгенерированный Verilog-код довольно прост для конструкции, не содержащей троянца. Выход Y зависит от четырех входов, которые проходят логическое И в 3 группах, в то время как 2 группы получают ИЛИ для выхода, чтобы получить И еще раз на входе D. Теперь давайте посмотрим на код, который я сгенерировал с помощью внедренного аппаратного трояна.

module active_hwt (
  A,
  B,
  C,
  D,
  Y
);
  input A;
  input B;
  input C;
  input D;
  output Y;
  assign Y = ((((A & B) & (C & D)) ^ (((A & B) | (C & D)) | (C & D))) & D);
endmodule

Это довольно похоже на код без троянца, за исключением того, что в этом коде есть операция XOR вместе с дополнительным И с вводом C и D. Мы можем использовать EDA Playground для моделирования волновых моделей, используя простой тестовый стенд для обоих. Если вы не знакомы с написанием тестовых стендов, вы можете посмотреть мой код, чтобы увидеть, как они написаны. По сути, мы тестируем входы A, B, C и D, чтобы увидеть, насколько сложно будет заметить разницу с точки зрения формы волны. Помните, что наша кривая должна показывать активацию трояна только тогда, когда у нас есть 4'b1111, все остальные входные и выходные сигналы должны отражать друг друга.

Они оба выглядят очень похожими с точки зрения того, как Y включается и выключается, но если вы внимательно посмотрите на вывод сигнала без аппаратного троянца, вы увидите одно различие. Когда с A по D все переключаются на 1, выход Y равен 1, как и ожидалось. Обратите внимание, когда мы проверяем те же входные данные со вставленным кодом HWT… выход Y равен 0, когда все контакты активированы. Итак, мы нашли триггер троянца, а функционал обеих RTL-дизайнов практически идентичен. Вы можете видеть, что в строке 54 нашего кода испытательного стенда, если бы мы забыли тест всех входов, установленных в активное состояние, сгенерированные формы сигналов обеих схем были бы идентичными.

Давайте перейдем к предварительному изготовлению и посмотрим, как легко будет обнаружить различия между обеими конструкциями ASIC. Мы можем сделать это, пройдя процесс установки QFlow, где будут установлены все зависимости, такие как yosys, netgen, graywolf, qrouter и magic. Используя графический интерфейс QFlow, вы можете направить его к файлу Verilog, который вы хотите установить для подготовки к синтезу.

У вас будет несколько вариантов раскрывающегося списка технологии. Я решил использовать последнюю версию PDK, которая называется OSU018. Это означает, что он будет разработан в масштабе 180 нм. После выполнения синтеза, размещения, STA, маршрутизации и т. д. вы получите файл .gds в каталоге /layout/. Используя Klayout, мы можем открыть файл GDSII в программе.

Если вы посмотрите на эту простую схему ИС, то увидите, что она разбита на несколько простых логических вентилей. Первым из них является AOI21X1, это инверторный логический элемент И-ИЛИ с 3 входами, который имеет функцию Y=!((A&B)|C).

При удалении слоев наша конструкция соответствует функции АОИ и содержит 6 транзисторов PNP и NPN. Когда мы сравниваем это с конструкцией AOI21X1 в дизайне со вставкой HWT, они выглядят совершенно одинаково. На самом деле обе конструкции содержат BUFX2 (неинвертирующий буфер [Y=A]), INVX1 (инвертор [Y=!A]) и NAND2X1 (два -входной вентиль И-НЕ [Y=!(A&B)]). Давайте посмотрим, какие стандартные ячейки добавил наш зараженный дизайн.

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

С левой стороны у нас есть 4 транзистора, составляющие наш вентиль И-НЕ с 2 входами, и выход Y этого вентиля подключен к входу A вставленного вентиля И-НЕ с 3 входами (на правой стороне), который влияет на выход эти ворота. Этот дополнительный затвор состоит из 6 транзисторов, что в сумме дает 10 дополнительных транзисторов к конструкции зараженной ИС. Итак, где все это соединяется, чтобы повлиять на фактический физический выходной контакт?

Добавив слои обратно, мы видим, что верхний металлический (зеленый) слой показывает два физических контакта, вход D и выход Y. Дополнительные два вентиля И-НЕ, вставленные в эту конструкцию, в конечном итоге изменят выход этого вывода, когда установлен конкретный триггер, что в нашем случае происходит, когда все физические входные контакты установлены на 1. Сравнивая наш код Verilog с нашим дизайном ИС, вы можете увидеть сходство между ними и понять, почему было бы так сложно уловить их на некоторых этапах предварительного изготовления. Мы можем взглянуть на 3D-модель, чтобы увидеть, как она будет выглядеть на пластине.

Если бы не дополнительные заполнители (две большие пустые оранжевые и желтые области), которые были автоматически размещены и проложены с помощью QFlow на нижней конструкции HWT, они выглядели бы почти идентично, потому что два дополнительных вентиля, обсуждавшиеся ранее, не добавляют многого. к дизайну.

Вам может быть интересно, в каком сценарии это может быть вредоносным, отличный вопрос. Представьте себе эти четыре входных контакта, когда все они установлены на ВЫСОКИЙ уровень, ожидая результата ВЫСОКОГО выхода, который в основном позволяет ИС блокировать ЦП в неотладочном состоянии. После того, как наша атака изменит дизайн, она убедится, что когда все выводы установлены в ВЫСОКИЙ уровень, на выходе будет НИЗКИЙ уровень. Это переводит ЦП в состояние отладки, что позволит злоумышленникам или злоумышленникам узнать частную информацию и IP-адрес о вашей SoC (системе на кристалле), которая не предназначалась для общего доступа.

Заключение

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

Вот репозиторий, который содержит все HDL и файлы дизайна, которые я сделал на этапе исследования размещения и маршрутизации моего Аппаратного троянца IC.

Спасибо, что следите за нами! Надеюсь, вам понравилось так же, как и мне. Если у вас есть какие-либо вопросы по этой статье, пожалуйста, напишите мне в мой Instagram: @hackersclub или Twitter: @ringoware.

Хорошей охоты :)

Особая благодарность одному из рецензентов этой статьи, Мэттью Венну и его курсу От нуля до ASIC, который вдохновил меня заняться разработкой микросхем.

Ссылки