Comments 26
Глупый вопрос.
А на реальном железе и прошивках та же атака по питанию возможна за приемлемое время?
Когда кода нет и он не так прост.
Сами атаки на пропуск инструкции кажутся мне крайне серьезными, а защита от атаки крайне слабой — без использования случайных задержек в голову приходят только проверки паролей с поэтапным вычислением хеша так, чтобы пропуск любого этапа делал хеш не валидным.
Сложность в проведении Vcc-glitch-атаки заключается в подборе верных параметров импульса. Реализация этой атаки заняла больше всего времени по сравнению с остальными, поскольку успешное проведение Vcc-glitch-атак зависит от факторов, описанных выше.
Это да, но иногда можно просто вслепую фигачить много glitch'ей подряд и в итоге получается обойти защиту. Часто код так беззащитен, что можно и инструкцию проскочить или поменять её на другую или данные подменить с помощью glitch атаки.
Vcc-glitch
И как это всё поможет, если проставлен BODLEVEL и BODEN? :)
CLK-glitch
Так же бесполезен, если используется RC МК.
Помню как в детстве развлекались, через катушку+усилитель, можно было послушать переходные процессы в калькуляторе, но если много слушать, то не факт, что можно обнаружить нужные данные, ибо рисковая архитектура очень шумит (т.к. много процессов выполняется параллельно).
Я так полагаю, тут рассмотрены частные случаи, ибо порой имея код — х ногу сломит, а тут сгусток сигналов.
И как это всё поможет, если проставлен BODLEVEL и BODEN? :)
Не все, к сожалению, используют фичи безопасности МК (STM32, например, имеет Clock Security System (CSS) и PowerSupply integrity monitoring (POR/PDR/BOR/PVD)). Масочный загрузчик МК, о котором пойдет речь в следующей статье, эти механизмы не использует. В итоге VCC glitch отлично работает для обхода проверки запрета считывания основной прошивки. :)
Наша цель – обойти инструкцию if в строке 103 при введении неверного пароля и попасть в случай else на строке 106
Статья, насколько я понимаю, предназначена не для популярного журнала. Поэтому, наверное, стоило оговориться, что в реальности МК выполняет не инструкции C, а машинный код, в который они откомпилированы. При этом в современных МК используется конвейер команд, поэтому связь между их выборкой из памяти и выполнением нежёсткая. Соответственно, использование glitch-методов должно быть тщательно рассчитано с учетом особенностей компиляции и аппаратуры, иначе оно напоминает стук кулаком по корпусу компьютера, в надежде обойти пароль…
Особенности компиляции и аппаратуры конечно же влияют на параметры успешной glitch атаки. Но не обязательно тщательно рассчитывать все параметры glitch импульса, т.к. можно задать их автоматическое изменение в приблизительных диапазонах и ждать события, сигнализирующего об успешной атаке (например, сообщение о вводе верного пароля).
К примеру, обойдя бит защиты прошивки, можно считать ее из МК, что позволит в дальнейшем и определить интересующие алгоритмы работы устройства (в том числе алгоритм проверки пароля), и внести вредоносный код в прошивку МК (в результате чего открывается возможность управления устройством).
Цель glitch-атак — обойти какую-либо инструкцию
Не всегда, если вы можете при помощи glitch-атаки поменять бит ключа шифрования (никак не меняя и не пропуская интсрукций), то потом можно сравнив результаты шифрования с правильным и изменённым ключом этот самый ключ вычислить.
Это уже напоминает Differential fault analysis :) Там как раз вносят с помощью гличей ошибки и на больших выборках анализируют, что позволяет получить какую-то информацию. Так сказать смежный тип атаки: что-то от пассивных side channel attacks, что-то от активных (fault injection).
Но glitch — это способ внести ошибку в устройтво, а не полное описание атаки. Все glitch-атаки это активные атаки, так как над устройством совершают «непотребности», а не просто пассивно «смотрят и записывают» что оно делает. Glitch-атаки это подкатегория fault injection, так как glitch — только один из способов внести ошибку во время исполнения программы (можно ещё физически повредить часть микроконтроллера, например). В статье описаны несколько конкретных примеров glitch атак и способов устроить glitch, но не вся категория и не все способы. Можно glitch'и ещё устраивать при помощи лазера.
Согласен, можно еще излучением и перегревом. Но физическое повреждение — это уже инвазивная атака, все таки fault injection (glitch в статье и то, что Вы добавили) относятся к неинвазивным атакам, разве нет? Ну и, мне кажется, glitch является самым дешёвым способом (ну, может, дороже температурного воздействия).
Кстати, у chipwhisperer есть брат, который использует электромагнитное излучение для внесения ошибки — называется ChipShouter. На embedded world conference в Германии в 2019 году был их стенд, достаточно быстро вызывался сбой jmp в цикле.
Дак вот как только атака glitch, то это сразу активная, но не факт что инвазивная или неинвазивная итд.
А не пробовали на чём-то более быстром? На высоких частотах клока гораздо сложнее сформировать короткий импульс глитча, особенно по питанию.
А не знаете, есть ли практика уменьшения тактовой частоты для SCA-атак?
По идее если меньше частота то графики потребления мощности будут менее зашумленные
Мы не пробовали понижение частоты при SCA атаках, но это интересный вопрос который стоит проработать. По нашим наблюдениям, на уровень шума влияет номинал шунтирующего резистора. При увеличении резистора с 10 Ом до 24 Ом мы получили более «красивые» графики сигнатур.
Таким способом недавно ESP32 взломали https://limitedresults.com/2019/11/pwn-the-esp32-forever-flash-encryption-and-sec-boot-keys-extraction/
Атаки такого рода очень индивидуальны. Например, в Вашем процессоре внутренняя флеш-память. Теоретически, можно детальным анализом шины питания определить моменты чтения ПЗУ и побитно восстановить образ прошивки. А может удастся импульсом в нужный момент заставить процессор «думать», что защита от чтения не установлена, и считать всё программатором.
Здесь возникает вопрос, стоит ли результат затраченных усилий. Считать можно практически всё, вопрос времени и средств.
Аппаратные атаки на микроконтроллеры с использованием ChipWhisperer и методы защиты от них