Revault šifrē lielu failu aptuveni 5 MiB segmentos, katram ar savu autentifikācijas birku, tāpēc viss fails nekad nav vienlaikus jātur atmiņā. Tīmekļa lietotnē tas ļauj izmantot failus līdz 1 GiB.
Kāpēc nešifrēt visu failu uzreiz?
Lieliem failiem nevajadzētu prasīt lielu atmiņas apjomu. Revault nolasa failus aptuveni 5 MiB segmentos, šifrē katru segmentu pārlūkā un pagaidu glabā šifrēto saturu IndexedDB. Sākotnējais fails nekad netiek ielasīts vienā milzīgā buferī.
Darbs ar segmentiem nozīmē arī to, ka pārtraukta augšupielāde var turpināties no jau sagatavota šifrteksta, nevis šifrēt visu failu no jauna.
Kas aizsargā segmentu secību un pilnīgumu?
Katrs fails saņem savu šifrēšanas atslēgu, kas atvasināta ar HKDF no seifa galvenās atslēgas. Atvasināšanas konteksts ietver seifa un faila identifikatorus, faila garumu baitos un segmenta izmēru.
Katra segmenta 12 baitu nonce apvieno nejaušu prefiksu, kas izvēlēts šim failam, četru baitu segmenta skaitītāju un karogu, kas atzīmē pēdējo segmentu. Segmentiem ir 128 bitu GCM birkas. Ja segmenti tiek apmainīti, mainīti vai nogriezti, pārbaude neizdodas.
Kas notiek, ja augšupielāde tiek pārtraukta?
Kad šifrēšana ir pabeigta, tīkla augšupielādes pēc lapas atsvaidzināšanas var turpināties no kešatmiņā saglabātā šifrētā satura. Atkārtojot mēģinājumus, tiek sūtīti tie paši šifrētie baiti, nevis šifrēts jauns avots ar vecajiem nonce. Ja pati šifrēšana tiek pārtraukta, atceliet šo nepabeigto augšupielādi un sāciet no jauna ar jaunu faila identitāti.
Kā tiek pārbaudītas lejupielādes?
Lejupielādes autentificē katru segmentu pirms tā atbrīvošanas. Tā kā pārbaude notiek, failam plūstot, kļūda lejupielādes beigās var atstāt nepilnīgu failu, tāpēc pirms paļaušanās uz to pārliecinieties, ka lejupielāde ir veiksmīgi pabeigta.
Kādi ir ierobežojumi?
Katrs fails tīmekļa lietotnē var būt līdz 1 GiB. Attēlu un video priekšskatījumiem ir atsevišķs atmiņas ierobežojums. Lokālās pārlūka krātuves notīrīšana var noņemt šifrtekstu, kas vajadzīgs augšupielādes atsākšanai.
Straumēšanas formāts atbilst Tink dokumentētajai AES-GCM-HKDF straumēšanas konstrukcijai, izmantojot native Web Crypto primitīvus. Faila identitāte un paredzamais garums tiek iekļauti atslēgas atvasināšanas kontekstā; segmentu skaitītāji un beigu marķieris aizsargā secību un pabeigtību. Šai implementācijai nav veikts neatkarīgs kriptogrāfijas audits.
Drošības modeļa lapa apraksta pilno konstrukciju, tostarp straumes galveni un atslēgu atvasināšanu.