Revault шифрује велики фајл у сегментима од око 5 MiB, сваки са сопственом ознаком аутентификације, па цео фајл никада не мора да буде у меморији одједном. У веб-апликацији то омогућава фајлове до 1 GiB.
Зашто не шифровати цео фајл одједном?
Велики фајлови не би требало да захтевају много меморије. Revault чита фајлове у сегментима од приближно 5 MiB, шифрује сваки сегмент у прегледачу и привремено смешта шифрат у IndexedDB. Оригинални фајл се никада не учитава у један огроман бафер.
Рад у сегментима такође значи да прекинуто отпремање може да се настави од шифрата који је већ припремљен, уместо да се цео фајл поново шифрује.
Шта штити редослед и потпуност сегмената?
Сваки фајл добија сопствени кључ за шифровање, изведен помоћу HKDF из главног кључа сефа. Контекст извођења укључује идентификаторе сефа и фајла, дужину фајла у бајтовима и величину сегмента.
Нонс од 12 бајтова сваког сегмента комбинује насумични префикс изабран за тај фајл, четворобајтни бројач сегмента и ознаку која означава последњи сегмент. Сегменти носе 128-битне GCM ознаке. Ако се сегменти замене, измене или одсеку, провера не успева.
Шта се дешава ако се отпремање прекине?
Када је шифровање завршено, мрежно отпремање се може наставити из кешираног шифрата после освежавања странице. Поновни покушаји шаљу исте шифроване бајтове, уместо да се нови извор шифрује под старим nonce вредностима. Ако је само шифровање прекинуто, откажите то непотпуно отпремање и почните изнова са новим идентитетом фајла.
Како се проверавају преузимања?
Преузимања проверавају аутентичност сваког сегмента пре његовог ослобађања. Пошто се провера обавља док се фајл стримује, грешка при крају преузимања може оставити непотпун фајл, зато се уверите да се преузимање успешно завршило пре него што се на њега ослоните.
Која су ограничења?
Сваки фајл у веб-апликацији може имати до 1 GiB. Прегледи слика и видео снимака имају посебно ограничење меморије. Брисањем локалног складишта прегледача може се уклонити шифрат потребан за наставак отпремања.
Формат стримовања прати Tink-ову документовану AES-GCM-HKDF конструкцију стримовања, користећи изворне Web Crypto примитиве. Идентитет фајла и очекивана дужина су везани у контекст извођења кључа; бројачи сегмената и завршна ознака штите редослед и завршетак. Ова имплементација није прошла независну криптографску ревизију.
Страница безбедносног модела описује комплетну конструкцију, укључујући заглавље тока и извођење кључа.