Sécurité et confidentialité

Votre archive reste sur votre appareil

ZipRecover est conçu comme un outil de confidentialité. Voici précisément ce qui s'exécute et où, ce que nous ne recevons jamais et comment le moteur traite vos fichiers comme une entrée non fiable.

Reste sur votre appareil
  • Lire et analyser l'archive
  • Détecter la méthode de chiffrement
  • Dériver les clés et tester les candidats
  • Confirmer et afficher un résultat
  • Déchiffrement local facultatif des fichiers
Ne quitte jamais votre appareil
  • Le fichier ZIP lui-même
  • Le contenu de tout fichier à l'intérieur de l'archive
  • Les noms de fichiers stockés dans l'archive
  • Les mots de passe candidats testés
  • Le mot de passe récupéré
  • Les empreintes de l'archive qui pourraient identifier ou exposer vos données
Le trajet de votre archive pendant la récupération, entièrement sur votre appareil, sans dérivation qui l'envoie vers un serveur.
Le trajet de votre archive reste sur votre appareil.

Le flux de données

Lorsque vous sélectionnez un fichier, le navigateur en lit les octets avec la File API. La page analyse la structure du ZIP sur votre appareil, choisit une entrée chiffrée, de préférence la plus petite qui soit assez grande pour confirmer un mot de passe de façon décisive, et ne remet à chaque Web Worker que les octets nécessaires pour tester des mots de passe (pour AES, le sel, la valeur de vérification, le texte chiffré et le code d'authentification ; pour ZipCrypto, les octets chiffrés de cette entrée), avec un résumé de l'archive (noms et tailles des entrées). Les workers effectuent les vérifications, avec le hachage lourd en WebAssembly (hash-wasm) ou, pour la dérivation de clé AES, via l'API Web Crypto intégrée au navigateur quand elle est plus rapide sur votre appareil, et ils ne détiennent jamais l'archive entière. Rien dans ce flux ne part vers un serveur, et il ressemble à ceci :

Votre fichier ZIP
  --> File API du navigateur (local)
  --> ZIP analysé sur la page (local)
  --> Des Web Workers testent les mots de passe (local)
  --> Résultat affiché pour vous seul

Il n'y a délibérément aucune ramification dans ce diagramme qui envoie votre archive vers un serveur. Le moteur de récupération ne contient aucun code réseau qui envoie des données de fichier. C'est le cœur de la question de savoir si les outils en ligne de mots de passe ZIP sont sûrs : le risque réside dans l'envoi, et ici votre archive n'est jamais envoyée.

Deux choses que l'outil conserve sur votre appareil restent dans ce navigateur : une copie de courte durée d'un fichier transmis depuis la page d'accueil (dans le stockage local IndexedDB, supprimée dès que la page de récupération l'a lue) et, pendant une recherche par masque ou par force brute mise en pause, un enregistrement de reprise dans le stockage local. Ni l'une ni l'autre ne nous est jamais envoyée. La section 4 de la politique de confidentialité indique exactement ce que chacune contient et comment l'effacer, ce qui compte sur un ordinateur partagé.

Rapports d'erreur et statistiques

Si le code du site échoue dans votre navigateur, il envoie un court rapport à /api/error sur ce site, et le serveur du site le consigne (il est prévu pour transmettre les rapports à notre concentrateur central d'erreurs, qui ne fonctionne pas encore). Le rapport contient le type et le message de l'erreur, la trace de pile, l'adresse du script avec sa ligne et sa colonne, le chemin de la page (sans la chaîne de requête), la langue de la page, le user-agent de votre navigateur, l'heure, la version du site et, pour une défaillance dans l'outil de récupération, une étiquette d'un mot qui désigne la partie en cause. Il ne contient jamais votre archive, son contenu ou ses noms de fichiers, ni aucun mot de passe, et le navigateur envoie au plus dix rapports par page vue. Les rapports sont conservés au plus 90 jours (voir la section 4 de la politique de confidentialité).

L'outil de récupération comprend une fonction de statistiques dans son propre code. Elle ne peut enregistrer que quelques étiquettes non identifiantes au sujet d'une recherche (le schéma de chiffrement, la taille de clé AES de l'archive lorsqu'elle en a une, le mode que vous avez choisi et si l'archive est prise en charge), et jamais votre archive, son contenu ou ses noms de fichiers, ni aucun mot de passe. Aucun collecteur n'y est rattaché aujourd'hui, elle n'envoie donc rien. Cloudflare enregistre malgré tout les métadonnées habituelles de chaque requête pour chaque page vue (voir la section 4 de la politique de confidentialité). Toute statistique de site agrégée ajoutée à l'avenir restera dans cette même liste de données autorisées et ne recevra jamais le contenu de l'archive, les noms de fichiers, les mots de passe candidats, les mots de passe récupérés ni les empreintes de l'archive.

Modèle de sécurité à entrée non fiable

Une archive ZIP que vous chargez pourrait être malformée ou hostile, le moteur traite donc chaque fichier comme non fiable :

  • Analyse avec contrôle des limites. L'analyseur de format valide chaque décalage et chaque longueur avant de lire, de sorte qu'une archive tronquée ou fabriquée déclenche une erreur propre au lieu de lire hors limites.
  • Limites de mémoire. L'outil teste les mots de passe contre une seule entrée chiffrée de 256 Mo compressés au plus, et sa décompression s'arrête dès que la sortie dépasse la taille que l'archive déclare pour cette entrée, si bien qu'une entrée de type bombe de décompression ne peut pas s'étendre sans limite. L'archive que vous chargez est lue entièrement en mémoire.
  • Vérification sans extraction. Tester un mot de passe ne nécessite pas d'extraire des fichiers arbitraires. La confirmation ne lit que l'entrée de vérification (la plus petite entrée qui donne une vérification définitive, si l'archive en contient une) : en AES, elle vérifie le HMAC stocké sur les données chiffrées, et en ZipCrypto, elle déchiffre l'entrée, la décompresse si elle utilise Deflate et compare son CRC-32.
  • Aucune exécution de code. Le contenu de l'archive est traité purement comme des données. Rien à l'intérieur d'une archive n'est jamais exécuté ni interprété.

Ce que « aucun envoi » signifie et ne signifie pas

Votre archive ne nous est pas envoyée. Comme pour tout site web, les pages, les scripts et la sonde de compatibilité WebAssembly sont téléchargés depuis notre hébergeur. Les seules données que le site renvoie sont celles du rapport d'erreur décrit plus haut, qui ne contient aucune donnée de votre fichier.

Composants open source

La récupération repose sur des bibliothèques open source établies et sous licence. La dérivation de clé, le HMAC et le CRC-32 viennent de hash-wasm ou de l'API Web Crypto du navigateur ; le flux de clé ZipCrypto suit la spécification publiée par PKWARE dans notre propre code, que les tests vérifient avec des archives écrites par zip.js.

ComposantLicenceRôle
hash-wasm MIT WebAssembly PBKDF2-HMAC-SHA1, HMAC-SHA1, CRC-32
zip.js BSD-3-Clause Déchiffrement local facultatif et référence de format
fflate MIT Décompression DEFLATE de secours
Astro MIT Framework de sites statiques

Transport et en-têtes

Le site est servi via HTTPS avec une Content-Security-Policy stricte, X-Content-Type-Options: nosniff, une Permissions-Policy restrictive et frame-ancestors 'none' pour empêcher le clickjacking. WebAssembly est autorisé via script-src 'wasm-unsafe-eval' ; les connexions sont limitées à l'origine propre du site.

Limitations, en toute honnêteté

Comme la récupération s'effectue côté client, nous ne pouvons ni voir ni contrôler la façon dont l'outil est utilisé, et c'est pourquoi l'utilisation autorisée est une politique que vous acceptez plutôt que quelque chose que nous pouvons imposer techniquement. Et aucun outil ne peut récupérer un mot de passe fort arbitraire : les archives AES en particulier utilisent une dérivation de clé lente qui rend chaque tentative coûteuse par conception.

FAQ sécurité et confidentialité

Recevez-vous parfois mon fichier ZIP ?

Non. Il n'y a aucune étape d'envoi. Le fichier est lu localement avec la File API et analysé sur la page, et des Web Workers testent les mots de passe sur les octets d'une entrée chiffrée qui en est extraite. Aucune requête réseau de l'application ne transporte votre archive, son contenu ou ses noms de fichiers internes.

Stockez-vous ou transmettez-vous les mots de passe récupérés ?

Non. Un mot de passe récupéré est affiché uniquement dans votre onglet de navigateur et n'est copié que lorsque vous cliquez sur copier. Il n'est jamais envoyé où que ce soit et l'outil ne l'écrit pas dans un stockage persistant.

Quels composants open source assurent la récupération ?

Le cœur cryptographique est hash-wasm (MIT), une bibliothèque qui fournit des implémentations WebAssembly de PBKDF2, HMAC, SHA-1 et CRC-32. zip.js (BSD-3-Clause) est utilisé pour le déchiffrement local facultatif. Les deux sont largement utilisés.

L'isolation d'origine croisée est-elle requise ?

Non. Le moteur n'utilise pas SharedArrayBuffer ni WebAssembly multithread, le site n'envoie donc pas Cross-Origin-Embedder-Policy et la page n'a pas d'isolation d'origine croisée (le site envoie en revanche Cross-Origin-Opener-Policy: same-origin). Cela garde le déploiement simple et évite de casser d'autres ressources.

Prêt à récupérer votre mot de passe ZIP ?

Tout s'exécute localement dans votre navigateur. Votre archive ne quitte jamais votre appareil.

Ouvrir l'outil