Teade ütleb, et privaatvõtmel on vale pikkus, ja see sõnastus osutab kõigepealt kodeerimisele ning alles seejärel krüptograafiale. WireGuardi võtmed kodeerivad 32 baiti base64-sse, mis annab 44 tähemärki koos lõpliku täitega, seega muu suurusega väärtus ei ole võti, ükskõik kui juhuslik see ka välja näeb. Stringi täitmine seni, kuni parser selle vastu võtab, annab korrektselt vormitud väärtuse, mida ükski partner kunagi ei tunnista.

Selle vea taga on kaks erinevat tööd: kehtiva võtme teksti parandamine ja identiteedi asendamine, mida sul enam ei ole. Neil on erinevad tagajärjed ja üks neist muudab kehtetuks teise otsa.

Mida parser ootab

WireGuardi võti on 32 baiti võtmematerjali base64-s standardse täitega, mis annab fikseeritud 44 tähemärgi pikkuse stringi. Tööriistad lükkavad tagasi kõik, mis ei dekodeeru täpselt 32 baidiks, sest aluskõver võtab 32-baidise skalaari ja mitte midagi muud. Avalikud ja privaatsed väärtused kasutavad sama kodeeringut, seega ei saa parser ainult vormingu põhjal aru, kumma neist sa kleepisid. See mitmetähenduslikkus põhjustab poole selle vea ümber olevast segadusest.

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

Kui sinu väärtus dekodeerub 32 baidiks, on pikkus korras ja kaebus tuleb faili mõnest teisest kohast. Kui see dekodeerub millestki lühemaks, on sul kärbitud materjal, mitte vorminguprobleem.

Vormingukahjustus või vale materjal?

Vormingukahjustused kogunevad servadesse: kest lisas jutumärgid, väärtusega koos kopeeriti silt nagu private_key, vestlusklient lisas reavahetuse või kleepimisest jäi alles lõppu tühik. Iga selline muudatus muudab stringi ilma baite muutmata, seega selle eemaldamine taastab algse identiteedi. Võrdle faili provisjoneerimiskirjega märk-märgi haaval, selle asemel et kirjavahemärke eemaldada, kuni parser vaikib.

Vale materjal on teine olukord. Parool, sertifikaadi võti või avalik väärtus võivad kõik tunduda usutavad ja dekodeeruda vale suurusega. Ükski puhastus ei muuda neist ühtki skalaariks, mida partner ootab. See juhtum vajab uut identiteeti, mitte redigeerimist.

Avalik võti privaatses väljas

Kõige tavalisem segadus on avalik väärtus, mis on kleebitud privaatsesse välja, või vastupidi. Mõlemad on kehtivad 32 baidi suurused base64 väärtused, seega pikkusekontroll läbib ja käepigistus ebaõnnestub hiljem ilma kasuliku teateta. Privaatvõti on skalaar, mis toodab avaliku, seega saad selle ära otsustada, tuletades avaliku väärtuse ja võrreldes seda sellega, mida partner autoriseerib. Kui tuletatud väärtus ei vasta kirjele, on sul vale identiteet, mitte trükiviga.

Kliendi privaatvõtme asendamine ilma autoriseeritud avaliku võtme uuendamiseta teises otsas loob sama mittevastavuse uuesti, lisasegadusega, et kliendi enda fail näeb nüüd iseendale vastav välja. Muuda mõlemat otsa ühes toimingus, muidu silub järgmine inimene vale poolt.

Paranda profiil ja tõesta siis käepigistus

Kui võti dekodeerub õigesse suurusesse ja vastab autoriseeritud paarile, jääb üle profiil ja tee. Allolevad käsud genereerivad vajadusel värske paari, kontrollivad olemasoleva võtme dekodeeritud suurust ja loevad avalikku väärtust, mida liides tegelikult kasutab. Ära kunagi kleebi privaatset väärtust piletisse ega dekodeerimissaidile.

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

Suurusekontroll vastab, kas materjal on võtmekujuline, ja marsruudipäring vastab, kas pakett jõuaks kunagi liideseni. Käepigistuse rida, mis jääb pärast mõlema kontrolli läbimist tühjaks, viib diagnoosi partneri lõpp-punkti ja lubatud aadresside juurde. Loe liidese avalikku võtit veel viimast korda vastu provisjoneerimiskirjet, sest aegunud salvestatud profiil võib tunduda õige, samal ajal kui aktiivne erineb].

Pane kirja, millise väärtuse asendasid ja kus autoriseeritud koopia asub. Kes järgmisena seda partnerit puudutab, peab teadma, milline ots muutus.

Seotud artiklid