Кратко

  • RFC 5387 допускает симметричную, одностороннюю и распределённую по слоям аутентификацию, но channel binding должен проверяться на обоих концах.
  • Посредник способен соединить две сильные IPsec SA. Шифрование каждого плеча остаётся настоящим, а утверждение о едином канале между приложениями — ложным.

Переход, который выглядел непрерывным

У каждой SA есть срок жизни по времени или объёму данных. Когда он заканчивается, система создаёт новую. Порты, адреса и приложение остаются прежними, поэтому оператор воспринимает событие как обычную замену ключа.

RFC 5387 предупреждает: непрерывность ассоциации существует только внутри одной SA, если отдельный механизм не доказал переход. В момент rekey злоумышленник на пути может подменить жертву и занять новую ассоциацию. Успешный handshake новой SA доказывает лишь её локальное создание.

Connection latch связывает поток с идентичностью peer и качеством защиты. Channel binding вводит данные, уникально описывающие пару SA, в аутентификацию верхнего уровня. Если свойства сохранены и проверены, поток может продолжиться. Если peer или защита изменились, канал должен сломаться до приёма новых данных.

Так выглядит перенос полномочия в технической форме. Новый ключ, оператор или агент не наследует смысл предыдущего решения только потому, что продолжает ту же работу.

Два защищённых плеча и ложная середина

Атакующий устанавливает SA A с клиентом и SA B с сервером. На обоих плечах работают конфиденциальность, целостность и защита от replay. Между ними посредник расшифровывает данные и снова шифрует их, пересылая верхнюю аутентификацию без изменений.

Оба журнала правдивы: каждый конец действительно видел IPsec. Но конечные точки сетевых SA не совпадают с конечными точками приложения. Из двух локальных фактов нельзя вывести прямой сквозной канал.

RFC 5387 требует привязать каждую SA к верхней сессии и её сторонам. RFC 5056 обобщает проверку: приложения подтверждают, что наблюдают одинаковые channel-binding data. Две созданные посредником связи дадут разные значения, и связанная аутентификация должна завершиться ошибкой.

Название протокола, адрес или сертификат не идентифицируют экземпляр. RFC 5929 и RFC 9266 показывают, что тип binding имеет точные свойства уникальности. Инвентарная запись «поддерживается» не равна квитанции конкретной сессии.

Направление идентичности выбирает политика

Публичный сервер может аутентифицироваться перед анонимным клиентом. В корпоративной системе клиент подтверждает пользователя в приложении, а сервер — сетевую идентичность в IKE. Разные слои естественно знают разных principals.

RFC 5387 описывает симметричные и асимметричные SAB и CBB. В A-CBB обычные IKE credentials есть только у одной стороны. Верхняя аутентификация тоже может быть односторонней. Клиент сверху и сервер снизу способны вместе дать взаимную аутентификацию, распределённую по слоям.

Но проверка самого канала остаётся двусторонней. Каждый конец должен получить binding и сравнить его со своим наблюдением. Свидетельство одной стороны не говорит, какую SA видел другой конец.

Кто обязан доказать имя — вопрос полномочий. Совпадает ли общий объект — вопрос согласованности доказательств. Политическая асимметрия не разрешает односторонне устанавливать общий факт.

Latch хранит обещание, а не процесс

IPsec-канал у RFC 5387 сохраняет peer identity и качество защиты на всём потоке. RFC 5660 позднее описал latching как наблюдение за изменениями SPD и SAD, способными нарушить исходные требования приложения.

Фиксируются тип защиты, transport или tunnel mode, криптографическое качество, локальная и удалённая идентичности. При несовместимом изменении верхний уровень получает синхронное уведомление, а не продолжает молча.

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

Между верхними сессиями latch иногда кэшируется против inter-session spoofing, но channel binding выполняется заново для каждой сессии. Память о прошлом не является согласием на настоящее.

Поздний отказ не означает нулевой ущерб

Полностью аутентифицированный IKE должен отвергнуть посредника при создании SA. В CBB неаутентифицированный IKE может успеть создать состояние. Ошибка появится позже, когда верхняя аутентификация проверит binding.

Это полезная граница принятия, но до неё расходуются CPU и память, передаются сообщения, иногда раскрывается материал, пригодный для офлайн-подбора пароля. Финальный отказ не стирает экспозицию.

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

Оператор должен видеть три состояния: SA создана, канал подтверждён, principal авторизован. Один зелёный статус делает причинность невидимой.

Испытание с настоящим посредником

Сначала клиент и сервер соединяются напрямую. Оба сохраняют binding value, верхнюю сессию, peer, качество защиты и результат аутентификации. Записи должны описывать один канал.

Затем контролируемый proxy строит две сильные SA и пересылает верхний обмен. Алгоритмы не ослабляются, пакеты не повреждаются. Ошибка binding должна показать неверную композицию при правильных компонентах.

Тест повторяется для server-only, client-only, двусторонней и разделённой по слоям аутентификации. Политика имени меняется, двусторонняя сверка — нет.

После этого выполняется rekey в длинном потоке. Один переход сохраняет свойства и проходит; другой меняет peer или качество и разрывает latch до следующих данных. Отчёт фиксирует, кто заметил расхождение, какое состояние удалено и что увидело приложение.

Квитанция композиции

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

Так сохраняется граница между хранителем записи и источником полномочия. Посредник может честно управлять двумя SA, но не вправе объявить их каналом, на который согласились стороны.

RFC 5387 защищает смысл доказательства: локальный контроль отвечает только за наблюдаемую границу. Сквозная истина появляется там, где конечные стороны сравнили один и тот же факт.

Источники