Správa hovorí, že súkromný kľúč má nesprávnu dĺžku, a táto formulácia ukazuje najprv na kódovanie a až potom na kryptografiu. Kľúče WireGuardu kódujú 32 bajtov do base64, čo dáva 44 znakov vrátane záverečného doplnenia, takže hodnota inej veľkosti nie je kľúč, nech vyzerá akokoľvek náhodne. Doplnenie reťazca na požadovanú dĺžku, kým ho parser neprijme, vytvorí správne utvorenú hodnotu, ktorú žiadny partner nikdy nespozná.

Za touto chybou sa skrývajú dve rôzne úlohy: oprava textu platného kľúča a nahradenie identity, ktorú už nemáte. Majú rôzne dôsledky a jedna z nich zneplatní druhý koniec.

Čo parser očakáva

Kľúč WireGuardu je 32 bajtov kľúčového materiálu v base64 so štandardným doplnením, čo dáva pevný reťazec so 44 znakmi. Nástroje odmietnu všetko, čo sa nedekóduje presne na 32 bajtov, pretože podkladová krivka berie 32-bajtový skalár a nič iné. Verejné aj súkromné hodnoty používajú rovnaké kódovanie, takže parser z formátu sám nepozná, ktorú z nich ste vložili. Práve táto nejednoznačnosť spôsobuje polovicu zmätku okolo tejto chyby.

wg genkey | tee private.key | wg pubkey > public.key
base64 -d private.key | wc -c
wc -c private.key
wg show wg0 public-key

Ak sa vaša hodnota dekóduje na 32 bajtov, dĺžka je v poriadku a sťažnosť prichádza z iného miesta v súbore. Ak sa dekóduje na niečo kratšie, máte skrátený materiál, nie problém s formátovaním.

Poškodený formát alebo nesprávny materiál?

Poškodenia formátu sa hromadia na okrajoch: úvodzovky pridané shellom, označenie ako private_key skopírované spolu s hodnotou, zlom riadku vložený chatovým klientom alebo koncová medzera, ktorá prežila vloženie. Každá z tých zmien mení reťazec bez zmeny bajtov, takže ich odstránenie obnoví pôvodnú identitu. Porovnajte súbor s evidenciou o zabezpečení znak po znaku namiesto odstraňovania interpunkcie, kým parser nezmĺkne.

Nesprávny materiál je iná situácia. Heslo, kľúč certifikátu alebo verejná hodnota môžu vyzerať vierohodne a dekódovať sa na nesprávnu veľkosť. Žiadne čistenie z nich neurobí skalár, ktorý partner očakáva. Ten prípad potrebuje novú identitu, nie úpravu.

Verejný kľúč v súkromnom poli

Najčastejšia zámena je verejná hodnota vložená do súkromného poľa, alebo naopak. Obe sú platné base64 s 32 bajtmi, takže kontrola dĺžky prejde a handshake neskôr zlyhá bez užitočnej správy. Súkromný kľúč je skalár, ktorý vytvára verejný, takže to môžete vyriešiť odvodením verejnej hodnoty a porovnaním s tým, čo partner autorizuje. Keď odvodená hodnota nezodpovedá evidencii, máte nesprávnu identitu, nie preklep.

Nahradenie súkromného kľúča klienta bez aktualizácie autorizovaného verejného kľúča na druhom konci znovu vytvorí ten istý nesúlad, s dodatočným zmätkom, že súbor klienta teraz vyzerá vnútorne konzistentne. Zmeňte oba konce v jednej operácii, inak bude ďalší človek ladiť nesprávnu polovicu.

Opravte profil a potom preukážte handshake

Keď sa kľúč dekóduje na správnu veľkosť a zodpovedá autorizovanému páru, zostáva profil a cesta. Nižšie uvedené príkazy vytvoria čerstvý pár, keď treba, overia dekódovanú veľkosť existujúceho kľúča a prečítajú verejnú hodnotu, ktorú rozhranie skutočne používa. Nikdy nevkladajte súkromnú hodnotu do tiketu ani na dekódovací web.

wg genkey | tee new.key | wg pubkey > new.pub
base64 -d private.key | wc -c
ip route get 10.60.9.5
wg show wg0 latest-handshakes

Kontrola veľkosti odpovedá, či má materiál tvar kľúča, a otázka na trasu odpovedá, či by paket niekedy dosiahol rozhranie. Riadok handshake, ktorý zostane prázdny po oboch kontrolách, presúva diagnostiku na koncový bod partnera a povolené adresy. Prečítajte verejný kľúč rozhrania proti evidencii o zabezpečení ešte raz, pretože zastaraný uložený profil môže vyzerať správne, kým aktívny sa líši].

Zaznamenajte, ktorú hodnotu ste nahradili a kde je autorizovaná kópia. Kto sa nabudúce dotkne tohto partnera, musí vedieť, ktorý koniec sa zmenil.

Súvisiace články