Урок 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. Пространство ключей.
Число возможных значений подписи определяется её длиной в битах:
| Длина подписи | Бит | Число вариантов |
|---|---|---|
| 1 байт | 8 | 256 |
| 2 байта | 16 | 65 536 |
| 4 байта (MIC) | 32 | 4 294 967 296 (≈ 4,3 млрд) |
| 16 байт (полный AES) | 128 | 3,4 · 10³⁸ |
Шаг 2. Время перебора.
В среднем правильное значение находится за половину пространства.
| Подпись | Среднее число попыток | При 1 попытке/с |
|---|---|---|
| 1 байт | 128 | ≈ 2 минуты |
| 2 байта | 32 768 | ≈ 9 часов |
| 4 байта | ≈ 2,1 млрд | ≈ 68 лет |
| 16 байт | 1,7 · 10³⁸ | больше возраста Вселенной |
Шаг 3. Почему реальная атака ещё дороже.
В нашем стенде перебор идёт 1 попытка в секунду, потому что фальшлиса шлёт пакеты в эфир и ждёт. Но и «ускориться» злоумышленник не может безгранично:
- каждая попытка — это радиопередача, ограниченная duty cycle (нельзя занимать эфир непрерывно);
- охотник обрабатывает пакеты с конечной скоростью;
- в реальной системе после нескольких неверных подписей приёмник может временно блокировать источник.
То есть даже теоретические 68 лет для 4 байт на практике превращаются в тысячелетия.
Блок 3. Уязвимость линейности (25–33 мин)
Это углублённый материал для сильных. Показывает, что наша подпись слаба не только короткой длиной.
Разбор
Наша функция подписи:
sig = 0
для i от 0 до 7: sig = sig XOR данные[i] XOR ключ[i]Поскольку XOR коммутативен и ассоциативен, это равно:
Второе слагаемое — XOR всех байтов ключа — есть одна константа. Для нашего ключа DE AD BE EF CA FE 13 37:
Значит:
Двойная слабость. 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⁹ попыток.
Переведём в годы: 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⁹):
То есть локально 4-байтовый MIC вскрывается мгновенно! Он защищает только потому, что атака по радио ограничена скоростью эфира. Локально его недостаточно.
16 байт (2¹²⁸ ≈ 3,4·10³⁸):
Это в триллионы раз больше возраста Вселенной (≈ 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 |
Ответы на вопросы, которые прозвучат
| Вопрос ученика | Как отвечать |
|---|---|
| «А можно взломать LoRaWAN так же?» | Нет. Там 4-байтовый MIC на 128-битном ключе. Перебор по радио — десятки лет, вычислительный перебор ключа — дольше возраста Вселенной |
| «Если у меня мощный компьютер, я взломаю 4 байта за секунды?» | Локально — да, за секунды. Но атака идёт по радио: ты не можешь проверять миллиард подписей в секунду через эфир. Ключ при этом 128-битный и вычислительно не вскрывается |
| «Зачем нам вообще давали слабую подпись?» | Чтобы вы своими руками поняли, что защищает длина. Если бы мы сразу дали стойкую — вы бы поверили на слово. А теперь вы знаете |
| «Это законно — то, что мы делали?» | На нашем оборудовании, с разрешения — да. На чужом — преступление. Разница только в разрешении владельца, мы об этом говорили в начале |
| «Квантовый компьютер всё взломает?» | Он ускоряет перебор, но не отменяет его: для симметричного ключа эффективно уменьшает длину вдвое. Поэтому переходят на 256-битные ключи — квантово это снова 128 бит стойкости |
Раздаточный лист (для печати)
Урок 6. Брутфорс и длина ключа
Правило пространства ключей: число вариантов = 2^(биты).
Длина Бит Вариантов Среднее время перебора (1/с) 1 байт 8 256 ≈ 2 мин 2 байта 16 4 байта 32 ≈ 68 лет 16 байт 128 больше возраста Вселенной Экспонента: каждый байт умножает стойкость на 256.
Уязвимость нашей подписи (линейность):
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 и всего модуля безопасности
- Стойкость подписи определяется пространством ключей = 2^(биты).
- 1 байт (256 вариантов) вскрывается перебором за минуты; 4 байта (4,3 млрд) по радио — за десятилетия.
- Каждый добавленный байт умножает стойкость на 256 — показательный рост в пользу защиты.
- Наша подпись слаба вдвойне: короткая и линейная (ключ схлопывается в константу
0x32). - Настоящая защита требует и длины, и нелинейности — это и есть AES-CMAC в LoRaWAN.
- Главный принцип: сигналу нельзя верить слепо — ни громкости, ни содержимому. Доверие строится на проверяемой математике, у которой есть цена.
Связь с курсом
| Что родилось на этом уроке | Где станет инструментом |
|---|---|
| Пространство ключей, стойкость | PowerSentry урок 7 (AES-CMAC против наивной подписи) |
| Показательная функция в защите | Любая работа с криптографией |
| Длина под модель угроз | Защита выпускного проекта |
| «Сигналу нельзя верить слепо» | BeaconRadio урок 5 (спуфинг), весь курс |
Чек-лист педагога перед уроком
- Проведена правовая процедура (документ 4, §6), правила подписаны учениками и родителями
- Фальшлиса прошита, атака 3 (брутфорс) работает, счётчик перебора виден
- Проверено: перебор действительно пробивает подпись за приемлемое время урока
- Фальшлиса на минимальной мощности, только в помещении, отдельный sync word
- Оборудование хранится у педагога, на дом не выдаётся
- Раздаточный лист распечатан
- Продуман финальный разговор — это кульминация всего модуля охоты