 Здравствуйте! Наша лекция — «Понимание врат миллионов врат». Наш лектор представит возможность показать, что можно с ним и делать дома. Он из университета исследования из Америки. Привет! Надеюсь, что вам нравятся мои розовые кошечки. Мне хотелось бы сегодня поговорить о том, как мы можем понять миллионы гейтс. Я хотелось бы поговорить о ревес-инженеринге. Я не делаю никакого пробинга. Я умею использовать скотч для некоторых работ, но мне это не особо нравится. И также я не особо заинтересован в дополнительных устройствах для ревес-инженеринга. Что мне интересно — это от чем же этот чип Open Source, он или нет? Что можно на этом чипе использовать? На правой стороне у нас небольшая дырка, что мы не имеем в Open Source. Поэтому я решил посмотреть эту часть и использовать ревес-инженеринг для этой части чипа. Вы можете посмотреть кубы, первые ссылки по ревес-инженеринге, в общем, википедия об этой теме. Они не особо помогают на самом деле. Может быть еще несколько лекций в интернете, которые вы можете найти о методах. И я решила, что это необходимо изменить. У вас в таком чипе дизайн IC, дизайн интеграции, и некоторые уровни, которые вы видите на картинке — нет лист, верификация, синтезация, получение, бород или гейтов, физический синтез, верификация, леотинг, продукция. Почему нам так важно интересоваться ревес-инженерингом? Я произведу пару миллионов чипов, которые будут использоваться. Чипы очень мало тестируются. Мы протестировали 90 процентов чипов. Мы не хотим, чтобы на рынке было очень много чипов закрытых. Важная часть — это безопасность чипов. Мы не хотим, чтобы IP были плохими, чтобы атакер смог получить доступ к нашим устройствам, например, машину, например, электростанцию, по какой-нибудь ошибке, или они хотят что-нибудь скрыть от нас. И многие вещи не были задокументированы. Интересно, что много вещей закрыты о том, где чип был произведен. И мы хотим понять, что стоит в этих вещах, чтобы решить, злые они или нет. Мы видели, как производятся чипы после производства. Получается микроконтроллер. Он покажируется, определяются задержки. Имеджинг получается. Картинки чипов, стичень, идентификация связей между элементами, идентификация основных элементов, гейтов, NetList. Это достаточно сложный процесс, но мы знаем. В общем, как оно происходит и как мы должны делать. У меня дома нет этих устройств, которые вы видите на слайде. На самом деле, они вам даже не нужны. Большие компании могут сделать это за вас. Когда у вас есть NetList готовый, то вы можете сделать уже значительно много вещей с этим. Самая интересная часть NetList ревес-инженеринга – миллионы гейтов, которые вам надо понять, как они работают. Первой вещью, которую мы делаем, как расположены hardware. Какие модули, как они выглядят на борде. Важная часть этой темы – части partitioning – это наш первый шаг. И он нам не очень удался, спойлер небольшой. Потом нам необходимо идентифицировать эти отдельные части. А вот это вот криптографический чип, например. Иногда с большим количеством анализ не такой простой. Иногда можно понять, где находятся определенные модули. Основная проблема – нам необходимо найти модули, которые мы хотим идентифицировать. Это та проблема, которую мы сейчас занимаемся. В многих компаниях, где больше 200 специалистов, которые сами написали дизайн, которые сами сделали дизайн этой платы, когда-то в 1980-х годах. Метод разделения partitioning – мы находим на датапафах, на путях определенные мультипликаторы. И даем входные данные, и получаем выходные данные. Например, мультиплицирование 3 раза. У нас есть определенные даты, определенное входное слово – DataWord, которое конвертируется в Output. И они определяют, дефинируют начало и конец модуля. И поэтому мы можем разделить определенные части внутри этого модуля. Мы можем сказать, вот этот вход – это выход, и все, что внутри – это и есть этот модуль. Следующая вещь – это графический анализ. Если у вас много Xbox, шутка на английском, вы найдете таким образом, как соединены отдельные элементы. Очень просто для вас разобраться в этих соединениях. Если вы собираетесь партицировать, разделить каждые ячейки – это невозможно. Нам, по крайней мере, это не удалось, и 90% невозможно. И для нашего разговора оно недостаточно. Теперь у нас есть способ сравнения, когда у нас есть один дизайн, который мы знаем – KnownNetlist. И мы сравниваем его с неизвестным дизайном – UnknownNetlist. У нас есть большое количество сэмплов, например, открытые ядра, LibreCore, например. Если у компании есть API, то можно их посмотреть. У нас есть входы, естественно. Мы запускаем их в известный неизвестный Netlist, и получаем выходы. И сравниваем выходные параметры. Смотрим. Выглядит похоже или нет. Крутая штука. У нас есть здесь, в этом случае, пара проблем. Необходимо, чтобы совпадение известного и неизвестного Netlist была идеальным. Нам необходимо идеальное ограничивание частей. Если у вас два миллиона гейтов, то imaging становится немножко сложной. И рано или поздно вы поймете, что это невозможно. С FPGA-ми не так просто работать. И последнее, что вам необходим в любом случае известный Netlist. И если его нет, то не с чем сравнивать. Момограф, томограф, метод, фазии, методы для графического анализа, чтобы посмотреть, как это выглядит. Например, на левой части IS-имплементации. И два других кетчак-имплементации. Они все из теорий графов. У них могут быть похожие структурные элементы. Многие люди используют разные tooling. Испрашивают, как же можно сравнить эти элементы. Мы посмотрим на три разных ячейки, на три разных лабрари, библиотек ячейк. И, например, ваши глаза могут сказать, да, действительно, эти элементы похожи друг на друга. И если вы используете машин-ленинг, изучение то, это достаточно возможно. Следующее нам необходимо посмотреть на херархию и функциональность в разными цветами. Это разные элементы. И мы можем на самом деле реверс-инжинирить почти все модули. Мы можем узнать, что это контрольный элемент. С другой стороны, есть еще вещи, которые люди добавляют для того, чтобы предотвратить идентификацию отдельных модулей. Например, Logic Locking, так называемый. Я решил, кто-то решил, давайте напишем гейты, давайте добавим еще несколько гейтов. И если вы подведете неправильные входы, то будет выполнено другое ветвь и другой выход. Это случайный метод, есть еще более умный метод. И самый способ Locking, самый сильный. Еще есть SAT, устойчивый, супер-супер-смарт Locking. Уже существует одна работа, которая показывает, как можно организовать XOR-гейты, как их идентифицировать. Если мы делаем оптимизацию после XOR-гейтов, то все еще можно их реверс-инжинировать с помощью этого тулинга. Это достаточно просто. И их можно удалить из конечной системы. Следующий пункт фази-анализез, который мы сделали, частично были удалены элементы из некоторых гейт. Как вы можете заметить из этого, за этой картинке структуральный анализ может быть прост, как вам кажется. Но на самом деле это не так. Есть схемы залочивания, логического залочивания. Некоторые еще не хакнуты, некоторые потруднее. Практические трудности есть в ключи, которые нам необходимо сохранять в гейтах. У нас есть оверхед, что мы должны дополнительно делать для того, чтобы Team Verification не навидела вас, и все эти вещи не работают все время. Безопасность типа. Давайте добавим слайд для того. ФСМ или последовательное блокирование. Я хотел бы показать вам другие схемы. Это схема основана на черном ящике. Оригинальный ФСМ, исходное состояние B0, неизвестное состояние, неизвестно, что оно делает этот блок. Оригинальные, как вы видите, необходимо использовать правильный ключ, чтобы дойти до туда, если ключ неправильный, что мы попадаем в первое место. Если вы посмотрите на граф, то вот так он выглядит. Примерно ревес в ревес НГН, нировом состоянии, когда вы применяете определенные ключи к вашему чипу. Отлично. Давайте изменим тему немного. Локим сломан. Давайте попробуем что-нибудь другое использовать в Германии. Мы можем делать 45 нанометров чипы. Мы испуганы, что фаундрии хакеры могут сделать что-нибудь с нашим дизайном, которое требует на самом деле 9 нанометров. Мы отдаем на фаундрии много частей элементов. Например, на правой части мы видим элементы, которые мы не очень просто можем в реверс инжинировать. Сначала мы смотрим на элементы, которые находятся друг с другом, элементы B, которые находятся снизу. Возможно, один гейт за коннектчен с первым или со вторым. М, возможно, подключен туда и сюда. У нас есть еще определенные условия, которые выполняются или как атакер, который способ использует, например, бутфорсинг. Плохой дизайн случается тоже. У вас, например, получается что-нибудь в этом роде, исходный гейт, соединение, которое не идет никуда. Иногда непонятно, идет ли оно к гейт A или к гейт B. На самом деле, проводки тоже сломаны. Отлично. Последняя вещь, каким образом можно скрыть некоторые элементы, называется камуфляж ячейки. Например, на северной ячейке можно организовать ячейки, которые, похоже, выглядят, но выполняют разные функции, например, нант и нор, в левой части и в правой части нанта нор. И если вы не знаете точные элементы, то вы не можете так просто их реверсинженировать. Но тогда ваши чипы будут начнут стоить больше, если вы имплементируете больше безопасности, вам необходимо все больше библиотек, которые содержат эти привентивные меры. Атакеры тоже улучшают свои библиотеки, и они используют очень часто брутфорс, в любом случае, и не ожидают, что определенные вещи открыты. Некоторые элементы опиранды отличаются друг от друга, например, точки, и с определенной микроскопом можно видеть, что есть разница между этими элементами. Не всегда это будет работать, но если у вас есть этот тульон, то вы увидите разницу. Реверсинженер, на самом деле, очень крут. У нас есть IP, безопасность для компаний. Мы не хотим, чтобы электростанции взрывались или что-то другое происходило с ними. Фандри используют как раз эти вещи, чтобы посмотреть, куда можно установить трояны. Если они не знают функциональность, то им трудно понять, как работает hardware. И в этом случае у нас, на самом деле, не очень много позитивных частей. И самые страшные вещи в этом, что тулинг отсутствует для анализа такого большого количества элементов. Нет формальных методов для анализа. И последний, на самом деле, многие люди просто не думают об этом и не хотят заниматься этим. О, сейчас что-то плохое произошло, конечно, если ваш тип не защищен от hardware проблем, то, естественно, у вас более большая проблема. Следующий вопрос, что же вы можете с этим сделать? Партишнен, идентификация. Вы вам не требуется не hardware, определённого hardware, никакого тулинга. Вы можете использовать LibreCore и Open Source элементы. Все возможные типы. Это первое, что вы можете сделать. И вы можете найти другие способы, чтобы попытаться найти ошибки в этом Contrakt. Очень интересная теория графов. На лекции до этого был разговор о социальном инженеринге. Здесь у нас немножко другая область. И интересно, в какой области мы можем использовать графы, чтобы партицировать, разделять графы лучше. Пожалуйста, контактируйте, напишите мне. Вот это моя почта. Если у вас есть идеи, как можно это сделать лучше. Спасибо большое. Вопросы. Спасибо большое за доклад. Если у вас есть вопросы, пожалуйста, подходите к микрофонам. Вопросы с интернету. У вас есть вопросы? Какой классный, что за классный ПОК вы используете для визуализации графов? Гифи, графическая tool, Graph Beats. Можете тоже посмотреть, как она работает с самыми большими графами мы использовали GIFI. Там можно визуализировать в реальном времени разные алгоритмы. На одном графе в реальном времени. Мы сделали больше 1 миллиона гейтов. Следующий вопрос. Есть два вопроса. Первый вопрос про электронный микроскоп. На самом деле, можете увидеть, как работает этот чип с помощью этого микроскопа, потому что вы видите количество электронов на самих транзисторах. Зачем вообще нужен этот камуфляж? Зачем нужен весь этот камуфляж? Иногда я задаю тоже этот вопрос мне. Если вы используете камуфляж и все равно можете видеть, как оно работает при ревес-инженеринге, работающей процессой, что случается внутри, становится немножко труднее увидеть, что оно делает. Мой второй вопрос, это если, конечно, не будет работать с фондры, но есть какие-то физические методы для специальной обертки, чтобы спрятать все это. Да, у нас было пара идей в этом направлении. Первое – котинг. Второе – можно использовать металлический сплав на поверхности. Это приводит к материальным проблемам материала. Они не нашли ничего, что могло решить эту проблему. Есть еще вопросы из интернета? Я не вижу никого. У нас больше нет вопросов. У нас есть один микрофон. Привет. Есть только маленький вопрос. Есть инструмент какой-то для того, чтобы восстанавливать CNET-клок из NAT-листа, потому что… Клок-вупинг – это первое, что вы делаете, когда вы дизайнете свою схему, и вы смотрите части, на которой клок установлен, и потом вы идете более точно в этот клок, смотрите, как он построен. Я не уверен, что еще другие области, которые используют это. Этот флит-плоп принадлежит другому. Флит-плоп, например, по цвету. Это возможно. Это возможно. Спасибо. Можете мне рассказать, какой рабихет вы получаете, если вы делаете этот скрепинг? Используете ли это везде? Когда люди начинают дизайневать, они рассчитывают с тремя годами, и они хотят установить много обвозкации, и когда чипы находятся на рынке долгое время, они, конечно, хотят защитить их. Халуб-гейты, криптомодули для процессора, это все зависит. Важно, о чем мы конкретно говорим. Обвозкации, безопасности или камуфляжа. Ечейка, которую мы используем для камуфляжа, есть несколько идей, как это используется в хорошем способе, квалитативно, в хорошем способе. Например, вы используете это только в части чипа, камуфляж, и иногда вы выбираете. Например, если у вас есть немного свободного места, вы добавляете туда эти элементы для камуфляжа. Есть несколько способов. Следующий вопрос, микрофон один. Привет, спасибо за водоклад. Я хотел узнать, если эволюция с такинга, как вы видите, в будущем своего области. Мы работали в прошлом с людьми, которые интегрировали больше элементов, которые использовали физические процессы на другом, на новом уровне. Мне кажется, что мы должны тестировать больше чипов, чтобы анализировать их и получать изображение этих чипов для ревесо-инженеринга и для маленьких нанометров тоже. Следующий вопрос, FG. Можете это сделать с ФПГА? Институт Бохома сделал это с ФПГА, плацарин, с почти то же самое с ФПГА. Но я не уверен на работе для камуфляжа для ФПГА, но логик локинь работает. Следующий вопрос. В отношении по-рублемы, отправки своего разработки на производство и оно там изменяется? Какое реальное сопооположение вещей в мире? Реально могут ли программы так сделать и проверить, что они делают и что производится? Или они просто отправляются, отправляют свои дизайны куда-то? Есть две части в этой работе. Существует ли часть? Если оно существовало, то производители не сказали бы мне напрямую. Это не то, что одна человек смог бы сделать в одиночку. Проблема фаундрии, если есть страна, где фаундрии активно с этой проблемой, тогда они делают это, делают это там, делают реверс-инженеринг. И я надеюсь, что мы добьемся сертификации чипов, и мне надеюсь, что это будет работать в будущем. Если бы государственная структура сказала бы, что какой-то государственный оператор делает какие-то модификации на заводе, кто выигрывает? Это зависит от страны на самом деле. Например, в Америке большие ресерчеры спонсируются Дарпой, и у них, конечно, много денег. Большое спасибо за лекцию. Для вас переводили Макс.