Beskeden siger, at den private nøgle har den forkerte længde, og den formulering peger på kodningen, før den peger på kryptografien. WireGuard-nøgler koder 32 byte som base64, hvilket giver 44 tegn inklusive en afsluttende udfyldning, så en værdi af en anden størrelse er ikke en nøgle, uanset hvor tilfældig den ser ud. Udfyldning af strengen, indtil parseren accepterer den, giver en velformet værdi, som ingen peer nogensinde vil genkende.

To forskellige opgaver gemmer sig bag denne fejl: at reparere teksten i en gyldig nøgle og at erstatte en identitet, du ikke længere har. De har forskellige konsekvenser, og den ene ugyldiggør den anden ende.

Hvad parseren forventer

En WireGuard-nøgle er 32 byte nøglemateriale i base64 med standardudfyldning, hvilket giver en fast streng på 44 tegn. Værktøjerne afviser alt, der ikke dekoder til præcis 32 byte, fordi den underliggende kurve tager en skalarværdi på 32 byte og intet andet. Offentlige og private værdier bruger samme kodning, så parseren kan ikke ud fra formatet alene se, hvilken af dem du indsatte. Den tvetydighed skaber halvdelen af forvirringen omkring denne fejl.

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

Hvis din værdi dekoder til 32 byte, er længden fin, og klagen kommer fra et andet sted i filen. Hvis den dekoder til noget kortere, har du afkortet materiale og ikke et formateringsproblem.

Formateringsskade eller forkert materiale?

Formateringsskader klumper sig sammen ved kanterne: citationstegn tilføjet af en shell, en etiket som private_key kopieret med værdien, et linjeskift indsat af en chatklient eller et afsluttende mellemrum, der overlevede indsætningen. Hver af dem ændrer strengen uden at ændre byteene, så fjernelse gendanner den oprindelige identitet. Sammenlign filen med klargøringsprotokollen tegn for tegn i stedet for at fjerne tegnsætning, indtil parseren bliver tavs.

Forkert materiale er en anden situation. En adgangskode, en certifikatnøgle eller en offentlig værdi kan alle se plausible ud og dekode til den forkerte størrelse. Ingen mængde rensning gør nogen af dem til den skalarværdi, peer’en forventer. Det tilfælde kræver en ny identitet i stedet for en redigering.

En offentlig nøgle i det private felt

Den hyppigste forveksling er en offentlig værdi indsat i det private felt, eller omvendt. Begge er gyldig base64 på 32 byte, så længdekontrollen består, og handshaket fejler senere uden en brugbar besked. En privat nøgle er den skalarværdi, der frembringer den offentlige, så du kan afgøre det ved at udlede den offentlige værdi og sammenligne den med det, peer’en autoriserer. Når den udledte værdi ikke matcher protokollen, har du den forkerte identitet og ikke en tastefejl.

Hvis du erstatter klientens private nøgle uden at opdatere den autoriserede offentlige nøgle i den anden ende, genskaber du den samme uoverensstemmelse, med den ekstra forvirring at klientens egen fil nu ser selvkonsistent ud. Ændr begge ender i én operation, ellers fejlfinder den næste person den forkerte halvdel.

Reparer profilen, og bevis derefter handshaket

Når nøglen dekoder til den rigtige størrelse og matcher det autoriserede par, er det resterende arbejde profilen og ruten. Kommandoerne nedenfor genererer et friskt par, når det er nødvendigt, verificerer den dekodede størrelse af en eksisterende nøgle og læser den offentlige værdi, som grænsefladen faktisk bruger. Indsæt aldrig en privat værdi i en sag eller på et dekodersite.

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

Størrelseskontrollen svarer på, om materialet har nøgleform, og rutespørgsmålet svarer på, om en pakke nogensinde ville nå grænsefladen. En handshake-linje, der forbliver tom, efter at begge kontroller består, flytter diagnosen til peer’ens endepunkt og de tilladte adresser. Læs grænsefladens offentlige nøgle mod klargøringsprotokollen en sidste gang, fordi en forældet gemt profil kan se korrekt ud, mens den aktive afviger].

Noter, hvilken værdi du erstattede, og hvor den autoriserede kopi ligger. Den næste, der rører denne peer, skal vide, hvilken ende der blev ændret.

Relaterede artikler