Revault šifrira veliku datoteku u segmentima od oko 5 MiB, svaki sa svojom oznakom autentifikacije, tako da cijela datoteka nikada ne mora istodobno biti u memoriji. U web-aplikaciji upravo to omogućuje datoteke do 1 GiB.
Zašto ne šifrirati cijelu datoteku odjednom?
Velike datoteke ne bi trebale zahtijevati puno memorije. Revault čita datoteke u segmentima od otprilike 5 MiB, svaki segment šifrira u pregledniku, a šifrirani tekst privremeno sprema u IndexedDB. Izvorna datoteka nikada se ne čita u jedan golemi međuspremnik.
Rad u segmentima znači i da se prekinuti prijenos može nastaviti od šifrata koji je već pripremljen, umjesto da se cijela datoteka ponovno šifrira.
Što štiti redoslijed i potpunost segmenata?
Svaka datoteka dobiva vlastiti ključ za šifriranje, izveden algoritmom HKDF iz glavnog ključa trezora. Kontekst izvođenja uključuje identifikatore trezora i datoteke, duljinu datoteke u bajtovima i veličinu segmenta.
Nonce od 12 bajtova svakog segmenta kombinira slučajni prefiks odabran za tu datoteku, četverobajtni brojač segmenta i oznaku koja označava završni segment. Segmenti nose 128-bitne GCM oznake. Ako se segmenti zamijene, izmijene ili odsijeku, provjera ne uspijeva.
Što se događa ako se prijenos prekine?
Nakon završetka šifriranja mrežni se prijenosi mogu nastaviti iz šifriranog teksta u predmemoriji i nakon osvježavanja stranice. Ponovni pokušaji šalju iste šifrirane bajtove umjesto da se novi izvor šifrira sa starim nonceovima. Ako je prekinuto samo šifriranje, otkažite taj nepotpuni prijenos i počnite ispočetka s novim identitetom datoteke.
Kako se provjeravaju preuzimanja?
Preuzimanja provjeravaju autentičnost svakog segmenta prije njegova oslobađanja. Budući da se provjera odvija tijekom strujanja datoteke, pogreška pri kraju preuzimanja može ostaviti nepotpunu datoteku, stoga se prije oslanjanja na nju uvjerite da je preuzimanje uspješno završeno.
Koja su ograničenja?
Svaka datoteka u web-aplikaciji može imati do 1 GiB. Pretpregledi slika i videozapisa imaju zasebno ograničenje memorije. Brisanje lokalne pohrane preglednika može ukloniti šifrat potreban za nastavak prijenosa.
Format streaminga slijedi Tinkovu dokumentiranu AES-GCM-HKDF konstrukciju streaminga, uz izvorne primitive Web Cryptoa. Identitet datoteke i očekivana duljina vezani su uz kontekst izvođenja ključa; brojači segmenata i završna oznaka štite redoslijed i dovršenost. Ova implementacija nije prošla neovisnu kriptografsku reviziju.
Stranica sa sigurnosnim modelom opisuje cijelu konstrukciju, uključujući zaglavlje toka i izvođenje ključeva.