Revault chiffre un fichier volumineux en segments d’environ 5 MiB, chacun avec sa propre balise d’authentification : le fichier entier n’a donc jamais besoin d’être chargé en mémoire d’un coup. Dans l’app web, c’est ce qui permet de gérer des fichiers jusqu’à 1 GiB.

Pourquoi ne pas chiffrer tout le fichier d’un coup ?

Les fichiers volumineux ne devraient pas nécessiter une grande quantité de mémoire. Revault lit les fichiers par segments d'environ 5 Mio, chiffre chaque segment dans le navigateur et met en scène le texte chiffré dans IndexedDB. Le fichier original n'est jamais lu dans un tampon géant.

Travailler par segments signifie aussi qu’un envoi interrompu peut reprendre à partir du texte chiffré déjà préparé, au lieu de chiffrer à nouveau tout le fichier.

Qu’est-ce qui protège l’ordre et l’intégralité des segments ?

Chaque fichier reçoit sa propre clé de chiffrement, dérivée avec HKDF à partir de la clé maîtresse du coffre-fort. Le contexte de dérivation inclut les identifiants du coffre-fort et du fichier, la taille du fichier en octets et la taille des segments.

Le nonce de 12 octets de chaque segment combine un préfixe aléatoire choisi pour ce fichier, un compteur de segment de quatre octets et un indicateur qui marque le dernier segment. Les segments portent des balises GCM de 128 bits. Si des segments sont intervertis, modifiés ou tronqués, la vérification échoue.

Que se passe-t-il si un envoi est interrompu ?

Une fois le chiffrement terminé, les téléchargements réseau peuvent reprendre à partir du texte chiffré mis en cache après une actualisation de la page. Les nouvelles tentatives envoient les mêmes octets chiffrés, plutôt que de chiffrer une nouvelle source sous d'anciens noms occasionnels. Si le cryptage lui-même est interrompu, annulez ce téléchargement incomplet et recommencez avec une nouvelle identité de fichier.

Comment les téléchargements sont-ils vérifiés ?

Les téléchargements authentifient chaque segment avant de le libérer. Comme la vérification s’effectue pendant la diffusion du fichier, une erreur survenant tard dans un téléchargement peut laisser un fichier incomplet : assurez-vous donc que le téléchargement se termine correctement avant de vous y fier.

Quelles sont les limites ?

Dans l’app web, chaque fichier peut atteindre 1 GiB. Les aperçus d’images et de vidéos ont leur propre limite de mémoire. Effacer le stockage local du navigateur peut supprimer le texte chiffré nécessaire pour reprendre un envoi.

Le format de streaming suit la construction de streaming AES-GCM-HKDF documentée de Tink, en utilisant des primitives Web Crypto natives. L'identité du fichier et la longueur attendue sont liées au contexte de dérivation de clé ; les compteurs de segments et le marqueur final protègent la commande et l'achèvement. Cette implémentation n’a pas fait l’objet d’un audit cryptographique indépendant.

La page du modèle de sécurité décrit la construction complète, y compris l’en-tête du flux et la dérivation des clés.