0x vai 0s? PSK formāta lasīšana failā ipsec.secrets
To pašu koplietoto noslēpumu var rakstīt kā literāli pēdiņās, kā heksadecimālu pēc 0x vai kā Base64 pēc 0s. Nepareizs prefikss liek neizdoties autentifikācijai, nevis sarunām.
Viens klients autentificējas ar koplietoto atslēgu, bet otrs to noraida, lai gan ielīmētās rakstzīmes abās pusēs izskatās vienādas. Iespējams, tās ir tās pašas rakstzīmes; atšķirība ir tajā, kuru dekodēšanas noteikumu fails tām piemēro. Virkne pēdiņās tiek ņemta burtiski, marķieris, kas sākas ar 0x, tiek lasīts kā heksadecimāls, un marķieris, kas sākas ar 0s, tiek lasīts kā Base64. Tikai viens no šiem trim rakstības veidiem nozīmē to, ko jūs domājāt, tāpēc labojums parasti ir pārveide, nevis labāka parole.
Simptoms norāda uz kodējumu, nevis uz šifriem
Kad abi gali tur dažādus baitus, sarunas joprojām izdodas, un pierādījums pēc tam neizdodas. Tad žurnāls ziņo par integritātes vai HMAC kļūdu, nevis algoritma neatbilstību, jo priekšlikums tika izvēlēts un autentifikācijas solis nesakrita. Šī rinda nekad nepiemin noslēpuma formu.
Posms ir pavediens. Kļūda, kas nāk pēc izvēlēta priekšlikuma, nozīmē, ka abas puses vienojušās par visu, izņemot atslēgas materiālu, savukārt «nav izvēlēts neviens priekšlikums» pieder pie politikas vai šifru kopām. Integritātes pārbaude, kas neizdodas, lai gan parole izskatās pareiza, ir kodējuma neatbilstības redzamā seja.
Viens noslēpums, trīs veidi, kā fails to var nolasīt
Četru baitu vērtībai key1 heksadecimālais un Base64 ir divi vienu un to pašu baitu pārkodējumi, un tikai sākuma rakstzīmes pasaka parsētājam, kuru tas tur. swanctl akreditācijas dati ievēro to pašu konvenciju, tāpēc starp abām saskarnēm pārvietota vērtība saglabā nozīmi tikai tad, ja tās prefikss ceļo kopā ar to.
10.20.0.5 %any : PSK "key1"
10.20.0.5 %any : PSK 0x6b657931
10.20.0.5 %any : PSK 0sa2V5MQ==
Divi šī bloka elementi aizņem visvairāk laika. Heksadecimālie cipari pieņem abus reģistrus, tāpēc 0x6b657931 un 0x6B657931 ir viena un tā pati vērtība, bet nepāra rakstzīmju skaits tiek klusi nolasīts nepareizi, nevis noraidīts, kas pabīda katru baitu pēc griezuma. Base64 polsterējums pieder pie vērtības, tāpēc virkne, kas ielīmēta bez savām beigu = zīmēm, tiek dekodēta citos baitos, nevis skaļi neizdodas.
Profils, kas vērtību reiz dekodējis, to jau ir pārveidojis, tāpēc atkārtota dekodēšana dod citus baitus un autentifikācijas kļūdu, kas lasās kā nepareiza parole. Pēdiņas ir drošais virziens visam neviennozīmīgajam, jo saturs ir burtisks arī tad, kad tas sākas ar kodējuma atzīmi.
No kurienes nāk Base64 teksts
Profila eksporti un piegādātāju portāli bieži nodod atslēgu jau kodētu, parasti datu laukā, kas nekad nav bijis paredzēts ievadei ar rokām. Vai nu attiniet šo vērtību un glabājiet dekodēto tekstu pēdiņās, vai arī atstājiet to kodētu ar atzīmi priekšā. Darīt pusi no katra ir tas, kas to salauž. Abi ceļi darbojas tikai tad, ja visa vērtība pārdzīvo kopēšanu.
Abi virzieni ir pa vienai komandai, un tos ir vērts paturēt biļetē kā precīzu darbību, kas radīja saglabāto vērtību. Izpildiet tos šādā secībā:
printf '%s' 'a2V5MQ==' | base64 -d
printf '%s' 'key1' | base64
Kodēta teksta ielīmēšana tā, it kā tas būtu vienkāršs, ir dārgā kļūda. Fails jauc rakstzīmes tieši tā, kā tās rakstītas, atvasinātā atslēga iznāk apmēram par trešdaļu garāka nekā tā, ko aprēķināja partneris, un katrs mēģinājums neizdodas tāpat bez brīdinājuma, jo parsētājs ievēroja tam doto noteikumu.
Apstipriniet, kādus baitus katrs partneris patiešām izmanto
Vispirms izlasiet dēmona skatījumu uz savienojumu un pēc tam autentifikācijas rezultātu, nevis miniet cēloni no kļūdas virknes. Saglabātā garuma salīdzināšana ir ātra saprāta pārbaude, jo kodēts teksts ir garāks par baitiem, ko tas attēlo. Pēc tam apstipriniet, kura identitātes rinda sakrita, jo pareizs noslēpums, kas ievietots zem nepareiza partnera, neizdodas tieši tāpat kā nepareizs. Rindu secība to izšķir: pirmā sakritība uzvar, tāpēc plata %any rinda netālu no augšas klusi aizstāj konkrēto rindu, kuru tikko rediģējāt.
Pārlādējiet, nevis restartējiet, kad fails ir pareizs. ipsec rereadsecrets atsvaidzina IKE dēmona kopiju, un swanctl iestatījums ielādē akreditācijas datus ar savu komandu. Restartēšana nomet katru izveidoto asociāciju un iznīcina salīdzinājumu, ko mēģinājāt veikt.
Neviena no šīm pārbaudēm neprasa atklāt noslēpumu. Garums, identitātes atlasītājs un rindas pozīcija izskaidro lielāko daļu šādu kļūdu, pirms kādam vajag heksadecimālu izdruku.
Mainiet failu, nepaslēpjot rezultātu
Ierobežojiet failu ar dēmona kontu un turiet dzīvos noslēpumus ārpus biļetēm, tērzēšanas un ekrānuzņēmumiem, jo ielīmēta atslēga ir noplūde, nevis diagnostika. Tas arī pārdzīvo incidentu, kas to radīja.
Pārbaudiet no klienta, kura konfigurāciju jūs kontrolējat, apstipriniet, ka autentifikācija izdodas, un pēc tam apstipriniet, ka tunelis pārvadā trafiku. Pārlāde, kas salabo rokasspiedienu, kamēr maršrutēšana paliek salauzta, ir cita problēma, un tā kļūst redzama, tiklīdz noslēpums pārstāj kustēties.