Zaštićeni paketi kriptografski ne istječu, pa je onaj koji je bio valjan prije pet minuta valjan i sada, jer šifriranje i zaštita integriteta ne govore ništa o tome kada su bajtovi nastali. Napadač koji može presresti i ponovno poslati promet ne mora razbiti šifru. Zato svaki ozbiljan tunelski protokol nosi stanje slijeda uz svoje ključeve.

Mehanizam je malen, a njegove načine kvara lako je zamijeniti s gubitkom paketa.

Valjan šifrat nije svjež šifrat

Provjera autentičnosti odgovara na jedno pitanje: jesu li ovi bajtovi došli neizmijenjeni od vlasnika ključa. Ne odgovara na pitanje je li ovo prvi put da ih prijemnik vidi. Ponovno poslan paket savršeno prolazi prvi test, i upravo zato samo provjera integriteta ne može zaustaviti ponavljanje i zato protokolu treba drugo pravilo o prihvaćanju. Prijemnik koji samo provjerava autentičnost nema obranu od napadača koji drži snimku.

To je pravilo jeftino za implementirati i jeftino za izreći: prihvati zadani zaštićeni paket jednom, pod zadanim ključem. Sve ostalo u ovom području proizlazi iz toga kako implementacija prati taj jedan put.

Čitanje odbacivanja zbog ponavljanja kao greške dešifriranja vodi vas u potpuno pogrešan podsustav.

Redni broj i prozor

IPsec ESP nosi redni broj, a prijemnik drži klizni prozor nedavno prihvaćenih vrijednosti, pri čemu specifikacija ESP-a opisuje zadanu veličinu prozora i mogućnost proširenja. WireGuard ide drugim putem: brojač po ključu i izričita provjera prema njemu. Nijedan dizajn ne pretpostavlja da paketi dolaze redom, jer stvarne mreže mijenjaju njihov redoslijed. Oba podnose promjenu redoslijeda, a nijedan ne podnosi ponavljanje.

Prozor je ono što tu toleranciju čini mogućom. Paket malo iza najviše viđene vrijednosti još se može prihvatiti ako već nije bio prihvaćen; paket daleko iza, ili onaj čije je mjesto već označeno, odbacuje se. Povećajte prozor i podnosit ćete više promjena redoslijeda po cijeni više stanja po asocijaciji.

Dijagnostički brojači pokazuju u kojem ste slučaju. Odbacivanja zbog ponavljanja povećavaju određeni brojač, a ne opću grešku, i čitanje tog brojača prvo je korisno zapažanje.

nstat -az | grep -i XfrmIn
ip -s xfrm state | head -n 30
wg show wg0 transfer

Stanje pripada ključu, ne hostu

Stanje brojača vezano je uz sigurnosnu asocijaciju ili uz razdoblje ključa, pa zamjena ključa stvara svjež kontekst i vlastiti prostor slijeda. Čišćenje brojača bez zamjene ključa, ili ponovna uporaba asocijacije nakon ručnog poništavanja, krši pretpostavku o kojoj ovisi prijemnikov prozor. Zato postoji zamjena ključeva vođena protokolom, a ne gumb za poništavanje vidljiv operateru.

Kad se tunel ponaša loše nakon ručnog zahvata, pitajte je li zahvat dirao stanje slijeda. Konfiguracija koja izgleda identično može se ponašati drukčije jer stanje koje je naslijedila nije stanje koje očekuje.

Utvrdite uzrok prije nego što bilo što isključite

Gubitak, promjena redoslijeda, udvostručeni promet i nedostatak u implementaciji svi se pojavljuju kao ponovna slanja, a samo je jedan od njih problem ponavljanja. Isključivanje provjere da utišate šum uklanja svojstvo na koje ste se oslanjali i otežava pronalaženje izvornog uzroka, jer sada ponovna slanja nemaju nikakvo objašnjenje.

Prikupite ograničene dokaze: identifikatore asocijacije, redne brojeve i brojače, bez sadržaja. To je dovoljno da razlikujete duplikat od dolaska izvan redoslijeda i ne pretvara vašu dijagnostičku datoteku u kopiju korisnikova prometa.

Što provjera ne obećava

Zaštita od ponavljanja svojstvo je obrade paketa unutar jednog protokola. Ne znači da operater ne vodi zapise, da web-mjesto ne može prepoznati račun ili da je sesija anonimna. To su odvojena pitanja o odvojenim sustavima, a snažan dizajn protiv ponavljanja ne odgovara ni na jedno od njih.

Održavani softver s podržanim postavkama praktična je kontrola dostupna korisniku. Protokol obrađuje paket; sve ostalo ostaje operativna odluka.

Povezani članci