
Внедрение анализа/атак по побочным каналам (SCA) и контрмер, а также предоставление указаний, которые могут помочь при оценке безопасности принять их во внимание. Побочные каналы имеют отношение к криптографическим реализациям и, как таковые, вводят класс векторов атак в контексте блокчейна.
Цель этого поста — представить анализ/атаки по побочным каналам (SCA) и контрмеры, а также предоставить указания, которые могут помочь при оценке безопасности принять их во внимание. Побочные каналы имеют отношение к криптографическим реализациям и, как таковые, вводят класс векторов атак в контексте блокчейна.
Примечание. Определения в этом посте не обязательно взяты из учебников и отраслевых стандартов. Читатели, желающие углубиться в эту тему, могут ознакомиться с актуальными и актуальными результатами исследований и стандартизации.
Введение
Выполнение любого вычисления имеет физические характеристики. Для вычислений требуется некоторое время, а также потребляется некоторое количество энергии. Он производит электромагнитные колебания или даже издает звуки. Мы называем эти физические величины боковыми каналами (SC) вычислений.
Если бы мы измеряли SC во время выполнения вычисления, мы получили бы график, на котором горизонтальная ось обозначает время, а вертикальная ось обозначает значение величины (за исключением случая, когда мы измеряем общее время выполнения, что приведет к только одному значению а не график). Такой граф называется следом. Ниже показан пример трассировки мощности выполнения раунда AES. В аннотациях указываются различные внутренние этапы вычислений.

Информация побочного канала может использоваться для получения информации о входных данных выполнения. Предположим, что для выполнения разных входных значений требуется разное время. Кроме того, предположим, что вычисления являются детерминированными, выполняются изолированно (никакие другие операции не выполняются параллельно) и что мы имеем идеальную точность измерений и отсутствие шума измерений. Мы можем выполнить вычисление для всех возможных входных значений и собрать соответствующие им тайминги (не считая требований к хранению). При вышеупомянутых предположениях можно было бы измерить время, необходимое для выполнения с неизвестным входным значением, сравнить его с сохраненными таймингами и вывести входное значение. Если мы применим это в контексте криптографических алгоритмов, мы получим инструмент, который может помочь нам вывести секретные значения (закрытые ключи, одноразовые номера, открытые тексты и т. д.) из полученных следов. В оставшейся части статьи мы сосредоточимся на криптографических алгоритмах.
В действительности мы не ожидаем наличия 1-1 сопоставлений входных значений и трассировок, выполнение вычислений не изолировано от других выполнения или внутренней работы системы, измерения страдают от шума и зависят от точности использованное оборудование, что приводит к дополнительной потере информации. Более того, нельзя предполагать, что идентичное вычисление приведет к идентичным трассам (за исключением шума и других факторов), поскольку, как правило, последующие выполнения одного и того же вычисления на одном и том же входе не гарантированно будут выполняться точно таким же образом (представьте себе системные прерывания, кэши, вероятностные оптимизации, операции по исправлению ошибок и т. д.).
Факторы, которые уводят нас от идеального случая, можно разделить на две группы: те, которые способствуют потере информации, и те, которые загрязняют следы бесполезной информацией (и тем самым вносят неопределенность в анализ полученной информации). Первой группе можно противостоять, просто собрав больше информации, что, проще говоря, означает получение большего количества следов тех же вычислений. Последней группе можно противостоять с помощью комбинации статистических инструментов, позволяющих сосредоточиться на важной информации, а также выявить и удалить несвязанную информацию.
SC также можно использовать таким образом, чтобы влиять на работу цели вместо пассивного сбора информации. Возможность изменения поведения цели создает возможности для другого класса атак, называемых активными SC (так называемыми атаками сбоя или возмущения). Примеры включают изменение значения битов ячеек памяти путем многократного доступа к соседним ячейкам (Rowhammer) или стрельбы лазерными лучами по аппаратным компонентам для обхода критических проверок безопасности ( лазерная инъекция неисправностей). Мы упоминаем здесь этот класс атак только для полноты картины и не будем подробно останавливаться на нем.
В оставшейся части статьи мы введем некоторую терминологию, углубимся в два важных класса атак по побочным каналам, обсудим контрмеры и закончим методологией выполнения оценок безопасности в контексте SCA.
Моделирование угроз
В этом разделе мы подробно рассмотрим характеристики, которые играют важную роль при определении профилей злоумышленников в контексте атак SC. Для целей данного обсуждения мы определим свободную структуру.
Важно отметить, что эффективность атак по побочным каналам не зависит от слабых криптографических предположений (т. е. дискретного логарифма), ошибок в кодировании или несоответствия между спецификацией и реализацией. Побочные каналы представляют новые векторы атак, которые расширяют существующие модели потоков.
Знание системы
Важным фактором является то, сколько информации о целевой системе имеется у злоумышленника. Как минимум, злоумышленнику необходимо иметь некоторые знания (или уметь делать обоснованные предположения) об алгоритмах, которые выполняются на цели, и о том, что запускает их выполнение. Обычно предполагается, что злоумышленник обладает знаниями о деталях реализации (доступ к исходному коду или конструкции оборудования), поскольку эту информацию часто можно получить другими способами (обратное проектирование, обоснованные предположения, отраслевые стандарты и т. д.).
Близость
Определяющим фактором является необходимая близость злоумышленника к цели. Этот фактор используется в более общем плане при оценке любого типа уязвимости безопасности (см. CVSS). Мы можем позаимствовать и немного изменить общепринятую количественную оценку этого фактора и использовать ее в контексте SCA. Мы могли бы использовать следующие рейтинги:
- Физический — злоумышленник должен иметь возможность физически получить доступ к цели или изменить ее
- Локальный/Смежный — злоумышленник имеет или может получить позицию, которая логически локальна по отношению к цели (примеры: та же локальная сеть, возможность выполнять операции на общем оборудовании)
- Сеть (или удаленно) — это менее строгий уровень, обычно подразумевает, что злоумышленник может воспользоваться уязвимостью через Интернет
Типичными примерами атак, требующих физической близости, являются энергетические и электромагнитные SCA. Эти атаки требуют физического измерения энергопотребления или электромагнитных излучений на оборудовании цели, что в большинстве случаев требует проверки и даже модификации оборудования.
С другой стороны спектра мы чаще всего обнаруживаем тайминговые атаки, когда временные колебания достаточно различимы в таймингах сетевых коммуникаций.
Атаки по времени также могут быть локальными, и в этом случае они более эффективны, поскольку в сети меньше дрожания. В локальной категории мы находим мощный класс атак, называемый микроархитектурными атаками. В этих атаках используется тот факт, что различные процессы, работающие на современном ЦП, используют множество подкомпонентов ЦП (кэши, конвейер выполнения и т. д.). Совместное и чередующееся использование приводит к утечке информации о внутренних операциях вычислений.
В зависимости от цели и условий ее эксплуатации могут существовать возможности для удаленного проведения атак, которые традиционно требуют физической близости. Например, процессоры оснащены компонентами измерения мощности, которые помогают регулировать мощность. Если такой компонент доступен ОС через какой-либо интерфейс, то есть возможность получить следы питания без физического зондирования. Конечно, для такой атаки потребуются необходимые привилегии, в том числе сниженная точность измерений, но такая возможность будет. При защите от SCA разумно не использовать фиксированное мышление и, по крайней мере, учитывать наихудшие сценарии, подобные описанному выше.
Сложность атаки
Эта метрика различает атаки, которые легко воспроизвести, и атаки, в которых для каждой цели необходимо соблюдать особые требования. Типичные рейтинги – Низкий и Высокий соответственно.
Примеры:
- удаленная атака по времени на службу может быть оценена как высокая сложность, поскольку колебания времени будут зависеть от аппаратного обеспечения сервера, которое может значительно различаться в зависимости от цели.
- силовая атака на конкретную модель смарт-карты может быть оценена как Низкая, поскольку разные цели имеют высокую вероятность вести себя одинаково вплоть до самых низких технических уровней.
Привилегии
Различные атаки требуют разных привилегий на цели. Обычными значениями здесь являются Нет/Низкий/Высокий, где Низкий и Высокий обычно соответствуют доступу пользователя или администратора.
Случай «Нет» может представлять собой удаленную атаку по времени, когда злоумышленнику нужно только дождаться определенного трафика (или сгенерировать соответствующий трафик), который запускает целевой расчет.
Низкий регистр часто встречается при микроархитектурных атаках. Например, предположим, что целью является служба, размещенная на общем сервере. Злоумышленник должен быть конечным пользователем хостинг-провайдера и попытаться разместиться вместе с целью.
Случаи с высоким рейтингом в SCA встречаются реже. Мы могли бы создать гипотетический пример упомянутой выше атаки с удаленным питанием, предположив, что интерфейс датчика мощности доступен только пользователям с правами администратора.
Методология анализа побочных каналов
Процесс анализа побочного канала можно разбить на 4 этапа: настройка, сбор данных, обработка и анализ. Фактическая атака определяется как последний (5-й шаг) последующего анализа. Очень часто каждый шаг открывает новую информацию, которая может помочь уточнить предыдущие шаги. Кроме того, предположения, сделанные на предыдущих шагах, могут оказаться неверными, что приведет к повторению предыдущих шагов. Процесс изображен на следующем рисунке:

Фаза настройки в основном включает в себя подготовку цели и соединения с ней. Это может включать в себя модификацию оборудования (например, удаление конденсаторов), травление, пайку, выбор и подключение оборудования. При нефизических атаках это может включать в себя идентификацию служб, подготовку сетевого мониторинга и т. д. Когда атака является интерактивной, то есть злоумышленнику необходимо активно взаимодействовать с целью, а не просто осуществлять мониторинг, злоумышленнику может потребоваться подготовить входные данные и данные ответа. В конце этапа настройки злоумышленник должен иметь возможность подключиться к цели и иметь возможность активировать или получить уведомление о выполнении соответствующих вычислений.
В ходе захвата злоумышленник получает следы побочного канала. Это простая итерация процедуры триггер/уведомление-измерение-сохранение. Количество трасс, которые необходимо получить, определяется обработкой и, главным образом, этапами анализа. Злоумышленник первоначально получает эмпирическое и предполагаемое количество следов.
Обработка применяет общую обработку сигналов к полученным трассам для достижения снижения шума, уменьшения джиттера на смещенных трассах и т. д. Это важный шаг, который помогает удалить ненужную информацию из трасс.
Анализ является наиболее важным и определяющим шагом. Цель этого шага — оценить, достаточно ли у нас информации для начала атаки. Существуют разные виды анализов. Самый простой из них — визуальная проверка следов с целью обнаружения закономерностей, которые непосредственно соответствуют секретным данным. След ниже показывает этот случай:

Визуальный осмотр может не предоставить напрямую информацию, которую ищет злоумышленник, но может подсказать злоумышленнику, на чем сосредоточить внимание и как продолжить анализ. Чаще всего анализ включает статистические методы, которые, например, выявляют корреляцию между следами и секретными данными. Когда анализ показывает, что существует сильная связь между следами и секретными данными, аналитик может сделать вывод, что цель слаба по отношению к данному побочному каналу и злоумышленник готов начать атаку и получить секретные данные.
Атаки по побочным каналам используют парадигму «разделяй и властвуй». Информация по побочным каналам помогает раскрывать фрагменты секретных значений по одному. Значения-кандидаты для фрагментов ранжируются с использованием информации, полученной на этапе анализа, и проверяются во время атаки.
Временные атаки
Мы продолжаем объяснять атаки по времени. Примеры в этом разделе предполагают, что злоумышленник обладает полной информацией о цели, и мы действуем по модели CPA. Мы также уделяем особое внимание этапам анализа и атаки.
Пример 1
Простым примером временной атаки является непостоянное сравнение конфиденциальных данных.
fn check_password(in_pwd: [u8], pwd: [u8]) -> bool {
if len(in_pwd) != len(pwd) {
return false;
}
for i in 0..len(pwd) {
if in_pwd[i] != pwd[i] {
return false;
}
}
return true;
}
.
.
input_password = read();
.
.
compare(input_password, correct_password);
Функция check_password
вернет результат, когда либо вход m2
полностью просканирован, либо в первой точке, где m1
отличается от m2
. Время выполнения здесь зависит от количества начальных символов, совпадающих между предоставленными входными данными.
Злоумышленник может попробовать все возможные односимвольные пароли и собрать данные о времени выполнения. Пароль с правильным подбором первого символа будет иметь немного другое время выполнения, что сигнализирует злоумышленнику о необходимости перейти к перебору второго символа и так далее. Информация о времени в этом примере играет роль оракула для правильных символов пароля и используется в качестве эвристики для навигации по пространству паролей.
Усилия злоумышленника равны (n/2)∗l(n/2)∗l, где nn — алфавит пароля, а ll — длина пароля. Это огромное сокращение по сравнению с простой атакой методом перебора, требующей усилий nl/2nl/2.
Пример 2
Более продвинутый пример временной атаки основан на следующем фрагменте кода. Предположим, что это алгоритм, который принимает секретный ключ dd и сообщение mm и выводит подпись mm.
fn sign(m: Message, d: SecretKey) -> Signature {
let x = m;
for i in len(d)-1..0 {
x = x^2 mod n;
if d[i] == 1 {
some_operation(x,m);
}
}
return x;
}
Мы видим, что значение каждого бита секретного dd используется для определения того, будет ли выполняться какой-либо код. Это создает зависимость между значениями битов секрета и временем, необходимым для завершения работы алгоритма.
В образовательных целях мы начнем с неудачного примера атаки. Для простоты предположим, что выполнение кода внутри if
занимает постоянное время. С первой попытки мы быстро увидим, что можем утверждать, что общее время выполнения алгоритма будет учитывать вес хэмминга секрета (количество битов, установленное в 1
). Для заданного m
злоумышленник может легко собрать автономные измерения времени для всех весов хэмминга и сравнить с ними полученную трассировку. Это бесполезно для определения ценности секрета, за исключением некоторых тривиальных случаев. Когда злоумышленник знает вес kk секрета длиной nn, его усилия по перебору уменьшаются на eff=(nk)2eff=(nk)2. Поскольку предполагается, что секреты генерируются случайным образом, мы получаем статистически ожидаемый вес Хэмминга около 50%, или, иначе говоря, k=⌈n/2⌉k=⌈n/2⌉ или k=⌊n/2⌋k=⌊ n/2⌋, значение, которое максимизирует effeff. Кроме того, случайно сгенерированный секрет имеет ничтожную вероятность попасть в тривиальные случаи. Статистически ожидаемое усилие угадывания, например, 128-битного секретного ключа, составит (12864)2(12864)2, что недостижимо.
Атаки по времени, первоначально описанные Кохером, используют стратегию «разделяй и властвуй», заключающуюся в угадывании битов секрета один за другим. , руководствуясь статистической эвристикой. В любой момент во время этой атаки злоумышленник имеет рабочее предположение о bb битах секрета и пытается правильно угадать следующий бит b+1b+1. Злоумышленнику известен набор входных сообщений и соответствующие им измерения. Кроме того, они эмулировали время, необходимое для расчета первых угаданных битов bb для всех входных сообщений. Чтобы с высокой вероятностью правильно угадать следующий бит, злоумышленник вычисляет статистическую дисперсию эмулируемого времени выполнения битов b+1b+1. Если предположение b+1b+1 верно, дисперсия уменьшится, если нет — увеличится. Разница — это оракул, который помогает злоумышленнику шаг за шагом определить значение секретного ключа.
Существуют и другие варианты описанных выше методов, которые предлагают различные компромиссы с точки зрения точности, общности и т. д.
Микроархитектурные атаки
Микроархитектурные атаки — это класс атак по побочным каналам, которые используют утечку информации через общие аппаратные компоненты между процессами. Примерами источников утечки являются кэш-память и компоненты прогнозирования ветвей. Здесь мы поделимся примером, демонстрирующим атаки на основе кэша, также известные как атаки по времени кэширования. Существует множество различных вариантов атак с использованием тайминга кэша, основными из которых являются FLUSH+RELOAD, PRIME+PROBE и EVICT+TIME.
Давайте начнем с быстрого и упрощенного описания того, как работают кэши. Основная память находится вне процессора, она большая, но медленная, а кэш-память, находящаяся внутри процессора, умирает, она меньше, но быстрее. Основная память разделена на блоки, которые сопоставлены с адресами кэша (это упрощено, читатель может прочитать установить ассоциативные кэши для более точного описания). . Всякий раз, когда процессору требуется адрес, содержимое которого находится в основной памяти, а не в кеше, он извлекает соответствующий блок памяти в кеш.
Атаки с использованием тайминга кэша основаны на разнице во времени доступа к памяти между выборкой данных из кэша и основной памяти. Злоумышленник может подготовить кеш таким образом, чтобы заставить процесс-жертву извлекать определенные данные из основной памяти, а затем обнаруживать доступ, пытаясь получить доступ к той же строке/набору кэша после того, как процесс-жертва завершил операцию, и измерить время. он берет и таким образом делает вывод, обращалась ли жертва к определенным адресам. Если адреса этих данных соотносятся с секретным значением, то злоумышленник может обнаружить секрет.
Например, представьте, что процесс-жертва использует стороннюю библиотеку для вызова AES. Предположим, что реализация AES использует таблицы поиска для S-блоков и что эти таблицы охватывают более одной строки/набора кэша. Поскольку таблицы поиска являются константами, их адреса отображаются в двоичном файле библиотеки заранее до ее выполнения (мы принимаем упрощенный взгляд на систему и предполагаем отсутствие рандомизации адресов и т. д.). Злоумышленник может использовать FLUSH+RELOAD во время вызова AES жертвой. Для этого злоумышленнику необходимо очистить соответствующие строки/наборы кэша перед вызовом раунда AES, затем дождаться, пока процесс-жертва выполнит раунд AES, и, наконец, получить доступ к справочным таблицам и измерить время, необходимое для доступа. Если измеренное время считается низким, это означает, что жертва получила доступ к адресам, которые соответствуют этой строке/набору кэша, а если измеренное время считается высоким, это означает, что она этого не сделала. Поскольку S-блоки AES адресуются байтами секретного ключа, злоумышленник может определить (после нескольких измерений), каково значение секрета.
Важно подробно остановиться на модели микроархитектурных атак. Эти атаки не требуют физического доступа. Требуемые привилегии могут быть от минимума до нуля. Поскольку кэши совместно используются процессами, виртуальными машинами, гипервизорами и даже защищенными анклавами, злоумышленнику достаточно всего лишь разместиться на одном и том же оборудовании, а не обязательно на одном виртуальном сервере. Во всех случаях у злоумышленника должны быть доступные способы получения измерений времени, либо с помощью примитивов времени, либо с помощью других методов (иногда весьма творческих). Злоумышленнику также необходимы способы манипулирования кэшами, и в зависимости от доступных способов это может повлиять на необходимые привилегии.
Контрмеры
Прежде чем изучать различные контрмеры, важно поговорить о фактическом решении проблемы: устранении зависимости между физической величиной и конфиденциальными данными.
Решение в контексте атак по времени будет означать, что алгоритм будет выполняться за одинаковое время для всех различных значений секрета. В Примере 1 мы могли сравнить все символы ввода и правильный пароль. Это может выглядеть так:
fn check_password(in_pwd: [u8], pwd: [u8]) -> bool {
if len(in_pwd) != len(pwd) {
return false;
}
let result = true;
for i in 0..len(pwd) {
result = result && (in_pwd[i] == pwd[i]);
}
return result;
}
В Примере 2 мы могли бы эмулировать логику выбора if
, не страдая от изменений времени:
fn sign(m: Message, d: SecretKey) -> Signature {
let x = m;
for i in len(d)-1..0 {
x = x^2 mod n;
x = d[i] * some_operation(x,m) + (1-d[i]) * x;
}
return x;
}
Решением атак с использованием тайминга кэша может быть размещение данных, к которым обращаются части секретного ключа, в одну строку кэша или, альтернативно, загрузка в кэш всех данных, к которым можно обратиться с помощью значений, полученных из секретного ключа, независимо от того, какие из них необходим при каждом конкретном доступе к памяти.
Полное устранение зависимости — наиболее эффективный способ противодействия побочному каналу, но, к сожалению, зачастую это слишком дорого или даже невозможно для каждого побочного канала. В этом разделе мы рассмотрим распространенные контрмеры.
Цель контрмер — сделать потенциальную атаку настолько дорогостоящей, чтобы она не оправдывала усилия и ресурсы злоумышленника. Квантование затрат и усилий является результатом оценки рисков и выходит за рамки данной статьи. Для более структурированного представления мы сгруппировали различные контрмеры в 4 категории, которые соответствуют 4 этапам анализа побочных каналов.
Контрмеры, нацеленные на этап настройки, обычно включают механизмы, которые либо скрывают точки проверки, требующие от злоумышленника дополнительных усилий для их достижения, либо механизмы, которые обнаруживают присутствие злоумышленника.
Некоторые примеры сокрытия от физических атак — сделать выводы чипа недоступными, используя приманки и экранирование. Общие методы обнаружения могут включать в себя физические механизмы защиты от несанкционированного доступа, такие как предохранители и кнопки предварительной настройки. Для удаленных и программных атак по побочным каналам предлагаются механизмы обнаружения, основанные на поведенческом анализе.
На этапе сбора данных может возникнуть не так много препятствий, кроме уменьшения сигнала за счет ослабления или экранирования источника побочного канала.
Фаза обработки может усложниться из-за добавления шума (хотя и не очень эффективно). Внесение несовпадений также может увеличить трудоемкость обработки. Несоосность можно рассматривать как дрожание; разные события, наблюдаемые в трассировках, не происходят в один и тот же момент времени, и даже вся трассировка может быть перемещена во времени (относительно точки запуска).
Наконец, что еще более важно, контрмеры, нацеленные на этап анализа, включают в себя введение фиктивных операций, которые приводят к внедрению бесполезной информации и методов декорреляции, таких как ослепление и маскирование, которые уменьшают количество полезной информации, утекающей по побочному каналу. . Фальшивые операции должны быть максимально неотличимы от реальных, чтобы обеспечить максимальную эффективность. Ослепление — это метод, при котором конфиденциальные данные объединяются с некоторыми случайными данными, а результат используется в качестве секретных входных данных. После завершения работы алгоритма выполняется операция разблокировки для получения фактического результата алгоритма. Эффект ослепления заключается в том, что по побочному каналу происходит утечка информации о ценности скрытого секрета. Если злоумышленник получит замаскированный секрет, ему все равно потребуется значение этого секрета, чтобы иметь возможность получить действительный секрет. Если слепое значение периодически выбирается случайным образом, то разные группы трассировок относятся к разным скрытым секретам, что затрудняет даже первоначальное получение скрытого секрета.
Не существует общего способа измерения эффективности контрмер. Некоторые метрики включают степень, в которой контрмера увеличивает количество трассировок, необходимых для получения того же объема информации, количество дополнительных шагов, которые должен предпринять злоумышленник, а также уровень сложности инструментов, оборудования и знаний, необходимых для победить контрмеру.
Необходимо позаботиться о защите самих контрмер. Если, например, используется ослепление, но оно предсказуемо или его легко получить, оно будет неэффективным. Иногда к контрмерам можно применить атаки по побочным каналам, например, атаку по ошибке, которая обходит операцию ослепления.
В целом полезно использовать ряд контрмер, поскольку сложность атаки может быть увеличена непропорционально стоимости их реализации.
Оценка безопасности в рамках SCA
Завершая обсуждение SCA, мы переходим к теме оценки безопасности при рассматриваемом SCA. Подводя краткий итог, можно сказать, что польза SCA заключается в извлечении секретной информации из измерений физических величин. Измерения должны происходить параллельно с выполнением вычислений, использующих секретную информацию.
Здесь мы будем использовать оценку на основе активов. Этот выбор обусловлен тем фактом, что мы четко определили активы, секреты.
Можно начать с создания реестра активов, в котором перечислены все секретные значения. Следующим шагом будет определение точек, в которых используются секреты, которые являются точками с потенциальным раскрытием SCA. Мы назовем эти точки точками интереса (PoI). POI следует хранить вместе с типами SCA, которые могут быть использованы против них.
Далее, используя модель угроз, включающую профили злоумышленников, в которых перечислены возможности злоумышленников, можно ранжировать (и исключать) PoI и, таким образом, помогать расставлять приоритеты в усилиях по обеспечению безопасности.
На данный момент большая часть имеющейся у нас информации о чувствительности PoI к SCA является гипотетической и не основана на достоверных результатах. Один из возможных вариантов — провести анализ побочного канала и конкретную оценку уровня безопасности системы. Другой вариант — выполнить анализ первопричин и попытаться оценить уровень безопасности.
Первый вариант обычно предоставляет больше информации, поскольку он зависит от усилий и изобретательности злоумышленника. В ходе этого анализа аналитик выступает в роли злоумышленника в рамках заданного набора ограничений, которые могут выявить уязвимости, которые невозможно выявить с помощью простого системного анализа. При таком подходе можно рассмотреть и оценить более широкий спектр контрмер, поскольку выполняются все 4 этапа SCA. Обычно это самый затратный подход.
Второй вариант имеет больше смысла в тех случаях, когда параметры атаки можно четко и методично определить количественно путем анализа реализации и развертывания системы. Обычно это происходит, когда PoI напрямую открыт и когда он относительно изолирован от остальной системы. Этот подход предоставит информацию, которая поможет принять решение о контрмерах, нацеленных на этап анализа SCA.
Независимо от того, какой подход, мы должны в конечном итоге принять решение о том, какие контрмеры использовать. И, наконец, лучший шаг, который следует предпринять после реализации контрмер, — это переоценить уровень безопасности с помощью еще одного цикла SCA, который также будет включать в себя атаку на сами контрмеры.
Надеемся, что после всех этих усилий ваша система станет относительно безопасной. Независимо от этого, вам следует внимательно следить за любыми изменениями, которые могут повлиять на него, и периодически просматривать реестр активов и PoI, чтобы убедиться, что все остается в безопасности.
SCA в блокчейн-решениях
Как и любая система, использующая криптографию, решения блокчейна уязвимы для SCA. Пространство блокчейна в некотором смысле отличается от других секторов, использующих криптографию. Большинство решений основаны на криптографических примитивах, соответствующих стандартам, тогда как блокчейны, как правило, используют новую криптографию. Это создает разную динамику как для злоумышленников, так и для инженеров по безопасности. Поскольку имеется значительный объем предварительной работы и знаний об атаках по побочным каналам на стандартизированные примитивы, у злоумышленника есть ограниченные, но хорошо известные варианты. Блокчейны не обязательно следуют по этому пути, что может заставить злоумышленника приложить дополнительные усилия для обнаружения векторов атак. То же самое касается и контрмер; У стандартизированных примитивов есть зрелые контрмеры, из которых инженеры по безопасности могут выбирать, в то время как у более современной и новой криптографии было меньше времени, чтобы наверстать упущенное. Это оставляет больше возможностей для появления уязвимостей побочного канала, нацеленных на новую криптографию. Кроме того, хотя на рынке имеются готовые готовые реализации устойчивых к побочным каналам реализаций для стандартизированных примитивов, с новой криптографией дело обстоит иначе. Это предполагает усилия по обеспечению реализации новой криптографии в проектах блокчейнов.
Простой пример применения SCA в блокчейнах — получение закрытого ключа учетной записи путем атаки на кошелек. Существуют различия в запуске SCA для программных и аппаратных кошельков, но оба типа уязвимы. Злоумышленник может просто обойти проверку пароля и сразу же использовать кошелек или извлечь и использовать закрытый ключ учетной записи. Хотя этот пример имеет отношение к блокчейну, он нацелен не на само решение блокчейна, а на отдельного пользователя. В общем, любая точка системы, где используется секретный ключ, является потенциальной целью SCA. Примером из нашей работы над Anoma является опережающая защита, которую предлагают валидаторы, используя пороговое шифрование транзакций. Секретный ключ распределяется по шардам между валидаторами, и для выполнения криптографических операций необходим кворум. Злоумышленник, получивший достаточное количество фрагментов секретного ключа от валидаторов, может успешно взломать шифрование транзакции. Если предположить, что секретные ключи недостаточно защищены локально, злоумышленник может попытаться взломать серверы валидаторов и получить ключи. Если система подвержена утечке по побочным каналам, злоумышленнику не нужно будет взламывать систему, а скорее запустить временную атаку, измеряя ответы сети по таймингам (если они каким-то образом зависят от значения секретного ключа) или размещаться в одном месте с их и попробуйте микроархитектурную атаку. В зависимости от других факторов злоумышленник может счесть более простым или более масштабируемым запуск атак по побочным каналам.
Другим примером является нарушение конфиденциальности защищенных пулов с использованием метаданных, таких как время выполнения транзакции, близость участника и т. д. Злоумышленник, использующий эти данные, может, например, попытаться найти защищенные транзакции, исходящие из одной и той же учетной записи, на основе по некоторым поведенческим моделям или идентифицировать человека как владельца учетной записи на основе связи между метаданными транзакции и внешней фактической информацией (например, Алиса купила кофе в 17:12:53 в прошлый вторник, и в этот конкретный момент была совершена только одна транзакция). время).
Последние мысли
Атаки по побочным каналам являются мощным инструментом для атаки на криптографические реализации и могут повлиять на безопасность решений блокчейна. Это также пространство активных исследований, которые имеют тенденцию создавать новые творческие способы атаки. Проекты блокчейна могут получить выгоду, если будут следовать последним исследованиям в этой области и включать анализ побочных каналов в свои оценки безопасности.
Написано Джорджем Гкитсасом, ранее исследователем криптографии с нулевым разглашением & разработчик протокола в Heliax, команде, создающей протокол Anoma.
Если вас интересуют вакансии разработчиков криптографии с нулевым разглашением и передовых криптографических протоколов в Rust, ознакомьтесь с открытыми вакансиями в Heliax.