
В ожидании появления квантовых компьютеров пост-квантовая криптография (PQC) становится следующим рубежом для безопасных коммуникаций. Однако, несмотря на обещанную устойчивость к атакам квантовых компьютеров, схемы PQC открывают новые двери для более обычных, но не менее разрушительных угроз: атак сторонних каналов (SCAs).
Как показывают недавние исследования и сведения от промышленности (см. Блог Secure-IC, IACR ePrint), повышенная сложность и новые математические структуры в алгоритмах PQC часто увеличивают риск утечек, которыми могут воспользоваться злоумышленники. Современные атаки теперь сочетают машинное обучение с SCAs и даже нацелены на сами квантовые компьютеры, эксплуатируя информацию физического уровня.
В этом всеобъемлющем руководстве мы поможем вам понять:
Независимо от того, являетесь ли вы начинающим специалистом по безопасности или инженером по криптографии, нуждающимся в примерах кода и советах из реального мира, это руководство проведет вас от основ до продвинутых тем, охватывая всё, что нужно для защиты пост-квантового криптографического будущего.
Пост-квантовая криптография (PQC) относится к криптографическим алгоритмам, которые считаются защищёнными как от классических, так и от атак квантовых компьютеров. Наиболее известные классические схемы с открытым ключом — RSA, DSA, ECDSA — терпят поражение от алгоритма Шора на достаточно мощном квантовом компьютере.
В отличие от относительно простого возведения в степень по модулю в RSA, алгоритмы PQC часто полагаются на сложные алгебраические структуры, большие матричные умножения или огромные случайные входы. Эта добавленная сложность обычно означает больше, а не меньше возможностей для утечек сторонних каналов.
Атака стороннего канала — это атака, ориентированная не на вскрытие самой математики криптосистемы, а на использование информации, протекающей через её физическую реализацию. Это может включать время выполнение операций, потребляемую мощность, электромагнитные (ЭМ) излучения, звук/вибрации, использование кэша или даже излучение света.
Атаки на основе времени
Анализ мощности
Анализ электромагнитных излучений
Атаки на кэши и микроархитектуры
Акустические/эманционные атаки
Классическая криптография, такая как AES или RSA, со временем была оптимизирована для сопротивления атакам сторонних каналов - часто с использованием хорошо исследованных шаблонов кодирования с постоянным временем и регулярной поддержкой аппаратных средств.
Напротив, схемы PQC:
// Гипотетическая небезопасная операция NTT, иллюстрирующая потенциальный вектор атаки на основе времени SCA
uint64_t tic = rdtsc();
ntt(poly); // Прямое преобразование числовой теории
invntt(poly); // Обратная операция
uint64_t toc = rdtsc();
printf("Операция заняла %lu циклов.\n", toc - tic);
Если ntt() или invntt() зависимости времени работают с секретными данными (например, из-за неконстантных границ цикла), злоумышленник может собрать такую информацию и статистически вывести биты ключа.
По мере того как следы сторонних каналов становятся более объёмными и шумными, злоумышленники всё чаще применяют машинное обучение (ML) для автоматизации и усиления атак, особенно против реализаций пост-квантовой криптографии.
import numpy as np
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import train_test_split
# Загрузка следов и меток (например, из данных осциллографа)
traces = np.load("traces.npy") # traces.shape = (количество_образцов, длина_следов)
labels = np.load("labels.npy") # например, значение секретного бита для каждого следа
# Разделение данных
X_train, X_test, y_train, y_test = train_test_split(traces, labels, test_size=0.2)
# Простая нейронная сеть для классификации
mlp = MLPClassifier(hidden_layer_sizes=(100, 50), max_iter=500)
mlp.fit(X_train, y_train)
print(f"Точность на тесте: {mlp.score(X_test, y_test)}")
Фактические атаки используют более сложные подходы, но это иллюстрирует основное направление.
Подвержены ли сами квантовые компьютеры атакам сторонних каналов? Недавние исследования (arXiv:2304.03315) указывают на да — даже в облачных квантовых компьютерах.
Хотите проверить наличие утечек стороннего канала или измерить устойчивость вашей реализации PQC? Инженеры используют сочетание инструментов с открытым исходным кодом, аппаратных зондов и сценариев.
perf или пользовательские сценарии времени.# Пример: многократное время выполнения бинарного файла для анализа
for i in {1..1000}; do
./kyber_keygen >> timings.txt
done
valgrind, cachegrind или пользовательские сценарии Flush+Reload.gcc -O2 flush_reload.c -o flush_reload
sudo ./flush_reload ./target_binary
Предположим, мы измерили времена операций, мы можем быстро их проанализировать.
# Рассчитать среднее, минимальное и максимальное значение из данных времени в текстовом файле
awk '{sum+=$1; if(min==""){min=max=$1}; if($1>max)max=$1; if($1<min)min=$1} END {print "Среднее: "sum/NR, "Мин: "min, "Макс: "max}' timings.txt
import numpy as np
data = np.loadtxt("timings.txt")
print(f"Среднее: {np.mean(data)} циклов")
print(f"Стандартное отклонение: {np.std(data)}")
import matplotlib.pyplot as plt
traces = np.load("traces.npy") # (образцы, точки)
for i in range(3): # Построить график 3 случайных следов
plt.plot(traces[i])
plt.show()
Цель — обнаружить отклонение (время или мощность), связанное с секретной информацией.
Как можно смягчить атаки сторонних каналов в реализациях PQC? Необходим подход «глубокой защиты», сочетающий аппаратные, программные и протокольные методы.
Всё арифметика, доступ к памяти и кодовая логика должны быть независимыми от секретных данных.
// Безопасная, константная смена с использованием битовых операций
void cswap(int cond, uint32_t *a, uint32_t *b) {
uint32_t mask = -cond; // Все единицы, если cond == 1, 0 если cond == 0
uint32_t temp = mask & (*a ^ *b);
*a ^= temp;
*b ^= temp;
}
Примечание: Многие оптимизации компилятора могут подвести постоянное время; всегда проверяйте на реальном аппаратном анализе!
Маскирование: Разделите секреты на доли, выполняя все операции на замаскированных данных.
Ослепление: Добавьте случайные шумы/данные в вычисления, чтобы каждый запуск выглядел для злоумышленников по-разному.
На аппаратном уровне вводите шум в сигналы мощности или ЭМ, чтобы уменьшить коэффициент сигнал/шум для SCA.
С пост-квантовым переходом новые криптографические щиты открывают новые векторы атак. Атаки сторонних каналов, особенно усиленные машинным обучением, будут всё чаще становиться основным оружием против пост-квантовой криптографии — если вы не начнёте строить защиту заранее, часто и на каждом уровне.
Безопасность через строгость реализаций, прозрачность и непрерывные испытания не является опцией. Независимо от того, разрабатываете ли вы программное обеспечение, аппаратное обеспечение или оркестрируете облачные квантовые системы, понимание и смягчение рисков SCA — это основное требование для обеспечения долгосрочной жизнеспособности вашей криптосистемы в квантовую эру.
Готовьтесь заранее, стройте безопасно и тестируйте постоянно — ведь в мире пост-квантов атаки сторонних каналов никогда не спят.
Если вы нашли этот контент ценным, представьте, чего вы могли бы достичь с нашей комплексной 47-недельной элитной обучающей программой. Присоединяйтесь к более чем 1200 студентам, которые изменили свою карьеру с помощью техник Подразделения 8200.