Revault verschlüsselt eine große Datei in Segmenten von etwa 5 MiB, jedes mit eigenem Authentifizierungs-Tag, sodass nie die ganze Datei auf einmal im Arbeitsspeicher liegen muss. Genau das ermöglicht in der Web-App Dateien bis zu 1 GiB.
Warum nicht die ganze Datei auf einmal verschlüsseln?
Große Dateien sollten nicht viel Speicher erfordern. Revault liest Dateien in Segmenten von etwa 5 MiB, verschlüsselt jedes Segment im Browser und stellt Chiffretext in IndexedDB bereit. Die Originaldatei wird niemals in einen riesigen Puffer eingelesen.
Durch die Arbeit in Segmenten kann ein unterbrochener Upload außerdem mit bereits bereitgestelltem Geheimtext fortgesetzt werden, statt die ganze Datei erneut zu verschlüsseln.
Was schützt die Reihenfolge und Vollständigkeit der Segmente?
Jede Datei erhält einen eigenen Schlüssel, der mit HKDF aus dem Hauptschlüssel des Tresors abgeleitet wird. Der Ableitungskontext umfasst die Kennungen von Tresor und Datei, die Bytelänge der Datei und die Segmentgröße.
Die 12-Byte-Nonce jedes Segments kombiniert ein zufälliges, für diese Datei gewähltes Präfix, einen vier Byte langen Segmentzähler und ein Flag, das das letzte Segment kennzeichnet. Segmente tragen 128-Bit-GCM-Tags. Werden Segmente vertauscht, verändert oder abgeschnitten, schlägt die Prüfung fehl.
Was passiert, wenn ein Upload unterbrochen wird?
Sobald die Verschlüsselung abgeschlossen ist, können Netzwerk-Uploads nach einer Seitenaktualisierung aus dem zwischengespeicherten Chiffretext fortgesetzt werden. Bei Wiederholungsversuchen werden dieselben verschlüsselten Bytes gesendet, anstatt eine neue Quelle unter alten Nonces zu verschlüsseln. Wenn die Verschlüsselung selbst unterbrochen wird, brechen Sie den unvollständigen Upload ab und beginnen Sie erneut mit einer neuen Dateiidentität.
Wie werden Downloads geprüft?
Beim Herunterladen wird jedes Segment authentifiziert, bevor es freigegeben wird. Da die Prüfung während des Streamings erfolgt, kann ein Fehler spät im Download eine unvollständige Datei hinterlassen. Vergewissern Sie sich daher, dass der Download erfolgreich abgeschlossen ist, bevor Sie sich auf die Datei verlassen.
Welche Grenzen gibt es?
Jede Datei in der Web-App darf bis zu 1 GiB groß sein. Für Bild- und Videovorschauen gilt eine separate Speichergrenze. Wenn Sie den lokalen Browserspeicher löschen, kann der Geheimtext verloren gehen, der zum Fortsetzen eines Uploads nötig ist.
Das Streaming-Format folgt der dokumentierten AES-GCM-HKDF-Streaming-Konstruktion von Tink und verwendet native Web-Crypto-Primitive. Dateiidentität und erwartete Länge sind in den Schlüsselableitungskontext eingebunden; Segmentzähler und die Abschlussmarkierung schützen die Reihenfolge und den Abschluss. Diese Implementierung wurde keiner unabhängigen kryptografischen Prüfung unterzogen.
Die Seite zum Sicherheitsmodell beschreibt die vollständige Konstruktion, einschließlich des Stream-Headers und der Schlüsselableitung.