Revault үлкен файлды шамамен 5 MiB сегменттермен шифрлайды, әрқайсысының өз аутентификация тегі бар, сондықтан бүкіл файл бірден жадта тұруы міндетті емес. Веб-қолданбада дәл осы 1 GiB-қа дейінгі файлдарға мүмкіндік береді.

Неге бүкіл файлды бірден шифрламасқа?

Үлкен файлдар көп жадты қажет етпеуі тиіс. Revault файлдарды шамамен 5 MiB сегменттермен оқиды, әр сегментті браузерде шифрлайды және шифрмәтінді IndexedDB-де дайындайды. Түпнұсқа файл ешқашан бір үлкен буферге оқылмайды.

Сегменттермен жұмыс істеу үзілген жүктеуді бүкіл файлды қайта шифрламай-ақ, дайындалып қойған шифрмәтіннен жалғастыруға болатынын да білдіреді.

Сегмент ретін және толықтығын не қорғайды?

Әр файл сейфтің мастер-кілтінен HKDF арқылы алынған өз шифрлау кілтін алады. Туындату контекстіне сейф пен файл идентификаторлары, файлдың байт ұзындығы және сегмент өлшемі кіреді.

Әр сегменттің 12 байттық nonce мәні сол файл үшін таңдалған кездейсоқ префиксті, төрт байттық сегмент есептегішін және соңғы сегментті белгілейтін жалауды біріктіреді. Сегменттерде 128 биттік GCM тегтері болады. Сегменттер ауыстырылса, өзгертілсе немесе қиылса, тексеру сәтсіз аяқталады.

Жүктеу үзілсе не болады?

Шифрлау аяқталғаннан кейін желілік жүктеулерді бет жаңартылған соң кэштелген шифрмәтіннен жалғастыруға болады. Қайталау әрекеттері ескі nonce мәндерімен жаңа көзді шифрлаудың орнына дәл сол шифрланған байттарды жібереді. Шифрлаудың өзі үзілсе, аяқталмаған жүктеуді тоқтатып, жаңа файл идентификаторымен қайта бастаңыз.

Жүктеп алулар қалай тексеріледі?

Жүктеп алулар әр сегментті шығармас бұрын аутентификациялайды. Тексеру файл ағынымен бірге жүретіндіктен, жүктеп алудың соңындағы қате толық емес файлды қалдыруы мүмкін, сондықтан оған сенбес бұрын жүктеп алудың сәтті аяқталғанына көз жеткізіңіз.

Шектеулер қандай?

Веб-қолданбадағы әр файл 1 GiB-қа дейін болуы мүмкін. Сурет пен бейнені алдын ала қарау үшін бөлек жад шегі бар. Жергілікті браузер сақтағышын тазалау жүктеуді жалғастыруға қажетті шифрмәтінді жоюы мүмкін.

Ағынмен өңдеу пішімі Tink құжаттаған AES-GCM-HKDF ағынды құрылымын орындайды және жергілікті Web Crypto примитивтерін пайдаланады. Файл идентификаторы мен күтілетін ұзындық кілтті туындату контекстіне байланады; сегмент есептегіштері мен соңғы белгі реттілік пен аяқталуды қорғайды. Бұл іске асыру тәуелсіз криптографиялық аудиттен өткен жоқ.

Қауіпсіздік моделі беті ағын тақырыбы мен кілтті туындатуды қоса, толық құрылымды сипаттайды.