0x ali 0s? Kako brati format PSK v ipsec.secrets
Ista skupna skrivnost je lahko zapisana kot literal v narekovajih, kot šestnajstiški zapis za 0x ali kot Base64 za 0s. Napačna predpona povzroči neuspeh preverjanja pristnosti, ne pogajanj.
En odjemalec se preveri s skupnim ključem, drugi pa ga zavrne, čeprav so znaki, ki ste jih prilepili, na obeh straneh videti enaki. Verjetno gre za iste znake; razlika je v tem, katero pravilo dekodiranja datoteka uporabi zanje. Niz v narekovajih se vzame dobesedno, žeton, ki se začne z 0x, se bere kot šestnajstiški, žeton, ki se začne z 0s, pa kot Base64. Le ena od teh treh zapisov pomeni tisto, kar ste nameravali, zato je popravek običajno pretvorba in ne boljše geslo.
Simptom kaže na kodiranje, ne na šifre
Ko oba konca hranita različne bajte, pogajanja vseeno uspejo, dokaz pa nato ne uspe. Dnevnik takrat sporoči napako celovitosti ali HMAC namesto neujemanja algoritma, ker je bil predlog izbran, korak preverjanja pristnosti pa se ni ujemal. Ta vrstica nikoli ne omeni oblike skrivnosti.
Faza je namig. Napaka, ki pride po izbranem predlogu, pomeni, da sta se obe strani dogovorili o vsem razen o ključnem gradivu, medtem ko «noben predlog ni izbran» spada k politiki ali naborom šifer. Preverjanje celovitosti, ki ne uspe, ko je geslo videti pravilno, je vidni obraz neujemanja kodiranja.
Ena skrivnost, trije načini, kako jo datoteka lahko prebere
Za vrednost štirih bajtov key1 sta šestnajstiški zapis in Base64 dve ponovni kodiranji istih bajtov, in le vodilni znaki povedo razčlenjevalniku, katerega drži. Poverilnice swanctl sledijo isti konvenciji, zato vrednost, premaknjena med obema vmesnikoma, ohrani pomen le, če njena predpona potuje z njo.
10.20.0.5 %any : PSK "key1"
10.20.0.5 %any : PSK 0x6b657931
10.20.0.5 %any : PSK 0sa2V5MQ==
Dve podrobnosti v tem bloku vzameta največ časa. Šestnajstiške števke sprejmejo oba zapisa, zato sta 0x6b657931 in 0x6B657931 ista vrednost, vendar se liho število znakov tiho prebere napačno, namesto da bi bilo zavrnjeno, kar premakne vsak bajt po rezu. Base64 oblika je del vrednosti, zato se niz, prilepljen brez končnih znakov =, dekodira v druge bajte, namesto da bi glasno propadel.
Profil, ki je vrednost enkrat dekodiral, jo je že pretvoril, zato ponovno dekodiranje ustvari druge bajte in napako preverjanja pristnosti, ki se bere kot napačno geslo. Narekovaji so varna smer za vse dvoumno, ker je vsebina dobesedna tudi takrat, ko se začne z oznako kodiranja.
Od kod prihaja besedilo Base64
Izvoz profilov in prodajalna portala pogosto predajo ključ že kodiran, običajno v podatkovnem polju, ki ni bilo nikoli namenjeno ročnemu vnosu. Ali to vrednost razpakirajte in shranite dekodirano besedilo v narekovajih, ali pa jo pustite kodirano z oznako spredaj. Narediti polovico vsakega je tisto, kar pokvari. Obe poti delujeta le, če celotna vrednost preživi kopiranje.
Obe smeri sta po en ukaz, in vredno ju je v zahtevku obdržati kot natančno operacijo, ki je ustvarila shranjeno vrednost. Zaženite ju v tem vrstnem redu:
printf '%s' 'a2V5MQ==' | base64 -d
printf '%s' 'key1' | base64
Lepljenje kodiranega besedila, kot da bi bilo navadno, je draga napaka. Datoteka zgošča znake natanko tako, kot so zapisani, izpeljani ključ izide približno tretjino daljši od tistega, ki ga je izračunal partner, in vsak poskus propade enako brez opozorila, ker je razčlenjevalnik sledil pravilu, ki mu je bilo dano.
Potrdite, katere bajte vsak partner dejansko uporablja
Najprej preberite, kako povezavo vidi demon, nato pa rezultat preverjanja pristnosti, namesto da bi ugibali vzrok iz besedila napake. Primerjava shranjene dolžine je hitro preverjanje smiselnosti, ker je kodirano besedilo daljše od bajtov, ki jih predstavlja. Nato potrdite, katera vrstica identitete se je ujemala, ker pravilna skrivnost, shranjena pod napačnim partnerjem, propade enako kot napačna. Odloča vrstni red vrstic: prvo ujemanje zmaga, zato široka vrstica %any blizu vrha tiho zamenja tisto določeno vrstico, ki ste jo pravkar uredili.
Ponovno naložite, namesto da bi znova zagnali, ko je datoteka pravilna. ipsec rereadsecrets osveži kopijo demona IKE, namestitev swanctl pa naloži poverilnice s svojim ukazom. Ponovni zagon zavrže vsako vzpostavljeno povezavo in uniči primerjavo, ki ste jo poskušali narediti.
Nobeno od teh preverjanj ne zahteva razkritja skrivnosti. Dolžina, izbirnik identitete in položaj vrstice pojasnijo večino takšnih napak, preden kdor koli potrebuje šestnajstiški izpis.
Spremenite datoteko, ne da bi skrili rezultat
Omejite datoteko na račun demona in žive skrivnosti hranite zunaj zahtevkov, klepeta in posnetkov zaslona, ker je prilepljen ključ uhajanje in ne diagnostika. Preživi tudi dogodek, ki ga je ustvaril.
Preizkusite z odjemalca, katerega konfiguracijo nadzorujete, potrdite, da preverjanje pristnosti uspe, nato pa potrdite, da tunel prenaša promet. Ponovno nalaganje, ki popravi rokovanje, medtem ko usmerjanje ostane pokvarjeno, je druga težava in postane vidno takoj, ko se skrivnost preneha premikati.