Revault šifruje velký soubor po segmentech o velikosti zhruba 5 MiB, každý s vlastním autentizačním tagem, takže celý soubor nemusí být najednou v paměti. Právě to ve webové aplikaci umožňuje soubory až do 1 GiB.
Proč nešifrovat celý soubor najednou?
Velké soubory by neměly vyžadovat velké množství paměti. Revault čte soubory po segmentech o velikosti přibližně 5 MiB, každý segment zašifruje v prohlížeči a šifrový text připraví v IndexedDB. Původní soubor se nikdy nenačte do jednoho obřího bufferu.
Práce po segmentech také znamená, že přerušené nahrávání může pokračovat z již připraveného šifrového textu, místo aby se celý soubor šifroval znovu.
Co chrání pořadí a úplnost segmentů?
Každý soubor má vlastní šifrovací klíč odvozený pomocí HKDF z hlavního klíče trezoru. Kontext odvození zahrnuje identifikátory trezoru a souboru, délku souboru v bajtech a velikost segmentu.
12bajtový nonce každého segmentu kombinuje náhodnou předponu zvolenou pro daný soubor, čtyřbajtové počítadlo segmentu a příznak označující poslední segment. Segmenty nesou 128bitové tagy GCM. Pokud jsou segmenty zaměněny, změněny nebo useknuty, ověření selže.
Co se stane při přerušení nahrávání?
Po dokončení šifrování lze síťové nahrávání po obnovení stránky navázat z uloženého šifrového textu. Opakované pokusy odesílají stejné zašifrované bajty, místo aby se nový zdroj šifroval pod starými nonce. Pokud je přerušeno samotné šifrování, zrušte nedokončené nahrávání a začněte znovu s novou identitou souboru.
Jak se ověřují stažené soubory?
Stahování ověří každý segment dříve, než ho uvolní. Protože se kontrola provádí za běhu streamu souboru, chyba na konci stahování může zanechat neúplný soubor, proto se před použitím ujistěte, že se stahování úspěšně dokončilo.
Jaké jsou limity?
Každý soubor ve webové aplikaci může mít až 1 GiB. Náhledy obrázků a videí mají samostatný limit paměti. Vymazání místního úložiště prohlížeče může odstranit šifrový text potřebný k obnovení nahrávání.
Streamovací formát vychází z dokumentované konstrukce AES-GCM-HKDF streaming z knihovny Tink a využívá nativní primitiva Web Crypto. Identita souboru a očekávaná délka jsou svázány s kontextem odvození klíče; čítače segmentů a závěrečná značka chrání pořadí a dokončení. Tato implementace neprošla nezávislým kryptografickým auditem.
Stránka Bezpečnostní model popisuje úplnou konstrukci, včetně hlavičky streamu a odvození klíče.