Revault krypterar en stor fil i segment på cirka 5 MiB, vart och ett med sin egen autentiseringstagg, så att hela filen aldrig behöver ligga i minnet samtidigt. I webbappen är det detta som gör att filer på upp till 1 GiB ryms.
Varför krypteras inte hela filen på en gång?
Stora filer ska inte kräva mycket minne. Revault läser filer i segment på cirka 5 MiB, krypterar varje segment i webbläsaren och mellanlagrar chiffertext i IndexedDB. Originalfilen läses aldrig in i en enda jättebuffert.
Att arbeta i segment innebär också att en avbruten uppladdning kan fortsätta från chiffertext som redan är mellanlagrad, i stället för att hela filen krypteras om.
Vad skyddar segmentens ordning och fullständighet?
Varje fil får sin egen krypteringsnyckel, härledd med HKDF från valvets huvudnyckel. Härledningskontexten omfattar valvets och filens identifierare, filens längd i byte och segmentstorleken.
Varje segments 12-byte-nonce kombinerar ett slumpmässigt prefix som valts för den filen, en segmenträknare på fyra byte och en flagga som markerar det sista segmentet. Segmenten har 128-bitars GCM-taggar. Om segment byts plats på, ändras eller klipps av misslyckas verifieringen.
Vad händer om en uppladdning avbryts?
När krypteringen är klar kan nätverksuppladdningar återupptas från cachad chiffertext efter att sidan laddats om. Nya försök skickar samma krypterade bytes i stället för att kryptera en ny källa med gamla nonces. Om själva krypteringen avbryts avbryter du den ofullständiga uppladdningen och börjar om med en ny filidentitet.
Hur verifieras nedladdningar?
Nedladdningar autentiserar varje segment innan det släpps. Eftersom kontrollen sker medan filen strömmas kan ett fel sent i en nedladdning lämna kvar en ofullständig fil, så se till att nedladdningen slutförs innan du förlitar dig på den.
Vilka är gränserna?
Varje fil i webbappen kan vara upp till 1 GiB. Förhandsvisningar av bilder och videor har en separat minnesgräns. Om du rensar lokal webbläsarlagring kan den chiffertext som behövs för att återuppta en uppladdning försvinna.
Strömningsformatet följer Tinks dokumenterade AES-GCM-HKDF-strömningskonstruktion och använder inbyggda Web Crypto-primitiver. Filens identitet och förväntade längd binds in i nyckelhärledningens kontext; segmenträknare och slutmarkören skyddar ordning och fullständighet. Den här implementationen har inte genomgått någon oberoende kryptografisk granskning.
Sidan om säkerhetsmodellen beskriver hela konstruktionen, inklusive strömhuvudet och nyckelhärledningen.