Защита микросхем от реверс-инжиниринга и несанкционированного проникновения


    “CVAX — когда вы забатите довольно воровать настоящий лучший”.
    Надпись, оставленная американскими инженерами для советских коллег в топологии микропроцессора.

    Реверс-инжиниринг микросхем — головная боль производителей с самых первых лет существования микроэлектроники. Вся советская электроника в какой-то момент была построена на нем, а сейчас с гораздо большим размахом тем же самым занимаются в Поднебесной, да и не только в ней. На самом деле, реверс-инжиниринг абсолютно легален в США, Евросоюзе и многих других местах, с целью (цитирую американский закон) “teaching, analyzing, or evaluating the concepts or techniques embodied in the mask work or circuitry”.

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

    Другое не менее (а то и более) важное направление защиты микросхем от реверс-инжиниринга — обеспечение безопасности информации, хранимой в памяти. Такой информацией может быть как прошивка ПЛИС (то есть опять-таки интеллектуальная собственность разработчика), так и, например, пин-код от банковской карты или ключ шифрования защищенной флэшки. Чем больше ценной информации мы доверяем окружающему миру, тем важнее защищать эту информацию на всех уровнях работы обрабатывающих ее систем, и хардварный уровень — не исключение.
    Перво-наперво: важная вещь, которую надо понимать. Говоря как о реверс-инжиниринге, так и о защите от копирования данных, надо понимать, что абсолютно устойчивых методов защиты не существует, и всё, что реально — сделать процесс настолько долгим и/или дорогим, чтобы он стал экономически нецелесообразным.

    Много лет назад труд реверс-инженера или микроэлектронного пирата был намного проще, чем сейчас. Посмотрите, например, на вот этот снимок (спасибо BarsMonster за наше счастливое детство и хорошие фотографии): при базовом понимании технологии восстановить из него электрическую схему — дело нескольких часов.

    image
    Рисунок 2. Снимок топологии операционного усилителя OPA134PA. Источник — zeptobars.com

    Вот здесь, кстати, есть пример реверс-инжиниринга микросхемы TL431, сделанного Кеном Ширриффом по фотографиям BarsMonster. А вот здесь — русский перевод. В блоге Кена много всего крутого, если вам интересна тема любительского реверс-инжининга.

    А вот здесь (осторожно, трафик!) — отчет от реверс-инжиниринге микросхемы Zilog Z80-CTC, сделанном в 1979 году, почти сразу после выхода микросхемы. Сейчас это уникальный исторический документ, а тогда это была информация, имевшая колоссальную коммерческую ценность и, полученная (судя по нескольким упоминаниям военных стандартов), вероятно, в процессе сертификации микросхемы для специальных применений.

    Но мы живем в 2019, а не в 1979 году, и сейчас отреверсить полную схему свежего микропроцессора Intel — дело многих месяцев или лет даже при хорошем уровне автоматизации процесса (не говоря уже о том, что даже отснять в приемлемом разрешении топологию с проектными нормами 14-10-7 нм — это очень сложная задача). Да что Intel? Сравните объем работы по реверс-инжинирингу или анализу усилителя с картинки выше и процессора “Байкал-Т1”, выполненного по очень популярному и относительно доступному 28 нм техпроцессу. Полный реверс-инжиниринг таких больших продуктов нужен крайне редко, чаще интересно посмотреть на какие-то конкретные и относительно небольшие блоки. Например, чтобы узнать, не нарушают ли они ваш патент, или сравнить ваше решение с продукцией конкурентов и попробовать понять, почему оно лучше или хуже. Или чтобы узнать, самостоятельно разработчики чипа реализовали ту или иную функциональность, или позаимствовали ваш IP-блок.

    image
    Рисунок 3. Снимок топологии процессора «Байкал-Т1». Источник — zeptobars.com

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

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

    ДЕЙСТВУЮЩИЕ ЛИЦА


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

    1. Разработчик IP-блока. Имеет всю информацию, все нужные файлы, методики измерения и т.д. и т.п.
    2. Разработчик микросхемы. В случае применения Soft IP имеет Verilog/VHDL код блока, в случае Hard IP может иметь как топологию, так и черный ящик. В случае наличия в блоке каких-то программируемых или софтовых частей имеет доступ и к ним тоже.
    3. Фабрика. Имеет доступ в GDSII файлам топологии, но не имеет доступа к программно-зависимой части микросхемы (например, к прошивке PROM).
    4. Корпусировочное и тестировочное производство. Имеет доступ к кристаллу, а также к методикам тестирования и картам прошивки однократно программируемой памяти. От них редко кто-то целенаправленно защищается, но они должны быть в списке, потому что против них не работает часть методов, пригодных для защиты от фабрики.
    5. Конкурент/взломщик. Имеет доступ только к готовому изделию и пользовательской документации.

    В самом простом случае разработчик микросхемы (2) хочет защититься от копирования конкурентом (5) или сделать чип с защищенной от несанкционированного чтения памятью. В чуть более сложном — разработчик IP (1) хочет удостовериться в соблюдении разработчиком микросхемы (2) лицензионного соглашения. Еще бывает, что разработчик микросхемы (2) не доверяет фабрике (3) и подозревает, что она может гнать контрафакт в ночную смену.

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

    ИНСТРУМЕНТЫ


    Какие инструменты для анализа микросхемы существуют? Первый уровень — это немного кислоты, чтобы сначала вскрыть корпус микросхемы, а потом снимать слои один за другим, и обычный оптический микроскоп с фотоаппаратом. Стоит недорого, работать с ними просто, и для анализа простых схем, сделанных по не самым новым технологиям, этого вполне достаточно.

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

    Следующий уровень, недоступный любителям, но присутствующий в специализированных лабораториях — это сканирующий электронный микроскоп (SEM). В нем вместо светового луча используется сфокусированный пучок электронов. Разрешение SEM может доходить до 1 нм и даже чуть ниже, что достаточно для анализа любых современных интегральных схем.
    FIB — это аналог SEM, только использующий вместо пучка электронов пучок более тяжелых ионов. Собственно, FIB — это Focused Ion Beam. Главное отличие FIB от SEM — c его помощью можно не только анализировать микросхему, но и модифицировать ее, например, делать разрезы (для того, чтобы посмотреть сечение микросхемы или удалить какой-то кусок) или напылять материал (для того, чтобы создать соединение там, где его нет). FIB широко используются разработчиками и производителями микросхем для работы с тестовыми образцами, потому что исправление ошибки с его помощью, хоть и занимает много времени, но все же гораздо быстрее и дешевле перезапуска опытной партии. Для реверс-инженера это еще и уникальный способ добраться до тех частей кристалла, которые по замыслу разработчика не должны быть доступны. И, проектируя защищенную от взлома микросхему, это тоже надо иметь в виду.


    Рисунок 4. Разрез микросхемы, сделанный при помощи FIB. Источник — SERESSA-2015 (осторожно, очень много трафика в pdf по ссылке).


    Рисунок 5. Сделанная с помощью FIB модификация микросхемы, меняющая несколько соединений.

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


    Рисунок 6. Внешний вид лазера для изучения влияния одиночных сбоев на микросхемы. Источник — SERESSA-2015.


    Рисунок 7. Пример полученной с помощью лазера карты чувствительности части микросхемы к одиночным сбоям и отказам. Источник — SERESSA-2015.

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

    КЕЙС 1: НЕНАДЕЖНАЯ ФАБРИКА


    Какие могут быть причины не доверять фабрике, на которой вы изготавливаете свои кристаллы? В идеальном мире вы, разумеется, не станете связываться с фабрикой, которой не доверяете, но иногда коммерческие соображения вынуждают идти на риск. Минимизировать его можно двумя основными способами:

    1. Так называемое split fabrication или, по-простому, производство на двух фабриках. Но не параллельно (как обычно делается для минимизации риска дефицита в случае непредвиденных задержек на производстве), а часть операций на одной фабрике и часть на другой. Это довольно неудобно для всех участников процесса (и уж точно не каждая фабрика на такое согласится), но это вынудит ненадежную фабрику по крайней мере реверсить оставшуюся часть дизайна чипа и самостоятельно делать недостающие маски. (что, в идеале, должно сделать так, чтобы игра не стоила свеч). Главный минус этого подхода состоит в том, что верхние слои чипа — это металлизация, которая реверс-инжинирится довольно просто. Split fabrication, впрочем, может быть действительно эффективно в сочетании с каким-то технологическим ноу-хау в металлах, которое ненадежная фабрика не в состоянии воспроизвести. Например, если вторая выбранная вами фабрика умеет делать в верхнем слое металлизации энергонезависимую память (MRAM, мемристоры или что-то еще подобное), без которой весь дизайн теряет смысл.
    2. Если никакого технологического ноу-хау у вас нет, то простой и надежный путь состоит в том, чтобы сделать чип бессмысленным без последующего программирования. Программируемые блоки можно сделать как самостоятельно с помощью конфигурационной памяти, так и в виде блока на основе встраиваемой ПЛИС (такие IP есть на рынке). Конфигурационная память как способ защиты позволяет вам быть уверенными, что фабрика не может просто взять и произвести ваш чип в обход вас. Но ведь конфигурационную память можно прочитать, не так ли? Да, но наличие конфигурационной памяти вынуждает ненадежную фабрику вместо простого пути увеличения объемов производства заниматься тем же реверс-инжинирингом, что и все другие злоумышленники.

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

    КЕЙС 2: ЗАЩИТА ПАМЯТИ


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

    Прошивка металлическими соединениями (Mask ROM). Обычно выглядит как наличие или отсутствие контакта между двумя металлическими линиями, чуть реже — как наличие или отсутствие транзистора между ними. Самая дубовая, применяется в базовых матричных кристаллах (БМК) — не только в древней оборонке, как вы могли бы подумать, но и во вполне современных решениях, например во вспомогательных чипах внутри процессоров Xeon. Кроме того, при помощи такой памяти делаются семейства микросхем (в основном микроконтроллеров), потому что перепрошивка памяти на производстве путем изменения одной маски дешевле, чем поголовная прошивка каждого произведенного кристалла на пластине или в корпусе. Читается Mask ROM очень легко при помощи микроскопа и аккуратного травления. Дома вполне можно справиться.


    Рисунок 8. Прошивка ROM металлическими межсоединениями на поддельном чипе FTDI FT232RL. Источник — zeptobars.com

    Здесь также надо заметить, что прошивать память можно не только слоем контактов между металлами, но также наличием и отсутствием металла (легко читается оптически), наличием или отсутствием легирования (легко читается оптически) или, например, пороговым напряжением транзистора, управляемым уровнем легирования (плохо читается оптически). Так что в принципе, у mask ROM не все потеряно, если вы действительно хотите спрятать ее содержимое.

    Память на пережигаемых перемычках (Fuse ROM). Допускает одну запись (в том числе запись пользователем на готовом устройстве) и неограниченное количество чтений, очень проста в изготовлении и программировании и поэтому популярна для разного рода конфигурационной памяти и прошивок.


    Рисунок 9. Два состояния Fuse ROM. Источник — semiengineering.com

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

    Флэш-память и другие варианты EPROM и EEPROM, основанные на транзисторах с плавающим затвором.


    Рисунок 10. Схема записи флэш-памяти. Источник — techreport.com

    Принцип функционирования этого типа памяти довольно прост: в толстом слое диэлектрика находится “плавающий” затвор. В этот затвор можно поместить электрический заряд при помощи туннелирования, подав на него высокое напряжение. А дальше, если высокое напряжение не подавать, заряд может храниться в “плавающем” затворе очень долго.
    А что с безопасностью? Хорошая новость состоит в том, что состояние EEPROM нельзя увидеть микроскопом. Плохая? Их сразу несколько.

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

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

    MRAM, хоть и относительно редкая, тем не менее, тоже заслуживает нашего внимания. Ее, как и флэш, невозможно считать оптически. Еще MRAM, разумеется, невозможно стереть ультрафиолетом, но вот сенсоры магнитного поля с достаточно высоким разрешением для того, чтобы стравить верхние металлы и считать память побитно, существуют. Хорошая новость? Потенциальный злоумышленник вряд ли их найдет быстро и недорого. В целом, MRAM — это хорошая альтернатива флэшу с точки зрения безопасности, но она пока что мало доступна и только-только пошла в серийное производство в доступных для fabless-компаний технологиях.

    Самой защищенной от реверс-инжиниринга памятью на сегодняшний день считается antifuse ROM. Как видно из названия, она представляет собой некий антипод пережигаемых перемычек, а именно имеет высокое сопротивление в незапрограммированном состоянии и низкое в запрограммированном. Как это достигается? При помощи пробоя подзатворного диэлектрика транзистора высоким напряжением. Область пробоя настолько мала, что ее не видно ни сверху в микроскоп, ни в разрезе на FIB, но она при этом хорошо и надежно обеспечивает изменение сопротивления на несколько порядков, что вполне достаточно для надежного чтения состояния памяти штатным образом. Такую ячейку памяти, тем не менее, можно прочитать, подключившись напрямую к затвору и истоку запоминающего транзистора. Непрошитая ячейка ведет себя как конденсатор, прошитая — как резистор.


    Рисунок 11. Сечение ячейки antifuse памяти. Показаны несколько областей возможного пробоя транзистора. Это может несколько усложнить схему чтения.

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

    It is possible to configure the nvSRAM to provide password protected access. In this configuration, instead of performing the normal power up recall sequence on power up, the part waits for the user to enter a 5-byte password followed by an End Password Entry soft sequence. The End Password Entry soft sequence is a specific seven-address read sequence. If you enter the correct password, the part completes the boot up sequence and is ready for the normal nvSRAM operations. If you enter the incorrect password three times or you do not enter the right password within a specified period of time, the part locks up or fills the SRAM memory with random data, as the application requirement may be. The part can be configured to additionally destroy the functionality and cause physical damage to the chip.

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

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

    Но на самом деле очень часто злоумышленнику может быть не нужно точное значение содержимого памяти, ему может вполне хватить уменьшения количества вариантов для перебора на несколько порядков. Например, если ячейка памяти потребляет во время чтения логической единицы X, а во время чтения логического нуля 100*X, то при чтении байта такой памяти мы получим разное потребление в зависимости от содержимого памяти:

    0 — 800*X
    1,2,4, …, 64, 128 — 701*X
    3, 6, 7, …, 160, 192 — 602*X
    ….
    255 — 8*X

    Итого, если мы не трогаем память, для подбора содержащегося в ней пароля нам надо 256 попыток. А если мы знаем, что потребление в режиме чтения — 701*X — то всего восемь. Удобно, не правда ли? Самый простой способ что-то сделать с этой проблемой — хранить данные в виде значения и его инверсии в соседней ячейке; тогда потребление любого объема памяти в режиме чтения не будет зависеть от хранимой информации. Это, правда, требует в два раза больше памяти, но нам ведь важна безопасность, правда?

    КЕЙС 3: БЕЗ ПАМЯТИ


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

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

    Итак, что делать, если конфигурационная память — не вариант для защиты, или если только ее недостаточно?

    Главный недостаток как оптического микроскопа, так и SEM — на них очень сложно различить типы легирования кремния. То есть, наличие легирования видно, а тип — нет. Поэтому при анализе топологии и экстракции схемы тип легирования восстанавливается из контекста и подразумеваемой логики работы схемы (n-канальные транзисторы подключены к земле, p-канальные к питанию, и т.д. и т.п.). Нарисовав топологию вашей микросхемы так, что она не будет совпадать с интуитивно наиболее вероятным вариантом, вы можете очень здорово попортить кровь реверс-инженеру. Особенно если использовать несколько разных схем, замаскированных под одну и ту же. При некоторой сноровке можно не только затруднить анализ вашей схемы, но и заставить произведенный (или хотя бы смоделированный, но веселее, если произведенный ) по восстановленной топологии девайс делать что-то определенное, от закорачивания земли с питанием до выдачи на все выходы матерных слов. Детерминированное поведение неправильно украденного дизайна, к слову, может быть полезно не только для того, чтобы спалить пиратам осциллограф, но и для того, чтобы, когда к вам потом придут разочарованные пользователи “ваших” чипов, вы могли наглядно продемонстрировать им, что они купили подделку.


    Рисунок 12. Разрез трех структур, неразличимых в микроскоп. Левая — pMOSFET, средняя — короткое замыкание, правая — обратно смещенный диод (разрыв).


    Рисунок 13. Топология трех цифровых библиотечных ячеек, неразличимых в микроскоп. Левая — инвертор, средняя — прямое соединение входа и выхода, правая — логическая единиц на выходе.

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

    Хотя нет, бывает. Хорошо построенная руками топология обычно неплохо читается. Отличный пример есть в уже упомянутом блоге Кена Ширриффа.


    Рисунок 14. Арифметико-логическое устройство (АЛУ) чипа Intel 8008. Показаны отдельные разряды.

    На топологии АЛУ Intel 8008 прекрасно видны восемь идентичных схем — по числу разрядов. Понимая, что это АЛУ, вы сможете без труда восстановить схему по топологии. Если часть элементов в ней будет фальшивой, это несколько усложнит ваш труд, но не более того. А все потому, что топология хорошо ложится в базовое представление об интерфейсах между составными частями. Для того, чтобы запутать злоумышленника настолько сильно, чтобы он бросил попытки реверс-инжиниринга, надо сделать топологию непредсказуемой и неповторяющейся. Самый простой способ — не делать никакие блоки вручную, а генерировать в помощью САПР весь нетлист чипа целиком. Автотрассировщики, несмотря на колоссальную экономию времени на создание топологии (по сравнению с ручным трудом) прекрасно справляются с задачей создания неинтуитивной расстановки элементов и местами совершенно безумных соединений. И чем больше дизайн, топология которого была синтезирована целиком, тем сложнее его реверс-инжинирить.

    Но это самый простой способ. Есть более интересные варианты. Например, использовать набор ячеек-хамелеонов как набор генераторов логических нулей и единиц для входов мультиплексора, реализовав при этом произвольную логическую функцию. Собственно, так устроены элементы ПЛИС, LUT (Look-Up Table).


    Рисунок 15. Реализация трехвходового LUT. Источник.

    Поставив в разные места схемы несколько таких вот LUT и подведя к входам «ячеек памяти» какие-нибудь сигналы, мы решим сразу несколько задач:

    1. Если наш маневр останется неразгаданным, то мы сможем задать то, как именно будет себя вести реверс-инжинированная схема. Варианты — любые, ограничены только вашей фантазией.
    2. Использование произвольных сигналов из других блоков в качестве «входных» для ячеек, генерирующих логические ноль и единицу, затруднит процесс визуального разделения дизайна на блоки.
    3. Даже если реверс-инженер поймет, что мы используем такие защищенные LUT, ему придется перебирать множество вариантов, чтобы восстановить функциональность схемы по топологии, так что даже относительно небольшое количество защищенных ячеек может сделать реверс-инжиниринг чрезмерно времязатратным. Мое любимое — собрать на таких LUT конечный автомат, управляющий переходами микросхемы из одного рабочего режима в другой.

    ТЕСТОВЫЕ СХЕМЫ


    Хорошие инженеры очень любят всесторонне тестировать свои чипы. И под “всесторонне” я имею в виду — примерно так, как это сделано в DC/DC конвертере TI на рисунке ниже. Десятки небольших контактных площадок, к которым можно подключиться еще до разрезки пластины на отдельные кристаллы, чтобы проверить все нужные параметры, состояние важных внутренних линий, принять решение о том, годный чип или нет, и при необходимости выяснить причину проблем.

    image
    Рисунок 16. Топология Texas Instruments TPS 62321. Источник — zeptobars.com

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

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

    Еще хорошие инженеры любят располагать на периферии кристалла тестовые схемы для следующих ревизий. Обычно это достаточно важные схемы, иначе зачем тратить время и силы на организацию их тестирования? “Важные схемы, составляющие вашу интеллектуальную собственность и критичные для функционирования чипа? Заботливо положенные отдельно от всего дизайна? Спасибо большое!” — скажет вам реверс-инженер за такой королевский подарок. Если вы не хотите, чтобы тестовые помогли злоумышленнику изучить и скопировать ваш дизайн — позаботьтесь о том, чтобы они не попали в кристаллы для серийного производства или уничтожались после тестирования на пластинах в процессе резки пластины на кристаллы.

    НЕМНОГО ПРАКТИКИ


    Для того, чтобы еще раз продемонстрировать, как это работает, пример вскрытия микроконтроллера PIC12C508A, описанный в диссертации Сергея Скоробогатова, защищенной в 2004 году в Кембридже. Перевод сокращенный и достаточно вольный:

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


    Рисунок 17. А вот и та самая злополучная линия. Действительно, находится посреди пустого места, никак не защищенная, можно резать.

    ЗАКЛЮЧЕНИЕ


    Разумеется, объять необъятное невозможно, ведь технологии и реверс-инжиниринга микросхем, и защиты от него не стоят на месте и постоянно совершенствуются. Тема защиты информации — одна из ключевых при проектировании для интернета вещей, поэтому разработчики уделяют ей много внимания, и такой легкой добычи, как пятнадцать или двадцать лет назад, реверс-инженерам ожидать не приходится. Тем не менее, всегда нужно помнить о том, что плохо защищенная система — это потенциальные убытки, огромные убытки или даже жизни людей, и защита от несанкционированного доступа и реверс-инжиниринга должна быть частью системы на всех уровнях функционирования, не исключая и «железный».
    Поддержать автора
    Поделиться публикацией

    Комментарии 126

      +3
      Вижу статью от amartology, ставлю плюсик) Но в следующий раз пиши примерное время на прочтение статьи, не ожидал тут залипнуть так долго)) Хорошо написано.
      А еще в середине статьи обещано показать, как делаются закладки на фабрике, но так и не показано. Ай-яй-яй.
        +7
        Погоди, но кейс 3 — это же закладки в топологии и есть. Но да, если ты ожидал рассказ про специально сделанные тонкие линии питания для запланированного устаревания, про незаметное внедрение антенн для приема сигнала со спутника или про добавление в топологию модулей, активируемых специальной входной последовательностью — то это не оно.

        Про время на чтение — я постараюсь как-то считать его и писать в начале, но в целом можешь каждый раз рассчитывать на лонгрид.
          +1
          Отдельно замечу, что оба описанных метода защиты от ненадёжной фабрики помогают от несанкционированного копирования, но не спасают от популярных в узких кругах “закладок”. Более того, чуть дальше я расскажу о том, как делать “закладки” в топологии самим.

          Я так понял, что о закладках будет рассказано со стороны фабрики, которая хочет добавить что-то в выпускаемый по чужому заказу чип. Кейс 3 же показывает опции для разработчика по защите от реверса.
            +18
            По поводу закладок со стороны фабрики, я придерживаюсь позиции, что их не существует потому что я их никогда не видел, потому что для внедрения дополнительной функциональности необходиммо полностью отреверсить большой кусок чипа и потом внести в него изменения так, чтобы они могли взаимодействовать с основным дизайном, но при этом не покрывались тестами. Еще в идеале надо использовать для закладки штатные запасные ячейки, разложенные разработчиком.
            И сделать все это (включая реверс-инжиниринг) надо не срывая сроков, то есть за считанные дни или максимум пару недель до изготовления фотошаблонов, что нереально, а большой срыв сроков — это тоже проблема, особенно в том случае, если заказчик может что-то подозревать.
            Сделать первую партию как надо, а потом подменить часть шаблонов тоже маловероятно, потому что новые шаблоны дороги, а фотографирование и сличение кристаллов разных партий — дешево и быстро.

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

            Поэтому, с моей точки зрения, закладки в микросхему реалистично может вносить только разработчик микросхемы или разработчик IP-блока, но никак не фабрика.
              +4
              Просто это достаточно популярная страшилка, о которой, на мой взгляд, полезно рассказать поподробнее. В следующей статье?)
                +11
                Если начать развеивать теории заговора, то можно дойти до постройки спутника для проверки того, были ли американцы на Луне.
                Фактуры по теме нет и не предвидится, и в итоге все сведется к комментарию выше, наполненному водой для объема, а также к разговору о том, что существование закладок можно подтвердить, показав один пример, а их несуществование надо строго доказать, что сделать невозможно.

                Поэтому я пожалуй, о чем-то другом напишу в следующий раз. Но идеи интересных тем принимаются, а то у меня сейчас в черновиках только пара вещей на неопределенно далекое будущее.
                0
                Надо начать с того что самой фабрике вообще незачем встраивать что-то в кристаллы, у них и так забот своих хватает. Тут надо рассматривать вопрос по другому — встроить закладку ХОЧЕТ заказчик закладки, а у него может быть дополнительная информация о чипе который собираются производить на фабрике. Кроме того, закладка может быть уже готовая под конкретный внешний интерфейс и вообще не подключена к внешним выводам микросхемы.
                Да и ещё такой весьма интересный вопрос, не так давно производители в целях борьбы с подделками собирались встраивать в каждый корпус RFID-чип с серийным номером… КАК? Опять же это вопрос касательно антенны… Для СВЧ вроде 70ГГц антенна может быть вполне расположена в пределах чипа. Даже четвертьволновой диполь уместится на 0.5мм линейного размера где-нибудь с краешка чипа, даже за контактными площадками.
                  +11
                  0.5мм линейного размера
                  Полмиллиметра — это не «где-нибудь с краешка чипа», а «обоже, что это за огромная дурища мозолит мне глаза на фото, мы такого точно не проектировали».

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

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

                  Да и ещё такой весьма интересный вопрос, не так давно производители в целях борьбы с подделками собирались встраивать в каждый корпус RFID-чип с серийным номером… КАК?
                  Если метка контактная или почти контактная — то почему бы и нет, в большой корпус микропроцессора или, скажем, DC/DC гибридного модуля такое положить вполне реально и даже может быть экономически оправдано.
                    0
                    Нет, речь шла про бесконтактную метку. В чип, в идеале в каждый чип крупнее SOIC-8.
                      +3
                      Насколько я понимаю физику, дальность должна быть как-то пропорциональна размеру антенны (потому что метка должна откликаться на сигнал ридера). Поэтому, если мы говорим о дальностях в несколько сантиметров, то существуют метки размером 3х3 мм, которые теоретически можно разместить внутри корпуса. Правда, как при этом обеспечить электромагнитную совместимость — это отдельный интересный вопрос.
                      Также у меня вызывает вопросы экономическая составляющая этой идеи, особенно для чипов, которые сами по себе стоят единицы центов.
                        0
                        Не должна. Вон, спутниковая связь — непосредственно антенна там сантиметры(отражатель не антенна!), а пробивает десятки тысяч километров.
                        Размер антенны, эффективный размер, пропорционален длине волны ею излучаемой/принимаемой. Для 20...70ГГц это миллиметры. Причем, 1/8 и даже 1/16 длины волны остаётся всё ещё приличной антенной для NFC.
                        Чипы стоимость которых в несколько центов никто не захочет подделывать — это слишком убыточно.
                        А что там с совместимостью? Метка используется для проверки оригинальности чипа разве что максимум — перед монтажом. А в работе, активные поля активирующие метку скорей всего будут влиять и на работу чипа и являются неприемлемыми в принципе.
                        Метка может быть даже магнитной — как штрих-код только в виде неоднородностей магнитного поля. Но тогда весело будет, ведь эту метку можно обнулить и не так уж сложно…
                          0
                          Для 20...70ГГц
                          А сколько там у нас граничная частота транзисторов то в защищаемом чипе?:)
                            +1
                            Если мы говорим о совсем дешевых техпроцессах (350-180 нм), то 50-70 ГГц, если о более продвинутых, то пара сотен.
                              0
                              Ого!
                              Спасибо
                              Когда то читал, что на пластине с процессорами разбрасывают по площади мультивибраторы для быстрой отбраковке по частоте, но подзабыл порядок.
                              ps В детстве задержку инвертора на К155-ой знал каждый кто умел:), а сейчас «помигать диодом на 32-битном МК» — память обычно заканчивается быстрее чем такты:)
                                +1
                                Не мультивибраторы, а кольцевые генераторы, из сотен элементов обычно.

                                image
                                  0
                                  Ох, как в анекдоте который я тоже забыл :)
                                  Не то, так не это :)
                              0
                              А причем тут вообще транзисторы чипа? Активным элементом для приемника/передатчика на такой частоте может быть диод ганна.
                              В современных процессорах транзисторы имеют такой же порядок скорости переключения, чтобы обеспечить надёжную работу логики на гигагерцовых частотах.
                              +1
                              спутниковая связь — непосредственно антенна там сантиметры(отражатель не антенна!), а пробивает десятки тысяч километров.

                              Про десятки тысяч километров вы малость загнули. :)
                              До спутников Iridium всего навсего около 800 км.
                                +1
                                Геостационарные спутники, они далекооо… гораздо дальше 800 километров. Размер антенны не имеет отношения к дальности связи.
                                колбочки и палочки в нашем глазу — это те же антенны для излучения с длинной волны 400...800нм, а поди ж ты — принимаем излучение с расстояний в тысячи световых лет!
                          0
                          То есть, заказчик закладки отреверсил дизайн еще до того, как файлы с топологией попали на фабрику? Я с очень большим трудом представляю себе такой сценарий.

                          Как мне рассказывали, перед производством топология проходит валидацию: электромагнатная совместимость разных частей, потребление и прочие физические неприятности. Обычно это делают сторонние фирмы с мощными компьютерами и дорогими программами. Может утечка возможна на этом этапе?
                            +4
                            Фабрику интересует только соответствие топологии нормам проектирования для изготовления фотошаблонов.
                            Все остальное — забота разработчика, и в нормальной ситуации вся валидация производится самостоятельно, а не сторонними фирмами.
                            Но если отдать произвольную часть разработки микросхемы (в том числе верификацию) на аутсорс, то да, можно ожидать, что на этом этапе принципиально возможна утечка информации.
                              0
                              Но если допустим заказчику закладки заранее известно что чип будет обладать SPI-интерфейсом который надо будет перехватить, саму закладку можно спроектировать заранее и остаётся её только интегрировать в чип хоть даже на свободное место и протянуть трассы к интересуемым линиям. Шансы удачи в таких случаях достаточно высоки.
                              Есть ещё другой вариант — когда чип изготавливается по лицензии другой фирмы, и этому чипу уже с десяток лет просто нормы меняются и требуется разработка нового шаблона…
                                +1
                                хоть даже на свободное место и протянуть трассы к интересуемым линиям

                                1) Расположенный на свободном месте левый блок офигеть какой заметный, даже при простейшей визуальной инспекции.
                                2) «Заказчик закладки» должен быть настолько влиятелен, чтобы фабрика ради него рисковала репутацией. Вы много таких знаете?
                                3) Если у фабрики нет репутации, которой не хочется рисковать, то в тексте статьи есть кейс методов работы с ненадежной фабрикой.
                        • НЛО прилетело и опубликовало эту надпись здесь
                            0
                            Криптография-с. Решение подделать метку так чтобы не оказался дубликат будет находится в области криптографии.
                            Скопировать метку может и можно будет, но легко это сделать получится только из уже существующей, а значит на рынке появятся миллионы клонов одной и той же микросхемы, а в базе будет уже отметка где и кому продан исходный чип. Т.е. кроме всего прочего нужно будет ещё и следить чтобы не засветится с покупкой чипа с которого снимать копию. И в конце концов, можно делать клоны и без чипа вовсе, только на серьёзные фабрики не продашь, разве что только в розницу для бытовухи или собственных нужд но это ведь и уровень дохода совершенно не тот.
                            Вот как пример — китайские клоны PlasmaPen… внутри стоят чипы ВООБЩЕ без маркировки.
                            +1
                            Да и ещё такой весьма интересный вопрос, не так давно производители в целях борьбы с подделками собирались встраивать в каждый корпус RFID-чип с серийным номером… КАК?

                            Скорее всего не в каждый корпус, а в каждую упаковку.
                            Подозреваю, что это журналисты «раздули» до чипа :)
                        0
                        Какое усиление будет у такой спутниковый антенны? Какой Кш будет у аналогового тракта, который будет обрабатывать такой сигнал?
                          0
                          Про время на чтение — я постараюсь как-то считать его и писать в начале

                          Было бы замечательно если бы эта функция была у хабра из коробки.
                            0
                            Мне кажется — Господа немного за… сь ;)
                          +4
                          Да нормальные у него статьи, можно даже побольше)
                          Хотя я-то читаю только в дороге, а она у меня очень длинная, так что я практически ни на какие объёмы не жалуюсь. Мне даже ГПиМРМ показался не очень большим (какая-то неделя чтения), хотя там ведь реально объём с три «обычных» книги.
                            +1
                            Это значит вам неповезло, что hpmor вы читали, когда уже весь текст был готов)) Читать по ходу публикаций было очень увлекательно, потому что Юдковский оставлял всякие задачки читателю :)
                            Скрытый текст
                            В финальной сцене, к слову, мое решение было схоже с авторским, разве что я предполагал отрезание рук и переламывание палочек, а не отсечение голов))
                              0

                              Тоже хотел обойтись малой кровью, но товарищи быстро напомнили мне про возможность задним числом ВНЕЗАПНО кастануть что-нибудь силой мысли.

                          +7
                          Очень интересная статья, спасибо )

                          FIB конечно манит, но ценники от 0.6М$ (чистый FIB) до 1.8М$ (комбинированный FIB-SEM с полевой эмиссией)… Впрочем, в капиталистическом мире покупать такое никогда не приходится, достаточно арендовать на время в сервисной компании… А можно чуть больше информации про то, как FIB-ом диэлектрики наносят?

                          По Z80 — говорят в оригинальном дизайне была ловушка от реверс-инженеринга, приводившая к неработоспособным чипам при попытке топологию скопировать визуально… Не находилась в документе или еще где-то?
                            +6
                            По Z80 — говорят в оригинальном дизайне была ловушка от реверс-инженеринга, приводившая к неработоспособным чипам при попытке топологию скопировать визуально… Не находилась в документе или еще где-то?
                            В этом чипе ничего такого нет, но скорее всего там примерно то же самое, что описано в этой статье.

                            А можно чуть больше информации про то, как FIB-ом диэлектрики наносят?
                            Можно. По ссылке рассказ в принципе о «nanofabrication» с помощью FIB, а еще можно погуглить по запросу «FIB local deposition», там в научных статьях много найдется, если у тебя есть к ним доступ (или к сайхабу).
                              0
                              Можно сделать довольно хороший FIB из большого (не настольного, типа фенома) SEM с высокой энергией пучка. Стоить это будет для RU непонятно сколько, для штатов/европы <20k$. Посмотри на проект NPGS еще, если интересна эта переделка.
                              +2
                              BarsMonster, для одной московской конторы прорабатывал варианты с FIB.
                              Нужна будет инфа — пиши-звони;)

                              У FIB есть система GIS (gas-injection-system), куда можно любой газ подать, разложить ионным пучком и осадить SiO2, Pt, Cr и т.д.
                              +2
                              Прочитал с удовольствием! Спасибо за статью!
                                +13
                                Спасибо. Интересно написано даже для человека далёкого от темы.
                                  +5
                                  Мораль: используя в своем проекте EEPROM, накрывайте ее сверху металлом. Причем желательно не только сплошным щитом от излучения, но и какими-то значимыми линиями, чтобы щит нельзя было аккуратно стравить. Впрочем, тут тоже скрывается засада, потому что

                                  Эээ… Это типа «продолжение следует»? :) Или просто потерялся фрагмент текста? Очень уж хочется узнать про «засаду».
                                    +7
                                    Ойой, и правда потерялся небольшой кусок. Пара минут, и он появится.

                                    UPD
                                    jok40 готово, спасибо за наблюдательность. То ли случайно удалил при копировании, то ли случайно не перенес, а глаз а время написания настолько замылился, что при вычитке упустил это(
                                    +1
                                    пример вскрытия микроконтроллера PIC12C508A

                                    Тут стоить заметить, что вскрывать PICи и ATмеги нет никакой практической нужды, в силу чисто логических ошибок дизайна, позволяющих с помощью не хитрых танцев с бубнами вокруг питания их спокойненько читать… Ошибки признавались, дыры закрывались, но так, что всякий раз оставалось что-то новенькое.
                                    + не знаю как у Пик, у Атмелов есть заводской бэкдор, и есть он не только в микроконтроллерах, ах-ах, и не только бэкдор там тоже есть!!!
                                    Как-то не похоже это на заботу о защите интеллектуальной собственности потребителей, когда разные производители, конкуренты, дружно наступают на одни и те-же грабли.
                                      +3
                                      есть заводской бэкдор
                                      Вы про тестовый JTAG? Так он у всех есть, вопрос в том, что его надо отключать и желательно отключать как следует. Но да, вы правы, и PIC, и Atmel — не образцы ответственного отношения к данным, у Atmel например, военные защищенные ПЛИС вскрывались какое-то время назад.
                                        +1
                                        Неее, JTAG это JTAG, тут пользователь скорее сам себе злобный буратино, хотя кто знает что он ещё там скрывает, я не знаю, я вообще про другое…
                                        … мне кажется странным, что вместо того, что-бы тупо промолчать на команду чтения или вернуть какое-нибудь ругательство, некоторые камушки строят из себя генератор случайных чисел, который при внимательном рассмотрении не такой уж и случайный, ну это так, догадочка, которая вполне могла-бы быть подтверждена, если-бы всё не было ещё проще
                                        0
                                        хитрых танцев с бубнами вокруг питания

                                        А что за танцы с бубном?
                                          +3
                                          Ну, чисто как пример, дела давно минувших дней, ЕМНИП у пика можно было послать команду на стирание, и рубануть питание, в результате фьюзы сбрасывались, а код оставался цел…
                                          … после того как это стало достоянием общественности, они изменили логику, что-бы фьюзы стирались в конце, мол спите спокойно, НО ;-)
                                          Это не конец истории, как вы наверное догадываетесь.
                                        0
                                        In my view Baikal-T1 is a large step forward for Russian civilian microelectronics. It uses modern commercial core, it is designed using industry-standard flow and manufactured using high-volume commercial technologies. Finally it uses open source compiler and OS — which makes it much easier to support and work with comparing to infamous Elbrus. Using non-standard solutions in situations where they could have been avoided was the curse of Russian microelectronics, until Baikal.

                                        хоть кто-то похвалил наш Байкал!
                                          +4
                                          Цитата про «in my view» отсюда
                                          Михаил Сваричевский, хоть и умеет писать по-английски (хотя предложение, начинающееся с «In my view», c головой выдает человека, родной язык которого — русский), вообще ни разу не «хоть кто-то» в деле популяризации российской микроэлектроники. Но если вам интересно, то он не единственный, кто хвалит, и не единственный из тех, кто умеет писать по-английски)
                                            +1
                                            In my view

                                            А как сказать, чтобы не выдавало?
                                              +7
                                              Не начинать с вводного предложения, а сказать «I think that» или хотя бы «In my opinion».
                                                +1
                                                I think — это из базового школьного английского. Уже на уровне Intermediate преподаватель запрещал нам начинать фразу с «I think». In my view — это вполне приличное допустимое начало.
                                                  +2
                                                  Разумеется, допустимое и грамматически корректное, с этим я не и не спорю. Но native speakers так не говорят. А если вы non-native, то лучше пренебречь запретом учителя и получить на выходе гладкий текст, чем написать что-то, обо что сразу запинаешься при чтении.
                                                  Учитель запрещал вам говорить «I think» не потому, что эта фраза плоха, а потому, что она самая простая, а ему было важно научить вас более сложным конструкциям.
                                                    0
                                                    Но native speakers так не говорят
                                                    Ну вообще-то словарь английского языка фиксирует, как говорят именно нейтивы. Для этого он и существует. А если вы используете силу гугла, то вы легко убедитесь, что учебники не врут.
                                                      0
                                                      Речь мастера Йоды полностью грамматически корректна, но нэйтивы обычно так не говорят.
                                                      У меня довольно большой опыт общения на английском и чтения текстов, написанных по-английски людьми разных национальностей. Я ни в коем случае не претендую на истину в последней инстанции (мой собственный английский тоже очень далек от идеала), но национальность автора по цитате я угадал верно.
                                                        0
                                                        Скорее всего вы просто не встречали раньше этот речевой оборот, и поэтому вам просто показалось, что это калька с русского. Если уж даже королева Елизавета так говорит, то не знаю, цитаты каких ещё нейтивов вас устроят)
                                                          +1
                                                          «In my view» site:bloomberg.com
                                                          About 1.400 results
                                                          «I believe that» site:bloomberg.com
                                                          About 2.150 results
                                                          «In my opinion» site:bloomberg.com
                                                          About 4.360 results
                                                          «I think that» site:bloomberg.com
                                                          About 7.980 results
                                                            –2
                                                            Да, именно так. Поэтому, как я уже отмечал выше, «I think» относится к basic english, а «in my view» — к intermediate.
                                              0

                                              Чёрт. Это мне напомнило положительные отзывы на отечественные фильмы на IMDB. Ну, когда один человек — один отзыв :)

                                            +8
                                            Мой наивный тролль предлагает размещать на месте «тестовых микросхем» неработающие версии предыдущих тестов. Нет ничего более увлекательного, чем программа, покрытая тестами, которые проверяют не то и не так.
                                              0

                                              А потом отреверсенный дизайн доработают и запустят в производство. И это будет еще больший троллинг.

                                              +2

                                              Хорошая статья, но хотелось бы почитать аналогичную статью с более близкой к людям тематикой:
                                              Как защититься от реверс-инжиниринга печатной платы и схемы устройства? Есть простые способы?

                                                +4
                                                На эту тему я, к сожалению, ничего интересного рассказать не могу, потому что в вопросе проектирования микросхем я являюсь специалистом, а печатных плат — нет. Если кто-то из специалистов по проектированию печатных плат напишет такую статью, я сам с огромным удовольствием ее прочитаю.

                                                Их общих соображений мне кажется, что защитить печатную плату должно быть сложнее, потому что на ней сильно меньше компонентов, чем в микросхеме, а размеры элементов гораздо больше, что упрощает и ускоряет работу.
                                                Вероятно, как-то помочь может маскировка используемых микросхем — сошлифовка заводской маркировки, заливка компаундом или использование распайки кристаллов на плату, а не чипов в корпусах.
                                                Вероятно, как-то помочь может превращение платы в программно-аппаратную систему и защита софтовой части, чтобы электрическая схема без ПО или прошивки была бесполезна для взломщика.
                                                  +1

                                                  Вот вот, это интересно.


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

                                                    +2
                                                    Прекрасная и одновременно печальная история. Но, повторюсь, чем тут помочь помимо сказанного в предыдущем комментарии, даже не знаю, я тут не специалист.
                                                    Удачи в борьбе с пиратами!
                                                      0

                                                      А патенты, кстати, не работают у вас? Мы думали запатентовать принцип работы платы, но не смогли оценить затраты на это.
                                                      Та фирма, что сделала подделку, нам известна, и они почти официально ее продают. Вышли на них через тех же, кто приносил в ремонт.

                                                        +1
                                                        Отследить копирование дизайна микросхемы очень сложно и обычно дорого, а патент — это раскрытие ноу-хау, поэтому чаще делают реверс-инжиниринг максимально сложным, чем патентуют решения, чтобы потом не реверсить изделия конкурентов. В случае с платой патентование может иметь смысл, особенно если патент только российский. Оценку затрат сходу не дам, я по этому поводу в последнее время только со Сколково дело имел, там дёшево, но я не знаю, как они работают с нерезидентами.
                                                          +1
                                                          Ну, почему-же, правильно оформленные патенты, оформляются для решения вполне конкретных юридических задач с учётом особенностей правоприменения ;-) А не как не для фиксации приоритета на какое-либо ноу-хау, что-бы там не напели вам патентные поверенные, раскрывать в патенте что-либо значимое вовсе не обязательно и даже вредно!
                                                          Месть — блюдо, которое, подают холодным. Хотя дело конечно же не в мести, а в защите своих интеллектуаль инвестиций, ничего личного просто бизнес, и с контрактным производителем контрафакта, и с наглым конкурентом, можно полюбовно договориться ради общего блага. Говоря о защите кода\схемы\топологии и прочих частностей, вы упускаете из виду реальные угрозы и задачи бизнеса, которые частным путём, техническим-ли или юридическим, не решаемые в принципе, токмо комплексно!

                                                          Я вам историю расскажу, весёлую, у владельца китайских контрактников полного цикла, были и другие производства, и очень ему наш продукт понравился, так понравился что он решил сделать свой, на основе моей схемы и прошивки, разбираться с которой по началу никто и не стал, ведь всё так прекрасно работало…
                                                          … когда пошли возвраты и предъявы, произвести продукции они успели впрок, и мои друзья были очень недовольны демпингом, но кроме ругани поделать ничего не могли, опыт прежних разборок с китайцами у них был негативным, а тут вдруг продажи конкурента приостанавливаются, но не на долго через пару месяцев опять, но предлагали уже существенно меньшие объёмы, там то-же была моя прошивка, но уже такая-же как на прилавках в Европе и США, вся разница была в EEPROM читать который штатными методами было конечно-же нельзя, там был адрес электронной почты, по которому так никто и не написал, но… Спустя ещё некоторое время мы сами предложили выкупить всё что произведено и прошито по цене чуть ниже себестоимости, китайцы начали торговаться, мы отказались платить за то, уже что было заказано сказав что уходим к другим контрактникам, а им не судьба продать то, что они произвели не перепаяв контроллеры. И они не поверили!!! Пока сами не убедились, что это так, и наличие моего адреса в EEPROM даже не проверяется, причина какая-то другая, но код дико обфусцирован (виртуалочка), и при выкусывании возможности работы с фьюзами и EEPROMом не работает. Только тут, до них дошло, что собственная разработка прошивки стоила бы им значительно меньше денег и времени, чем они уже потратили, и продать русским всё по дешевке, выгоднее чем пытаться спасти проект ибо не факт что вообще получится. В общем, когда дело касается денег, можно и лицо потерять, хотя на самом деле нет, но наших засранцев вопрос лица не сильно волновал, и они таки согласились.

                                                          А дальше в ход пошел жестокий маркетинг, у нас были хорошие каналы продаж и возможность давить народившихся конкурентов ценой, рынок насыщался и мои товарищи единолично съели большую его часть, оставив китайцам лишь гнилой хвост, где их добили официалы…

                                                          ps. вот такая история, а при аффилированностьи разработки, производства, продаж и финансов, возможны истории ещё более фантастические, когда технически продукт вообще не нуждается в защите, и произвести его могут многие, но не будут этого делать, ибо произвести мало, нужно ещё продать, что бы за вычетом всех расходов, тебе чего нибудь осталось…
                                                            +1
                                                            Крутая история. Но я не согласен с тем, что «говоря о защите кода\схемы\топологии и прочих частностей, вы упускаете из виду реальные угрозы и задачи бизнеса». Я не упускаю, просто у статьи есть конкретная и довольно ограниченная тема — защита микросхем. Но я упомянул, что это не защита ради защиты, а защита для того, чтобы сделать процесс настолько долгим и/или дорогим, чтобы он стал экономически нецелесообразным.
                                                            Вы полностью правы, у задачи бизнеса «обезопасить себя от конкурентов и не потерять прибыль» есть огромное множество решений, технических, юридических и экономических, и всегда важно понимать, какое их сочетание даст максимальный экономический эффект.
                                                    +1
                                                    Добавлю ещё пару рецептов: выстраданный и теоретический.
                                                    1) транзит некоторых выводов (JTAG в первую очередь) сквозь небольшую CPLD-шку через внутренние шарики BGA и внутренние слои печатной платы.
                                                    2) известны технологии по размещению бескорпусных чипов в толще печатных плат (между платой и препрегом), встречал инфо, что так сделаны некоторые интегрированные DC-DC от TI.
                                                  0
                                                  Статья супер. Понимаю, что вопрос не совсем по теме, но всё же где-то рядом: можно пару слов про защиту от атак по сторонним каналам? В свете примеров взлома rsa по акустическим каналам и потребляемой мощности интересно, что можно противопоставить на железном уровне, с софтом и hdl в этом случае более-менее понятно.
                                                    +5
                                                    По поводу потребляемой мощности я немного упомянул в разрезе памяти; с мощностью в процессе обработки информации можно сделать что-то подобное, добавив служебные схемы, которые будут нормализовать потребляемую мощность в разных режимах.
                                                    Еще, например, видел решения, которые выравнивают время обработки сравнения вводимого пользователем ключа с эталоном, чтобы не допустить взлома через пропорциональность времени обработки номеру несовпадающего бита в ключе.
                                                    А в целом анализ потребляемой мощности — это очень перспективная для взлома и очень сложная для защиты тема, ее не описать подробно в обзорной статье, там можно копать вглубь сколько угодно.
                                                      0
                                                      Понял, благодарю.
                                                    +4
                                                    Хороший перевод и статья интересная.
                                                    Из ремарок — IP-блок, и в целом IP — это же подразумевается интеллектуальная собственность (intellectual property), а сокращение не расшифровано в начале текста. Первый раз был даже небольшой ступор при чтении фразы про раскрытие IP.
                                                      +2
                                                      Спасибо за ремарку, я расшифровал сокращение в самом начале и перенес ближе к началу абзац со ссылкой на статью про IP в чипостроении.
                                                      +3

                                                      Спасибо за отличную статью!


                                                      Восстановление перемычек, чтение памяти и меткие правки оной — дело, безусловно, понятное и полезное. Но вот реверс чисто цифровых схем и, в частности процессоров, как мне кажется, уже не работает и работать не может в силу безумной сложности дизайна. Восстановление схемы не приблизит к пониманию того, как оно работает и уж точно не даст возможности что-то там нетривиально исправить. Пример выше с Байкалом — а это не самый производительный процессор на сегодня — но уже с ним невозможно ничего сделать. Там даже при наличии документации и полного доступа к исходникам сложно понять, как, почему и зачем он работает. Потому что это процессор с внеочередным исполнением, с точными (ну, почти:) исключениями, внятным предсказанием ветвлений, не самым глупым модулем выборки-хранения и ещё кучей свистелок и перделок, которые никому, кроме разработчиков, не интересны. Точное знание о предсказателе ветвлений реверсерам принесёт только вред — там немало сил потрачено на правильную работу с неспекулятивными и некешированными режимами, и оно специфично для мипс (delay slots!) Сами же алгоритмы многократно описаны в книгах и статьях, и это вопрос разумного применения уже известного, а не сверхсекретных нанотехнологий и инноваций.


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

                                                        +8
                                                        ценность реверса, кмк, сильно преувеличена
                                                        Так не процессорами едиными. В аналоговой схемотехнике удачные схемотехнические решения стоят огромных денег и при этом могут состоять из буквально десятков транзисторов.
                                                        Опять же, вскрытием и частичным реверсом, например, можно проверить тип предсказателя ветвлений в процессоре конкурентов, а то вдруг они давно уже нейросетями все делают, а вы до сих пор лаптем щи хлебаете. Или наоборот, пока вы делаете что-то очень замороченное, конкуренты вернулись к более простому решению, заставив его работать более эффективно.
                                                        Так что с одной стороны, я склонен согласиться с тем, что ценность реверс-инжиниринга часто преувеличивают (про опасность закладок даже начинать не хочется), но свое место под солнцем у него было, есть и будет.
                                                          +3
                                                          Аналоговое — тысячу раз да. Вот тут было одно или два видео с аналоговым дизайном на >70ГГц:
                                                          https://www.youtube.com/user/TheSignalPathBlog

                                                          Причем, автор оговорился о том, что рассаказать может не всё.

                                                          Ну а с процессорами — да, интересно, конечно, что там у конкурентов. Но если у вас на руках готовый чип — вы уже опоздали минимум на три года.
                                                          Да и такое часто в Microprocessor Report открытым текстом пишут, за существенно меньшие деньги. А еще бывает, что у конкурентов все примитивнее и даже тупо хуже, но с лучшей техподдержкой, например :)
                                                            +3
                                                            еще бывает, что у конкурентов все примитивнее и даже тупо хуже, но с лучшей техподдержкой, например
                                                            Это тоже бывает полезно понять, хотя лучше бы это понять подешевле, чем с помощью реверса)

                                                            Но если у вас на руках готовый чип — вы уже опоздали минимум на три года.
                                                            Для промышленной или, например, космической электроники это может быть вполне приемлемо. Существует огромное количество микросхем с жизненным циклом в 15-20 лет. И на них еще санкции бывают.
                                                        +1

                                                        Снимок процессора Байкал выглядит как фотка продбазы с квадрокоптера. Большой склад и одинокие сараи по краям...


                                                        Ну незнаю… Воровать конечно не хорошо, но имхо без этого монополисты задирали бы цены до небес.

                                                          +2
                                                          В основном я так понимаю это безопасность через неясность — для защиты коммерческих секретов обфускация может помогать, но мне интересно, можно ли как-то защитить данные на чипе с открытой схемой.
                                                          Ну вот персональный девайс для генерации и хранения ЭЦП, вот купил я его, может даже посмотрел в микроскоп (в теории, я не умею) — проверил что схема реализована, та, что в публичном доступе (только блок памяти невиден), как-то ему скомандовал — сгенери мне случайный ключ, он сгенерил и как-то сохранил, теперь я могу командовать — вот тебе данные, подпиши или зашифруй.
                                                          И главное что мне нужно знать, что никто не сможет прочитать мой закрытый ключ без вскрытия, а при вскрытии он сломается.
                                                          Есть ли хоть какое-то приближение решения этой задачи?
                                                            +3
                                                            Так оно так и есть. Основные сертифицированные популярные алгоритмы шифрования, условно говоря, открыты (AES-256 и другие блочные шифры), вопрос в сохранности ключей, а не в том, что есть какие-то секреты в реализации шифрования и дешифрования. Если ваш девайс с ключом недоступен взломщику и ломается при попытке вскрытия, то дальше криптостойкость шифра известна.
                                                              0
                                                              Brak0del мой вопрос был, а как в принципе можно защитить ключ учитывая описанные методики? Запаять в металл в теории можно, от каких-то способов это защитит, но останется всякое послойное срезание.
                                                                0
                                                                Записать ключ в antifuse память например. Без подачи питания на чип ее практически невозможно прочитать, а с поданным питанием при попытке взлома память самоуничтожится.
                                                                  +1
                                                                  antifuse тоже неплохо читаются, если стравить до одной обкладки емкости(ячейки) (само место прожига видеть не обязательно) и получить доступ к ней, то измерив импеданс однозначно можно сказать какое ячейка хранит в себе состояние. и при этом питание подавать не нужно. Прожжённая ячейка будет иметь активную часть в импедансе.(на сколько я знаю это возможно сделать сканирующим зондом туннельным микроскопом) если же получить физический доступ к 2м контактам — то дело ещё упрощается. (такая память имеет регулярную стуктуру и всегда есть возможность присоединиться к 2-3 линиям металлов.) да это сложно, но возможно.
                                                                  В своё время я делал такие ячейки и такую память — она ничем не лучше с точки зрения безопасности.
                                                                    +2
                                                                    Ого, круто. Мне никогда не приходилось работать с antifuse, и я был вынужден поверить рекламным обещаниям производителей. Получается, что зря. В их защиту могу сказать, что описанный метод с физическим доступом к каждой ячейке все еще существенно сложнее и дороже, чем для других вариантов памяти (хотя с чтением остаточного заряда во флэше вполне сравним).
                                                                      0
                                                                      Может попробовать физически неклонируемые функции?

                                                                      ПыСы: Сорри, поторопился откомменить, недочитав.
                                                                      Прощу прощения у OLEGator_by и worldmind :-)

                                                                    0
                                                                    worldmind, в случае крипты обычно делается защита периметра и в теории, если вы добрались до чипа (хотя бы вскрыли корпус), то там уже ничего не должно было остаться, т.е. ключ уничтожен и защищать больше нечего. Уничтожение ключа это тонкость, но в стандартах тоже упоминается, обычно процедура состоит в нескольких перезаписях ячеек памяти ключа различными значениями, чтобы не только стереть ключ, но и всякие наводки, по которым косвенно можно установить биты ключа.
                                                                      0
                                                                      Вот интресно как эту защиту сделать так, чтобы она хорошо работала даже приотсутствии питания?
                                                                        +1
                                                                        Батарейка внутри корпуса, как в BIOS компьютера. Вы вскрываете корпус — память стирается с питанием от батарейки.
                                                                          0
                                                                          Т.е. надо как-то ускорить разряд батареи? Нагревание/охлаждение?
                                                                            0
                                                                            Разрядить батарейку можно на морозе, если вы знаете, что она есть. Капсулу с кислотой нельзя разрядить на морозе, но можно аккуратно слить кислоту через тонкое отверстие, если вы знаете, что кислота там есть.
                                                                            Абсолютной защиты не существует. Существует время принятия мер при компрометации или потере ключа, которое должно быть меньше, чем время извлечения информации из ключа.
                                                                              0
                                                                              Абсолютной защиты не существует.

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

                                                                              в принципе да, хотя тут много частных «но».
                                                                                +1
                                                                                понятно, но очень хочется надеятся, что какое-то решение есть
                                                                                Нет, абсолютно устойчивого решения принципиально не существует, и попытки бесконечно близко к нему приблизиться бесплодны, потому что стоимость растет нелинейно.
                                                                                Необходимо сначала задать обоснованные требования по безопасности, а потом их выполнить.
                                                                                  0
                                                                                  Есть, но внешний ключ должен быть больше, чем шифруемое сообщение. Что делает схему бессмысленной.
                                                                              +2
                                                                              А кто даст гарантию что там нет защиты и на этот случай? Когда батарея разряжается, данные уничтожаются. Это же первым делом реализуется такая функция. Более того, можно для этих целей SRAM использовать. Правда иллюзий тут тоже нет — даже дубовая SRAM вполне способна держать своё состояние около 20 секунд без питания. Поэтому она тоже требует наличия механизма самоуничтожения, но для SRAM он реализуется гораааздо проще и отрабатывает быстрее — за десятки-сотни наносекунд.
                                                                                0
                                                                                Этот вариант мне уже нравится, хотя нужно надёжно детектировать момент когда батарея умирает, интересно, а всякие ядерные батарейки (0, 1, 2) для этих целей можно использовать?
                                                                                  0
                                                                                  Были какие-то ядерные батарейки, но они ток выдают что-то вроде 10нА, этого не хватит для целей. И стоимость батарейки порядка 10000$.

                                                                                  Детектировать — легко, нужен только сформированный транзистор на подложке с фиксированным порогом открытия. Но тут есть засада — если детектор будет один, его можно нейтрализовать однократным действием(уничтожив транзистор или перерезав шину с сигналом), заставляя думать схему что батарея в норме. Да впрочем как и любую систему самоуничтожения с единственной точкой принятия решения. Нужно несколько параллельных систем контролирующих состояние друг друга. А это может вылиться в большую частоту ложных срабатываний, понижающих надёжность функционирования чипа.
                                                                                    +1
                                                                                    И это все тоже принципиально можно вскрыть, если приложить ещё больше усилий для вскрытия. И что угодно принципиально можно вскрыть, если приложить достаточно много усилий для вскрытия. Именно поэтому необходимо заранее задать чем-то обоснованный уровень защиты и обеспечить его, не пытаясь достичь недостижимого идеала.
                                                                    +2
                                                                    В теории (по требованию законодательств многих стран, в т.ч. стран СНГ) криптографические девайсы должны пройти процедуру сертификации, где в частности экспертами исследуются исходники и сам девайс на подобные уязвимости и где проверяется соответствие девайса криптографическим и прочим стандартам (а они как раз определяют требования по секьюрности, см. например американский FIPS, он очень лаконичен и там вроде было и про ваш пример с ключом и затиранием при вскрытии).
                                                                    0
                                                                    Отличная статья, очень интересно читать!

                                                                    А расскажите, пожалуйста, зачем на рис. 9 у площадок перемычки разная площадь\форма?
                                                                      0
                                                                      Возможно, там есть какой-то скрытый смысл (управление плотностью тока, чтобы пережигалось тлнчл в нужном месте), но наиболее вероятный ответ — «так вышло». Обычно фьюзы симметричные.
                                                                      0
                                                                      Кажется на канале EEVBlog было видео в котором на какой-то железке процессор физически разрушался при попытке снять радиатор, что думаете насчет такого варианта защиты? Видео к сожалению найти не могу так как смотрел очень давно.
                                                                        +1
                                                                        Это вполне нормальный вариант, но подавляющее большинство микросхем не имеет радиатора, особенно это касается малопотребляющих микросхем для интернета вещей, смарт-карт и т.д. Впрочем, это не обязательно должен быть радиатор, можно взрывать процессор в случае вскрытия корпуса устройства, заливать его кислотой… все ограничено только фантазией и возможностями разработка. Но это все внешние по отношению к чипу вещи, поэтому они не являются темой этой статьи.
                                                                        0
                                                                        Эта тематика от меня очень далека, но сам собой возник вопрос: имеются ли системы компьютерного моделирования, решающие обратную задачу восстановление функционала микросхемы по её 3D топологии.
                                                                        И таки да — спасибо автору за статью!
                                                                          +1
                                                                          Да, такие САПР существуют, но их качество обычно далеко от САПР для проектирования, в силу несопоставимых финансовых возможностей разработчиков и их клиентов. То есть речь идёт об автоматизации ручного труда, а не об автоматической экстракции. Плюс нетривиальная часть задачи на самом деле состоит в получении качественного комплекта послойных фотографий (без перетравов, отвалившихся контактов и т.д.).
                                                                          А по полному и безошибочному файлу с топологией электрическая схема прекрасно восстанавливается в штатных САПР для проектирования микросхем, там процедура сравнения восстановленной из топологии схемы с исходной — неотъемлемая часть верификации дизайна.
                                                                          +2
                                                                          отличная статья, спасибо.
                                                                          добавлю от себя 2 аспекта которые не раскрыты и не затронуты
                                                                          1)Случай когда делается закладка не при производстве а при проектировании(вопрос взаимного доверия не обсуждается, по умолчанию все враги конкуренты).
                                                                          Многие дизайн центры выполняют разработку для сторонних заказчиков, в том числе и военных. Так вот последние не могут внести изменения однако должны контролировать отсутствие закладок в конечном продукте. Необходимость проверки требуется на уровне приёмки. И вот в этом случае и необходим реверсинженеринг. Однако это не всегда исследование уже готовой микросхемы а скорей анализ топологии(которая далеко не всегда отдаётся с полной иерархией и описаним функционала). Вот тут уже и возникает проблема, не мог ли разработчик микросхемы(а иногда и IP блока) заложить закладку? Такого рода закладки существуют в в очень большом количестве микросхем, и многие разработчики( и я в том числе) такие закладки(скрытые возможности, не задокументированные режимы) делаю для ускорения тестирования и случае наличия ошибки — для выяснения местоположения и обхода ошибки. Так вот тут встаёт 2 противоположные задачи — конечного заказчика — найти если есть такого плана закладки(достаточно найти подозрительные места, а рассказывать зачем это нужно уже разработчик будет) и второе — задача разработчика спрятать так эти скрытые возможности чтоб не нашёл заказчик.
                                                                          Это постоянная борьба «света и тьмы».
                                                                          Отдельный вопорос — что делать в случае если реализована закладка которую невозможно обнаружить в файлах топологии, и которая проявит себя в реальной микросхеме.
                                                                          2) есть такой метод защиты PUF функции которая довольно хорошо позволяет защитить микросхему от копирования и взлома. В данное время довольно интересная тема. Данный аспект не затронут.
                                                                            0
                                                                            > 2) есть такой метод защиты PUF функции которая довольно хорошо позволяет защитить микросхему от копирования и взлома.

                                                                            о даже на хабре что-то было
                                                                              +1
                                                                              На шестнадцатом рисунке весь чип в тестовых падах от таких «закладок». Но я не стал бы называть закладкой дополнительную тестовую функциональность, у нее же нет цели навредить потребителю чипа. Но вы правы в том, что в специальных применениях входной контроль нужен и существует, особенно в случае необходимости закупки IP-блоков у ненадежных поставщиков (но здесь вообще нужно замещать их на надёжных). Кроме того, входной контроль нужен просто для оценки надёжности (как в случае с процитированный в статье ответом о реверс-инжиниринге чипа Zilog).

                                                                              Что касается PUF и много чего ещё — мне показалось, что это будет излишним для обзорной статьи базового уровня (а что-то — излишним для статьи, доступной в интернете). Этот текст и так очень длинный получился. Кроме того, я аналоговый разработчик, а не цифровой, и о многих вещах просто не могу компетентно написать. Так что, если вам есть, как раскрыть тему, я бы с огромным удовольствием почитал.
                                                                              0
                                                                              В МК есть средства защиты от чтения прошивки. Проконсультируйте пожалуйста как реализована данная защита, в частности для pic фирмы microchip (или других производителей), насколько она стойка.
                                                                                +2
                                                                                Насколько я знаю, PIC вскрываются любые или почти любые, цена вопроса в пределах 1000 долларов.
                                                                                Про то, как именно реализовано в новых моделях, не могу точно сказать, а как обстояло дело раньше, показано на последнем рисунке и в тексте над ним. Там же есть ссылка на подробную работу, где много внимания уделено PIC.
                                                                                  0
                                                                                  Спасибо, ясно. PIC12C508A весьма дремучая и обладает малым числом «ног»/памятью/и т.д.
                                                                                  Мне больше интересно с точки зрения защиты, как узнать модели из PIC которые не вскрываются (вы их назвали «почти любые»).
                                                                                  И такой вопрос, возможно повысить или усложнить вскрытие данной защиты «подножными методами и средствами»? У меня, например, был такой случай — в схеме на ноги, которые участвовали в подключении к программатору, было подано не штатное напряжение, после этого программатор не распознавал чип вообще, но при этом чип работал без потери функций, за исключением ног подключаемых к программатору.
                                                                                    +2
                                                                                    По поводу нештатного напряжения —
                                                                                    Открою секрет — лет 15 назад обнаружил(не спрашивайте как) что у микросхемы 24FC65(64k I2C EEPROM)(сейчас уже не знаю работает такое, может уже новая ревизия вышла этих микросхем) есть backdor —
                                                                                    в этой схеме есть область памяти которую возможно защитить от записи. После установки бита защиты она доступна только на чтение. Однако!, если подать на один из входов адреса отрицательное напряжение величиной ниже порога транзистора, и подать секретную комбинацию, то микросхема начинает игнорировать бит защиты, и сам этот бит также возможно переписать.
                                                                                    И такая ситуация с многими микросхемами.
                                                                                    Я и сам в свои проекты такого рода пасхалки закладывал, только с намного более сложными комбинациями.
                                                                                0

                                                                                А компьютерная томография не используется для восстановление полной 3D структуры чипа? Кажется разрешения типа 6.6мкм должно хватать?

                                                                                  +1
                                                                                  Разрешения типа 6.6 мкм при характерных размерах элементов 10-100 нм, конечно же, не хватает.
                                                                                  Да и полная 3D-структура в большинстве случаев не нужна, чипы же принципиально двухмерные, поэтому обычно для анализа можно их травить и фотографировать послойно.
                                                                                    0
                                                                                    Они двумерные, но имеют зачастую 32 слоя-этажа. Вместо травления можно сразу «снять» все слои… без риска перетравить какой-то и свести на смарку всю работу.
                                                                                    0
                                                                                    Так разве что структуру металлизации можно восстановить, и то не уверен что полностью. И рентгеновское излучение точно уничтожит хранящиеся данные на чипе, разрядив имеющиеся заряды в ячейках.
                                                                                    0
                                                                                    Отличная статья! Жалко, что столько ресурсов человечества тратятся на защиту от копирования, реверс-инженеринга и т.д.
                                                                                      0
                                                                                      Интересно, применяются ли подобные методы при производстве обычных процессоров, таких как настольный или для телефона? И сколько на всё это съедается производительности и энергии?
                                                                                      +2
                                                                                      Спасибо за статью!
                                                                                      Главный недостаток как оптического микроскопа, так и SEM

                                                                                      Частично решается тем, что в SEM есть EDX, а ещё есть связка FIB-TEM-EDX, а нормы для массового производства (всякие преобразователи, делители, а не ЦПУ Xeon) всё равно в районе 100-200 нм. Так что при серьёзном подходе и тип, и уровень легирования узнать можно.

                                                                                      Кстати, есть JTAG, который после тестирования отключается, нет?
                                                                                        +2
                                                                                        при серьёзном подходе и тип, и уровень легирования узнать можно.
                                                                                        При действительно серьезном подходе почти все, сказанное в этой статье, неверно)

                                                                                        Кстати, есть JTAG, который после тестирования отключается, нет?
                                                                                        Конечно есть. Вопрос в том, как он отключается, и в том, нельзя ли его включить обратно. А то отрезать контроллер от кристалла — это одно, а записать бит EEPROM — другое.
                                                                                        +1
                                                                                        Я все удивлялся, зачем кому-то частный ЭСМ в гараже, а оно вона чо…
                                                                                          0
                                                                                          Мимо проходил
                                                                                          sharps.org/wp-content/uploads/BECKER-CHES.pdf

                                                                                          One of the major concerns are Trojans inserted during manufacturing e.g. by an
                                                                                          untrusted foundry, but most of the published hardware Trojans are implemented
                                                                                          at the HDL level. In this paper, we will therefore focus on Trojans inserted into
                                                                                          designs at the layout level, after the place & route phase.
                                                                                            0
                                                                                            Американские генерады-параноики ничем не лучше российских и тоже прекрасно хавают рассказы про закладки. Статья — вода чистой воды, с картинками из того же источника, что мои 12-13 рисунок, и рассказывает исключительно о теоретической возможности, ничего не говоря о практической реализуемости. И, разумеется, не приводя никаких реальных примеров закладок.
                                                                                              0
                                                                                              с картинками из того же источника

                                                                                              Да, просто упомянутое средство защиты от реверса тут предлагается использовать для «нападения».

                                                                                              И, разумеется, не приводя никаких реальных примеров закладок.
                                                                                              Это студенческая работа. Какие уж тут закладки :)
                                                                                                0
                                                                                                Со средством для нападения проблема в том, чтобы, с одной стороны, сделать его активируемым по внешнему коду, с другой — не взаимодействующим с тестами. И это одновременно с тем, что оно должно не вызывать подозрений при анализе топологии. И быть разрабатываемым за считанные дни. В общем, все ещё идея, которая в сферическом вакууме интересна, а на практике ее реализовать невозможно.
                                                                                                  +1
                                                                                                  Сделать что-то в процессоре общего назначения, что пролезет через тесты, не просто легко, а очень легко — коверейдж возможных состояний настолько мал, что на фабрике можно налепить что угодно, что пройдет инспекцию «визуальной» топологии. Собственно, поэтому дроч на всякие гнутые инициативы в стиле «запихни корбут вместо стоковой фирмвари в x86-тушку и будь единоличным владельцем своей пеки» остается дрочем, а не идет в массы. Если говорить об одноочередном однотредовом ядре без d/i кеша (или иной контролируемой неявно сущности, влияющей на execution flow), то покрытие можно осуществить софтом и тут да, можно говорить об отсутствии закладок. Интересы у вояк, впрочем, будут в основном в жирных плисах, которые, опять же, имеют так много стейтов, что ни в какое реальное время даже на физической железке их покрыть не выйдет, то есть переход, открывающийся хаммерингом по какой-то последовательности инструкций и меняющий privilege level, скорее суровая реальность, чем выдумка.
                                                                                            +2
                                                                                            А вот здесь (осторожно, трафик!) — отчет от реверс-инжиниринге процессора Zilog Z80-CTC,

                                                                                            Этот документ о Z80-CTC (counter-timer-circuit), это счётчик-таймер. Это не процессор. Предлагаю поправить текст, чтобы не вводить в заблуждение.

                                                                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                            Самое читаемое