Prečo samotné šifrovanie nezastaví prehraný paket
Starý paket si zachováva platnú autentizačnú značku, takže integrita nikdy nedokazuje čerstvosť. Stav poradia a okno príjemcu robia túto prácu.
Chránené pakety kryptograficky nevypršia, takže paket, ktorý bol platný pred piatimi minútami, je platný aj teraz, pretože šifrovanie a ochrana integrity nehovoria nič o tom, kedy boli bajty vytvorené. Útočník, ktorý dokáže zachytiť a znova odoslať prevádzku, nemusí prelomiť šifru. Preto každý seriózny tunelový protokol nesie stav poradia popri svojich kľúčoch.
Mechanizmus je malý a jeho režimy zlyhania sa dajú ľahko zameniť so stratou paketov.
Platný šifrovaný text nie je čerstvý šifrovaný text
Autentizácia odpovedá na jednu otázku: prišli tieto bajty nezmenené od držiteľa kľúča. Neodpovedá, či ich príjemca vidí po prvý raz. Prehraný paket prvý test bezchybne prejde, a práve preto samotná kontrola integrity nedokáže zastaviť prehratie a protokol potrebuje druhé pravidlo o prijatí. Príjemca, ktorý iba autentizuje, nemá obranu proti útočníkovi s nahrávkou.
Toto pravidlo je lacné na implementáciu aj na vyslovenie: prijmi daný chránený paket raz, pod daným kľúčom. Všetko ostatné v tejto oblasti vyplýva z toho, ako implementácia sleduje to jedno prijatie.
Čítať zahodenie pre prehratie ako chybu dešifrovania vás zavedie do úplne nesprávneho podsystému.
Poradové číslo a okno
IPsec ESP nesie poradové číslo a príjemca drží posuvné okno nedávno prijatých hodnôt, pričom špecifikácia ESP opisuje predvolenú veľkosť okna a možnosť rozšíriť ho. WireGuard ide inou cestou: počítadlo pre každý kľúč a výslovnú kontrolu proti nemu. Ani jeden návrh nepredpokladá, že pakety prichádzajú v poradí, pretože skutočné siete ich preusporadúvajú. Oba tolerujú preusporiadanie a ani jeden netoleruje opakovanie.
Práve okno umožňuje túto toleranciu. Paket mierne za najvyššou videnou hodnotou možno ešte prijať, ak nebol prijatý predtým; paket hlboko vzadu alebo taký, ktorého miesto je už označené, sa zahodí. Zväčšite okno a tolerujete viac preusporiadania za cenu viac stavu na asociáciu.
Diagnostické počítadlá ukazujú, v ktorom prípade ste. Zahodenia pre prehratie zvyšujú konkrétne počítadlo, nie všeobecnú chybu, a čítanie tohto počítadla je prvé užitočné pozorovanie.
nstat -az | grep -i XfrmIn
ip -s xfrm state | head -n 30
wg show wg0 transfer
Stav patrí kľúču, nie hostiteľovi
Stav počítadla je viazaný na bezpečnostnú asociáciu alebo na epochu kľúča, takže výmena kľúča vytvára nový kontext a vlastný priestor poradia. Vymazanie počítadla bez výmeny kľúča alebo opätovné použitie asociácie po manuálnom resete porušuje predpoklad, na ktorom závisí okno príjemcu. Preto existuje výmena kľúčov riadená protokolom, a nie tlačidlo resetu viditeľné pre operátora.
Keď sa tunel po manuálnom zásahu správa zle, spýtajte sa, či zásah zasiahol stav poradia. Konfigurácia, ktorá vyzerá rovnako, sa môže správať inak, pretože zdedený stav nie je stav, ktorý očakáva.
Diagnostikujte príčinu, kým niečo vypnete
Strata, preusporiadanie, duplikovaná prevádzka a chyba implementácie sa prejavujú ako retransmisie a len jedna z nich je problém prehratia. Vypnutie kontroly, aby utíchol šum, odstráni vlastnosť, na ktorú ste sa spoliehali, a sťaží nájdenie pôvodnej príčiny, pretože retransmisie teraz nemajú vôbec žiadne vysvetlenie.
Zbierajte obmedzené dôkazy: identifikátory asociácie, poradové čísla a počítadlá, bez užitočného obsahu. To stačí na rozlíšenie duplikátu od preusporiadaného príchodu a nepremení váš diagnostický súbor na kópiu prevádzky používateľa.
Čo kontrola nesľubuje
Ochrana pred prehratím je vlastnosťou spracovania paketov v rámci jedného protokolu. Neznamená, že operátor nevedie záznamy, že web nemôže rozpoznať účet alebo že relácia je anonymná. To sú oddelené otázky o oddelených systémoch a silný návrh proti prehratiu neodpovedá na žiadnu z nich.
Udržiavaný softvér s podporovaným nastavením je praktická kontrola, ktorú používateľ má. O paket sa stará protokol; všetko ostatné zostáva prevádzkovým rozhodnutím.