Cryptology Academy · Урок

Атаки по времени: извлечение ключей по времени выполнения

Продемонстрируйте атаку по времени работы кэша на реализации с непостоянным временем выполнения

Урок 1 из 412 шагов

«Атаки по времени: извлечение ключей по времени выполнения» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Что такое атака по времени

Атака по времени — это атака по побочному каналу, в которой злоумышленник измеряет длительность криптографических операций, чтобы извлечь секретные данные. Даже различия в несколько наносекунд могут раскрыть биты ключа.

Почему время выполнения раскрывает секреты

Ветвления и обращения к памяти внутри криптографического кода часто зависят от секретных значений. Цикл, досрочно завершающийся при нулевом бите, выполняется быстрее — атакующий измеряет эту разницу.

Атаки по времени кэша на AES

Классические обращения к таблицам AES попадают в строки кэша CPU, адреса которых зависят от байтов ключа. Такие инструменты, как Flush+Reload, позволяют атакующему наблюдать, к каким строкам кэша обращались.

Временной оракул RSA Блайхенбахера

Атака Блайхенбахера 1998 года использовала различия во времени проверки дополнения PKCS#1 v1.5. Миллионы специально выбранных шифротекстов могли раскрыть закрытый ключ RSA длиной 1024 бита.

Удалённые атаки по времени

Даже в сети различия во времени менее миллисекунды можно измерить, собрав достаточно образцов. Атака Lucky13 использовала измерение времени проверки MAC в режиме CBC в TLS через интернет.

Измерение времени в Python

Используйте time.perf_counter_ns() для измерений с наносекундным разрешением. Чтобы продемонстрировать уязвимое сравнение:

import time

def vulnerable_compare(a, b):
    for x, y in zip(a, b):
        if x != y:
            return False
    return len(a) == len(b)

start = time.perf_counter_ns()
vulnerable_compare(b"secret_key_here", b"wrong_key_xxxxx")
elapsed = time.perf_counter_ns() - start
print(f"Elapsed: {elapsed} ns")

Моделирование временного оракула

Временной оракул сообщает, верна ли догадка, AND одновременно выдаёт утечку времени. Мы можем восстанавливать секрет побайтно, измеряя, для какой догадки выполнение перед возвратом ложного значения занимает больше всего времени.

Статистический анализ данных о времени

Единичные измерения зашумлены. Атакующие собирают тысячи образцов для каждого кандидата и используют статистические критерии (t-критерий, критерий Welch), чтобы отличить сигнал от шума.

Атака Мангера на OAEP

В 2001 году Мангер показал, что даже RSA с дополнением OAEP раскрывает информацию, если реализация различает ситуацию «первый байт равен нулю» и другие ошибки, сообщая о них за разное время.

Примеры из реального мира

В OpenSSL, GnuTLS и NSS обнаруживались CVE, связанные с атаками по времени. Атака Lucky13 на TLS (CVE-2013-0169) затронула практически каждую библиотеку TLS на момент раскрытия информации о ней.

Проверка знаний

Какой статистический метод помогает атакующим отличить сигнал времени от шума измерений?

Повторение урока

Атаки по времени извлекают криптографические секреты, измеряя различия во времени выполнения. Они работают локально (через кэш) или удалённо (через сеть). Статистический анализ отделяет сигнал от шума. Решение — код с постоянным временем выполнения; он рассматривается в уроке «Контрмеры».

Можно начать бесплатно

Изучай Cryptology Academy с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
67
Уроки
261

Часто задаваемые вопросы

Урок «Атаки по времени: извлечение ключей по времени выполнения» бесплатный?

Да — полный текст урока «Атаки по времени: извлечение ключей по времени выполнения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «Атаки по времени: извлечение ключей по времени выполнения»?

Продемонстрируйте атаку по времени работы кэша на реализации с непостоянным временем выполнения Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Атаки по времени: извлечение ключей по времени выполнения»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Атаки по времени: извлечение ключей по времени выполнения
  2. Анализ энергопотребления: SPA и DPA
  3. Электромагнитные и акустические побочные каналы
  4. Меры защиты: маскирование, ослепление и код с постоянным временем выполнения
← Назад к Cryptology Academy