Keamanan
Flint Cloud dirancang agar server yang diretas, akun penyimpanan yang diretas, atau salinan basis data yang dicuri tidak membuka file Anda. Halaman ini menjelaskan modelnya sesuai rancangan, dan batas-batasnya.
Primitif kriptografi
Semua kriptografi memakai libsodium (libsodium-wrappers-sumo di web, lazysodium-android di Android). Aplikasi web dan Android harus menghasilkan format yang identik byte demi byte, diuji dengan vektor uji bersama.
| Fungsi | Primitif |
|---|---|
| Kata sandi menjadi kunci | Argon2id (batas moderat; interaktif untuk perangkat lemah; parameter disimpan bersama kunci terbungkus) |
| Isi file | XChaCha20-Poly1305 secretstream, potongan plaintext 4 MiB |
| Pembungkus kunci dan metadata | XSalsa20-Poly1305 secretbox |
| Unggahan tersegel dari CI | X25519 sealed box (crypto_box_seal) |
| Bukti login | BLAKE2b berkunci kunci-sandi |
| Kunci pemulihan | 32 byte acak, ditampilkan sebagai 24 kata BIP39 bahasa Inggris |
Kunci
- Kunci utama (MK): 32 byte acak yang dibuat di perangkat Anda saat brankas dibuat. MK tidak pernah meninggalkan perangkat dalam keadaan terbuka.
- Kunci sandi (PK): diturunkan dari kata sandi dengan Argon2id dan salt acak. Server tidak pernah menerima kata sandi atau PK Anda.
- Kunci pemulihan (RK): 32 byte acak, ditampilkan sekali sebagai 24 kata.
- Server menyimpan MK yang dibungkus dua kali, satu dengan PK dan satu dengan RK, ditambah salt dan parameter KDF. Untuk membuka brankas, server juga menyimpan hash BLAKE2b turunan PK sebagai faktor kedua.
- Kunci file (FK): kunci acak baru untuk tiap file, disimpan terbungkus MK.
File dan metadata
Setiap file dienkripsi dengan FK-nya sendiri memakai secretstream dalam potongan 4 MiB. Tiap potongan menjadi satu blok penyimpanan, sehingga unggahan yang terputus dilanjutkan dari potongan terakhir. Header stream 24 byte disimpan bersama catatan file.
Nama file, tipe, ukuran, waktu ubah, dan kunci thumbnail berupa blob JSON yang dienkripsi dengan FK. Thumbnail juga dienkripsi. Nama folder dienkripsi dengan MK. Pencarian nama berjalan di perangkat Anda setelah didekripsi.
Tautan berbagi
Tautan berbentuk /s/<linkId>#k=<key>. Kunci file ada di fragmen URL, yang tidak dikirim browser ke server. Server menyimpan id tautan, file tujuan, masa berlaku, hash kata sandi opsional, dan penghitung unduhan. Kata sandi tautan diperiksa di server dengan Argon2id; ia mengatur pengiriman ciphertext, sedangkan kuncinya tetap hanya berasal dari tautan.
Build developer dan token CI
Job CI tidak punya kata sandi dan tidak punya MK. Tiap akun punya pasangan kunci X25519: kunci publik disimpan apa adanya, kunci privat dibungkus MK. Unggahan CI membuat FK acak, mengenkripsi file dan manifesnya, lalu menyegel FK ke kunci publik akun (sealed_fk). Saat Anda membuka brankas berikutnya, perangkat membuka tiap kunci tersegel dengan kunci privat dan membungkus ulang dengan MK.
Token khusus unggah disimpan sebagai hash SHA-256, bisa dicabut, menampilkan waktu pemakaian terakhir, dan bisa kedaluwarsa. Server membatasinya hanya untuk membuat file dan menyelesaikan unggahan di folder satu aplikasi. Token tidak bisa melihat daftar, mengunduh, atau menghapus. CLI menyimpan MK di keychain sistem operasi, tidak pernah di file biasa.
Yang tidak dilindungi
- Metadata. Server melihat ukuran file, jumlah potongan, jumlah file Anda, pohon folder (hubungan induk-anak), waktu, alamat IP, dan aktivitas tautan berbagi.
- Perangkat atau browser yang terinfeksi. Malware, ekstensi berbahaya, atau orang yang memakai perangkat Anda saat terbuka bisa membaca apa yang bisa Anda baca. Keylogger dapat menangkap kata sandi.
- Kode aplikasi web itu sendiri. Aplikasi web dikirim oleh server kami. Server yang sepenuhnya diretas bisa menyajikan kode yang diubah. Ini keterbatasan semua layanan E2EE berbasis web. Aplikasi Android native tidak memiliki risiko ini.
- Kata sandi lemah. Argon2id memperlambat tebakan tetapi tidak bisa menyelamatkan kata sandi yang mudah ditebak. Pihak yang memegang kunci terbungkus bisa mencoba menebak secara offline.
- Kunci hilang. Jika Anda lupa kata sandi dan kehilangan kata pemulihan, tidak ada yang bisa memulihkan file Anda.
- Siapa pun yang punya tautan berbagi lengkap. Tautan itulah kuncinya. Perlakukan seperti file itu sendiri.
- Ketersediaan. Enkripsi tidak mencegah gangguan layanan atau kehilangan data akibat kegagalan di pihak kami. Simpan salinan lain dari yang penting.
Status peninjauan
Belum ada tinjauan keamanan independen atas Flint Cloud yang dipublikasikan. Jika sudah ada, akan kami tulis di sini.
Laporkan celah
Tulis ke hello@jijilabsdigital.com dengan rinciannya. Mohon jangan menguji dengan data milik orang lain.