hacktricks/src/todo/hardware-hacking/side_channel_analysis.md

111 lines
7.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Side Channel Analysis Attacks
{{#include ../../banners/hacktricks-training.md}}
Атаки на основі побічних каналів відновлюють секрети, спостерігаючи за фізичним або мікроархітектурним "витоком", який *корелює* з внутрішнім станом, але *не є* частиною логічного інтерфейсу пристрою. Приклади варіюються від вимірювання миттєвого струму, споживаного смарт-карткою, до зловживання ефектами управління енергією ЦП через мережу.
---
## Основні канали витоку
| Канал | Типовий об'єкт | Інструменти |
|-------|----------------|-------------|
| Споживання енергії | Смарт-картки, IoT МК, FPGA | Осцилограф + шунтуючий резистор/HS зонд (наприклад, CW503) |
| Електромагнітне поле (EM) | ЦП, RFID, прискорювачі AES | H-провід + LNA, ChipWhisperer/RTL-SDR |
| Час виконання / кеші | Настільні та хмарні ЦП | Таймери високої точності (rdtsc/rdtscp), віддалений час прольоту |
| Акустичний / механічний | Клавіатури, 3-D принтери, реле | Мікрофон MEMS, лазерний віброметр |
| Оптичний та тепловий | LED, лазерні принтери, DRAM | Фотодіод / камера високої швидкості, ІЧ-камера |
| Витік, викликаний помилками | ASIC/МК криптографії | Глітч годинника/напруги, EMFI, лазерна ін'єкція |
---
## Аналіз потужності
### Простий аналіз потужності (SPA)
Спостерігайте за *однією* траєкторією та безпосередньо асоціюйте піки/долини з операціями (наприклад, S-блоки DES).
```python
# ChipWhisperer-husky example capture one AES trace
from chipwhisperer.capture.api.programmers import STMLink
from chipwhisperer.capture import CWSession
cw = CWSession(project='aes')
trig = cw.scope.trig
cw.connect(cw.capture.scopes[0])
cw.capture.init()
trace = cw.capture.capture_trace()
print(trace.wave) # numpy array of power samples
```
### Differential/Correlation Power Analysis (DPA/CPA)
Отримайте *N > 1 000* трас, гіпотезуйте байт ключа `k`, обчисліть модель HW/HD та корелюйте з витоком.
```python
import numpy as np
corr = np.corrcoef(leakage_model(k), traces[:,sample])
```
CPA залишається передовою технологією, але варіанти машинного навчання (MLA, глибоке навчання SCA) тепер домінують у змаганнях, таких як ASCAD-v2 (2023).
---
## Електромагнітний аналіз (EMA)
Проби EM ближнього поля (500 МГц3 ГГц) витікають ідентичну інформацію до аналізу потужності *без* вставлення шунтів. Дослідження 2024 року продемонструвало відновлення ключа на **>10 см** від STM32, використовуючи кореляцію спектра та недорогі RTL-SDR передавачі.
---
## Атаки на час та мікроархітектуру
Сучасні ЦП витікають секрети через спільні ресурси:
* **Hertzbleed (2022)** масштабування частоти DVFS корелює з вагою Хеммінга, що дозволяє *віддалене* витягування ключів EdDSA.
* **Downfall / Gather Data Sampling (Intel, 2023)** транзитне виконання для читання даних AVX-gather через потоки SMT.
* **Zenbleed (AMD, 2023) & Inception (AMD, 2023)** спекулятивне неправильне передбачення векторів витікає регістри між доменами.
Для широкого розгляду проблем класу Spectre дивіться {{#ref}}
../../cpu-microarchitecture/microarchitectural-attacks.md
{{#endref}}
---
## Акустичні та оптичні атаки
* 2024 "iLeakKeys" показав 95 % точності відновлення натискань клавіш ноутбука з **мікрофона смартфона через Zoom**, використовуючи класифікатор CNN.
* Швидкі фотодіоди захоплюють активність LED DDR4 і реконструюють раунди AES за <1 хвилину (BlackHat 2023).
---
## Введення помилок та диференційний аналіз помилок (DFA)
Комбінування помилок з витоком з боку каналу скорочує пошук ключів (наприклад, 1-трасовий AES DFA). Останні інструменти за ціною хобі:
* **ChipSHOUTER & PicoEMP** сплески електромагнітних імпульсів менше 1 нс.
* **GlitchKit-R5 (2025)** платформа для спотворення годинника/напруги з відкритим кодом, що підтримує SoC RISC-V.
---
## Типовий робочий процес атаки
1. Визначити канал витоку та точку монтажу (пін VCC, конденсатор декуплінгу, точка ближнього поля).
2. Вставити тригер (GPIO або на основі шаблону).
3. Зібрати >1 тис. трас з належним вибірковим/фільтраційним процесом.
4. Попередня обробка (вирівнювання, видалення середнього, LP/HP фільтр, вейвлет, PCA).
5. Статистичне або ML відновлення ключа (CPA, MIA, DL-SCA).
6. Перевірити та повторити для викидів.
---
## Захист та зміцнення
* **Постійний час** реалізації та алгоритми, стійкі до пам'яті.
* **Маскування/перемішування** розділити секрети на випадкові частки; сертифікована стійкість першого порядку TVLA.
* **Приховування** регулятори напруги на чіпі, випадковий годинник, двоєрельсові логіки, електромагнітні екрани.
* **Виявлення помилок** надмірні обчислення, порогові підписи.
* **Операційні** вимкнути DVFS/turbo в криптографічних ядрах, ізолювати SMT, заборонити спільне розміщення в багатокористувацьких хмарах.
---
## Інструменти та фреймворки
* **ChipWhisperer-Husky** (2024) осцилограф 500 MS/s + тригер Cortex-M; Python API як вище.
* **Riscure Inspector & FI** комерційний, підтримує автоматизовану оцінку витоків (TVLA-2.0).
* **scaaml** бібліотека SCA на основі TensorFlow (v1.2 2025).
* **pyecsca** відкритий фреймворк ECC SCA ANSSI.
---
## Посилання
* [ChipWhisperer Documentation](https://chipwhisperer.readthedocs.io/en/latest/)
* [Hertzbleed Attack Paper](https://www.hertzbleed.com/)
{{#include ../../banners/hacktricks-training.md}}