Скетч змяшчае прыватны ключ WireGuard у масіў сімвалаў, і тунель працуе — таму пытанне ўзнікае зноў і зноў. Рашэнне, якое вам трэба прыняць, не «ці гэта бяспечна», а «якая з трох умоў дзейнічае для гэтага разгортвання». Яны такія: хто можа фізічна трымаць прыладу, што дае чытанне флэша на вашай дэталі і ці парк дзеліць адзін ключ, ці кожная адзінка нясе свой. Адкажыце на гэта — і праект вынікае, бо кожная ўмова змяняе цану ўцечкі ключа, а не сам факт магчымасці ўцечкі.

Што дазваляе ключ

WireGuard аўтэнтыфікуе партнёраў па публічным ключы. Сервер супастаўляе публічны ключ кожнага партнёра з адрасам і AllowedIPs спісам, таму менавіта прыватны ключ дазваляе кліенту адпраўляць трафік з гэтага адраса.

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

Умова першая: хто можа трымаць прыладу

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

Вызначце гэтую ўмову раней за дзве іншыя, бо яна задае бюджэт для абедзвюх.

Умова другая: што дае чытанне флэша

Хто можа прачытаць вобраз флэша, той аднаўляе ключ, захаваны літаралам, — праз адладкавае злучэнне, файл абнаўлення, рэзервовую копію або вернутую прыладу. Шыфраванне флэша павышае цану прамога дампу, і дакументацыя ESP-IDF апісвае, што функцыя ахоплівае для пэўнай дэталі і канфігурацыі. Яно не робіць ключ невымальным пры любой мадэлі атакі і нічога не дае для выпадку, калі прылада ў руках. Стаўцеся да яго як да аднаго пласта, што змяняе цану, а не як да адказу.

Чытайце дакументацыю платформы для свайго дакладнага чыпа і канфігурацыі, перш чым заяўляць уласцівасць на аглядзе праекта.

Умова трэцяя: паўторнае выкарыстанне ў парку

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

Калі парк — пяць блокаў на стале, супольны ключ можа быць разумным абменам. Калі гэта пяцьсот у полі, гэта зусім не абмен.

Схема рэгістрацыі, якая робіць ключы на кожную прыладу практычнымі

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

Гэта невялікая служба, і яна і ёсць розніца паміж паркам, які можна аўдытаваць, і паркам, які можна толькі перапрашыць.

Час, канчатковыя пункты і рашэнне

Прыклад сінхранізуе час перад запускам тунеля, і гэта важна не толькі для TLS: рукапацісканні WireGuard нясуць адзнаку часу для абароны ад паўтору, таму ў прылады, якая загружаецца з няправільным гадзіннікам, рукапацісканні могуць быць адхіленыя. Канчатковы пункт — імя хоста, што ставіць DNS у шлях даверу, нават калі публічны ключ сервера ўсё яшчэ аўтэнтыфікуе партнёра. Няправільны адрас марнуе спробы і выдае, калі прылада анлайн. Разбярыцеся з абодвума, перш чым спрачацца пра ключ.

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

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