Padėkite privačią mobiliąją programėlę už VPN ir protingas žmogus paklaus, ar jai dar reikia sertifikato prisegimo. Klausimas skamba kaip pasirinkimas tarp dviejų lygiaverčių kontrolių, o iš tikrųjų tai klausimas apie du skirtingus vartus. VPN nusprendžia, ar šis įrenginys apskritai gali naudotis keliu; programėlė nusprendžia, ar pasiektas serveris yra tas, kurio buvo laukiama. Atsakykite į abu atskirai ir dizainas taps paprastesnis.

Du vartai, du klausimai

Priėmimas į tinklą susijęs su klientu: ar šis įrenginys registruotas, ar jo prisijungimo duomenys galioja ir ar politika leidžia jam šį kelią? Programėlės pasitikėjimas susijęs su serveriu: ar ryšys pasiekė paslaugą, kurios tapatybę programėlė priima? Šie atsakymai ateina iš skirtingų sistemų, nepavyksta dėl skirtingų priežasčių ir juos taiso skirtingos komandos. VPN rankos paspaudimas gali pavykti, kai programėlė kalba su pasenusiu sertifikatu už partnerio. Tobulai prisegta programėlė vis tiek gali likti nepasiekiama niekam, nes įrenginys taip ir nepateko į tinklą.

Abu sumuojasi. Vieno atsisakymas pašalina kontrolę; kito pridėjimas jo nepakeičia.

Ką prisegimas iš tikrųjų apriboja

Prisegimas susiaurina serverio tapatybių rinkinį, kurį programėlė priims, paprastai įvardydamas viešąjį raktą ar sertifikato maišą, o ne pasitikėdamas kiekviena grandine, už kurią laiduotų kokia nors saugykla. Tai įprasto tikrinimo viršuje uždėtas apribojimas, o ne jo pakaitalas. Įprastas tikrinimas atsako, ar grandinė apskritai patikima; prisegimas atsako, ar tai grandinė, kurios tikisi ši programėlė. Diegimas, kuris praleidžia pirmą žingsnį, nelaimėjo saugumo, tik naujumo.

Prisegamas objektas skiriasi priklausomai nuo platformos, todėl vienas žodis pasako labai mažai. Nukopijuoti maišą iš vieno produkto pasitikėjimo saugyklos ir traktuoti jį kaip tą patį mobiliojoje programėlėje yra dažna ir tyli klaida.

Prisegimas platformoje yra konfigūracija, o ne politika

Android atskleidžia prisegimą per savo tinklo saugumo konfigūraciją, kur prisegimo rinkinys laiko viešojo rakto suvestines ir grandinė turi turėti bent vieną iš jų. Tas failas yra kiekvienai programėlei ir reikalauja sąmoningo kūrimo pakeitimo. iOS neturi lygiaverčio manifestų mechanizmo, todėl ten prisegimas gyvena pačios programėlės pasitikėjimo vertinimo kode.

Kadangi mechanizmas skiriasi, reikalavimas turi būti rašomas kiekvienai platformai. Politika, kuri sako prisekite sertifikatą nenurodydama platformos, nėra įgyvendinama.

Rotacija nusprendžia, ar prisegimas išliks

Sunkioji dalis ne pirmas leidimas, o po jo einantis sertifikato atnaujinimas. Griežta pasitikėjimo politika atmeta teisėtą naują raktą taip pat tvirtai, kaip ir užpuoliko.

Du mechanizmai padaro rotaciją išgyvenamą: atsarginis prisegimas, kuriuo pasitikima jau prieš jam prireikus, ir galiojimo pabaigos data prisegimo rinkinyje, kad vykdymas nutrūktų, o ne užblokuotų programėlę. Abu yra politiniai sprendimai, o pabaigos data ypač yra sąmoningas saugumo sumažinimas, o ne nekenksmingas laikmatis. Įvardykite, kas valdo programėlės kūrimą, TLS galinį tašką ir sertifikato atnaujinimą, ir suveskite juos į vieną pakeitimų procesą. Jei tai trys skirtingos komandos, prisegimas galiausiai sukels triktį, kurios niekas neplanavo.

Pamestas įrenginys yra trečia problema

VPN prisijungimo duomenų atšaukimas nebūtinai baigia programėlės sesiją, o serverio prisegimas visiškai nieko nedaro telefonui kito žmogaus rankoje. Įrenginio užraktas, prisijungimo duomenų saugojimas, sesijos trukmė ir nuotolinis atšaukimas yra atskiri sprendimai su atskirais savininkais. Jų įtraukimas į prisegimo diskusiją garantuoja, kad nė vienas nebus suprojektuotas.

Išbandykite keturis ryšius vietoj vieno, kurį matote: numatytą serverį ir operaciją, paskyrą, kuriai turėtų būti atsisakyta, serverio tapatybę, kuri turėtų būti atmesta, ir suplanuotą rotaciją. Veikiantis VPN treniruoja tik pirmąjį. Užrašykite, ką įrodė kiekvienas testas, nes kitas žmogus manys, kad žalias tunelis reiškia, jog visi keturi praėjo.

Susiję straipsniai