Skip to content
Урок 6. Брутфорс: почему 1 байт — не защита

Урок 6. Брутфорс: почему 1 байт — не защита

Урок 6. Брутфорс подписи: почему 1 байт — не защита, а 4 байта — защита

Особый статус урока. Это единственный урок курса, дающий детям работающий метод атаки. Перед занятием обязательна процедура из документа 4 экспертизы, раздел 6: разговор о правовой границе (ст. 272–274 УК РФ) и подписание правил работы со средствами анализа защищённости — учеником и родителем. Без этого урок не проводится.

Ценностная рамка урока: мы изучаем нападение, чтобы понимать защиту. Цель — не умение подобрать подпись, а понимание, почему промышленные системы берут длинный ключ.

Паспорт урока

ПараметрЗначение
Место в модулеFoxHunter, модуль 2, урок 6 из 6 — финал курса охоты
Длительность45 мин
Возраст14–16 (правовая ответственность, показательная функция)
ОборудованиеЛиса, охотник, фальшлиса (атака 3 — брутфорс)
Предварительные знанияУроки 4–5: подпись, счётчик; степени двойки
ПредметМатематика (показательная функция), информационная безопасность

Образовательные цели

ЦельБлумМиллерЧем доказывается
6.1Рассчитывать стойкость подписи через размер пространства ключейприменятьзнает какРасчёт времени перебора MIC
6.2Оценивать достаточность длины ключа для модели угрозоцениватьзнает какОбоснование длины для сценариев
6.3Объяснять, почему линейная схема подписи уязвимаанализироватьзнает какРазбор: подпись = XOR ⊕ константа
6.4Связывать длину ключа с вычислительной стойкостьюпониматьзнает какОтвет: каждый байт ×256

Сценарий занятия (45 минут)

ВремяБлокЧто делает педагогЧто делают ученики
0–8Правовая рамкаРазговор о границе, подписание правилСлушают, подписывают
8–15Атака 3Запускает брутфорс, показывает счётчик перебораНаблюдают, как подпись «пробивается»
15–25Теория пространства ключейПочему 256 малоСчитают время перебора
25–33Уязвимость линейностиНаша подпись = XOR ⊕ константаПроверяют на бумаге
33–42ПрактикаЗадачи про 4 байтаРешают
42–45Финал курсаМостик к LoRaWAN, итог модуляЗаписывают

Блок 0. Правовая рамка (0–8 мин)

Обязательный блок. Не пропускать, не сокращать.

Что сказать

«Сегодня мы научимся ломать защиту. И прежде чем это делать, надо понять границу.

Разница между исследователем безопасности и преступником — не в знаниях и не в технике. Она в одном: есть ли у тебя разрешение владельца системы. Одно и то же действие законно на нашем учебном стенде и является преступлением в чужой сети.

В нашей стране за неправомерный доступ к компьютерной информации, за вредоносные программы и за атаки на инфраструктуру предусмотрена уголовная ответственность. По ряду статей — с 16 лет. Я обязан вам это сказать, а вы обязаны это понимать.»

Подписание правил

Каждый участник и родитель подписывают правила работы (текст в документе 4, §6.1). Без подписи ученик занимается теоретической частью без доступа к фальшлисе.

Ценностная формула урока

«Мы изучаем, как ломается слабая защита, чтобы уметь строить сильную. Специалист по безопасности знает атаки лучше злоумышленника — иначе он не смог бы защищать. Вы сегодня делаете первый шаг именно в эту сторону.»


Блок 1. Атака 3: брутфорс (8–15 мин)

Демонстрация

Педагог запускает фальшлису в режиме атаки 3. Она берёт один пакет и перебирает все 256 значений подписи по очереди, раз в секунду.

Что увидят дети

В мониторе фальшлисы — счётчик перебора: 1, 2, 3… И в какой-то момент, обычно в пределах пары минут:

[RX] fox_id=1 ... — охотник ПРИНЯЛ фальшивку!

Одно из 256 значений подписи совпало с правильным, и охотник принял поддельный пакет как настоящий.

Разговор

«Мы не знали ключа. Мы не вычисляли подпись. Мы просто перепробовали все варианты — и один подошёл. Почему это удалось так быстро?»

Ожидаемый ответ: вариантов всего 256, их можно перебрать.


Блок 2. Теория: пространство ключей (15–25 мин)

2.1. Базовый уровень (14 лет)

Через кодовый замок.

Представь навесной замок с одним диском на 10 цифр. Чтобы открыть, переберёшь максимум 10 положений — секунды. Замок с четырьмя дисками — уже 10 000 комбинаций, перебирать долго. Каждый добавленный диск умножает число комбинаций на 10.

Наша подпись — как замок с одним диском, только на 256 положений вместо 10. Перебрать 256 — минуты. Это не защита, это её видимость.

2.2. Углублённый уровень (14–16 лет)

Шаг 1. Пространство ключей.

Число возможных значений подписи определяется её длиной в битах:

N=2битыN = 2^{\text{биты}}
Длина подписиБитЧисло вариантов
1 байт8256
2 байта1665 536
4 байта (MIC)324 294 967 296 (≈ 4,3 млрд)
16 байт (полный AES)1283,4 · 10³⁸

Шаг 2. Время перебора.

В среднем правильное значение находится за половину пространства.

ПодписьСреднее число попытокПри 1 попытке/с
1 байт128≈ 2 минуты
2 байта32 768≈ 9 часов
4 байта≈ 2,1 млрд≈ 68 лет
16 байт1,7 · 10³⁸больше возраста Вселенной
Экспоненциальный рост. Каждый добавленный байт умножает стойкость на 256. Это показательная функция — она растёт так быстро, что уже 4 байта делают перебор бессмысленным, а 16 байт — невозможным даже для всех компьютеров планеты вместе. В этом сила криптографии: защищающемуся добавить байт легко, атакующему это стоит в 256 раз дороже.

Шаг 3. Почему реальная атака ещё дороже.

В нашем стенде перебор идёт 1 попытка в секунду, потому что фальшлиса шлёт пакеты в эфир и ждёт. Но и «ускориться» злоумышленник не может безгранично:

  • каждая попытка — это радиопередача, ограниченная duty cycle (нельзя занимать эфир непрерывно);
  • охотник обрабатывает пакеты с конечной скоростью;
  • в реальной системе после нескольких неверных подписей приёмник может временно блокировать источник.

То есть даже теоретические 68 лет для 4 байт на практике превращаются в тысячелетия.


Блок 3. Уязвимость линейности (25–33 мин)

Это углублённый материал для сильных. Показывает, что наша подпись слаба не только короткой длиной.

Разбор

Наша функция подписи:

sig = 0
для i от 0 до 7:  sig = sig XOR данные[i] XOR ключ[i]

Поскольку XOR коммутативен и ассоциативен, это равно:

sig=(iданныеi)(iключi)sig = \left(\bigoplus_i \text{данные}_i\right) \oplus \left(\bigoplus_i \text{ключ}_i\right)

Второе слагаемое — XOR всех байтов ключа — есть одна константа. Для нашего ключа DE AD BE EF CA FE 13 37:

K=DEADBEEFCAFE1337=0x32K = \text{DE} \oplus \text{AD} \oplus \text{BE} \oplus \text{EF} \oplus \text{CA} \oplus \text{FE} \oplus 13 \oplus 37 = \text{0x32}

Значит:

sig=XOR(данные)0x32sig = \text{XOR(данные)} \oplus \text{0x32}

Двойная слабость. 8-байтовый ключ фактически схлопнулся в один байт 0x32. Злоумышленнику даже не нужно перебирать подпись для каждого пакета — достаточно один раз подобрать константу K, и он сможет подписывать любые свои данные. Это делает схему ещё слабее, чем кажется по длине.

Причина — линейность XOR. Настоящие функции подписи (AES-CMAC, HMAC) нелинейны: изменение одного бита входа меняет примерно половину битов выхода непредсказуемо. Обратить их или «схлопнуть» ключ нельзя.

Проверка на бумаге

Дать классу пакет из урока 4 (01 64 00 00 00 E4 0C 02, подпись 0xBD) и убедиться:

  • XOR данных = 0x8F;
  • 0x8F ⊕ 0x32 = 0xBD — совпадает с подписью.

Вывод, к которому подводим: длина ключа важна, но структура функции важна не меньше. Короткий ключ ломается перебором; линейная функция ломается анализом.


Блок 4. Практические задачи (33–42 мин)

Уровень A (14 лет)

A1. Почему однобайтовую подпись удалось взломать за пару минут?

Ответ

Однобайтовая подпись имеет всего 256 возможных значений. Их можно просто перебрать по одному, и рано или поздно нужное совпадёт — в среднем за 128 попыток. При скорости 1 попытка в секунду это около двух минут.

A2. Во сколько раз больше вариантов у 2-байтовой подписи по сравнению с 1-байтовой?

Ответ

1 байт — 256 вариантов, 2 байта — 65 536. Отношение: 65 536 / 256 = 256 раз. Каждый добавленный байт умножает число вариантов на 256.

A3. Почему добавить защите один байт легко, а атакующему это тяжело?

Ответ

Защищающийся просто дописывает один байт в пакет. Атакующему этот байт увеличивает работу в 256 раз. Это несимметрично в пользу защиты — на этом и стоит криптография.

Уровень B (14–15 лет)

B1. Однобайтовую подпись перебирают за 2 минуты при 1 попытке в секунду. Сколько времени займёт перебор 4-байтового MIC при той же скорости?

Решение

Пространство: 2³² ≈ 4,3 · 10⁹ вариантов. В среднем — половина: ≈ 2,15 · 10⁹ попыток.

t=2,15109 попыток1 попытка/с=2,15109 сt = \frac{2{,}15 \cdot 10^9\ \text{попыток}}{1\ \text{попытка/с}} = 2{,}15 \cdot 10^9\ \text{с}

Переведём в годы: 2,15 · 10⁹ / (365 · 24 · 3600) ≈ 68 лет.

Вывод: переход с 1 на 4 байта превращает 2 минуты в 68 лет. Три добавленных байта дают множитель 256³ ≈ 16,7 миллиона.

B2. Наш маяк шлёт пакет каждые 300 мс, но правило duty cycle запрещает занимать эфир больше 10% в этом поддиапазоне. С какой максимальной скоростью реально идёт брутфорс, если каждая попытка — передача 41 мс?

Решение

При duty cycle 10% на каждую передачу 41 мс должно приходиться не менее 41 / 0,1 = 410 мс паузы.

Значит максимум — 1 попытка каждые ~410 мс, то есть около 2,4 попытки в секунду.

Для 4-байтового MIC это лишь ускоряет перебор в 2,4 раза: 68 / 2,4 ≈ 28 лет — всё равно нереально.

Вывод: даже сняв ограничение «1 в секунду», атакующий по радио упирается в физику эфира. Именно поэтому дистанционные атаки на длинный ключ безнадёжны.

B3. Почему наша подпись слаба даже помимо своей длины?

Решение

Функция линейна: sig = XOR(данные) ⊕ K, где K — XOR всех байтов ключа, то есть одна константа 0x32. Достаточно подобрать эту константу один раз (перебор 256 значений), и можно подписывать любые данные.

Восьмибайтовый ключ не даёт восьмибайтовой стойкости, потому что XOR его «схлопывает». Настоящие функции подписи нелинейны и этого дефекта не имеют.

Уровень C (15–16 лет)

C1. Обоснуйте выбор длины подписи для трёх сценариев с разной ценой взлома и разным бюджетом эфира.

Разбор
СценарийЦена взломаДостаточная длинаОбоснование
Учебная лиса в классенулевая (игра)1 байтзащита не нужна, слабость — учебный материал
Датчик протечки ЖКХложный наряд бригады4 байта (MIC)взлом за 68 лет исключён, +3 байта на пакет приемлемы
Замок или платёждоступ, деньги16 байт (128 бит)защита должна пережить десятилетия прогресса вычислений

Ключевая мысль: длина ключа выбирается под цену атаки, а не «побольше на всякий случай». Избыточная длина тратит эфир и энергию. Для маяка ЖКХ 4 байта — точный инженерный выбор: перебор нереален, а накладные расходы минимальны.

C2. Мощность современного компьютера — порядка 10⁹ проверок подписи в секунду (если бы проверка шла локально, а не по радио). За сколько времени он переберёт 4-байтовый MIC? А 16-байтовый (128 бит)?

Решение

4 байта (2³² ≈ 4,3·10⁹):

t=4,31091094 секундыt = \frac{4{,}3 \cdot 10^9}{10^9} \approx 4\ \text{секунды}

То есть локально 4-байтовый MIC вскрывается мгновенно! Он защищает только потому, что атака по радио ограничена скоростью эфира. Локально его недостаточно.

16 байт (2¹²⁸ ≈ 3,4·10³⁸):

t=3,41038109=3,41029 с1022 летt = \frac{3{,}4 \cdot 10^{38}}{10^9} = 3{,}4 \cdot 10^{29}\ \text{с} \approx 10^{22}\ \text{лет}

Это в триллионы раз больше возраста Вселенной (≈ 1,4·10¹⁰ лет).

Важнейший вывод: 4-байтовый MIC в LoRaWAN защищает от радио-перебора, а не от вычислительного. Настоящая криптографическая стойкость (против компьютера) начинается со 128 бит. LoRaWAN использует 128-битный AES для вычисления MIC, но передаёт лишь 4 его байта — их подделка по радио невозможна, а сам ключ 128-битный и не вскрывается вычислительно.

Это тонкое и важное различение: длина передаваемого MIC и длина ключа — разные величины.

C3. Предложите, как усилить нашу учебную подпись, не увеличивая её длину. Останется ли она взламываемой перебором?

Разбор

Не меняя длину (1 байт), можно устранить линейность: заменить XOR-схему на нелинейную функцию (например, взять младший байт от AES-шифрования данных ключом). Тогда:

  • «схлопывание» ключа в константу станет невозможным — исчезнет вторая слабость;
  • но перебор самой подписи по-прежнему даст 256 вариантов и вскроется за пару минут.

Вывод: нелинейность закрывает анализ, но не перебор. Против перебора помогает только длина. Настоящая защита требует обоих свойств: нелинейной функции И достаточной длины. Убрать любое — схема ломается тем или иным способом.

Это точная формулировка того, почему AES-CMAC (нелинейный, на 128-битном ключе, с 4-байтовым выводом) устроен именно так.


Блок 5. Финал курса охоты (42–45 мин)

Мостик к «взрослому» решению

«Мы прошли путь: научились находить лису, потом защитили её подписью, потом счётчиком, а сегодня сломали подпись перебором. Каждый механизм закрыл одну слабость и обнажил следующую.

Настоящий протокол LoRaWAN — тот, на котором работают наши маячок и датчик протечки, — решает ровно эти задачи по-взрослому: подпись 4 байта на 128-битном ключе AES-CMAC, счётчик кадров в защищённой сессии, шифрование содержимого. Мы своими руками поняли, зачем каждая из этих деталей нужна.»

Три механизма — три слабости

Слабость наивного протоколаМеханизм защитыУрок
Любой может притвориться лисойподпись (аутентификация)4
Записанный пакет можно повторитьсчётчик кадров5
Короткий ключ вскрывается переборомдлина ключа + нелинейность6
Главный принцип модуля, произнести вслух: сигналу нельзя верить слепо — ни его громкости (мощная лиса «горячо везде», урок 2), ни его содержимому (подделка и повтор, уроки 4–5). Доверие в технике строится не на вере, а на проверяемой математике. И эта математика имеет цену — длину ключа, эфирное время, — которую инженер осознанно платит под свою модель угроз.

Ответы на вопросы, которые прозвучат

Вопрос ученикаКак отвечать
«А можно взломать LoRaWAN так же?»Нет. Там 4-байтовый MIC на 128-битном ключе. Перебор по радио — десятки лет, вычислительный перебор ключа — дольше возраста Вселенной
«Если у меня мощный компьютер, я взломаю 4 байта за секунды?»Локально — да, за секунды. Но атака идёт по радио: ты не можешь проверять миллиард подписей в секунду через эфир. Ключ при этом 128-битный и вычислительно не вскрывается
«Зачем нам вообще давали слабую подпись?»Чтобы вы своими руками поняли, что защищает длина. Если бы мы сразу дали стойкую — вы бы поверили на слово. А теперь вы знаете
«Это законно — то, что мы делали?»На нашем оборудовании, с разрешения — да. На чужом — преступление. Разница только в разрешении владельца, мы об этом говорили в начале
«Квантовый компьютер всё взломает?»Он ускоряет перебор, но не отменяет его: для симметричного ключа эффективно уменьшает длину вдвое. Поэтому переходят на 256-битные ключи — квантово это снова 128 бит стойкости

Раздаточный лист (для печати)

Урок 6. Брутфорс и длина ключа

Правило пространства ключей: число вариантов = 2^(биты).

ДлинаБитВариантовСреднее время перебора (1/с)
1 байт8256≈ 2 мин
2 байта16
4 байта32≈ 68 лет
16 байт128больше возраста Вселенной

Экспонента: каждый байт умножает стойкость на 256.

Уязвимость нашей подписи (линейность):

sig=XOR(данные)K,K=XOR всех байтов ключа=0x32sig = \text{XOR(данные)} \oplus K, \quad K = \text{XOR всех байтов ключа} = \text{0x32}

8-байтовый ключ схлопнулся в 1 байт. Проверьте на пакете 01 64 00 00 00 E4 0C 02:

XOR данных = ____ ; ⊕ 0x32 = ____ ; подпись должна быть 0xBD.

Три механизма защиты — три урока:

СлабостьМеханизмУрок
притвориться лисой
повторить пакет
подобрать ключ

Мой вывод: почему длина ключа решает?

______________________________________________________


Домашнее задание

Обязательная часть

Врайтап по рубрике А. Обязательный пункт: объясните на примере, почему добавление одного байта к подписи так резко усиливает защиту.

Уровень A (для 14 лет допустимо в упрощении)

Посчитать число вариантов для кодовых замков: 3 диска по 10 цифр, 4 диска, 6 дисков. Записать, во сколько раз растёт при каждом добавленном диске.

Уровень B

Построить таблицу времени перебора для подписей 1, 2, 3, 4 байта при скоростях 1, 100 и 1000 попыток в секунду. Отметить, где перебор становится практически невозможным.

Уровень C

Изучить, как устроен AES-CMAC, и объяснить письменно два его отличия от нашей XOR-подписи: (1) почему его нельзя «схлопнуть» в константу; (2) почему передача 4 байт MIC не означает 4-байтовую стойкость ключа.

Ориентир для педагога

(1) AES — нелинейное преобразование с несколькими раундами замен и перестановок; лавинный эффект делает выход неотделимым от ключа, XOR-упрощение невозможно.

(2) Ключ AES — 128 бит и вычислительно не вскрывается. MIC (4 байта) — это лишь усечённый результат: его подделка по радио требует перебора 2³² (нереально по эфиру), но сам ключ при этом остаётся 128-битным. Атакующий не может по MIC восстановить ключ. Длина вывода защищает канал, длина ключа защищает секрет — это разные роли.


Итог урока: что записать в журнал

Вывод урока 6 и всего модуля безопасности

  1. Стойкость подписи определяется пространством ключей = 2^(биты).
  2. 1 байт (256 вариантов) вскрывается перебором за минуты; 4 байта (4,3 млрд) по радио — за десятилетия.
  3. Каждый добавленный байт умножает стойкость на 256 — показательный рост в пользу защиты.
  4. Наша подпись слаба вдвойне: короткая и линейная (ключ схлопывается в константу 0x32).
  5. Настоящая защита требует и длины, и нелинейности — это и есть AES-CMAC в LoRaWAN.
  6. Главный принцип: сигналу нельзя верить слепо — ни громкости, ни содержимому. Доверие строится на проверяемой математике, у которой есть цена.

Связь с курсом

Что родилось на этом урокеГде станет инструментом
Пространство ключей, стойкостьPowerSentry урок 7 (AES-CMAC против наивной подписи)
Показательная функция в защитеЛюбая работа с криптографией
Длина под модель угрозЗащита выпускного проекта
«Сигналу нельзя верить слепо»BeaconRadio урок 5 (спуфинг), весь курс

Чек-лист педагога перед уроком

  • Проведена правовая процедура (документ 4, §6), правила подписаны учениками и родителями
  • Фальшлиса прошита, атака 3 (брутфорс) работает, счётчик перебора виден
  • Проверено: перебор действительно пробивает подпись за приемлемое время урока
  • Фальшлиса на минимальной мощности, только в помещении, отдельный sync word
  • Оборудование хранится у педагога, на дом не выдаётся
  • Раздаточный лист распечатан
  • Продуман финальный разговор — это кульминация всего модуля охоты