Revault шифрова големия файл на сегменти от около 5 MiB, всеки със собствен таг за автентикация, така че целият файл никога да не се налага да стои в паметта наведнъж. В уеб приложението именно това дава възможност за файлове до 1 GiB.
Защо да не шифроваме целия файл наведнъж?
Големите файлове не бива да изискват голямо количество памет. Revault чете файловете на сегменти от приблизително 5 MiB, шифрова всеки сегмент в браузъра и подготвя шифротекста в IndexedDB. Оригиналният файл никога не се чете в един гигантски буфер.
Работата със сегменти означава също, че прекъснато качване може да продължи от вече подготвения шифротекст, вместо целият файл да се шифрова наново.
Какво защитава реда и пълнотата на сегментите?
Всеки файл получава собствен ключ за шифроване, извлечен с HKDF от главния ключ на сейфа. Контекстът на извличане включва идентификаторите на сейфа и файла, дължината на файла в байтове и размера на сегмента.
12-байтовият nonce на всеки сегмент съчетава случаен префикс, избран за този файл, четирибайтов брояч на сегмента и флаг, който отбелязва последния сегмент. Сегментите носят 128-битови GCM тагове. Ако сегменти бъдат разменени, променени или отрязани, проверката не успява.
Какво става, ако качването бъде прекъснато?
След като шифроването приключи, мрежовите качвания могат да продължат от кеширания шифротекст след опресняване на страницата. Повторните опити изпращат същите шифровани байтове, вместо да шифроват нов източник със стари nonce стойности. Ако самото шифроване е прекъснато, отменете това непълно качване и започнете отново с нова идентичност на файла.
Как се проверяват изтеглянията?
Изтеглянията автентицират всеки сегмент, преди да го предоставят. Тъй като проверката става, докато файлът тече, грешка в края на изтеглянето може да остави непълен файл, затова се уверете, че изтеглянето завършва успешно, преди да разчитате на него.
Какви са ограниченията?
Всеки файл в уеб приложението може да е до 1 GiB. Визуализациите на изображения и видео имат отделен лимит на паметта. Изчистването на локалното хранилище на браузъра може да премахне шифротекста, нужен за продължаване на качване.
Поточният формат следва документираната от Tink конструкция за поточно AES-GCM-HKDF с вградени примитиви на Web Crypto. Идентичността на файла и очакваната дължина са вързани в контекста на извеждането на ключа; броячите на сегментите и крайният маркер защитават реда и завършването. Тази имплементация не е получила независим криптографски одит.
Страницата за модела на сигурност описва пълната конструкция, включително заглавката на потока и извличането на ключове.