Teknologi

KeyMeld: Kunci Bersama untuk iPhone dan Android serta Arsitektur Zero Vault untuk Proyek

KeyMeld sendiri bukanlah Zero Vault. Ini adalah layanan SaaS terpisah yang membantu pengembang menyimpan kunci universal di luar backend produk, menghubungkan pengguna iOS dan Android, serta membangun arsitektur berdasarkan model Zero Vault.

Aplikasi lintas platform memiliki masalah yang biasanya tidak disadari pengguna. Di layar, mereka melihat satu akun dan mengharapkan fungsi yang sama di semua perangkat. Tapi, di dalamnya, iPhone dan Android menggunakan mekanisme perlindungan yang berbeda dan memperlakukan kunci lokal secara berbeda.

Di iPhone, aplikasi dapat melindungi kunci lokal perangkat dengan menggunakan Apple Keychain. Di Android, digunakan Android Keystore. Teknologi ini dirancang agar kunci sensitif tetap berada di lingkungan terlindungi perangkat, tetapi keduanya tidak dapat saling menggantikan satu sama lain.

Untuk pengguna, ini tidak penting. Mereka hanya ingin membuka aplikasi di iPhone, kemudian pasang di Android dan melanjutkan bekerja dengan data yang sama yang terlindungi.

Bagi pengembang, muncul pertanyaan arsitektur: bagaimana mengatur akses bersama di dua platform tanpa memindahkan kunci lokal perangkat dan tanpa menyimpan salinan di basis data backend sendiri?

Dalam mempelajari KeyMeld, saya melihat bahwa layanan ini menawarkan sebuah kunci universal terpisah yang tidak mengganggu perlindungan internal iOS dan Android.

Kunci Bersama untuk Berbagai Platform

Kunci lokal perangkat berkaitan dengan perangkat tertentu dan dilindungi oleh mekanisme sistem operasi terkait. Kunci ini tetap berada di lingkungan terlindungi perangkat dan tidak dimaksudkan untuk dipindahkan secara bebas antar perangkat.

Kunci universal KeyMeld merupakan entitas berbeda. Ia dibuat untuk proyek tertentu, akun, dan ruang terlindungi, dan menjadi milik bersama pengguna yang terotorisasi di berbagai platform.

Layanan ini tidak mengambil kunci dari iPhone, tidak memindahkannya ke Android, dan tidak mencoba menggabungkan dua kunci berbeda menjadi satu. Perlindungan platform tetap mandiri, dan aplikasi mendapatkan akses tingkat umum untuk proyeknya.

Peran arsitektur KeyMeld adalah ini: ia tidak membuat iOS dan Android menjadi sama atau menggantikan mekanisme internal mereka. Ia menambahkan tingkat akses bersama dengan kunci universal, sehingga pengembangan tidak perlu menangani distribusi lintas platform secara mandiri.

Untuk berbagai produk dan akun, dibuat struktur kunci yang independen. Dengan demikian, setiap proyek mempertahankan wilayah akses sendiri, dan beberapa akun di satu perangkat tetap terpisah.

Zero Vault Milik Proyek

Perlu ditegaskan: Zero Vault bukanlah nama dari KeyMeld itu sendiri. Ini adalah model arsitektur yang dapat dibangun oleh produk yang terhubung.

KeyMeld beroperasi sebagai layanan SaaS terpisah. Tidak dipasang di backend aplikasi dan tidak ditempatkan di samping basis data proyek sebagai modul perangkat lunak lain. Kunci universal dikelola dalam lingkungan SaaS terpisah, di luar backend produk.

Untuk menjaga model ini, batas kepercayaan antara proyek dan KeyMeld harus tetap independen. Data login dan hak akses backend aplikasi dan layanan eksternal harus terpisah dan terkendali secara terpisah.

Hasil arsitektur ini disebut sebagai model Zero Vault: server proyek tidak menyimpan kunci dari penyimpanan terlindungi klien.

Zero Vault tidak berarti bahwa backend produk tidak menyimpan apa pun. Akun pengguna, pengaturan, data bisnis, dan semua yang diperlukan untuk menjalankan aplikasi tetap ada di sana. Tapi tidak ada kunci universal yang disimpan bersama mereka.

Kompromi basis data server produk sendiri tidak secara otomatis membuka kunci universal: kunci ini tidak disimpan bersama akun dan data server lainnya. Model ini tidak menjamin bahwa gangguan apa pun terhadap infrastruktur otomatis tidak berbahaya. Ia menyelesaikan tugas spesifik—menghapus kunci universal dari basis data penyimpanan klien dari backend produk itu sendiri.

Skenario Nyata: satu akun di iPhone dan Android

Bayangkan sebuah aplikasi dengan data terlindungi lokal. Bisa berupa autentikator, aplikasi perusahaan, atau layanan lain yang memerlukan pengolahan data terenkripsi langsung di perangkat.

Di iPhone, aplikasi melindungi kunci lokal dengan mekanisme iOS. Di Android, digunakan mekanisme perlindungan Android sendiri. Kunci internal perangkat berbeda, dan itu hal wajar.

Tanpa lapisan umum terpisah, pengembang harus memecahkan bagaimana mengatur akses ke data terlindungi yang sama di kedua platform. Penyimpanan platform tetap berbeda, dan pengembang harus menghubungkan dua implementasi ini secara mandiri.

Alternatifnya, mereka bisa membuat skema terpisah untuk iOS dan Android, mencoba memindahkan kunci lokal secara manual, atau menyimpan salinannya di server.

KeyMeld memungkinkan pengembang untuk tidak memindahkan atau menyimpan kunci lokal di server, tetapi menambahkan satu kunci universal bersama.

Klien di iPhone dan Android mendapatkan akses ke satu kunci universal yang sama dalam kerangka proyek dan akun yang terotorisasi. Pada saat yang sama, setiap perangkat tetap menggunakan mekanisme perlindungan masing-masing.

Bagi pengguna, ini tampak seperti satu akun tunggal di berbagai perangkat. Mereka tidak perlu tahu mekanisme apa yang berjalan di dalam iPhone dan Android.

Saat berganti perangkat, tidak perlu mengekspor kunci lokal dari perangkat lama atau membuat versi penyimpanan terlindungi baru untuk platform baru. Klien baru terhubung ke proyek yang sama dan mendapatkan akses ke kunci universal tersebut.

Backend berperan dalam otorisasi permintaan, tetapi kunci universal hanya untuk klien yang terotorisasi dan tidak disimpan di basis data server produk.

KeyMeld sendiri tidak memindahkan basis data aplikasi dan tidak menggantikan mekanisme sinkronisasi rekaman pengguna. Tugasnya adalah menyediakan klien kunci yang diperlukan untuk mengakses data terlindungi. Isi penyimpanan dan pembaruannya sepenuhnya menjadi tanggung jawab produk itu sendiri.

Tiga jenis kunci dan rahasia berbeda

Supaya tidak membingungkan bagian-bagian arsitektur, cukup membedakan tiga konsep.

  • Kunci lokal perangkat milik perangkat tertentu dan dilindungi oleh mekanisme iOS atau Android.

  • Kunci universal digunakan oleh klien terotorisasi dari satu proyek dan akun. Ia menghubungkan berbagai platform di tingkat produk.

  • Rahasia layanan diperlukan backend untuk komunikasi terlindungi dengan KeyMeld. Ini tidak diberikan kepada aplikasi mobile maupun browser.

Rahasia layanan dan kunci universal menjalankan tugas berbeda. Dalam model Zero Vault, kunci universal tidak disimpan di basis data produk bersama data backend.

Untuk menjalankan KeyMeld, tidak diperlukan nama pengguna, kata sandi, isi penyimpanan TOTP, maupun makna bisnis dari rekaman. Layanan ini hanya membutuhkan asosiasi antara proyek, akun, dan hak klien untuk mendapatkan kunci universal.

Akses ke kunci tetap dikelola

Pengambilan kunci universal tidak otomatis menjadi hak tak terbatas setiap klien.

Jika perangkat tidak lagi dianggap tepercaya, status akun berubah, atau akses ke proyek dicabut, KeyMeld dapat menghentikan pemberian kunci universal kepada klien tersebut.

Penting untuk tidak menarik kesimpulan berlebihan. Ini tidak berarti menghapus otomatis salinan lokal kunci yang ada. Lebih kepada pengendalian atas pengambilan kunci berikutnya dan penghubungan klien baru.

Untuk pengguna, ini berarti penghubungan perangkat baru dan pengelolaan akses mereka terhadap kunci adalah bagian dari satu sistem yang sama.

Bagi pengembang, ini berarti mereka tidak perlu membangun logika ini secara mandiri untuk iOS maupun Android. Model Zero Vault akhir tetap bergantung pada apakah proyek menyimpan kunci universal dan memisahkan infrastruktur internal dari environment SaaS eksternal KeyMeld.

Apa yang tidak dilakukan KeyMeld

KeyMeld bukan pengelola kata sandi dan tidak menyimpan rekaman TOTP pengguna. Ia bukan basis data cloud aplikasi dan tidak menggantikan sinkronisasi konten aplikasi.

Ini bukan pengganti Apple Keychain atau Android Keystore. Layanan ini meninggalkan mekanisme lokal platform tetap ada dan menambahkan lapisan bersama untuk produk.

Ini juga bukan layanan identifikasi pengguna wajib. Untuk identifikasi dan otorisasi, dapat digunakan layanan terpisah seperti MeldID, sementara KeyMeld menyelesaikan tugas lain—menyediakan klien dengan kunci universal yang tidak disimpan di backend produk.

Terakhir, KeyMeld tidak secara otomatis mengubah model Zero Vault. Ia menyediakan struktur eksternal untuk kunci universal. Untuk menjaga arsitektur ini, pengembang tidak harus menyimpan kunci universal di basis data server mereka. Zona kepercayaan yang independen juga harus tetap terpisah.

Sasaran Pengguna

Metode ini cocok untuk aplikasi yang berjalan di beberapa platform sekaligus dan menggunakan data terlindungi lokal.

Contohnya: autentikator, aplikasi perusahaan, produk SaaS, layanan multi-perangkat, dan proyek lain di mana satu akun harus berjalan sama di iPhone dan Android.

Nilai utama bagi pengembang tidak hanya pada pengurangan logika platform, tetapi juga pada pembagian tanggung jawab. Backend produk menyimpan data mereka sendiri, sementara KeyMeld sebagai layanan SaaS eksternal menyediakan kunci universal dan mengatur distribusinya berikutnya.

Setelah mempelajari proyek ini, saya akan menggambarkan KeyMeld bukan sebagai Zero Vault lengkap, tetapi sebagai alat yang memungkinkan pengembang membangun model tersebut untuk produk mereka sendiri.

iOS dan Android tetap menggunakan mekanisme perlindungan mereka sendiri. Klien mendapatkan kunci universal bersama. Dan backend aplikasi, jika tidak menyimpan kunci itu dan menjaga pemisahan antara infrastruktur sendiri dan lingkungan SaaS eksternal KeyMeld, tidak menjadi brankas berisi kunci penyimpanan klien.

Ini berarti pengguna mendapatkan akses tunggal di berbagai platform. Pengembang dapat memindahkan kunci universal di luar backend mereka sendiri. Dan secara keseluruhan, arsitektur Zero Vault: server aplikasi tidak menyimpan kunci dari data terlindungi klien.

Lebih detail tentang proyek: KeyMeld