0x või 0s? Kuidas lugeda PSK-vormingut failis ipsec.secrets
Sama ühine saladus saab kirjutada jutumärkides literaalina, kuueteistkümnendkoodina pärast 0x või Base64-na pärast 0s. Vale eesliide paneb autentimise ebaõnnestuma, mitte läbirääkimise.
Üks klient autendib end ühise võtmega ja teine lükkab selle tagasi, kuigi kleepitud märgid näevad mõlemal pool ühesugused välja. Tõenäoliselt on need samad märgid; erinevus on selles, millist dekodeerimisreeglit fail neile rakendab. Jutumärkides string võetakse sõna-sõnalt, märk, mis algab 0x-ga, loetakse kuueteistkümnendkoodina ja märk, mis algab 0s-ga, loetakse Base64-na. Ainult üks neist kolmest kirjaviisist tähendab seda, mida kavatsesite, seega on parandus tavaliselt teisendus, mitte parem parool.
Sümptom osutab kodeerimisele, mitte šifritele
Kui kaks otsa hoiavad erinevaid baite, läbirääkimine õnnestub siiski ja tõestus ebaõnnestub pärast seda. Logi teatab siis terviklikkuse või HMAC-i tõrkest, mitte algoritmi lahknevusest, sest pakkumine valiti ja autentimissamm ei sobitunud. See rida ei maini kunagi saladuse kuju.
Etapp on vihje. Valitud pakkumise järel saabuv tõrge tähendab, et mõlemad pooled leppisid kokku kõiges peale võtmematerjali, samas kui «pakkumist ei valitud» kuulub poliitika või šifrikomplektide juurde. Terviklikkuse kontroll, mis ebaõnnestub, kui parool näib õige, on kodeerimise lahknevuse nähtav pale.
Üks saladus, kolm viisi, kuidas fail seda lugeda saab
Neljabaidise väärtuse key1 puhul on kuueteistkümnendkood ja Base64 sama baitide kaks ümberkodeerimist ning ainult algusmärgid ütlevad parsijale, millist neist ta hoiab. swanctl-i volitused järgivad sama tava, seega kahe liidese vahel liigutatud väärtus säilitab tähenduse ainult siis, kui selle eesliide liigub koos temaga.
10.20.0.5 %any : PSK "key1"
10.20.0.5 %any : PSK 0x6b657931
10.20.0.5 %any : PSK 0sa2V5MQ==
Kaks detaili selles plokis võtavad kõige rohkem aega. Kuueteistkümnendarvud aktsepteerivad mõlemat kirjaviisi, seega 0x6b657931 ja 0x6B657931 on sama väärtus, kuid paaritu arv märke loetakse vaikselt valesti, mitte ei lükata tagasi, mis nihutab iga baidi pärast lõiget. Base64-täidis kuulub väärtuse juurde, seega string, mis kleebitakse ilma oma lõpumärkideta =, dekodeeritakse teisteks baitideks, mitte ei ebaõnnestu valjult.
Profiil, mis on väärtuse korra dekodeerinud, on selle juba teisendanud, seega uuesti dekodeerimine annab teised baidid ja autentimistõrke, mis loeb nagu vale parool. Jutumärgid on ohutu suund kõige mitmetähendusliku jaoks, sest sisu on sõna-sõnaline ka siis, kui see algab kodeerimismärgisega.
Kust Base64-tekst tuleb
Profiili eksport ja tarnijaportaalid annavad võtme sageli juba kodeeritult, tavaliselt andmeväljas, mis pole kunagi mõeldud käsitsi sisestamiseks. Kas pakkige see väärtus lahti ja hoidke dekodeeritud tekst jutumärkides, või jätke see kodeerituks koos märgisega ees. Mõlemast poole tegemine on see, mis katki läheb. Kumbki tee töötab ainult siis, kui kogu väärtus kopeerimise üle elab.
Mõlemad suunad on üks käsk kummagi kohta ja need tasub piletisse jätta kui täpne toiming, mis salvestatud väärtuse tekitas. Käivitage need selles järjekorras:
printf '%s' 'a2V5MQ==' | base64 -d
printf '%s' 'key1' | base64
Kodeeritud teksti kleepimine nii, nagu see oleks tavaline, on kallis viga. Fail räsiib märgid täpselt nii, nagu need kirjutati, tuletatud võti tuleb umbes kolmandiku võrra pikem kui see, mille vastaspool arvutas, ja iga katse ebaõnnestub samamoodi ilma hoiatuseta, sest parsija järgis talle antud reeglit.
Kinnitage, milliseid baite iga vastaspool tegelikult kasutab
Lugege kõigepealt deemonivaadet ühenduse kohta ja seejärel autentimise tulemust, selle asemel et arvata põhjust veateatest. Salvestatud pikkuse võrdlemine on kiire mõistlikkuse kontroll, sest kodeeritud tekst on pikem kui baidid, mida see esindab. Seejärel kinnitage, milline identiteedirida sobis, sest vale vastaspoole alla paigutatud õige saladus ebaõnnestub täpselt nagu vale. Ridade järjekord otsustab selle: esimene sobivus võidab, seega lai %any rida ülaosas asendab vaikselt konkreetse rea, mida just redigeerisite.
Laadige uuesti, mitte ärge taaskäivitage, kui fail on õige. ipsec rereadsecrets värskendab IKE-deemoni koopiat ja swanctl-i seadistus laadib volitused oma käsuga. Taaskäivitamine viskab kõik loodud seosed välja ja hävitab võrdluse, mida proovisite teha.
Ükski neist kontrollidest ei nõua saladuse paljastamist. Pikkus, identiteedivalija ja rea asukoht selgitavad enamikku sellistest tõrgetest enne, kui keegi vajab kuueteistkümnenddumpi.
Muutke faili tulemust varjamata
Piirake fail deemonikontoga ja hoidke elavad saladused piletitest, vestlusest ja ekraanipiltidest eemal, sest kleepitud võti on leke, mitte diagnoos. See elab üle ka juhtumi, mis selle tekitas.
Testige kliendist, mille konfiguratsiooni te kontrollite, kinnitage, et autentimine õnnestub, ja seejärel kinnitage, et tunnel kannab liiklust. Uuestilaadimine, mis parandab käepigistuse, samal ajal kui marsruutimine jääb katki, on teine probleem ja muutub nähtavaks niipea, kui saladus lakkab liikumast.