Ine-encrypt ng Revault ang malaking file sa mga segment na humigit-kumulang 5 MiB, bawat isa ay may sariling authentication tag, kaya hindi kailangang sabay-sabay na nasa memory ang buong file. Sa web app, iyon ang nagbibigay-daan sa mga file na hanggang 1 GiB.
Bakit hindi i-encrypt ang buong file nang sabay-sabay?
Hindi dapat nangangailangan ng malaking memory ang malalaking file. Binabasa ng Revault ang mga file sa mga segment na humigit-kumulang 5 MiB, ine-encrypt ang bawat segment sa browser, at ini-stage ang ciphertext sa IndexedDB. Hindi kailanman binabasa ang orihinal na file sa iisang higanteng buffer.
Ang paggawa sa mga segment ay nangangahulugan din na maipagpapatuloy ang naantalang upload mula sa ciphertext na nakahanda na, sa halip na i-encrypt muli ang buong file.
Ano ang nagpoprotekta sa pagkakasunod-sunod at pagkakakumpleto ng mga segment?
Bawat file ay may sariling encryption key, na hinango gamit ang HKDF mula sa vault master key. Kasama sa derivation context ang mga identifier ng vault at file, ang byte length ng file at ang laki ng segment.
Ang 12-byte na nonce ng bawat segment ay pinagsasama ang random na prefix na pinili para sa file na iyon, apat na byte na segment counter at flag na nagmamarka sa huling segment. May 128-bit na GCM tag ang mga segment. Kung ipagpalit, baguhin o putulin ang mga segment, mabibigo ang verification.
Ano ang mangyayari kung maantala ang upload?
Kapag tapos na ang encryption, maaaring ipagpatuloy ang mga network upload mula sa naka-cache na ciphertext pagkatapos mag-refresh ng page. Ipinapadala ng mga retry ang parehong naka-encrypt na byte, sa halip na mag-encrypt ng bagong source gamit ang mga lumang nonce. Kung ang mismong encryption ang naantala, kanselahin ang hindi kumpletong upload na iyon at magsimulang muli gamit ang bagong file identity.
Paano bine-verify ang mga download?
Ina-authenticate ng mga download ang bawat segment bago ito ilabas. Dahil nangyayari ang pagsusuri habang nagsi-stream ang file, ang error sa huling bahagi ng download ay maaaring mag-iwan ng hindi kumpletong file, kaya tiyaking matagumpay na natapos ang download bago umasa rito.
Ano ang mga limitasyon?
Hanggang 1 GiB ang bawat file sa web app. May hiwalay na limitasyon sa memory ang mga preview ng larawan at video. Ang pag-clear ng lokal na browser storage ay maaaring mag-alis ng ciphertext na kailangan para ipagpatuloy ang upload.
Sinusunod ng streaming format ang dokumentadong AES-GCM-HKDF streaming construction ng Tink, gamit ang native na Web Crypto primitives. Nakatali sa key derivation context ang pagkakakilanlan ng file at inaasahang haba; pinoprotektahan ng mga segment counter at ng huling marker ang pagkakasunod-sunod at pagkumpleto. Hindi pa dumaan sa independiyenteng cryptographic audit ang implementasyong ito.
Inilalarawan ng pahina ng modelo ng seguridad ang buong konstruksyon, kasama ang stream header at key derivation.