Pange privaatne mobiilirakendus VPN-i taha ja mõistlik inimene küsib, kas see vajab endiselt sertifikaadi kinnitamist. Küsimus kõlab nagu valik kahe võrdväärse kontrolli vahel, kuid tegelikult on see küsimus kahest erinevast väravast. VPN otsustab, kas see seade tohih seda teed üldse kasutada; rakendus otsustab, kas jõutud server on see, mida oodati. Vastake mõlemale eraldi ja disain muutub lihtsamaks.

Kaks väravat, kaks küsimust

Võrku lubamine puudutab klienti: kas see seade on registreeritud, kas selle volitus on kehtiv ja kas poliitika lubab selle sellele teele? Rakenduse usaldus puudutab serverit: kas ühendus jõudis teenuseni, mille identiteeti rakendus aktsepteerib? Need vastused tulevad erinevatest süsteemidest, ebaõnnestuvad erinevatel põhjustel ja neid parandavad erinevad meeskonnad. VPN-i kätlus võib õnnestuda, samal ajal kui rakendus räägib partneri taga aegunud sertifikaadiga. Täiuslikult kinnitatud rakendus võib jääda kõigile kättesaamatuks, sest seade ei jõudnud kunagi võrku.

Mõlemad liituvad. Ühe väljajätmine eemaldab kontrolli; teise lisamine ei asenda seda.

Mida kinnitus tegelikult piirab

Kinnitus kitsendab serveri identiteetide hulka, mida rakendus aktsepteerib, tavaliselt nimetades avaliku võtme või sertifikaadi räsi, selle asemel et usaldada iga ahelat, mille eest mõni hoidla vastutaks. See on tavapärase valideerimise peale asetatud piirang, mitte selle asendus. Tavapärane valideerimine vastab, kas ahel on üldse usaldusväärne; kinnitus vastab, kas see on ahel, mida rakendus ootab. Rakendus, mis jätab esimese sammu vahele, ei ole võitnud turvalisust, vaid ainult uudsust.

Kinnitatav objekt erineb platvormiti, seega üksi sõna ütleb väga vähe. Ühe toote usaldushoidlast räsi kopeerimine ja selle pidamine mobiilirakenduses samaks asjaks on tavaline ja vaikne viga.

Platvormil kinnitamine on konfiguratsioon, mitte poliitika

Android pakub kinnitamist oma võrgu turbe konfiguratsiooni kaudu, kus kinnituste komplekt hoiab avaliku võtme lühendeid ja ahel peab sisaldama vähemalt ühte neist. See fail on rakendusepõhine ja nõuab teadlikku buildi muudatust. iOS-il puudub samaväärne manifestmehhanism, seega elab kinnitamine seal rakenduse enda usalduse hindamise koodis.

Kuna mehhanism erineb, tuleb nõue kirjutada platvormiti. Poliitika, mis ütleb kinnita sertifikaat ilma platvormi nimetamata, ei ole rakendatav.

Rotatsioon otsustab, kas kinnitus jääb püsima

Raske osa ei ole esimene väljalase, vaid sertifikaadi uuendamine pärast seda. Range usalduspoliitika lükkab tagasi seadusliku uue võtme sama kindlalt kui ründaja oma.

Kaks mehhanismi teevad rotatsiooni üleelatavaks: varukinnitust, mida usaldatakse juba enne, kui seda vaja läheb, ja kinnituste komplekti aegumiskuupäev, et jõustamine lakkaks, selle asemel et rakendus blokeerida. Mõlemad on poliitilised otsused, ja just aegumine on teadlik turvalisuse vähendamine, mitte kahjutu taimer. Nimetage, kes kontrollib rakenduse buildi, TLS-i lõpp-punkti ja sertifikaadi uuendamist, ning viige need ühte muudatusprotsessi. Kui need on kolm erinevat meeskonda, põhjustab kinnitus lõpuks katkestuse, mida keegi ei planeerinud.

Kadunud seade on kolmas probleem

VPN-i volituse tühistamine ei lõpeta tingimata rakenduse sessiooni, ja serveri kinnitus ei tee kellegi teise käes oleva telefoniga üldse midagi. Seadme lukk, volituste hoiustamine, sessiooni eluiga ja kaugtühistamine on eraldi otsused eraldi omanikega. Nende kinnituskeskustesse kokku voltimine garanteerib, et ühtki neist ei projekteerita.

Testige nelja seost selle ühe asemel, mida näete: kavandatud server ja toiming, konto, mida tuleks keelduda, serveri identiteet, mida tuleks tagasi lükata, ja kavandatud rotatsioon. Töötav VPN harjutab ainult esimest. Kirjutage üles, mida iga test tõestas, sest järgmine inimene eeldab, et roheline tunnel tähendab, et kõik neli läbisid.

Seotud artiklid