Защо само шифроването не спира повторно изпратен пакет
Старият пакет запазва валиден етикет за удостоверяване, затова цялостта никога не доказва свежест. Състоянието на последователността и прозорецът на получателя вършат тази работа.
Защитените пакети не изтичат криптографски, затова пакет, валиден преди пет минути, е валиден и сега, защото шифроването и защитата на цялостта не казват нищо за момента, в който байтовете са създадени. Нападател, който може да прихване и препрати трафик, не е нужно да разбива шифъра. Затова всеки сериозен тунелен протокол носи състояние на последователността заедно с ключовете си.
Механизмът е малък и режимите му на отказ лесно се бъркат със загуба на пакети.
Валидният шифротекст не е свеж шифротекст
Удостоверяването отговаря на един въпрос: дошли ли са тези байтове непроменени от притежател на ключа. То не отговаря дали получателят ги вижда за първи път. Повторно изпратен пакет минава първата проверка безупречно и точно затова проверката само на цялостта не може да спре повторение и протоколът се нуждае от второ правило за приемане. Получател, който само удостоверява, няма защита срещу нападател със запис.
Това правило е евтино за прилагане и евтино за формулиране: приеми даден защитен пакет веднъж, под даден ключ. Всичко останало в тази област следва от това как реализацията следи този един път.
Да прочетеш отхвърляне на повторение като грешка при дешифриране те насочва към напълно грешната подсистема.
Номер на последователността и прозорец
IPsec ESP носи номер на последователността и получателят поддържа плъзгащ се прозорец от наскоро приети стойности, като спецификацията на ESP описва размера на прозореца по подразбиране и възможността да се разшири. WireGuard поема друг път с брояч за всеки ключ и явна проверка срещу него. Нито един дизайн не предполага, че пакетите пристигат подред, защото реалните мрежи ги пренареждат. И двата търпят пренареждане и нито един не търпи повторение.
Прозорецът е това, което прави тази толерантност възможна. Пакет малко под най-високата видяна стойност все още може да бъде приет, ако не е бил приеман преди; пакет много назад или такъв, чието място вече е маркирано, се отхвърля. Увеличете прозореца и ще търпите повече пренареждане срещу повече състояние за всяка асоциация.
Диагностичните броячи показват в кой случай сте. Отхвърлянията на повторения увеличават конкретен брояч, а не обща грешка, и четенето на този брояч е първото полезно наблюдение.
nstat -az | grep -i XfrmIn
ip -s xfrm state | head -n 30
wg show wg0 transfer
Състоянието принадлежи на ключа, не на хоста
Състоянието на брояча е вързано към асоциация за сигурност или към епоха на ключа, затова смяната на ключа създава нов контекст и собствено пространство на последователността. Изчистване на брояч без смяна на ключа или повторно използване на асоциация след ръчно нулиране нарушава допускането, на което разчита прозорецът на получателя. Затова съществува смяна на ключове, управлявана от протокола, вместо видим за оператора бутон за нулиране.
Когато тунелът се държи неправилно след ръчна намеса, попитайте дали намесата е засегнала състоянието на последователността. Конфигурация, която изглежда идентична, може да се държи различно, защото състоянието, което е наследила, не е състоянието, което очаква.
Диагностицирайте причината, преди да изключите нещо
Загуба, пренареждане, дублиран трафик и дефект в реализацията всички се проявяват като повторни предавания и само една от тях е проблем с повторение. Изключването на проверката, за да заглушите шума, премахва свойството, на което сте разчитали, и прави първоначалната причина по-трудна за намиране, защото сега повторните предавания нямат никакво обяснение.
Събирайте ограничени доказателства: идентификатори на асоциацията, номера на последователността и броячи, без полезния товар. Това е достатъчно, за да различите дубликат от пренаредено пристигане, и не превръща диагностичния ви файл в копие на трафика на потребителя.
Какво проверката не обещава
Защитата срещу повторение е свойство на обработката на пакети в рамките на един протокол. Тя не означава, че операторът не води журнали, че сайт не може да разпознае акаунт или че сесията е анонимна. Това са отделни въпроси за отделни системи, и силният дизайн срещу повторение не отговаря на нито един от тях.
Поддържан софтуер с поддържани настройки е практичният контрол, достъпен за потребителя. Протоколът се грижи за пакета; всичко останало остава оперативно решение.