大きなファイルには大量のメモリは必要ありません。 Revault は、約 5 MiB のセグメントでファイルを読み取り、ブラウザーで各セグメントを暗号化し、暗号文を IndexedDB にステージングします。元のファイルが 1 つの巨大なバッファーに読み込まれることはありません。
ストリーミング形式は、Tink が文書化した AES-GCM-HKDF ストリーミング構造に従い、ネイティブの Web Crypto プリミティブを使用します。ファイル ID と予想される長さは、キー導出コンテキストにバインドされます。セグメント カウンターと最終マーカーは、順序付けと完了を保護します。この実装は独立した暗号化監査を受けていません。
暗号化が完了すると、ページの更新後にキャッシュされた暗号文からネットワーク アップロードを再開できます。再試行では、古い nonce で新しいソースを暗号化するのではなく、同じ暗号化されたバイトが送信されます。暗号化自体が中断された場合は、その不完全なアップロードをキャンセルし、新しいファイル ID で再度開始してください。
ダウンロードでは、セグメントを明示的なダウンロードにストリーミングする前に、段階的にセグメントを認証します。画像とビデオのプレビューには個別のメモリ制限があります。ローカル ブラウザのストレージをクリアすると、アップロードを再開するために必要な暗号文が削除される可能性があります。