Cara LifeVeil melindungi file Anda
Halaman ini menjelaskan apa yang dilakukan LifeVeil dengan kata-kata sederhana, dan juga apa yang tidak bisa dilakukannya. Kami lebih suka Anda mengetahui batasannya daripada memercayai janji yang terlalu besar.
Singkatnya
- Semua enkripsi terjadi di ponsel Anda. Tidak ada server LifeVeil dan tidak ada akun.
- File setiap brankas dienkripsi dengan kunci acak. Hanya pola brankas itu (dengan PIN-nya di tingkat tertinggi), frasa pemulihannya jika Anda menambahkannya, atau sidik jari Anda jika Anda mengaktifkannya yang bisa membuka kunci itu.
- Setiap pola membuka sebuah brankas. Pola yang tidak cocok dengan brankas tersimpan mana pun membuka brankas kosong, dan tidak ada yang ditulis sampai Anda menambahkan file ke dalamnya.
- Kami, para pengembang, tidak pernah memegang pola, PIN, frasa, atau kunci Anda. Kami tidak bisa membuka file Anda, dan kami tidak bisa mereset pola Anda.
- Kami memakai enkripsi bawaan Android dan pustaka libsodium yang sudah dikenal luas. Kami tidak membuat enkripsi sendiri.
- LifeVeil belum pernah menjalani audit keamanan independen.
Dari pola Anda menjadi kunci
Anda menggambar pola di petak 5×5, tanpa memakai titik yang sama dua kali. Pola baru yang Anda siapkan butuh minimal 6 titik. LifeVeil mengubah pola menjadi kunci dengan Argon2id, dari libsodium (versi 1.0.20 di Android).
- Pengaturan: memori 64 MiB, 3 putaran, 1 jalur, kunci 256-bit.
- Argon2id sengaja dibuat lambat dan butuh banyak memori untuk setiap tebakan. Ini membuat penebakan dengan kartu grafis jauh lebih mahal.
- Di ponsel uji kami, satu kali buka kunci butuh sekitar 0,6 sampai 0,9 detik.
- Pola dicampur dengan salt perangkat acak 16 byte. Salt ini disimpan di aplikasi, dienkripsi dengan kunci yang disimpan di Android Keystore, yang tidak bisa disalin keluar dari ponsel.
- Tidak ada salinan pola yang disimpan, kecuali salinan yang disimpan bersama frasa pemulihan (lihat di bawah). Aplikasi memeriksa pola dengan mencoba membuka kunci.
- Apa pun yang Anda ketik di kotak PIN di atas titik-titik masuk ke derivasi kunci yang sama dengan pola. Kotak kosong berarti hanya pola.
Tingkat keamanan
Setiap brankas punya satu tingkat. Anda memilihnya saat mulai, dan bisa mengubahnya nanti di Setelan > Brankas > Tingkat keamanan, setelah menggambar pola lagi.
- Keamanan tertinggi (Ultra): pola dan PIN 6 sampai 8 digit, keduanya hanya di kepala Anda. Aman bahkan dari tebakan AI. Jika Anda lupa salah satunya, brankas tidak bisa dipulihkan.
- Level 1 (disarankan): hanya pola. Aman jika Anda menghindari bentuk umum. Jika Anda lupa, brankas tidak bisa dipulihkan.
- Level 2: pola dan frasa pemulihan yang ditulis di kertas. Anda bisa masuk lagi jika lupa pola, tetapi siapa pun yang menemukan kertasnya juga bisa membuka brankas.
- Level 3: pola dan sidik jari. Paling praktis, tetapi seseorang bisa memaksa jari Anda ke sensor. Sidik jari hanya berfungsi untuk satu brankas.
Cara file dienkripsi
- Setiap brankas punya kunci utama acak 256-bit. Kunci dari pola dan kunci pemulihan Anda hanya "membungkus" (mengenkripsi) kunci utama ini.
- File, gambar mini, dan daftar item Anda (nama file asli, tanggal, ukuran) dienkripsi dengan AES-256-GCM, memakai enkripsi bawaan Android. GCM juga mendeteksi jika file diubah atau ditukar.
- File di dalam aplikasi diberi nama acak. File besar dienkripsi per bagian 1 MiB, sehingga video bisa diputar tanpa pernah menulis salinan yang tidak terenkripsi ke penyimpanan.
- Untuk foto JPEG, detail tersembunyinya (EXIF, seperti kamera dan tanggal) disimpan terpisah, juga dalam keadaan terenkripsi.
- Saat aplikasi terkunci, aplikasi menimpa kunci yang ada di memori dengan angka nol.
Frasa pemulihan
- Frasa pemulihan bersifat opsional. Brankas hanya mendapatkannya jika Anda memilih Level 2, dan frasa disimpan setelah Anda lulus kuis singkat.
- Generator angka acak yang aman di ponsel memilih 9 kata bahasa Inggris. Kata-kata itu berasal dari dua daftar berisi 1.024 kata umum, dalam salah satu dari 4 urutan tetap. Itu setara dengan 92 bit keacakan. Kata-katanya tetap bahasa Inggris di semua bahasa aplikasi.
- Frasa ini melewati pengaturan Argon2id yang sama dan bisa membuka kunci utama dengan sendirinya. Frasa tidak memerlukan salt perangkat, jadi tetap berfungsi meskipun pola sudah tidak bisa dipakai.
- Salinan frasa dan salinan pola brankas (serta PIN-nya) disimpan di ponsel, masing-masing dienkripsi dua kali: sekali dengan kunci utama dan sekali dengan kunci Android Keystore. Saat frasa membuka brankas, aplikasi menampilkan polanya satu kali. Pola itu dilupakan saat aplikasi terkunci.
- Frasa tetap sama saat Anda mengganti pola. Brankas tanpa frasa tidak punya jalan kembali jika polanya terlupa.
Sidik jari
Buka kunci dengan sidik jari bersifat opsional dan berfungsi untuk satu brankas. Yang memeriksa sidik jari adalah Android, bukan LifeVeil; aplikasi tidak pernah menerima sidik jari Anda. Kunci utama dibuka oleh sebuah kunci di Android Keystore yang hanya berfungsi tepat setelah pemeriksaan biometrik yang kuat. Jika seseorang menambahkan sidik jari baru ke ponsel, kunci ini berhenti berfungsi dan Anda harus memakai pola lagi.
File cadangan
- Cadangan adalah satu file
.lvb. File ini berisi item Anda persis seperti yang sudah terenkripsi, ditambah salinan kunci utama yang terbungkus: satu untuk pola yang Anda gambar saat membuat cadangan, dan satu untuk frasa pemulihan, jika brankas memilikinya. - Salinan untuk pola memakai salt acak baru untuk setiap cadangan, bukan salt perangkat. Itulah yang memungkinkan Anda membuka cadangan di ponsel baru.
- Header file dilindungi sehingga perubahan atau bagian yang ditukar akan terdeteksi.
- Anda memilih tempat menyimpannya melalui layar simpan bawaan Android. File ini tidak pernah melewati kami.
- Untuk memulihkan, buka file dengan pola atau frasanya. Setelah itu Anda menggambar pola baru. Brankas yang dipulihkan dimulai tanpa frasa pemulihan.
Perlindungan lain di aplikasi
- Screenshot, perekaman layar, dan pratinjau di daftar aplikasi terbaru diblokir di setiap layar.
- Secara default, aplikasi langsung terkunci begitu Anda meninggalkannya. Anda bisa memilih 30 detik atau 1 menit sebagai gantinya.
- Cadangan cloud dan transfer antarponsel bawaan Android tidak menyertakan data LifeVeil. Gunakan file cadangan sebagai gantinya.
- Aplikasi tidak meminta akses lokasi, kontak, atau akses "semua file".
- Brankas kosong untuk setiap pola baru. Brankas tanpa file terlihat sama, baik sudah disimpan maupun belum, jadi orang yang memaksa Anda membuka aplikasi tidak tahu apa lagi yang ada. Anda dapat menonaktifkannya di Setelan > Keamanan, lalu pola yang tidak membuka apa pun akan menampilkan pesan error.
Memperlambat penebakan
Karena setiap pola membuka brankas, penebakan terlihat seperti banyak brankas kosong yang terbuka. LifeVeil memperlambatnya tanpa memberi tahu di layar, dan waktu tunggunya sama untuk setiap pola, termasuk pola yang benar.
- Dalam 24 jam, 10 kali membuka brankas tanpa file menambah 10 detik ke setiap buka kunci, 20 kali menambah 60 detik, dan 30 kali menambah 5 menit, yang paling lama.
- Tanda otomatisasi langsung memicu waktu tunggu paling lama: pola yang selesai dengan jarak kurang dari 2 detik tiga kali berturut-turut, atau sentuhan yang berasal dari layanan aksesibilitas atau input yang disuntikkan, bukan dari jari.
- Setiap 24 jam tanpa brankas kosong yang terbuka, waktu tunggu turun satu tahap. Memundurkan jam ponsel tidak mempersingkatnya.
- Ini hanya berlaku di dalam aplikasi. Ini tidak memperlambat penebakan di komputer dengan file yang disalin (lihat batasan di bawah).
AI dan penebakan pola
- AI tidak bisa melewati perhitungannya. Setiap tebakan tetap harus menjalankan Argon2id dengan memori 64 MiB. AI tidak bisa membobol Argon2id atau AES, jadi tidak ada satu tebakan pun yang menjadi lebih murah.
- Yang diubah AI adalah urutan tebakan. AI bisa mempelajari bentuk yang disukai orang (huruf, kotak, sudut awal favorit) dan mencobanya lebih dulu. AI juga bisa membantu membaca pola dari video yang direkam dari balik bahu Anda, atau dari bekas sentuhan di layar.
- Jadi pertahanannya ada pada pola, bukan pada perhitungannya. Aplikasi memperingatkan tentang bentuk yang umum. Tingkat keamanan tertinggi menambahkan PIN 6 sampai 8 digit, sehingga pola yang terlihat di video saja tidak cukup. Sembunyikan garis pola tidak meninggalkan garis untuk direkam. Salt perangkat di Android Keystore mencegah penebakan di luar ponsel.
Batasan yang perlu Anda ketahui
Tidak ada aplikasi yang bisa melindungi dari segalanya. Berikut batasan LifeVeil yang sebenarnya.
Pola sederhana bisa ditebak
Bentuk yang pendek atau umum (huruf L, huruf Z, garis lurus) bisa ditebak dengan mengamati Anda, dari bekas sentuhan di layar, atau dalam beberapa kali percobaan. Pola sungguhan jauh lebih mudah ditebak daripada yang ditunjukkan oleh jumlah pola yang mungkin. Gunakan lebih banyak titik dan lebih banyak belokan. Aplikasi memperingatkan Anda tentang pola yang sangat sederhana, dan sebelum menyimpan brankas yang polanya kurang dari 6 titik.
Berapa lama penebakan bisa berlangsung
Di dalam aplikasi, setiap percobaan butuh sekitar satu detik, dan penebakan berulang memperlambat setiap buka kunci, hingga 5 menit. Tetapi seseorang yang memegang file cadangan Anda, atau yang sudah mengambil salt perangkat dari ponsel yang di-root, bisa menebak di komputer, tanpa waktu tunggu. Argon2id memperlambatnya, tetapi kemungkinan pola jauh lebih sedikit daripada kata sandi yang panjang. Perkiraan kasar untuk satu kartu grafis kelas atas (kelas RTX 4090) dengan sekitar 1.000 tebakan per detik:
| Yang ditebak | Kemungkinan | Waktu, satu kartu grafis |
|---|---|---|
| 10.000 pola paling umum | 104 | sekitar 10 detik |
| Semua pola 6 titik | 1,28 × 108 | sekitar 1,5 hari |
| Semua pola 7 titik | 2,42 × 109 | sekitar 28 hari |
| Semua pola 8 titik | 4,36 × 1010 | sekitar 1,4 tahun |
| Frasa pemulihan (92 bit) | 4,95 × 1027 | sekitar 1,6 × 1017 tahun |
Ini perkiraan, bukan hasil pengukuran. Jumlah pola adalah batas atas; pola sungguhan jauh lebih sedikit. Perangkat keras yang lebih banyak atau lebih cepat membuat penebakan lebih cepat secara sebanding. PIN di tingkat tertinggi mengalikan angka-angka ini hingga 108.
Jaga kerahasiaan file cadangan Anda
File cadangan tidak berisi salt perangkat, jadi siapa pun yang mendapatkannya bisa mencoba pola secara offline, seperti yang ditunjukkan di atas. Simpan hanya di tempat yang bisa diakses oleh Anda sendiri, seperti akun cloud Anda sendiri, dan gunakan pola yang lebih panjang.
Frasa pemulihan juga menampilkan pola
Siapa pun yang memegang frasa pemulihan sebuah brankas bisa membuka brankas itu, dan aplikasi lalu menampilkan pola dan PIN-nya. Jika Anda memakai pola yang sama di tempat lain, seperti kunci layar ponsel, orang itu juga mengetahuinya. Simpan kertasnya seaman file itu sendiri.
Ponsel yang di-root atau terinfeksi
Jika seseorang bisa menjalankan kode dengan izin aplikasi (misalnya di ponsel yang di-root, atau dengan malware yang memiliki kendali penuh), orang itu bisa membuka salt perangkat dan menebak secara offline. Selama brankas terbuka, kunci ada di memori dan bisa dibaca dengan akses root atau debugger. Beberapa salinan yang dibuat di dalam Android dan Flutter, serta foto yang ditampilkan di layar, tidak bisa langsung dihapus dari memori.
Beberapa informasi terlihat
Jumlah file terenkripsi di penyimpanan aplikasi, perkiraan ukurannya, dan kapan file itu dibuat atau diubah tidak disembunyikan. Begitu juga fakta bahwa LifeVeil terinstal.
Brankas kosong hanya mengelabui layar
Orang yang bisa membaca file aplikasi (misalnya di ponsel yang di-root) dapat menghitung folder brankas dan melihat bahwa setelan ini aktif. Perlambatan menghitung brankas kosong yang tersimpan maupun yang belum tersimpan, jadi waktu tunggu itu sendiri tidak membedakan keduanya.
Penyamaran hanya mengubah layar utama
- Hanya ikon dan nama di peluncur yang berubah. Daftar Setelan > Aplikasi, info aplikasi, dan layar penyimpanan di ponsel tetap menampilkan LifeVeil.
- Pembaca layar mungkin tetap menyebut "LifeVeil". Misalnya, peluncur Samsung One UI memberikan nama asli aplikasi kepada TalkBack, dan aplikasi tidak bisa mengubahnya.
- Menu berbagi Android selalu menampilkan nama asli aplikasi, jadi LifeVeil keluar dari menu itu saat Anda mengganti ikon. Anda bisa mengaktifkannya kembali.
- Permintaan izin Android menampilkan nama asli, jadi aplikasi meminta izin sebelum Anda mengganti ikon.
- Selama ikon diganti, aplikasi tidak mengirim notifikasi.
- Kode penyamaran (4 sampai 8 digit) hanya menampilkan layar kunci. Kode ini tidak membuka file Anda. Kode disimpan sebagai hash dengan salt, tetapi karena kemungkinannya sangat sedikit, kode mudah ditemukan jika seseorang mendapatkan filenya.
Sidik jari adalah jalur yang lebih lemah
Buka kunci dengan sidik jari tidak melewati Argon2id. Kekuatannya bergantung pada sensor sidik jari dan Android Keystore di ponsel Anda. Anda bisa menonaktifkannya di Setelan kapan saja.
Detail foto
- Untuk foto HEIC, PNG, dan WebP, detail tersembunyinya (EXIF) tetap berada di dalam file. Seluruh file tetap dienkripsi.
- Di Android 10 dan yang lebih baru, Android menghapus lokasi GPS dari foto yang dibaca LifeVeil, karena aplikasi tidak meminta akses lokasi. Saat foto asli dihapus dari galeri, lokasi itu hilang.
- Foto yang ditambahkan melalui pemilih foto Android mendapat nama baru berdasarkan tanggal, karena pemilih tidak memberikan nama aslinya.
Penguncian ditunda selama layar sistem terbuka
Selama layar sistem terbuka (permintaan izin, konfirmasi penghapusan, pemilih foto atau file, permintaan sidik jari) dan selama impor atau ekspor sedang berjalan, aplikasi menunggu untuk mengunci. Jika Anda sudah meninggalkan aplikasi, aplikasi terkunci 2 detik setelah proses itu selesai.
Semua brankas memakai satu salt perangkat
Semua brankas di satu ponsel memakai salt perangkat yang sama. Jika seseorang memiliki salt itu, satu tebakan menguji semua brankas sekaligus. Biaya untuk menyerang satu brankas tetap sama.
Hal yang tidak bisa dicegah aplikasi mana pun
Seseorang yang melihat Anda menggambar pola, atau kamera yang merekam layar Anda.
Tanpa frasa, tidak ada yang bisa membantu
Jika Anda lupa pola brankas yang tidak memiliki frasa pemulihan, atau kehilangan pola sekaligus frasanya, tidak ada yang bisa memulihkan file di dalamnya. Kami pun tidak.