Get Mystery Box with random crypto!

Breaking news! Дослідники з Ruhr University Bochum в Германії | Lampa

Breaking news! Дослідники з Ruhr University Bochum в Германії знайшли можливість зламати криптографічний захист Xilinx FPGA 7-ї серії (повністю) і 6-ї серії (частково)

Відео з конференції:



Посилання на статтю: https://www.usenix.org/conference/usenixsecurity20/presentation/ender

Для всіх чіпів Xilinx 7-ї серії існує можливість розшифрувати зашифрований бітстрім, а також створити власну версію зашифрованого бітстріму. Це може бути змінений оригінальний бітстрім, з доданими троянами, наприклад, або повністю новий бітстрім згенерований з вашого HDL у Vivado.

Для реалізації атаки необхідний доступ до одного з конфігураційних інтерфейсів (JTAG, або SelectMAP) та зашифрований бітстрім (який зберігається в зовнішній мікросхемі флеш пам'яті і може бути зчитаний під час конфігурації FPGA у випадку доступу до пристрою).

Бітстрімом (bistream) називають бінарний конфігураційний файл, який заванатжується в конфігураційну пам'ять FPGA (зазвичай після подачі живлення, після ресету, або за вимогою зовнішнього конфігураційного пристрою) і визначає з'єднання комутаційної матриці всередині FPGA (з'єднання між компонентами), вміст табличок істиності всередині логічних блоків побудованих на основі статичної пам'яті, вміст блоків вбудованої пам'яті, ініціалізаційні значення тригерів та інші конфігураційні параметри. Грубо кажучи це прошивка FPGA.

Бітстрім генерується системами автоматизованого проектування на зразок Xilinx Vivado. Для Xilinx формат бітстріма досліджений шляхом реверс інжинірінгу. Це дозволяє генерити бітстріми з HDL коду за допомогою відкритих (open source) тулчейнів на зразок SymbiFlow (https://symbiflow.github.io/getting-started.html). Формат бітстріму описаний тут: https://symbiflow.readthedocs.io/en/latest/prjxray/docs/index.html

Знаючи формат бітстріму, можна з бітстріму отримати нетліст - файл на низькому рівні певної HDL мови, який показує яким чином з'єднані в проекті примітиви FPGA. Частину бітстріму потім можна використовувати у власних проектах. Можна модифікувати бітстрім для додавання троянів з метою шпигунства. Про інструменти отримання нетліста з бітстріму можна почитати тут: https://www.mdpi.com/2079-9292/7/10/246

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

І от тепер цей механізм шифрування для Xilinx нічого не вартий внаслідок помилок в реалізації підсистеми конфігурації і криптографічного захисту FPGA. І нічого з цим не вдієш, окільки помилка на silicon рівні. Можна лише випустити нові мікросхеми з новою реалізацією відповідної підсистеми з відповідними змінами в Vivado. А це довго і дорого.