A Revault a nagy fájlokat körülbelül 5 MiB-os szegmensekben titkosítja, mindegyiket saját hitelesítési címkével, így a teljes fájlnak soha nem kell egyszerre a memóriában lennie. A webalkalmazásban ez teszi lehetővé az akár 1 GiB-os fájlokat.
Miért nem titkosítjuk a teljes fájlt egyszerre?
A nagy fájlok nem igényelhetnek nagy mennyiségű memóriát. A Revault nagyjából 5 MiB-os szegmensekben olvassa a fájlokat, mindegyik szegmenst a böngészőben titkosítja, és a titkosított adatot az IndexedDB-ben tárolja előkészítve. Az eredeti fájl sosem kerül be egyetlen óriási pufferbe.
A szegmensekben való munka azt is jelenti, hogy a megszakadt feltöltés folytatható a már előkészített titkosított adatból, ahelyett, hogy a teljes fájlt újra kellene titkosítani.
Mi védi a szegmensek sorrendjét és teljességét?
Minden fájl saját titkosítási kulcsot kap, amelyet HKDF-fel vezetnek le a széf főkulcsából. A levezetési környezet tartalmazza a széf- és fájlazonosítókat, a fájl bájthosszát és a szegmensméretet.
Minden szegmens 12 bájtos nonce-a egy, az adott fájlhoz kiválasztott véletlenszerű előtagot, egy négybájtos szegmensszámlálót és az utolsó szegmenst jelölő jelzőt egyesít. A szegmensek 128 bites GCM-címkét hordoznak. Ha a szegmenseket felcserélik, módosítják vagy levágják, az ellenőrzés sikertelen lesz.
Mi történik, ha egy feltöltés megszakad?
A titkosítás befejezése után a hálózati feltöltések az oldal frissítése után is folytathatók a gyorsítótárazott titkosított adatból. Az újrapróbálkozások ugyanazokat a titkosított bájtokat küldik el, nem pedig egy új forrást titkosítanak a régi nonce-ok alatt. Ha maga a titkosítás szakad meg, szakítsa meg a hiányos feltöltést, és kezdje újra új fájlazonosítóval.
Hogyan ellenőrzik a letöltéseket?
A letöltések minden szegmenst hitelesítenek, mielőtt kiadják. Mivel az ellenőrzés a fájl streamelése közben történik, a letöltés végén fellépő hiba hiányos fájlt hagyhat maga után, ezért győződjön meg arról, hogy a letöltés sikeresen befejeződött, mielőtt támaszkodna rá.
Mik a korlátok?
A webalkalmazásban az egyes fájlok legfeljebb 1 GiB méretűek lehetnek. A kép- és videóelőnézetek külön memóriakorláttal rendelkeznek. A helyi böngészőtárhely törlése eltávolíthatja a feltöltés folytatásához szükséges titkosított adatot.
A streamelt formátum a Tink dokumentált AES-GCM-HKDF streamelési felépítését követi, natív Web Crypto primitívekkel. A fájl azonosítója és a várt hossz a kulcsszármaztatási kontextushoz kötött; a szegmensszámlálók és a záró jelölő védi a sorrendet és a teljességet. Ez a megvalósítás nem esett át független kriptográfiai auditon.
A Biztonsági modell oldal a teljes felépítést bemutatja, beleértve a folyamatfejlécet és a kulcslevezetést.