Teknologi
KeyMeld: Kunci Umum untuk iPhone dan Android serta Arsitektur Zero Vault untuk Proyek
KeyMeld sendiri bukanlah Zero Vault. Ini adalah layanan SaaS terpisah yang membantu pengembang untuk memindahkan kunci universal di luar backend produk, menyatukan pelanggan iOS dan Android, serta membangun arsitektur proyek berdasarkan model Zero Vault.
Untuk aplikasi lintas platform, ada masalah yang biasanya tidak disadari pengguna. Di layar, mereka melihat satu akun dan mengharapkan kinerja yang sama di perangkat apa pun. Tetapi di dalamnya, iPhone dan Android menggunakan mekanisme perlindungan berbeda dan bekerja secara berbeda dengan kunci lokal.
Pada iPhone, aplikasi dapat melindungi kunci lokal perangkat menggunakan Apple Keychain. Pada Android, digunakan Android Keystore. Teknologi ini dirancang agar kunci sensitif tetap berada di lingkungan terlindungi perangkat, tetapi mereka tidak dapat saling menggantikan.
Bagi pengguna, ini tidak penting. Mereka hanya ingin membuka aplikasi di iPhone, kemudian memasangnya di Android, dan melanjutkan pekerjaan dengan data yang sama yang terlindungi.
Bagi pengembang, ini menimbulkan pertanyaan arsitektural: bagaimana mengatur akses bersama di kedua platform tanpa memindahkan kunci lokal perangkat dan tanpa menyimpannya sebagai salinan di database backend sendiri?
Dengan memahami KeyMeld, saya melihat bahwa layanan ini menawarkan kunci universal terpisah untuk tujuan tersebut, tanpa mengganggu perlindungan internal iOS dan Android.
Kunci Umum untuk Berbagai Platform
Kunci lokal perangkat terkait dengan perangkat tertentu dan dilindungi oleh mekanisme sistem operasinya masing-masing. Kunci ini tetap di lingkungan terlindungi perangkat dan tidak dimaksudkan untuk dipindahkan secara bebas antar perangkat.
Kunci universal KeyMeld adalah entitas berbeda. Ia dibuat untuk proyek tertentu, akun, dan ruang terlindungi, serta menjadi kunci bersama untuk klien 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 berdiri sendiri, dan aplikasi mendapatkan level akses umum untuk proyeknya.
Inilah yang menentukan peran arsitektural KeyMeld. Ia tidak menjadikan iOS dan Android sama dan tidak menggantikan mekanisme internal mereka. Ia menambahkan level kerja bersama dengan kunci universal, sehingga proyek tidak perlu mengatur penyediaan lintas platformnya sendiri.
Untuk berbagai produk dan akun dibuatkan kontur kunci yang terpisah. Oleh karena itu, setiap proyek mempertahankan area aksesnya sendiri, dan beberapa akun di perangkat yang sama tetap terpisah.
Zero Vault Milik Proyek
Penting untuk segera diklarifikasi: Zero Vault bukanlah nama dari KeyMeld itu sendiri. Ini adalah model arsitektur yang dapat dibangun oleh produk yang terkoneksi.
KeyMeld berfungsi sebagai layanan SaaS terpisah. Tidak diinstal di backend aplikasi dan bukan juga di tempatkan berdampingan dengan basis data proyek sebagai modul perangkat lunak lainnya. Kunci universal dilayani dalam kontur SaaS terpisah dari KeyMeld, di luar backend produk itu sendiri.
Untuk memastikan model ini tetap terjaga, batas kepercayaan antara proyek dan KeyMeld harus tetap independen. Data login dan hak akses dari backend aplikasi dan layanan eksternal berbeda dan mekanisme administrasinya terpisah.
Hasil arsitektur ini disebut sebagai model Zero Vault: basis server tidak menyimpan kunci dari penyimpanan terlindungi klien.
Zero Vault tidak berarti bahwa backend produk tidak menyimpan apa pun sama sekali. Akun, pengaturan, data bisnis, dan semua yang diperlukan untuk fungsi aplikasi tetap ada di sana. Tetapi tidak ada kunci universal di samping mereka.
Konsekuensi dari basis server yang kompromi sendiri tidak secara otomatis membocorkan kunci universal: kunci tersebut tidak disimpan bersama akun dan data server lainnya. Model ini tidak menjanjikan bahwa gangguan pada bagian infrastruktur apa pun otomatis tidak menyebabkan bahaya. Model ini menyelesaikan satu tugas spesifik — menghilangkan kunci universal dari penyimpanan klien di basis data produk.
Skenario Langsung: Satu Akun di iPhone dan Android
Bayangkan sebuah aplikasi dengan data terlindungi lokal. Bisa jadi adalah pengautentikator, klien perusahaan, atau layanan apa pun yang perlu bekerja langsung dengan data terenkripsi di perangkat.
Pada iPhone, aplikasi melindungi kunci lokal dengan mekanisme iOS. Pada Android, digunakan mekanisme perlindungan Android sendiri. Kunci internal perangkat berbeda, dan ini normal.
Tanpa lapisan umum terpisah, pengembang harus memutuskan bagaimana mengatur akses terhadap data terenkripsi yang sama di kedua platform. Penyimpanan platform tetap berbeda, dan produk harus secara mandiri menghubungkan kedua implementasi tersebut.
Pengembang bisa membuat skema terpisah untuk iOS dan Android, mencoba memindahkan kunci lokal secara manual, atau menyimpan salinan di server.
KeyMeld memungkinkan menghindari pemindahan kunci lokal dan penyimpanan salinan ke server, dengan menambahkan kunci universal bersama.
Klien di iPhone dan Android mengakses satu dan kunci universal yang sama dalam proyek dan akun yang terotorisasi. Setiap perangkat tetap menggunakan mekanisme perlindungan internalnya sendiri.
Bagi pengguna, ini tampak sebagai satu akun yang sama di berbagai perangkat. Mereka tidak perlu tahu mekanisme apa yang berjalan di dalam iPhone maupun Android.
Saat mengganti 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 yang sama.
Backend terlibat dalam otorisasi permintaan, tetapi kunci universal ditujukan untuk klien yang terotorisasi dan tidak disimpan di basis data server produk.
KeyMeld sendiri tidak memindahkan basis data aplikasi dan bukan pengganti sinkronisasi data pengguna. Tugas utamanya adalah menyediakan kunci ke klien untuk bekerja dengan data terlindungi. Isi penyimpanan dan pembaruannya tetap menjadi tanggung jawab produk itu sendiri.
Tiga Jenis Kunci dan Sekret
Untuk menghindari kebingungan, cukup membedakan tiga konsep berikut.
Kunci lokal perangkat terkait dengan perangkat tertentu dan dilindungi oleh mekanisme iOS atau Android.
Kunci universal digunakan oleh klien yang terotorisasi dalam satu proyek dan akun. Ia menghubungkan berbagai platform pada tingkat produk itu sendiri.
Sekret layanan diperlukan oleh backend untuk interaksi terlindungi dengan KeyMeld. Sekret ini tidak diberikan ke aplikasi mobile maupun browser.
Sekret layanan dan kunci universal memiliki tugas berbeda. Dalam arsitektur Zero Vault, kunci universal tidak disimpan di basis data produk bersama data backend lainnya.
Untuk pengoperasian KeyMeld, tidak diperlukan nama orang, kata sandi, isi penyimpanan TOTP, atau makna bisnis dari data. Yang penting bagi layanan adalah mengaitkan proyek, akun, dan hak klien untuk mendapatkan kunci universal.
Akses ke kunci tetap terkelola
Mendapatkan kunci universal bukanlah hak mutlak dari setiap klien.
Jika perangkat tidak lagi dianggap tepercaya, status akun berubah, atau tim mencabut akses ke proyek, KeyMeld dapat menghentikan pengeluaran kunci universal ke klien tersebut.
Penting untuk tidak menarik kesimpulan terlalu luas. Ini tidak berarti menghapus secara otomatis salinan lokal yang sudah ada. Ini lebih kepada mengontrol pengambilan kunci lebih lanjut dan menambah klien baru.
Bagi pengguna, ini berarti penambahan perangkat baru dan pengelolaan akses mereka terhadap pengeluaran kunci adalah bagian dari satu sistem.
Bagi pengembang — mereka tidak perlu membangun logika ini secara terpisah untuk iOS dan Android. Model Zero Vault akhir tetap bergantung pada apakah proyek menyimpan kunci universal dan memisahkan infrastruktur internal dari layanan SaaS eksternal KeyMeld.
Apa yang Tidak Dilakukan KeyMeld
KeyMeld bukan manajer password dan tidak menyimpan catatan TOTP pengguna. Ia bukan basis data cloud dari aplikasi dan bukan pengganti sinkronisasi data aplikasi tersebut.
Ini bukan pengganti Apple Keychain atau Android Keystore. Layanan ini mempertahankan mekanisme lokal platform dan menambahkan level umum untuk produk.
Ini juga bukan layanan identifikasi pengguna wajib. Untuk identifikasi dan otorisasi, bisa digunakan layanan terpisah, seperti MeldID, sementara KeyMeld menyelesaikan tugas berbeda — menyediakan klien yang terotorisasi dengan satu kunci universal tanpa menyimpannya di backend produk itu sendiri.
Akhirnya, KeyMeld tidak secara otomatis membuat Zero Vault. Ia menyediakan proyek dengan kontur eksternal dari kunci universal. Untuk menjaga arsitektur ini, pengembang tidak harus menyimpan kunci universal di basis data server mereka sendiri. Zona kepercayaan yang terpisah juga harus tetap dipisahkan.
Sasaran Pengguna
Pendekatan ini cocok untuk aplikasi yang berjalan di beberapa platform sekaligus dan menggunakan data terlindungi lokal.
Ini bisa berupa pengautentikator, aplikasi perusahaan, produk SaaS, layanan dengan beberapa perangkat, dan proyek apa pun yang memerlukan agar satu akun berfungsi secara sama di iPhone dan Android.
Bagi pengembang, nilai utamanya bukan hanya mengurangi logika platform. Lebih penting lagi, kemampuan untuk membagi tanggung jawab. Backend produk menyimpan data sendiri, sementara layanan SaaS eksternal seperti KeyMeld menyediakan kunci universal dan mengelola distribusinya selanjutnya.
Setelah memahami proyek ini, saya akan mendeskripsikan KeyMeld sebagai alat, bukan sebagai Zero Vault yang sudah jadi, melainkan sebagai perangkat yang memungkinkan pengembang membangun model tersebut untuk produk mereka sendiri.
iOS dan Android tetap menggunakan mekanisme perlindungan mereka sendiri. Klien menerima satu kunci universal umum. Sedangkan backend aplikasi, jika tidak menyimpan kunci tersebut dan memisahkan infrastrukturnya dari KeyMeld, tidak menjadi brankas berisi kunci dari penyimpanan klien.
Bagi pengguna, ini berarti akses tunggal di berbagai platform. Bagi pengembang — kemampuan untuk memindahkan kunci universal di luar backend mereka sendiri. Dan untuk seluruh proyek — arsitektur Zero Vault, di mana server aplikasi tidak menyimpan kunci dari data terlindungi pengguna.
Pelajari lebih jauh tentang proyek ini: KeyMeld