Адзін кліент праходзіць аўтэнтыфікацыю агульным ключом, а другі адхіляе яго, пры гэтым сімвалы, якія вы ўставілі, выглядаюць аднолькава з абодвух бакоў. Хутчэй за ўсё гэта тыя ж сімвалы; розніца ў тым, якое правіла дэкадавання прымяняе да іх файл. Радок у лапках бярэцца літаральна, токен, які пачынаецца з 0x, чытаецца як шаснаццатковы, а токен, які пачынаецца з 0s, чытаецца як Base64. Толькі адно з гэтых трох напісанняў азначае тое, што вы мелі на ўвазе, таму выпраўленне звычайна — гэта пераўтварэнне, а не лепшы пароль.

Сімптом паказвае на кадаванне, а не на шыфры

Калі два бакі трымаюць розныя байты, перамовы ўсё яшчэ ўдаюцца, а доказ правальваецца пасля іх. Тады журнал паведамляе пра збой цэласнасці або HMAC, а не пра неадпаведнасць алгарытму, бо прапанова была выбрана, а крок аўтэнтыфікацыі не супаў. Гэты радок ніколі не згадвае форму сакрэту.

Этап — гэта падказка. Збой, які прыходзіць пасля выбранай прапановы, азначае, што бакі дамовіліся пра ўсё, акрамя ключавога матэрыялу, тады як «прапанова не выбрана» адносіцца да палітыкі або набораў шыфраў. Праверка цэласнасці, якая правальваецца, калі пароль выглядае правільным, — гэта бачны бок неадпаведнасці кадавання.

Адзін сакрэт, тры спосабы, якімі файл можа яго прачытаць

Для значэння з чатырох байтаў key1 шаснаццатковае і Base64 — гэта два перакадаванні адных і тых жа байтаў, і толькі першыя сімвалы паведамляюць разборшчыку, якое з іх ён трымае. Уліковыя даныя swanctl прытрымліваюцца той жа ўмовы, таму значэнне, перанесенае паміж двума інтэрфейсамі, захоўвае сэнс, толькі калі яго прэфікс перамяшчаецца разам з ім.

10.20.0.5 %any : PSK "key1"
10.20.0.5 %any : PSK 0x6b657931
10.20.0.5 %any : PSK 0sa2V5MQ==

Дзве дэталі ў гэтым блоку каштуюць найбольш часу. Шаснаццатковыя лічбы прымаюць любы рэгістр, таму 0x6b657931 і 0x6B657931 — гэта адно і тое ж значэнне, але няцотная колькасць сімвалаў маўкліва чытаецца няправільна, а не адхіляецца, што зрушвае кожны байт пасля месца разрэзу. Дапаўненне Base64 належыць значэнню, таму радок, устаўлены без сваіх канчатковых знакаў =, дэкадуецца ў іншыя байты, а не правальваецца гучна.

Профіль, які аднойчы дэкадаваў значэнне, ужо пераўтварыў яго, таму паўторнае дэкадаванне дае іншыя байты і збой аўтэнтыфікацыі, які чытаецца як няправільны пароль. Лапкі — гэта бяспечны кірунак для ўсяго неадназначнага, бо змесціва літаральнае, нават калі пачынаецца з маркера кадавання.

Адкуль бярэцца тэкст Base64

Экспарт профіляў і парталы пастаўшчыкоў часта перадаюць ключ ужо закадаваным, звычайна ў полі даных, якое ніколі не меркавалася для ўводу ўручную. Альбо разгарніце гэта значэнне і захавайце дэкадаваны тэкст у лапках, альбо пакіньце яго закадаваным з маркерам спераду. Палова аднаго і палова другога — гэта тое, што ламае. Любы шлях працуе, толькі калі ўсё значэнне перажывае капіраванне.

Абодва кірункі — па адной камандзе, і іх варта трымаць у тыкеце як дакладную аперацыю, што стварыла захаванае значэнне. Запусціце іх у такім парадку:

printf '%s' 'a2V5MQ==' | base64 -d
printf '%s' 'key1' | base64

Устаўка закадаванага тэксту як звычайнага — гэта дарагая памылка. Файл хэшуе сімвалы дакладна так, як яны запісаны, вытворны ключ выходзіць прыкладна на траціну даўжэйшым за той, што вылічыў партнёр, і кожная спроба правальваецца аднолькава без папярэджання, бо разборшчык прытрымліваўся дадзенага яму правіла.

Пацвердзіце, якія байты кожны партнёр насамрэч выкарыстоўвае

Спачатку прачытайце, як дэман бачыць злучэнне, а потым вынік аўтэнтыфікацыі, замест таго каб здагадваць прычыну з радка памылкі. Параўнанне захаванай даўжыні — гэта хуткая праверка, бо закадаваны тэкст даўжэйшы за байты, якія ён прадстаўляе. Затым пацвердзіце, які радок асобы супаў, бо правільны сакрэт, падшыты пад няправільнага партнёра, правальваецца гэтак жа, як няправільны. Парадак радкоў вырашае гэта: першае супадзенне перамагае, таму шырокі радок %any каля верху ціха замяняе канкрэтны радок, які вы толькі што адрэдагавалі.

Перазагружайце, а не перазапускайце, калі файл ужо правільны. ipsec rereadsecrets абнаўляе копію дэмана IKE, а ўстаноўка swanctl загружае ўліковыя даныя сваёй уласнай камандай. Перазапуск скідвае ўсе ўсталяваныя асацыяцыі і знішчае параўнанне, якое вы спрабавалі зрабіць.

Ніводная з гэтых праверак не патрабуе раскрыцця сакрэту. Даўжыня, селектар асобы і пазіцыя радка тлумачаць большасць такіх збояў, перш чым каму-небудзь спатрэбіцца шаснаццатковы дамп.

Змяніце файл, не хаваючы вынік

Абмяжуйце доступ да файла ўліковым запісам дэмана і трымайце жывыя сакрэты па-за тыкетамі, чатам і скрыншотамі, бо ўстаўлены ключ — гэта ўцечка, а не дыягностыка. Ён таксама перажывае інцыдэнт, які яго стварыў.

Тэстуйце з кліента, канфігурацыяй якога вы кіруеце, пацвердзіце, што аўтэнтыфікацыя ўдалася, а затым пацвердзіце, што тунель перадае трафік. Перазагрузка, якая выпраўляе рукапоціск, пакуль маршрутызацыя застаецца зламанай, — гэта іншая праблема, і яна становіцца бачнай, як толькі сакрэт перастае рухацца.

Падобныя артыкулы