Tehnoloģijas

KeyMeld: kopējais atslēgas risinājums iPhone un Android platformām un Zero Vault arhitektūra projektam

KeyMeld pats par sevi nav Zero Vault. Tā ir atsevišķa SaaS pakalpojuma platforma, kas palīdz izstrādātājam deklarēt universālo atslēgu ārpus produkta backend, apvienot iOS un Android klientus un būvēt Zero Vault arhitektūru savam lietojumam.

Multi-platform lietojumprogrammām ir problēma, kuru lietotājs parasti nepamana. Ekrānā viņš redz vienu kontu un sagaida vienādu darbību uz jebkuras ierīces. Taču iPhone un Android izmanto atšķirīgas aizsardzības mehānikas un dažādi strādā ar lokālajiem atslēgas elementiem.

iPhone lietojumprogrammā var aizsargāt lokālo atslēgu ar Apple Keychain līdzekļiem. Android vietā tiek izmantots Android Keystore. Šīs tehnoloģijas paredzētas, lai jutīgie atslēgas elementi paliktu aizsargātā ierīces vidē, taču tās nav savstarpēji aizvietojamas.

Lietotājam tas nav būtiski. Viņš vienkārši vēlas atvērt lietojumprogrammu iPhone, pēc tam to instalēt Android un turpināt darbu ar tām pašām aizsargātajām datu kopijām.

Izstrādātājiem rodas arhitektūras jautājums: kā organizēt kopēju piekļuvi abās platformās, neaiznesot lokālos atslēgas elementus vai neliekot to kopijas savā backend datu bāzē?

Izpētot KeyMeld, es sapratu, ka serviss piedāvā šim mērķim atsevišķu universālo atslēgu, neiejaucoties iOS un Android iekšējajā aizsardzībā.

Kopēja atslēga dažādām platformām

Lokālā ierīces atslēga pieder konkrētai telefonei un tiek aizsargāta ar attiecīgās operētājsistēmas mehānismiem. Tā paliek aizsargātā vidē tikai uz konkrētās ierīces un nav paredzēta brīvai pārvietošanai starp ierīcēm.

Universālā atslēga KeyMeld ir cita būtība. Tā tiek izveidota konkrētam projektam, kontam un aizsargātajai telpai un kļūst kopēja autorizētiem klientiem uz dažādām platformām.

Serviss neņem atslēgu no iPhone, ne pārvieto to uz Android un necenšas pārveidot divas dažādas atslēgas vienā. Platformas aizsardzība saglabājas autonomi, bet lietojumprogramma saņem kopēju piekļuves līmeni savai projektam.

Tas nosaka KeyMeld arhitektūras lomu: tas nepadara iOS un Android vienādas un neaizvieto iekšējos mehānismus. Tā pievieno kopēju līmeni ar universālo atslēgu, kas ļauj projektam pārvaldīt starpplatformu piegādi bez pašiem riska risinājumiem.

Katram produktam un kontam izveidojas neatkarīgi atslēgu kontūri. Katram projektam ir sava piekļuves telpa, un vairāki konti uz viena ierīces paliek atdalīti.

Zero Vault pieder projektam

Jāuzsver: Zero Vault nav nosaukums pašam KeyMeld. Tā ir arhitektūras modelis, ko var īstenot pieslēgtais produkts.

KeyMeld ir atsevišķa SaaS-platforma. To neveido iekšpusē lietojumprogrammas backend, un tā nedarbojas blakus projekta datu bāzei kā vēl viens modulis. Universālā atslēga tiek apkalpota atsevišķā KeyMeld SaaS kontūrā, ārpus produkta backend.'

Lai šāda modelis būtu noturīgs, uzticības robežas starp projektu un KeyMeld jābūt neatkarīgām. Backend un ārējs serviss lieto atsevišķas piekļuves datu režīmus un administrācijas mehānismus.

Tādējādi arhitektūras rezultāts var tikt dēvēts par Zero Vault modeli: tā servera datubāze neglabā klienta aizsargātās glabāšanas atslēgu.

Zero Vault nenozīmē, ka produkta backend neko neredz. Tajā paliek konti, iestatījumi, biznesa dati un viss nepieciešamais darbībai. Taču kopēja atslēga netiek glabāta kopā ar tiem.

Kompromitācija servera bāzes neatklāj universālo atslēgu: tā netiek uzglabāta kontu un citu servera datu kopā. Taču šis modelis nesolās, ka jebkurš kļūdas gadījums infrastruktūrā automātiski kļūst nekaitīgs. Tas risina konkrētu uzdevumu — izslēgt universālo atslēgu no klienta glabāšanas, atdalot tās no produkta datubāzes.

Dzīvs scenārijs: viens konts iPhone un Android

Iedomāsimies lietojumprogrammu ar lokāli aizsargātiem datiem. Tas var būt autentifikators, uzņēmuma klients vai jebkura pakalpojuma, kura vajadzīga tieša darbs ar šifrētiem datiem ierīcē.

iPhone lietojumprogrammā lokālā atslēga ir aizsargāta ar iOS līdzekļiem. Android izmanto paša Android aizsardzības mehānismus. Iekšējās ierīces atslēgas ir atšķirīgas, un tas ir normāli.

Bez atsevišķas kopējas slāņa izstrādātājam būtu jārisina, kā organizēt piekļuvi vieniem un tiem pašiem aizsargātajiem datiem abās platformās. Platformas glabāšana būtu jātur dažāda, un produktu būtu pašam jāsavieno šīs realizācijas.

Vēl būtu iespējams izveidot atsevišķas shēmas iOS un Android, mēģināt manuāli pārvietot lokālās atslēgas vai glabāt to kopijas serverī.

KeyMeld ļauj atteikties no lokālo atslēgu pārvietošanas un to kopiju glabāšanas serverī, pievienojot kopēju universālo atslēgu.

Klients iPhone un Android saņem piekļuvi vienai un tai pašai kopējai atslēgai autentificētā projektā un kontā. Katram telefons turpina izmantot savus aizsardzības mehānismus.

Lietotājam tas izskatās kā viens konts vairākās ierīcēs. Viņam nav jāzina, kāds mehānisms darbojas iPhone vai Android.

Veicot jauna telefona maiņu, nav nepieciešams eksportēt lokālo atslēgu no vecās ierīces vai izveidot jaunu aizsargātu krātuvi jaunai platformai. Jauns klients pieslēdzas tam pašam projektam un saņem piekļuvi tai pašai kopējai atslēgai.

Backend piedalās pieteikšanās pieprasījumā, bet universālā atslēga ir paredzēta only autorizētam klientam un netiek glabāta produkta servera datu bāzē.

Pašais KeyMeld nesekmē produkta lietotni un nesaplāno sinhronizācijas sistēmu. Tā ir īpaša funkcija — sniegt klientam atslēgu, kas nepieciešama darbam ar aizsargātajiem datiem. Glabāšanas saturs un atjaunināšana ir produkta uzdevums.

Trīs dažādi atslēgu un slepeno datu veidi

Lai neradītu sajaukt lietas, ir lietderīgi atšķirt trīs jēdzienus.

  • Lokālā ierīces atslēga pieder konkrētai ierīcei un tiek apkalpota ar iOS vai Android līdzekļiem.

  • Universālā atslēga tiek izmantota autorizētiem vienas personas kontiem un sasaista platformas līmenī.

  • Darba slepenais datu nepieciešams backend, lai droši sazinātos ar KeyMeld. Tas netiek nodots mobilajai lietojumprogrammai vai pārlūkprogrammai.

Slepenais datu un universālā atslēga ir dažādas kategorijas. Zero Vault arhitektūrā universālā atslēga netiek glabāta produkta datu bāzē kopā ar backend dati.

KeyMeld darbošanai nav nepieciešams lietotāja vārds, parole, TOTP glabāšana vai uzņēmuma specifikācija. Serviss galvenais ir projekta, konta un lietotāja tiesību saistība, lai piekļūtu universālajai atslēgai.

Piekļuve ar pārvaldāmu autorizāciju

Piekļuve universālajai atslēgai nav automātiska ikviena klienta tiesība.

Ja ierīce vairs nav uzskatāma par uzticamu, konta statuss ir mainījies vai orgāns ir atceļojis piekļuvi projektam, KeyMeld var pārtraukt turpmāku piekļuves atslēgas piegādi šim klientam.

Šeit svarīgi nepieņemt pārāk plašus secinājumus. Tas nenozīmē automātiski dzēst esošo lokālo atslēgu. Tas ir par piekļuves kontrolēšanu un jaunu klientu pievienošanu.

Lietotājam tas nozīmē, ka jaunu ierīču pievienošana un piekļuves pārvaldība ietilpst vienā pārvaldības sistēmā.

Izstrādātājam — ka šādu loģiku nav jāveido atsevišķi priekš iOS un Android. Taču galīgā Zero Vault arhitektūra joprojām ir atkarīga no tā, vai projekts glabā universālo atslēgu sev un vai tiek nodalīts tas no ārējā SaaS kontūra KeyMeld.

Ko KeyMeld nedara

KeyMeld nav paroļu pārvaldnieks un nesaglabā lietotāja TOTP ierakstus. Tā nesasniedz mākoņa datu bāzi vai sinhronizācijas funkciju. Tas nav Apple Keychain vai Android Keystore aizstājējs. Serviss atstāj platformu lokālo mehānismu ar savu kārtību un pievieno kopēju līmeni lietojumprogrammām.

Tāpat tas nav universāls lietotāja identifikācijas pakalpojums. Identifikāciju un autorizāciju var nodrošināt cita platforma, piemēram, MeldID, bet KeyMeld risina citu uzdevumu — sniegt autorizētam klientam kopēju universālo atslēgu, neiekļaujot to produkta backend bāzē.

Visbeidzot, KeyMeld automātiski neveido Zero Vault. Tas nodrošina ārēju kontūru universālajai atslēgai. Lai saglabātu šo arhitektūru, izstrādātājs nedrīkst ievietot universālo atslēgu savā servera datu bāzē. Uzticības zonām jāpaliek atdalītām.

Kam tas var būt nepieciešams

Tāds pieejas modelis ir piemērots lietojumprogrammām, kas strādā uz vairākām platformām un izmanto lokālos aizsargātos datus.

Tā var būt autentifikatoru lietojumprogramma, korporatīvs lietotnes, SaaS produkti, vairāku ierīču pakalpojumi un jebkura projekta, kur vienas konts darbojas ar iPhone un Android vienlaikus.

Izstrādātājam galvenā vērtība ir ne tikai platformas loģikas optimizācija, bet arī atbildības dalīšana: produkta backend glabā savus datus, bet KeyMeld kā ārējā SaaS platforma nodrošina universālo atslēgu un pārvalda tās izsniegšanu.

Pirms izpētes es raksturotu KeyMeld ne kā gatavu Zero Vault, bet kā rīku, ar kuru izstrādātājs var izveidot šādu modeli savam produktam.

iOS un Android joprojām izmanto savu aizsardzības mehānismu. Klienti saņem kopēju universālo atslēgu, bet produkta backend — ja tas to neglabā, neveido kontūras ar KeyMeld, — nesamazina drošības risku par klienta datu aizsardzību.

Lietotājam tas nozīmē vienotu piekļuvi dažādās platformās, izstrādātājam — iespēju novietot universālo atslēgu ārpus sava backend, un kopējo arhitektūru — Zero Vault modeli, kur serveris neglabā klienta aizsargāto datu atslēgu.

Vairāk par projektu: KeyMeld