Revault mengenkripsi file besar dalam segmen sekitar 5 MiB, masing-masing dengan tag autentikasinya sendiri, sehingga seluruh file tidak pernah harus berada di memori sekaligus. Di aplikasi web, inilah yang memungkinkan file hingga 1 GiB.

Mengapa tidak mengenkripsi seluruh file sekaligus?

File berukuran besar seharusnya tidak memerlukan memori dalam jumlah besar. Revault membaca file dalam segmen sekitar 5 MiB, mengenkripsi setiap segmen di browser, dan menampilkan ciphertext di IndexedDB. File asli tidak pernah dibaca ke dalam satu buffer raksasa.

Bekerja dalam segmen juga berarti unggahan yang terputus dapat dilanjutkan dari ciphertext yang sudah disiapkan, alih-alih mengenkripsi ulang seluruh file.

Apa yang melindungi urutan dan kelengkapan segmen?

Setiap file mendapatkan kunci enkripsinya sendiri, yang diturunkan dengan HKDF dari kunci utama brankas. Konteks penurunannya mencakup pengenal brankas dan file, panjang byte file, dan ukuran segmen.

Nonce 12 byte setiap segmen menggabungkan awalan acak yang dipilih untuk file tersebut, penghitung segmen empat byte, dan penanda yang menandai segmen terakhir. Segmen membawa tag GCM 128 bit. Jika segmen ditukar, diubah, atau dipotong, verifikasi akan gagal.

Apa yang terjadi jika unggahan terputus?

Setelah enkripsi selesai, unggahan jaringan dapat dilanjutkan dari teks sandi yang disimpan dalam cache setelah penyegaran halaman. Percobaan ulang mengirimkan byte terenkripsi yang sama, daripada mengenkripsi sumber baru dengan nonce lama. Jika enkripsi itu sendiri terganggu, batalkan unggahan yang tidak lengkap tersebut dan mulai lagi dengan identitas file baru.

Bagaimana unduhan diverifikasi?

Unduhan mengautentikasi setiap segmen sebelum melepaskannya. Karena pemeriksaan berlangsung saat file dialirkan, kesalahan di akhir unduhan dapat meninggalkan file yang tidak lengkap, jadi pastikan unduhan selesai dengan sukses sebelum Anda mengandalkannya.

Apa saja batasannya?

Setiap file di aplikasi web dapat berukuran hingga 1 GiB. Pratinjau gambar dan video memiliki batas memori tersendiri. Menghapus penyimpanan browser lokal dapat menghapus ciphertext yang diperlukan untuk melanjutkan unggahan.

Format streaming mengikuti konstruksi streaming AES-GCM-HKDF yang didokumentasikan Tink, menggunakan primitif Web Crypto asli. Identitas file dan panjang yang diharapkan terikat ke dalam konteks derivasi kunci; penghitung segmen dan penanda akhir melindungi pemesanan dan penyelesaian. Implementasi ini belum mendapat audit kriptografi independen.

Halaman model keamanan menjelaskan konstruksi lengkapnya, termasuk header aliran dan penurunan kunci.