Saya memiliki klien yang ingin membangun situs web / aplikasi seluler / aplikasi desktop yang berhubungan dengan data yang sangat sensitif (lebih sensitif daripada rincian bank / kartu). Karena sifat sensitif dari data, mereka tidak ingin menyimpannya di database pusat tetapi mereka masih ingin aplikasi mereka untuk disinkronkan (katakanlah saya menambahkan beberapa data ke dalam aplikasi seluler saya, saya kemudian ingin dapat pergi ke saya aplikasi desktop dan lihat data yang sama).
Saya tidak bisa memikirkan cara yang bagus dan dapat diandalkan untuk melakukan ini dan saya tidak yakin ada satu. Itu sebabnya saya di sini. Adakah yang tahu bagaimana saya bisa menangani data ini?
Salah satu solusi yang saya pikirkan adalah memiliki database sisi klien pada setiap aplikasi yang entah bagaimana akan menyinkronkan antara aplikasi, saya bisa melihat ini menjadi sangat tidak dapat diandalkan dan semakin berantakan.
sumber
Jawaban:
Banyak informasi sensitif disimpan dalam basis data. Bahkan, database pusat mungkin merupakan cara paling aman untuk menyimpan data ini. Basis data perusahaan besar memiliki banyak fungsi untuk melakukan hal-hal seperti mengenkripsi informasi sensitif, untuk mengaudit siapa yang mengaksesnya, untuk membatasi atau mencegah orang-orang termasuk DBA dari melihat data, dll. Anda tidak kehilangan data. Hampir pasti akan jauh lebih mudah untuk mengkompromikan data yang disimpan pada beberapa perangkat seluler atau laptop pengguna acak daripada menembus infrastruktur keamanan yang dirancang dengan baik dan kompromi dengan database pusat yang tepat.
Anda bisa mendesain sistem dengan database pusat yang hanya menyimpan data terenkripsi dan menyimpan kunci pribadi pengguna di perangkat pengguna. Dengan cara itu bahkan jika database pusat sepenuhnya dikompromikan, data hanya dapat digunakan oleh pengguna. Tentu saja, itu berarti bahwa Anda tidak dapat mengembalikan data pengguna jika kehilangan kunci mereka (misalnya, satu-satunya salinan ada di telepon mereka dan telepon mereka rusak). Dan jika seseorang kompromi kunci dan, mungkin, kredensial login mereka, mereka akan dapat melihat data.
sumber
Anda perlu membuat cadangan beberapa langkah dan, setelah berkonsultasi dengan klien Anda, buat model ancaman . (Ya, itu tautan ke buku setebal 600 halaman; ya, saya serius menyarankan Anda membaca semuanya.)
Model ancaman dimulai dengan mengajukan pertanyaan seperti
Setelah Anda tahu jawaban atas pertanyaan-pertanyaan ini, Anda akan berada di tempat yang jauh lebih baik untuk mencari tahu apa yang harus dilakukan.
Ingatlah bahwa mungkin ada lebih dari satu jawaban untuk setiap rangkaian pertanyaan, terutama yang berhubungan dengan penyerang (orang-orang yang menginginkan data sensitif tetapi tidak diizinkan untuk memilikinya). Jika Anda tidak dapat memikirkan setidaknya setengah lusin penyerang pola dasar yang berbeda , dengan motivasi, tujuan, dan sumber daya yang berbeda, Anda mungkin melewatkan sesuatu.
Juga perlu diingat bahwa penyerang yang menyebabkan Anda (dan / atau klien) masalah paling besar, adalah yang paling mungkin membuat percikan raksasa di media jika serangan mereka berhasil, atau yang melakukan jumlah kerusakan agregat terbesar , mungkin adalah bukan penyerang yang dapat menyebabkan kerugian terbesar bagi pengguna individu jika serangan mereka berhasil. Perusahaan klien Anda secara rasional lebih peduli tentang kerusakan agregat, tetapi pengguna secara rasional lebih peduli tentang kerusakan pada diri mereka sendiri.
sumber
Salah satu opsi untuk melakukan sinkronisasi adalah melakukannya secara peer-to-peer. Ini masih akan memerlukan server pusat, tetapi server itu tidak akan menangani data apa pun.
Saat perangkat online, server pusat mendapat pemberitahuan dengan id pengguna. Ketika perangkat kedua dari pengguna yang sama online, server mengirim kedua perangkat alamat IP yang lain. Perangkat kemudian dapat bertukar data secara langsung. Peringatan: satu perangkat perlu bertindak sebagai server, jadi setidaknya satu tidak dapat berada di belakang router NAT.
Jangan lupa bahwa Anda akan memerlukan otentikasi dan enkripsi yang kuat untuk mekanisme notifikasi dan pertukaran peer-to-peer.
sumber
Jadikan itu masalah orang lain.
Simpan data secara lokal di setiap aplikasi, lalu beri pengguna opsi untuk mengaktifkan sinkronisasi menggunakan akun mereka sendiri dengan layanan pihak ketiga (Dropbox, Google Drive, dll). Juga, pikirkan mengenkripsi data apa pun yang diunggah ke layanan pihak ketiga (ada pro dan kontra untuk melakukan itu).
Hal ini memberikan tampilan yang pengguna memiliki data mereka sendiri, karena mereka harus ke sinkronisasi data opt-in. Itu membuat aplikasi berguna untuk orang yang tidak ingin berbagi terjadi. Dan itu membuat orang lain bertanggung jawab (secara teknis dan, berpotensi, secara hukum) untuk sakit kepala yang berkelanjutan untuk menjaga keamanan data bersama.
sumber
Kekhawatiran klien Anda tampaknya tentang visibilitas data ini. pertanyaan pertama yang diajukan kepada pelanggan Anda adalah apakah data itu dienkripsi, di mana bisa disimpan? Kemudian, tanyakan kepada pelanggan Anda kontrol akses seperti apa yang mereka inginkan sebelum data dapat didekripsi dan diproses - di mana kunci dekripsi disimpan? Apakah kunci terpisah per pengguna? dll ...
Jika pelanggan Anda tidak ingin data disimpan di mana saja, apakah mereka ingin pengguna memasukkannya ke tangan saya setiap kali?
sumber