ESP32-дегі WireGuard кілттері: әр құрылғыға жеке ме, әлде бір кіріктірілген бе?
ESP32 прошивкасына компиляцияланған кілт — бұл серіктес идентититі, құпиясөз емес. Үш шарт бойынша шешіңіз: иелену, flash қорғанысы және бүкіл паркте қайта пайдалану.
Эскиз WireGuard-тың жеке кілтін таңбалар массивіне салады, туннель жұмыс істейді, сондықтан бұл сұрақ қайта-қайта туындайды. Шын мәнінде қабылдауыңыз керек шешім «бұл қауіпсіз бе» емес, «үш шарттың қайсысы осы орналастыруға қатысты» деген сұрақ. Олар: құрылғыны физикалық түрде кім ұстай алады, сіздің бөлшегіңізде flash оқу не береді және парк бір кілтті бөлісе ме, әлде әрқайсысы өзінікін алып жүре ме. Осыларға жауап беріңіз, дизайн өзі келеді, өйткені әр шарт кілттің ағуы мүмкін деген фактіні емес, аққан кілттің құнын өзгертеді.
Кілт нені рұқсат етеді
WireGuard серіктестерді ашық кілтпен аутентификациялайды. Сервер әр серіктестің ашық кілтін мекенжайға және AllowedIPs тізімге сәйкестендіреді, сондықтан клиентке сол мекенжайдан трафик жіберуге мүмкіндік беретін жеке кілт.
Сол жазба құрылғы қай тағайындауларға жете алатынын анықтайды, сондықтан аққан кілт туннельдің артындағы желіні және туннель мекенжайын ашады.
Бірінші шарт: құрылғыны кім ұстай алады
Егер бірлік құлыпталған шкафта тұрса және сіздің командаңыздан тыс ешкім оған қол тигізбесе, әсер ету негізінен прошивканы тарату мәселесі. Егер ол клиенттерге жіберілсе, көлікте тұрса немесе кепілдік бойынша қайтарылса, физикалық иелену — бұл сенімхат, ал бинарлық файлдың құпиялылығы екінші дәрежелі. Құрылғыны ұстап тұрған адамға кілтті оқудың қажеті жоқ, өйткені жұмыс істеп тұрған прошивка оған туннельді ашады. Сондықтан сервер жағындағы жауапта тек қорғалған бейне емес, күшін жою және шектеулі өмір сүру мерзімі болуы керек.
Бұл шартты қалған екеуінен бұрын шешіңіз, өйткені ол екеуіне де бюджет белгілейді.
Екінші шарт: flash оқу не береді
Flash бейнесін оқи алатын кез келген адам литерал ретінде сақталған кілтті қалпына келтіреді: түзету қосылымы, жаңарту файлы, резервтік көшірме немесе қайтарылған бірлік арқылы. Flash шифрлауы тікелей дамптың құнын арттырады, ал ESP-IDF құжаттамасы бұл функцияның белгілі бір бөлшек пен конфигурация үшін нені қамтитынын сипаттайды. Ол кілтті барлық шабуыл модельдерінде алу мүмкін емес ете алмайды және құрылғы қолда болған жағдайда ештеңе істемейді. Оны құнды өзгертетін бір қабат деп қараңыз, жауап деп емес.
Дизайн шолуында қандай да бір қасиетті мәлімдеу алдында нақты чипіңіз бен конфигурацияңыз үшін платформа құжаттамасын оқыңыз.
Үшінші шарт: бүкіл паркте қайта пайдалану
Өндірістік серияға бір кілт — әр бірлік бір идентитті бөліседі деген сөз. Сервер оларды журналдарда ажырата алмайды, барлығын жоймайынша біреуін жоя алмайды, және клонды түпнұсқадан ажырата алмайды. Әр құрылғыға жеке кілттер үшеуін де шешеді, оның құны — тіркеу қадамы және сериялық нөмірді ашық кілтке сәйкестендіру. Дәл сол сәйкестендіру — жоюды бүкіл паркті қайта флештеудің орнына бір жолдық өзгеріске айналдыратын актив.
Егер парк үстелдегі бес бірлік болса, кілтті бөлісу орынды айырбас болуы мүмкін. Егер далада бес жүз болса, бұл мүлдем айырбас емес.
Әр құрылғыға жеке кілттерді практикалық ететін тіркеу үлгісі
Бірінші жүктеуде құрылғыда кілт жұбын жасаңыз, жеке жартысын қорғалған ұшпайтын жадта ұстаңыз және тек ашық кілтті мекенжай тағайындайтын және серіктес жазбасын жазатын тіркеу қызметіне жіберіңіз. Тіркеу жауабын аутентификациялаңыз, әйтпесе жергілікті желідегі шабуылдаушы өз кілтін сіздің аккаунтыңызға тіркей алады. Дайындау кезінде жеке кілтті сериялық консольге ешқашан басып шығармаңыз. Құрылғының сериялық нөмірін ашық кілттің жанына жазыңыз, сонда жоғалған бірлік дәл бір серіктес жазбасына сәйкес келеді.
Бұл шағын қызмет, және бұл — тексеруге болатын парк пен тек қайта флештеуге болатын парктің айырмашылығы.
Уақыт, шеткі нүктелер және шешім
Мысал туннельді бастамас бұрын уақытты синхрондайды және бұл TLS-тен тыс та маңызды: WireGuard қол алысулары қайталанудан қорғану үшін уақыт белгісін алып жүреді, сондықтан қате сағатпен жүктелген құрылғының қол алысулары қабылданбауы мүмкін. Шеткі нүкте — хост атауы, бұл DNS-ті сенім жолына қояды, бірақ сервердің ашық кілті серіктесті әлі де аутентификациялайды. Қате мекенжай әрекеттерді ысырап етеді және құрылғының қашан онлайн екенін ашады. Кілт туралы дауласпас бұрын екеуін де реттеңіз.
Сосын шешіңіз: ортақ кілт — иелену бақылауда және парк шағын болғанша ғана, ал әр құрылғыға жеке кілттер — осы екеуінің біреуі ақиқат болудан қалған сәттен бастап.