Технология

KeyMeld: iPhone және Android үшін жалпы кілт және Zero Vault архитектурасы жобасы үшін

KeyMeld өзінен-өзі Zero Vault емес. Бұл жеке SaaS қызметі, ол әзірлеушіге әмбебап кілтті бэкенд өнімінен тыс шығарып, iOS және Android клиенттерін біріктіруге және Zero Vault моделі бойынша өз қосымшасының архитектурасын құруға көмектеседі.

Кросс-платформа қосымшаларда қолданушы жиі байқамайтынымызға байланысты проблема бар. Экранда ол бір аккаунтты көреді және кез келген құрылғыда бірдей жұмысын күштірек күтеді. Бірақ iPhone және Android өздерінің қауіпсіздік механизмдерін пайдаланады және әртүрлі локальді кілттермен жұмыс істейді.

iPhone-де қолданба Apple Keychain құралдарымен жергілікті кілтті προσταтайды. Android-та оған Android Keystore қолданылады. Бұл технологиялар құпия кілттерді құрылғының қорғалған ортасында сақтауға арналған, бірақ олар өзара алмастырылатын емес.

Пайдаланушы үшін ол мәнсіз — ол тек iPhone-да қолданбаны ашып, оны Android-ке орнатып, сол қауіпсіз деректермен жұмыс істеуді жалғастырғысы келеді.

Әзірлеуші үшін мұнда архитектуралық мәселе пайда болады: екі платформада ортақ қол жетімділікті қалай ұйымдастыру керек, жергілікті кілттерді тасымалдамай немесе олардың көшірмелерін өзінің бэкенд базасына салмай?

KeyMeld-ті зерттегенімде, ол бұл үшін бөлек универсалды кілт ұсынатынын байқадым, iOS пен Android ішкі қорғанысын араласпай-ақ.

Әр түрлі платформаларға арналған ортақ кілт

Жергілікті құрылғы кілті нақты телефонға тән және сәйкес операциялық жүйе құралдарымен қорғалған. Ол нақты құрылғының қорғалған ортасында қалады және басқа құрылғыларға тегін тасымалдауға арналмаған.

KeyMeld-тің әмбебап кілті — басқа ұғым. Ол нақты жоба, аккаунт және қауіпсіз кеңістік үшін жасалған және түрлі платформалардағы авторизацияланған клиенттер үшін ортақ болады.

Қызмет iPhone-дан кілтті алмайды, оны Android-қа тасымалдамайды немесе екі түрлі кілтті біріне айналдырмайды. Платформалық қорғау өздігінен қалады, ал қосымша өзінің жобасы үшін ортақ қол жетімділікті алады.

Бұл KeyMeld архитектуралық рөлін анықтайды. Ол iOS және Android-ты бірдей етпейді және олардың ішкі механизмдерін алмастырмайды. Ол әмбебап кілтпен жұмыс істеудің жалпы деңгейін қосады, сол арқылы жобаны оның межплатформалық таралуын өздігінен шешуде көмектеседі.

Әр түрлі өнімдер мен аккаунттар үшін тәуелсіз кілттер мәні жасалады. Сондықтан әр жоба өзінің қол жетімділік аймағын сақтайды, ал бір құрылғыда бірнеше аккаунт бөлек қалады.

Zero Vault жобаға тиесілі

Бірден атап өту керек: Zero Vault — бұл KeyMeld атауы емес. Бұл құрылым моделін қосылған өнім құра алады.

KeyMeld жеке SaaS-қызметі ретінде жұмыс істейді. Оның ішкі бэкендке орнатылмайды және жоба дерекқорымен қасақана бір қорапқа орналастырылмайды. Әмбебап кілт әдеттегі SaaS-сервисте, яғни KeyMeld-тің бөлек сервистік ортасында қызмет етеді, ол өнімнің бэкендінен тысқары орналасады.

Мұндай модель сақталуы үшін, жоба мен KeyMeld арасындағы сенім шекарасы тәуелсіз болуы керек. Қызметтің және сыртқы сервисің есептік жазбалары мен басқару механизмдері бөлек болуы қажет.

Дәл осындай нәтижені архитектурада Zero Vault моделінің нысаны деп атауға болады: оның серверлік дерекқоры клиенттің қауіпсіз сақтау орнының кілтін сақтамайды.

Zero Vault ұғымы бұл өнімнің бэкенді ештеңе сақтамайды дегенді білдірмейді. Оның аккаунттары, баптаулары, бизнес деректер және қосымшаның жұмысына қажетті барлық нәрсе қалады. Бірақ әмбебап кілт олармен бірге тұрған жоқ.

Серверлік дерекқордың бұзылуы әмбебап кілтті жарияламайды — ол аккаунттармен немесе басқа серверлік деректермен бірге сақталмайды. Бұл модель кез келген сәтсіздік автоматты түрде зиянсыз дегенді білдірмейді. Ол нақты мәселені шешеді — клиенттің қауіпсіз сақтау орнынан әмбебап кілтті жекешелендіреді.

Жанды сценарий: бір аккаунт iPhone және Android-те

Жергілікті қорғалған деректері бар қолдануды елестетейік. Бұл аутентификатор, корпоративті клиент немесе кез келген шифрланған ақпаратпен жұмыс істеуге қажетті сервис болуы мүмкін.

iPhone-да қолданба жергілікті кілтті iOS құралдары арқылы қорғайды. Android-та ол Android өзінің механизмдерін пайдаланады. Ішкі құрылғы кілттері әртүрлі, бұл табиғи.

Бөлек ортақ қабат болмаған жағдайда, әзірлеуші екі платформада бірдей қауіпсіз деректерге қол жеткізуді қалай ұйымдастыру керектігін шешуі керек еді. Платформалық сақтау әрқашан әртүрлі болып қала берер еді, ал өнім ол екі жүзеге асыруды өз бетінше байланыстыруға мәжбүр болар еді.

Жеке схемалар жасау, жергілікті кілттерді қолмен тасымалдау немесе серверде олардың көшірмесін сақтау сияқты жолдар болуы мүмкін еді.

KeyMeld жергілікті кілттерді тасымалдаудан және серверлік көшірмелерін сақтаудан бас тартып, әмбебап кілт қосады.

iPhone-де және Android-де клиенттер бір аккаунт шеңберінде ортақ әмбебап кілтке қол жеткізеді. Әр телефон өз қорғаныс механизмдерін пайдаланады да қалады.

Пайдаланушы үшін ол бір аккаунтқа бірнеше құрылғыдан кіргендей көрінеді. Ол iPhone ішіндегі механизмнің қайсысы жұмыс істейтінін немесе Android қолданбасының қандай екенін білмейді.

Телефонды ауыстырғанда, ескі құрылғыдан жергілікті кілтті экспортациялау немесе жаңа платформа үшін бөлек қорғалған сақтау орнын жасау қажет емес. Жаңа клиент сондай жобаға қосылып, соған қол жеткізеді.

Бэкенд сұранысты авторизациялау үшін қатысады, бірақ әмбебап кілт авторизацияланған клиентке арналған және ол өнімнің серверлік дерекқорында сақталмайды.

Өзінің өзі KeyMeld шоғырланбағандықты және қолданушылар жазбаларын синхрондауды алмастырмайды. Оның нақты мақсаты — клиентке қорғалған деректермен жұмыс істеу үшін қажет кілтті ұсыну. Қор сақтау орнының мазмұны мен жаңартылуы өнімнің өзіне жүктелген.

Үш түрлі кілт және құпия сөз түрлері

Әр түрлі компоненттерді шатастырмау үшін үш ұғымды ажыратсақ жеткілікті.

  • Құрылғының жергілікті кілті — нақты телефонға тән және iOS немесе Android құралдарымен қолдау көрсетіледі.

  • Әмбебап кілт — бір жоба мен аккаунттың авторизацияланған клиенттері пайдаланады. Ол платформалар арасындағы байланысты қамтамасыз етеді.

  • Қызметтік құпия сөз — бэкенд үшін қажет, ол KeyMeld-пен қауіпсіз өзара әрекеттесу үшін пайдаланылады. Ол мобильді қолданбаға немесе браузерге берілмейді.

Қызметтік құпия сөз бен әмбебап кілт әртүрлі тапсырмалар атқарады. Zero Vault архитектурасында әмбебап кілт өнімнің дерекқорында сақталмайды және бекенд деректерімен бірге болмайды.

KeyMeld жұмыс істеу үшін адам аты, құпия сөзі, TOTP сақтау орны немесе бизнес-деректерінің мазмұны маңызды емес. Қызметке жоба, аккаунт және клиент құқығын алу маңызды.

Кілтке қол жеткізу басқару үстінде қалады

Әмбебап кілтті алу кез келген клиенттің автоматты құқығы емес.

Егер құрылғы сенімсіз деп танылса, аккаунт статусы өзгерсе немесе команда жобаға қол жеткізуді тоқтатқан жағдайда, KeyMeld бұл клиентке әрі қарай әмбебап кілтті ұсынуды тоқтата алады.

Маңыздысы — көп ойланбай қорытынды шығармау. Бұл жергілікті кілттің автоматты түрде жойылуын білдірмейді. Негізгі мәселе — келесі алынатын кілтті бақылау және жаңа клиенттерді қосу.

Пайдаланушы үшін бұл құрылғыларды қосу және оларға келесі қол жетімділікті басқару бір жүйеге біріктірілгенін білдіреді.

Әзірлеуші үшін — мұндай логиканы өз бетінше құрудың қажеті жоқ. Нәтижесінде Zero Vault моделі тұтастай алғанда жобаға арналған, ал жобаның нысанасы — әмбебап кілтті өз бетінше сақтау және оны оның сыртындағы SaaS-контурға бөлу.

KeyMeld не істемейді

KeyMeld — құпия сөреде бэкенд айырбастамайтын және қолданушылардың TOTP жазбаларын сақтамайтын менеджер емес. Ол қолданудың бұлттық дерекқорына айналмайды және мазмұнды синхрондауды алмастырмайды.

Бұл Apple Keychain немесе Android Keystore алмастырғыш емес. Қызмет платформа механизмдерін өздерінде қалдырады және өнімге ортақ деңгей қосады.

Бұл сондай-ақ қолданушыны идентификациялау үшін міндетті сервистің орнына келмейді. Мысалы MeldID сияқты бөлек сервис арқылы авторизация және идентификация жүргізілуі мүмкін, ал KeyMeld — қосылған клиентке бірдей әмбебап кілтті ұсыну ғана міндеті бар, оны өнімнің бэкендіне салмайды.

Және, ақырында, KeyMeld автоматты түрде Zero Vault құрып тұрған жоқ. Ол жобаның әмбебап кілтіне сыртқы контур береді. Мұндай архитектураны сақтау үшін, әзірлеуші әмбебап кілтті өз серверлік базасына салмауы керек. Сенімді бөлек зоналар да бөлінген болуы қажет.

Бірнешеуіне арналған

Бұл тәсіл бір уақытта бірнеше платформаны қолданатын және жергілікті қорғалған деректері бар қосымшалар үшін қызықты.

Бұл аутентификаторлар, кәсіпорын қосымшалары, SaaS өнімдері, бірнеше құрылғысы бар сервистер және бір аккаунттың iPhone және Android-те бірдей жұмыс жасауы қажет барлық жобалар болуы мүмкін.

Әзірлеуші үшін құндылығы платформалық логиканы қысқартуға ғана емес, жауапкершілікті бөлуді де қамтиды. Өнімнің бэкенді өз деректерін сақтайды, ал KeyMeld сыртқы SaaS-қызметі ретінде әмбебап кілтті ұсынады және оның әрі қарай таралуын бақылайды.

Жобамен танысқаннан кейін, мен KeyMeld-ті дайын Zero Vault деп сипаттамаймын, оны әзірлеуші өзінің өнімі үшін осындай модельді құрудың құралы ретінде қарастыруды жөн көремін.

iOS және Android өздерінің механизмдерін қолдануды жалғастырады. Клиенттер әмбебап кілтке ортақ қол жеткізу алады. Ал, егер қолданба бэкендінде бұл кілт сақталмаса және оның инфрақұрылымы мен сыртқы SaaS-контур арасында бөлінген болса, ол клиенттік деректердің құлы емес болып қалады.

Пайдаланушы үшін бұл — әртүрлі құрылғыларда бірдей қол жеткізу. Әзірлеуші үшін — әмбебап кілтті өз бетінше сақтаудан шығаруға мүмкіндік. Ал жобаның жалпы қамтитын архитектурасы — сервер қолданбасы клиенттің шифрланған деректерінің кілтін сақтамайтын Zero Vault үлгісі.

Толығырақ жоба туралы: KeyMeld