Съдържание

Въведение

Въпреки че индустрията за сигурност обикновено се фокусира върху софтуерните кибератаки, не можем да забравим въздействието върху сигурността на хардуерните недостатъци на по-ниско ниво, като тези, които засягат полупроводниците. Повърхността за атаки на ниво силиций се разшири през последните няколко години; тъй като производството на интегрални схеми (IC) се развива за все по-напреднала микроелектроника, рискът от пропълзяване на дефекти в тези сложни системи също се увеличава.

Тази статия дава общ преглед и фон на хардуерните троянски коне, включително списъци на мрежи, подготовка на матрици, изображения с електронен микроскоп и тестване на вериги. Освен това ще направим собствен дизайн на физическо оформление на хардуерен троянски кон, който ще бъде анализиран с помощта на Klayout.

RTL дизайн срещу Netlist

Преди да се потопим в хардуерните троянски коне, нека прегледаме как са проектирани силиконовите чипове, за да можем по-късно да ги открием чрез обратно инженерство. Можем да започнем от поведенческото ниво на процеса. Ниво на прехвърляне на регистър (RTL) дефинира как се разполага модел на регистри и логически портове.

Проектирането на RTL стана много по-лесно през 1983 г., когато първият език за описание на хардуер (HDL) беше разработен от Министерството на отбраната, за да документира поведението на специфична интегрална схема за приложение (ASIC ) дизайни. VHDL и Verilog бяха представени приблизително по едно и също време и все още са двата най-популярни HDL днес. Тези езици са създадени като специализиран компютърен език за програмиране на цифрови логически схеми. Ако вземем горната RTL диаграма и я преобразуваме в код на Verilog — ще изглежда така:

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

Този прост фрагмент от код може да бъде синтезиран към обсъждания дизайн на логическата врата. Логическият синтез е автоматизиран процес на преобразуване на HDL език като Verilog или VHDL в оптимизирано описание на ниво порта. При обратно инженерство на изображения на силициеви матрици, първата цел е да разберем как можем да вземем всички тези слоеве и да ги преведем в транзисторен netlist. Разглеждайки нещо като XOR гейт с два входа, без да имаме иконите на RTL компонента за замяна на транзисторите, можем да проектираме тази схема:

Казано по-просто, необходими са само шест транзистора, за да се създаде този допълнителен дизайн на списък с мрежи на метал-оксид-полупроводник (CMOS). Оттук нататък в нашето обратно инженерно пътуване вие ​​бихте конвертирали този списък с мрежи в RTL схема, след това в HDL, както се вижда от изображенията и кодовите фрагменти по-горе.

Получаване на изображения на силиконови матрици

За да забележите хардуерни троянски коне, ще трябва да имате под ръка голата матрица заедно с няколко други подготовки за чипа, които ще обсъдя по-късно в тази публикация. Една част, която няма да засягам, е процесът на декапсулиране и забавяне на интегрални схеми, тъй като вече съм написал статия за това, но е необходимо да се разбере как да се получат тези малки силициеви матрици и как се изобразяват.

Дефиниране на хардуерни троянски коне

Хардуерен троянски кон може да се появи под формата на злонамерена схема, която нарушава функцията или надеждността на електронна система (т.е. интегрална схема). Веригите са податливи на този тип атака на физическо ниво на оформление или на ниво порта. По-конкретно, троянските коне на ниво порта са функционални модификации или параметрични отклонения от предназначението на даден компонент и могат да бъдат постигнати чрез добавяне или изваждане на порти. Трудни за откриване троянски коне могат да бъдат използвани за отслабване на сигурността на криптопроцесор чрез:

  • Намаляване на ефективната ентропия на генератор на произволни числа
  • Предоставяне на информация за вътрешната работа на процесора на нападател.

По-долу ще намерите пример за хардуерен троянски кон, задействан от прагово напрежение (HTVth) в комбинирана схема (NAND гейт с 2 входа).

Според статията Навлизане на хардуерен троянски кон, задействан от прагово напрежение в съвременната FPGA структура – ​​Методология за откриване и смекчаване: Основните цели на дизайна за HTVth са зададени съответно така, че :

  • Задачата за прехвърляне на троянска верига трябва да бъде линейна.
  • Чувствителността към промените в температурата и праговото напрежение трябва да бъде изключително висока.
  • Промяната в изхода трябва да е доста висока за промяна във входа.
  • Трябва да се запази незначителното времево влошаване и толерантността към вариации на процеса.

Троянските вериги трябва да поддържат еднакво ниска консумация на енергия, без да компрометират ефективността на задействания полезен товар. Веригата, показана по-горе, не може да изтегли допълнителен ток, докато е в латентно състояние, което я прави трудна за откриване. Методи като анализ на сигнатурата на захранването не биха могли да кажат с увереност, че този конкретен NAND порт има троянски кон.

В този пример нападателят може лесно да контролира изхода на 2-входовия NAND порт. С A(1) NAND B(0) == AB(1) очакваме вход от 1 и 0 да даде изходно напрежение с високо напрежение. С вмъкнатия троянски кон уравнението за A NAND B ще има обратния очакван резултат. Тригерът Хардуерен троянски кон (HWT) може също толкова лесно да промени определени входни щифтове или да преобърне очакваните резултати. Това може да помогне за получаване на достъп до вградени идентификационни данни, ключове, код и много други.

Вмъкване на троянски коне

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

Вмъкването на RTL е един от най-популярните методи за инжектиране на хардуерни троянски коне. Самият троянски кон може да бъде обект на системно ниво, който се преобразува в фалшив RTL или може да бъде доставен по време на оформлението на ASIC. Освен това троянски кон може да маскира подготовката, като модифицира данните, за да маскира верига, която вече е в производство. Това се постига чрез използване на технологии за подобряване на разделителната способност (RET), като оптична корекция на близост (OPC), която коригира за вълнообразното поведение на светлината при ецване на наномащабните атрибути на най-модерните интегрални схеми. Повече информация можете да намерите в Wikipedia on Tape-outs.

Редуването на маска може например да промени полярността на добавка в транзистор, n-тип за p-тип или обратно. Изследователи от Horst Görtz Institute for Semiconductor Securityтвърдят, че ще бъде изключително трудно да се открие, особено ако се извърши след подписване. Фалшификат със сигурност може да направи промените непосредствено преди производството на маската.

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

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

Както можете да видите, вмъкването на троянски коне на RTL или дори ниво на врата е доста сложно и може да има много последствия, ако не се направи правилно, като значително увеличение на консумацията на енергия или неправилно поведение.

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

Ако погледнем троянските коне от гледна точка на оформлението, играта се променя малко. През повечето време при проектирането на схеми има много неизползвани пространства или дори области, които са химически механично полирани(CMP). Троянските клетки, които са поставени в зона, която не се използва от дизайна, имат по-голямо влияние върху консумацията на енергия на веригата, отколкото всички други методи, изброени по-горе.

Беше разработен поток за разделяне на оформлението на веригата и установяване на практически места за троянски клетки, заемащи неизползвани пространства. Придобиват се разпределението на клетките на веригата и белите пространства в оформлението на веригата и след това се определят възможните места за разполагане на клетките на веригата.

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

Използването на оптични техники за обратно инженерство може да разкрие много на един изследовател. Основни микроскопи, като комбинирани, стерео- или дори металургични, могат да се използват за откриване на троянски коне, но индустриалният стандарт клони към сканиращи електронни микроскопи(SEM), тъй като интегралните схеми стават все по-малки. Необходими са разширени възможности, за да можете да проучвате по-нататък. За да се подготви дори чип за показване на скрити троянски коне, някои неща се правят с допинга, което изисква известно използване на химически ецващ препарат.

Както се вижда на увеличената снимка по-долу, портата на оригиналния дизайн (CMOS инвертор) е модифицирана чрез прилагане на различна полярност на добавка към отделни части от активната зона на вратата.

Според „проучване“, проведено от Университета на Северна Каролина, те са успели да фиксират изхода на транзисторите до определена стойност и/или дори са имали способността да променят силата на транзисторите по подобен начин.

Университетът на Флорида проведе подобно изследване за откриване на троянски коне, използвайки различни напрежения на лъча на персонализиран CMOS чип. С помощта на тази техника те успяха да използват бързи SEM изображения, обработка на изображения и алгоритми за компютърно зрение, за да открият вмъкване, изтриване и модификация на промените между чип без троянски кон и IC Under Authentication(IUA) .

Както беше обсъдено по-горе, необходима е подготвителна работа, за да се подготви чипът за изобразяване, тъй като електроните не могат да проникнат в дебел слой от субстрат от силициев диоксид (SiO₂). Често използван метод за отстраняване на SiO₂ е механичното полиране, тъй като се контролира по-лесно от използването на нещо като изхвърляне на чип във флуороводородна киселина, както се вижда в последната ми статия.

За да поддържат равномерно изтъняване на субстрата, изследователите са използвали VarioMill. Този продукт използва лазерно химическо ецване, пет осно адаптивно CNC микрообработване и VIS/IR спектрометрия за изтъняване на задните страни с дебелина до 1 μm.

Целта тук е да се направят SEM изображения от IUA и да се сравнят със златния IC. SEM се нуждае от определени параметри, за да направи ефективно изображение на IUA, като напрежение на лъча, зрително поле, време на престой (скорост) и разделителна способност. С тези настройки микроскопът може да бъде програмиран да изобразява цялата IC.

Изследователите са направили промени на ниво допинг, за да симулират дейността на троянски кон, които след това са изобразени от SEM. В някои от тези примери нападателят може потенциално да промени NAND на NOR порта, която по същество ще приложи собствена злонамерена логика чрез методи като модификация на активен регион, камуфлиране на клетки на първия метален слой или чрез вмъкване/изтриване на логика на активен регион (т.е. добавяне на инвертор).

Съвременните микроконтролери и процесори варират от 10 000 до милиарди портове и анализът ще изисква много изображения от микроскоп. Ето защо автоматизацията е ключова, когато става въпрос за събиране на информация както за номинални вериги, така и за вериги с троянски коне.

Други доказани методи показаха обещаващи и по-специално тестването на забавяне на пътя. „В експеримента на Йейл“ изследователите вмъкнаха 2-битов троянски кон, базиран на компаратор, близо до входа на DES ядрото на чипа. Закъсненията на пътя се използват за генериране на пръстови отпечатъци на номинални чипове, така че всеки път в списъка с мрежи е включен, за да бъде част от проследяването. Всеки пръстов отпечатък представлява един аспект от общите характеристики на един оригинален дизайн. След това чиповете се валидират чрез сравняване на техните параметри на забавяне на пътя с пръстовите отпечатъци, което е доста важно, когато става дума за малки троянски вериги. В крайна сметка те успяха да заключат, че само тези чипове, чиито пробни точки са в или близо до пресечната точка на всички дадени набори в цялото пространство на пръстови отпечатъци, ще се считат за истински. Ако едно или няколко места от пробните точки са далеч от споменатото пресичане, тогава се счита, че чипът има вмъкнат троянски кон.

Сега ще разгледаме раздел, в който се създава хардуерен троянски кон чрез използване на инструменти с отворен код Electronic Design Automation(EDA), за да покажем как изглежда на ниво персонализиран дизайн.

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

Сега, след като имахме шанса да научим за хардуерните троянски коне от много различни ресурси, реших, че би било забавно да създадем наши собствени от RTL до GDSII, където по същество можем да видим нашия чип с помощта на софтуер за 3D изобразяване като GDS3D. Красотата на проектирането на наш собствен заразен чип е, че можем да видим как да използваме инструменти с отворен код, за да го направим, както и да можем да гледаме интегрална схема, без да се нуждаем от микроскоп, тъй като можем да увеличаваме колкото си искаме, използвайки софтуер .

Нека да разгледаме дизайна на ниво порта на нормална логическа схема И-ИЛИ с 4 входа една до друга със същия дизайн, но с вмъкнат троянски кон. Ще преобразуваме това във Verilog код, след което ще използваме или QFlow с OSUs PDK, или Openlane на Skywater130 PDK, за да произведем GDSII файловете, така че да можем да прегледаме дизайна на ASIC, сякаш го гледаме чрез увеличение лещи.

Според Димитрис Мурис, Чарлз Гуер и Нектариос Георгиос Цуцос, портите са етикетирани по реда на оценка (първо G1, след това G2 и т.н.). Проследяването на изпълнението също се показва в редовете на таблиците, които ще покажат изхода на четирите регистъра на State Machine(SM), които се дефинират от променливите r0 — r3. Маркираните и подчертани стойности в таблиците показват коя симулационна променлива е била презаписана след оценката на гейта. Диаграма (a) показва верига, която извежда 1, когато и четирите входа са настроени на високо ниво. Диаграма (b) показва същата верига като (a) след инжектиране на примерен троянски кон, който се активира само когато всички входове са настроени на 1.

Имаме два начина за преобразуване на логиката на ниво врата във Verilog, или на ръка, или с помощта на цифров инструмент. Можем да съставим схеми и софтуерът да се преобразува в HDL по наш избор. Ще избера по-мързеливия вариант Б.

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

„Генерираният код на Verilog“ е доста прост за дизайн, който не съдържа троянски кон. Резултатът от Y зависи от четири входа, които преминават през логическо И в 3 групи, докато 2 групи получават ИЛИ за изход, за да получат И още веднъж от вход D. Сега нека да разгледаме кода, който генерирах с инжектирания хардуерен троян.

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

Това е доста подобно на кода без троянски кон, с изключение на това, че този код има операция XOR заедно с допълнително И с вход C & D. Можем да използваме EDA Playground, за да симулираме вълновите модели, използвайки прост тестов стенд и за двете. Ако не сте запознати с писането на тестови тестове, тогава можете да погледнете моя код, за да видите как са написани. По същество тестваме входовете на A, B, C и D, за да видим колко трудно би било да се забележи разлика от гледна точка на формата на вълната. Не забравяйте, че нашата форма на вълната трябва да показва активиране на троянски кон само когато имаме 4'b1111, всички други входни и изходни сигнали трябва да отразяват един друг.

„И двете“ изглеждат много сходни по отношение на това как Y се включва и изключва, но ако се вгледате внимателно в изхода на формата на вълната без хардуерен троянски кон, ще видите една разлика. Когато всички A до D са превключени към 1, изходът от Y е 1, както се очаква. Забележете, когато тестваме едни и същи входове с вмъкнат код HWT... изходът на Y е 0, когато всички щифтове са активирани. Така открихме тригера на троянския кон и функционалността на двата RTL дизайна се държи почти идентично. Можете да видите, че в ред 54 от нашия код на тестов стенд, че ако трябваше да забравим теста на всички входове да бъдат зададени в активно състояние, генерираните вълнови форми на двете вериги биха били идентични.

Нека отнесем това към предварителното производство и да видим колко лесно би било да забележим разликите между двата дизайна на ASIC. Можем да направим това, като преминем през процеса на инсталиране на QFlow, където ще бъдат инсталирани всички зависимости като yosys, netgen, graywolf, qrouter и magic. Използвайки QFlow GUI, можете да го насочите към Verilog файла, който искате да зададете за подготовка за синтез.

Ще имате няколко опции за падащото меню технология, реших да използвам най-новия PDK, който е OSU018. Това означава, че ще бъде проектиран в 180nm мащаб. След преминаване през синтез, разположение, STA, маршрутизиране и т.н. ще завършите с файл .gds в директорията /layout/. Използвайки Klayout, можем да отворим файла GDSII в програмата.

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

Когато премахваме слоевете, нашият дизайн съответства на функцията на AOI и съдържа 6 PNP и NPN транзистора. Когато сравним това с дизайна на AOI21X1в дизайна с вмъкнат HWT, те изглеждат напълно еднакви. Всъщност и двата дизайна съдържат BUFX2 (неинвертиращ буфер [Y=A]), INVX1 (инвертор [Y=!A]) и NAND2X1 (два -входен NAND порт [Y=!(A&B)]). Нека да разгледаме какви стандартни клетки е добавил нашият заразен дизайн.

Както виждаме, това не е толкова невидимо, колкото беше на ниво RTL симулация или дори вмъкване на троянски коне на ниво добавка, защото сега изглежда има още няколко врати. Нашият дизайн показва, че допълнителната клетка, която е добавена, е NAND3X1 до оригиналната NAND2X1. На всичкото отгоре беше добавен допълнителен NAND гейт с 2 входа близо до нашия неинвертиращ буфер.

От лявата страна имаме 4 транзистора, съставляващи нашия 2-входов NAND гейт, а изходът Y на този гейт е свързан към вход A на вмъкнатия 3-входов NAND гейт (от дясната страна), което влияе на изхода на тази порта. Този допълнителен гейт се състои от 6 транзистора, общо 10 допълнителни транзистора към заразения дизайн на IC. И така, къде се свързва всичко, за да повлияе на действителния физически изходен щифт?

Добавяйки слоевете обратно, можем да видим, че горният метален (зелен) слой показва два физически щифта, вход D и изход Y. Допълнителните два NAND порта, които са вмъкнати в този дизайн, в крайна сметка ще променят изхода на този щифт, когато е зададен конкретният тригер, което в нашия случай е, когато всички физически входни щифтове са настроени на 1. Когато сравнявате нашия Verilog код с нашия дизайн на IC, можете да видите приликите между двете и защо би било толкова трудно да ги хванете в някои точки на предварително производство. Можем да разгледаме 3D модела, за да видим представяне на това как би изглеждал върху вафла.

Ако не бяха допълнителните пълнители (двете големи празни оранжеви и жълти зони), които бяха автоматично поставени и насочени с QFlow върху долния HWT дизайн, те щяха да изглеждат почти идентични, защото двата допълнителни порта, обсъдени по-рано, не добавят много към дизайна.

Може би се чудите в какъв сценарий това би било злонамерено, страхотен въпрос. Представете си тези четири входни пина, когато всички са настроени на HIGH, очаквайки резултата от HIGH изход, който основно позволява на IC да заключи процесора в състояние без отстраняване на грешки. След като нашата атака промени дизайна, тя ще се увери, че когато всички пинове са настроени HIGH, изходът е LOW. Това поставя процесора в състояние на отстраняване на грешки, което би позволило на нападателите или противниците да научат за лична информация и IP относно вашата SoC (система върху чип), която не е предназначена да бъде публична.

Заключение

В тази статия разгледахме част от начините, по които човек може да вмъкне троянски коне, прегледахме методите за откриването им и проектирахме наши собствени от нулата, използвайки инструментите, с които разполагах. С това изследване можем наистина да видим как би изглеждал един заразен чип от страна на веригата за доставки.

Ето хранилището, което съдържа всички HDL и дизайнерски файлове, които направих по време на изследователската фаза на поставяне и маршрутизиране на моя хардуерен троянски IC.

Благодарим ви, че следите! Надявам се, че ви е харесало толкова, колкото и на мен. Ако имате някакви въпроси относно тази статия, моля, пишете ми DM в моя Instagram: @hackersclub или Twitter: @ringoware

Приятно ловуване :)

Специални благодарности на един от рецензентите на тази статия, Matthew Venn и неговия курс От нула до ASIC, който ме вдъхнови да започна да работя по дизайна на чипове.

Препратки