Кратко

  • RFC 7474 объединяет 32-битный boot count и 32-битный счётчик пакетов. Эпоха хранится энергонезависимо, нижняя часть растёт при каждой отправке, а получатель отдельно для каждого типа OSPF отбрасывает значение, не превышающее последнее принятое.
  • Acee Lindem редактировал коллективный стандарт вместе с Manav Bhatia, Sam Hartman и Dacheng Zhang. Потеря постоянной истории при ремонте или замене требует смены старых ключей; обычный rollover безопасен только при доказанном перекрытии send/accept lifetime на обеих сторонах.

Запись дождалась потери памяти

Атакующий сохраняет корректно защищённый OSPF Database Description packet. Не зная ключа, он не меняет содержимое. Пока сосед помнит более высокий sequence, запись бесполезна. Затем adjacency падает, процесс запускается заново, volatile neighbor state исчезает. Пакет не получил новых прав; verifier потерял доказательство его возраста.

RFC 7474, опубликованный в Standards Track в апреле 2015 года, закрывает именно этот разрыв. В прежнем OSPFv2 криптографический sequence был частью состояния adjacency. При её исчезновении значения могли инициализироваться заново, открывая inter-session replay при всё ещё верном digest.

Полная группа авторов — Manav Bhatia, Sam Hartman, Dacheng Zhang и редактор Acee Lindem. Публичный профиль IETF подтверждает участие Lindem и более широкий список routing RFC, но не единоличное изобретение, владение OSPF или качество реализации. Установлен более узкий вклад в общий результат: security chronology переживает отказ, который раньше её стирал.

Сильный hash не знает времени

RFC 5709 ранее ввёл HMAC-SHA для OSPFv2. Его авторы — Manav Bhatia, Vishwas Manral, Michael Fanto, Russ White, Michael Barnes, Tony Li и Randall Atkinson; Lindem среди них нет. Алгоритм усложняет подделку, но не делает правильно созданный старый пакет просроченным.

RFC 6039 авторов Vishwas Manral, Manav Bhatia, Joel Jaeggli и Russ White разбирает manual keys в routing protocols: долгоживущие секреты, трудный rollover, replay и нехватку контекста. Это источник threat model, а не труд Lindem.

Статус authentication succeeded доказывает соответствие защищённых bytes ключу. Он не доказывает текущую boot epoch, source address, по которому OSPF определяет neighbor, или домен OSPFv2 для использования секрета. Integrity, freshness и context нельзя свести к одному индикатору.

Эпоха проходит через выключение

RFC 7474 расширяет sequence до 64 bit. Верхние 32 bit — boot count, нижние — строго возрастающий packet counter. Первая половина именует эпоху, вторая ставит сообщение на место внутри неё.

Boot count должен храниться в non-volatile storage весь срок эксплуатации OSPFv2-router. При каждой потере прежнего sequence state, включая cold restart, он увеличивается. Разрешено использовать snmpEngineBoots, однако отдельный счётчик OSPF рекомендован, чтобы разные причины перезапуска SNMP и routing не делили одну security clock.

Нижний счётчик растёт с каждым отправленным OSPF-пакетом. Получатель требует значение больше последнего принятого от этого neighbor для того же packet type. Иначе следует replay drop. Разделение типов позволяет законное изменение порядка между Hello и Link State Update при приоритетной обработке.

При wrap нижней части boot count можно снова увеличить, сохраняя монотонность агрегата. Перезагрузка не скрывается — она становится аутентифицированной сменой эпохи, которую старая capture не перескочит.

Восемь octets sequence располагаются после OSPF packet и входят в digest. Authentication type 3 обозначает форму, Key ID расширен до 32 bit. Если эпоха не защищена, атакующий сможет заменить как раз доказательство возраста.

IP source становится частью доказательства

Старый расчёт не защищал IPv4 header. Но в broadcast и NBMA OSPF использует source address, чтобы определить отправившего neighbor. Подмена источника в capture могла изменить sequence state другого соседа без нарушения digest.

RFC 7474 помещает IPv4 source в первые четыре octets padding из RFC 5709. Sender использует адрес отправки, receiver — фактически пришедший. Изменение вызывает authentication failure и ограничивает отражённые пакеты, создающие видимость one-way связи или нарушающие Database Description exchange.

Документ не фиксирует весь IPv4 header. Он защищает факт, которым OSPF назначает соседскую идентичность. Это малая общая спецификация с конкретным эффектом.

Секрет получает протокольный домен

Long-lived key database может давать один secret нескольким протоколам. RFC 7474 добавляет двухоктетный OSPFv2 Cryptographic Protocol ID перед использованием ключа. Даже если stored secret общий, effective context теперь относится к OSPFv2.

Это не делает sharing желательным: компрометация материала остаётся общей, а независимые ключи уменьшают blast radius. Domain separation ставит границу там, где shared infrastructure уже существует.

Rollover — это перекрытие во времени

Передающий key действует в SendLifetime, принимающий — в AcceptLifetime. Новый можно сначала открыть на приём, затем сделать предпочтительным для передачи; старый ограниченно принимается после переключения. Так continuity не требует единого мгновения на всех устройствах.

Выбор также зависит от algorithm, peer или area, interface и direction. Явное совпадение важнее all. Среди нескольких допустимых transmit keys выбирается ключ с самым поздним началом send lifetime. Packet Key ID находит симметричный секрет у receiver, но не отменяет проверку scope и времени.

Последовательность такова: распространить новый key, открыть acceptance, перенести send authority, наблюдать оба конца, закрыть старый. Два ключа в config не доказывают overlap, правильные clocks или реальный выбор на wire.

Совместимость обязана сказать «нет»

Authentication type 3 не делает silent downgrade. Несовпадение с типом interface приводит к drop по правилам OSPF. При частичной миграции adjacency может не подняться. Это безопаснее зелёного состояния, где концы по-разному понимают freshness.

Change unit включает обе стороны: code, type, algorithm, Key ID, secret, lifetime и epoch. Успех — взаимное принятие новых пакетов, отказ старой capture, стабильная adjacency и наблюдаемый forwarding, а не сохранение config на первом router.

Потерянная история делает старым и ключ

Главное эксплуатационное правило касается repair, upgrade и replacement. При потере non-volatile boot count authentication keys должны измениться. Восстановление Router ID, areas, interfaces и старого secret file возвращает административный образ, но не эпоху, отделявшую сегодня от вчера.

Старый ключ рядом со сброшенной epoch снова допускает прошлые captures в низкое sequence space. Замена оборудования становится cryptographic lifecycle event.

Ограничения названы. Полный идентичный replay установления сессии для выведенного router остаётся крайне маловероятным сценарием; rekey блокирует и его. Два прослушиваемых unnumbered point-to-point links с одинаковым source и sequence должны использовать разные keys. Automatic key management вне scope.

Малая общая форма, большая локальная ответственность

Поздний текст Lu Heng Minimum Initial Specification, Localized Future Decision, and Voluntary Adoption служит Sofia Ren аналитической рамкой. Sequence, authenticated source, protocol ID, Key ID и reject rule могут быть общими. Generation, custody, scope, timing, rollout и recovery остаются локальными.

Running-Code Primacy связывает persistent count, emitted sequence, selected key, source-bound digest, решение receiver, replay counters, adjacency и forwarding. Это последующий анализ Sofia Ren, а не частное намерение Lindem или IETF за пределами RFC.

Атакующий способен помнить прошлое дольше маршрутизатора. RFC 7474 требует доказуемой памяти в ответ. Если router больше не может подтвердить прежнюю эпоху, старый ключ не должен удостоверять его новую жизнь.

Источники