Кратко
- RFC 6528 сохраняет поступательное движение пространства последовательностей TCP, но скрывает связь между соединениями, добавляя ключевую функцию от локального и удалённого адресов и портов.
- Механизм затрудняет слепое предсказание вне пути трафика, но не превращается в аутентификацию: ротация секрета, TIME-WAIT, утечка через NAT и выбор временных портов остаются частью контура управления.
Начальный номер последовательности решает две задачи, которые тянут систему в разные стороны. Он должен двигаться вперёд, чтобы новая инкарнация соединения не приняла старый сегмент. И он не должен показывать, с какой точки начнётся следующее соединение. Одни наблюдаемые часы удовлетворяют первому требованию, но предают второе.
RFC 793 предлагал глобальный 32-битный генератор, увеличивавшийся примерно на единицу каждые четыре микросекунды. Опасность запоздавших сегментов была реальной, однако RFC 6528 отмечает, что значительную часть этой задачи уже берут на себя TIME-WAIT и правило тихого времени TCP. Тем не менее некоторые стеки, происходившие от BSD, использовали растущие ISN как эвристику для быстрого повторного открытия того же соединения. Часы стали одновременно привычкой совместимости и поверхностью для предсказания.
Предсказуемость имела значение, потому что злоумышленнику вне пути не всегда требовалось видеть ответ. Если следующий серверный ISN можно было оценить по предыдущему соединению, он мог подделать завершающий ACK трёхэтапного рукопожатия и воспользоваться службой, доверявшей адресу источника. Исторический пример удалённого входа в основном уступил место SSH, но RFC 6528 указывает, что доверие по адресу сохраняется в других системах. Изъян протокола и изъян модели доверия приложения усиливали друг друга.
Полностью независимый случайный выбор каждого ISN мешал бы прогнозированию, но мог нарушить эвристику повторного соединения, ожидающую монотонного движения. Хранение состояния каждого закрытого соединения восстановило бы безопасность ценой памяти. RFC 6528 выбирает третий путь: сохраняет продвижение внутри одной идентичности соединения и делает разные идентичности внешне несвязанными.
Частное смещение для каждого разговора
Рекомендация компактна: ISN = M + F(localip, localport, remoteip, remoteport, secretkey). M — таймер с шагом в четыре микросекунды. F — псевдослучайная функция от четырёхкомпонентного идентификатора соединения и секрета. Таймер сохраняет поступательную составляющую; ключевое смещение даёт каждой комбинации локального адреса, локального порта, удалённого адреса и удалённого порта своё видимое пространство последовательностей.
Важно не то, насколько сложной выглядит функция. F не должна вычисляться извне. Иначе ISN, увиденный в одном соединении, становится материалом для предсказания другого. Сам кортеж не секретен, поэтому защита держится на ключе и функции, чей результат невозможно восстановить без него.
Такое разделение избавляет от необходимости хранить историю каждого завершённого соединения. Повторное использование того же кортежа остаётся в продвигающемся пространстве благодаря росту M, а другой кортеж получает другое смещение. Это не случайность, приклеенная к TCP, а компромисс между непрерывностью пространства последовательностей и непрозрачностью между соединениями.
У секрета тоже есть жизненный цикл
RFC 6528 считает 128-битный ключ достаточным для своей модели угроз и допускает настоящий случайный либо отдельный для узла секрет. Вместо единственного интервала он называет события для ротации: запуск системы, истечение времени или достаточный объём использования. Это эксплуатационные решения, а не безобидная уборка.
Смена секрета меняет пространство последовательностей для повторно создаваемых соединений. Если система выполняет ротацию, не сохраняя состояние завершённых соединений, ей может потребоваться тихий период длительностью в две максимальные жизни сегмента. Средство защиты, игнорирующее TIME-WAIT, способно разрушить именно то свойство жизненного цикла, которое должно было сохранить.
RFC рассматривает MD5 как допустимый вариант реализации для узкой задачи против слепого угадывания по модели угроз 2012 года и предлагает оценить более сильные функции. Это не рекомендация MD5 для аутентификации, подписи или других областей, где его известные слабости существенны, и не свидетельство о нынешних настройках операционных систем.
Хорошие ISN остаются смягчающей мерой. Тот, кто видит начало обмена, узнаёт состояние последовательности, а атакующий на пути уже располагает более сильными возможностями. RFC 6528 называет IPsec и TCP-AO криптографическими границами аутентификации. Документ также фиксирует два соседних эффекта: разные пространства ISN могут помочь подсчитать узлы за NAT, а случайный выбор временных портов делает целевой кортеж труднее для угадывания.
Единственный источник — RFC 6528, опубликованный в феврале 2012 года в Standards Track. Он заменяет RFC 1948 и обновляет RFC 793. Документ описывает способ снизить риск слепого предсказания последовательности, но не сообщает о текущих настройках реализаций, практике ротации ключей или частоте атак.
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
