Непомітність для перевірки безпеки SoC. Інновації в верифікації

Вихідний вузол: 1853830

Фаззинг для верифікації програмного забезпечення — це те, що випадкова перевірка апаратного забезпечення. Чи може підхід фаззингу покращити тестування безпеки обладнання? Пол Каннінгем (GM, Verification at Cadence), Рауль Кампозано (Silicon Catalyst, підприємець, колишній технічний директор Synopsys) і я продовжуємо нашу серію дослідницьких ідей. Як завжди, відгуки вітаються.

Фаззинг для перевірки безпеки SoC

Інновації

Вибір цього місяця - HyperFuzsing для перевірки безпеки SoC. Автори представили цю статтю на ICCAD 2020. Вони з IIT Kanpur.

Це інтригуючий підхід до фаззингу, адаптований спеціально для сучасного дизайну SoC. Це спирається на гіпервласність перевірка в динамічному моделюванні. Ці гіпер-властивості пояснюють поведінку набори слідів, підхід, який добре підходить для перевірки безпеки. Автори пропонують як приклади перевірки інформаційного потоку (привілейовані дані не можуть просочуватися з A в B, скажімо) і перевірки на відсутність втручання (конкурсні дії не повинні заважати потоку обчислень). Потім безпека перевіряється шляхом порівняння пакетів симуляційних трас із підробкою та без несанкціонованого втручання.

Втручання в цей підхід може моделювати різні типи вразливостей до ненадійних джерел. Шляхом рандомізації інструкцій прошивки, запису інструкцій від компонента до NoC або перевертання бітів у пам’яті. Автори також пропонують кілька нових показників охоплення. Вони розроблені для того, щоб направляти ітерації для втручання навколо випадків, на які найбільше вплинули попередні втручання.

Їхній тестовий приклад — це невеликий, але репрезентативний SoC (подробиці див GitHub) тестування мікропрограми на криптографічні блоки, перевірка на відсутність перешкод та інші вразливості. Вони також запускають безпечне завантаження з перевіркою блоків даних. Вони виявили численні порушення безпеки в криптоблоках, за винятком блоків, які включають захист ECC.

Погляд Павла

Перевірка безпеки є такою важливою темою, і над цим триває багато роботи як в наукових колах, так і в промисловості. Ця стаття чудово поєднує рандомізоване покриття на основі мутацій із «гіпервластивостями» над наборами трас симуляції, щоб створити інноваційне рішення, яке одночасно є масштабованим і ефективним для демонстрації недоліків безпеки.

Деякі властивості безпеки можна формально визначити лише над набором трас симуляції. Наприклад, «невтручання» означає, що зловмисник не може втручатися в певні захищені обчислення в проекті. Щоб продемонструвати інтерференцію, вам потрібно порівняти дві траси, ідентичні за вхідним стимулом, за винятком наявності деяких дій зловмисника в одній трасі. Якщо будь-які захищені обчислення в атакованій трасі відрізняються від обчислень у золотій трасі, це означає втручання.

Автори створюють власну особливу мову для тверджень щодо кількох трас і використовують її для формулювання властивостей безпеки для невтручання та конфіденційності. Вони створюють настроюваний потік для випадкового втручання в симуляції та перевірки їхніх властивостей безпеки між підробленими та непідробленими симуляціями. Їхній алгоритм випадкового втручання також має елегантну евристику навчання на основі покриття, яка допомагає ефективніше знаходити недоліки безпеки.

Ідея твердження над кількома симуляціями є дуже потужною. Цікаво, чи можливо було б чисто розширити SystemVerilog для підтримки таких типів тверджень. Це може відкрити двері для деяких переконливих власних розширень комерційного моделювання та формальних інструментів. Іншою можливістю може бути розширення нового портативного стандарту стимулів (PSS), щоб включити твердження, які охоплюють кілька згенерованих тестів.

Ця стаття є легкою та приємною для читання, хоча я хотів би трохи більше подробиць про результати. Автори стверджують, що їх рішення знаходить діри в безпеці в тестовому випадку SoC з відкритим вихідним кодом, але немає подробиць про те, що це за діри або як їх підхід порівнюється з іншими підходами в літературі, які можна застосувати для пошуку тих самих дір.

Погляд Рауля

Спочатку я збираюся поглянути на це з точки зору технологічної зрілості. Мені подобається ця ідея в цілому, дуже цікавий підхід до оцінки безпеки в дизайні. Тим не менш, кожна конструкція вимагає від дизайнерів надати вихідні тести, втручання та специфікації безпеки на новій мові тверджень. Для мене це наразі міцно прив’язує підхід до академічної сфери. Чудово підходить для дисертацій і статей, ще не наближається до чогось, що могло б перейти до комерційного застосування.

Я ставлю капелюха інвестора для другого виклику. Безпека – важлива тема, без сумніву. Але поза кількома областями, які ми вже знаємо, – наприклад, аерокосмічна промисловість, оборона, платіжні системи та процесори/сервери. Це все ще не екзистенційна проблема для більшості OEM-виробників і розробників компонентів. Вони готові поставити галочку, якщо від цього зазвичай очікують. Але лише якщо вплив на вартість або час виходу на ринок незначний. Тому що їхні клієнти зазвичай не будуть платити більше за безпеку. Це робить безпеку для більшості ринків все ще залежною від готової IP-адреси, як-от коріння надійності обладнання та прості у використанні програми. Рішення, упаковані одним із цих способів, будуть придатними для інвестицій, інакше не дуже.

Мій погляд

Пол і Рауль розглянули більшість із того, що я міг запропонувати. Мені подобається ідея Пола щодо розширення SVA, принаймні для заохочення експериментів із гіпервластивостями. Це має відкрити новий клас цікавих тестів, що зрештою призведе до нових комплексних методів перевірки.

Поділитися цим дописом через: Джерело: https://semiwiki.com/eda/299391-fuzzing-to-validate-soc-security-innovation-in-verification/

Часова мітка:

Більше від Semiwiki