Un aperçu technique destiné aux auditeurs de sécurité. Tout ici est vérifiable dans le code source — y compris ce qui nous met le moins en valeur, que nous énonçons plutôt que d'omettre.
Il n'y a pas de backend. L'extension est une extension Chrome Manifest V3 qui génère les codes TOTP/HOTP localement avec OTPAuth. Nous n'exploitons aucun serveur, ne gérons aucun compte et n'avons aucun canal par lequel des données utilisateur pourraient nous parvenir.
Puisqu'il n'y a pas de serveur, il n'y a pas non plus de matériel de clé côté serveur, pas de séquestre de clé et aucun chemin de récupération sous notre contrôle. Si un utilisateur oublie son mot de passe et perd son code de récupération, nous ne pouvons rien pour lui — c'est voulu.
La protection par mot de passe est facultative et désactivée par défaut. Lorsqu'elle est active :
Les données ne sont jamais chiffrées directement avec une clé dérivée du mot de passe. Une clé maîtresse aléatoire chiffre les enregistrements ; la sortie de PBKDF2 ne fait qu'envelopper cette clé maîtresse. Deux conséquences en découlent, et toutes deux comptent :
Avec la protection par mot de passe activée, tout l'enregistrement du compte est chiffré, hormis son identifiant et son empreinte — y compris le nom du service, si bien qu'un profil volé ne révèle pas auprès de quels services l'utilisateur a des comptes. L'activation chiffre les enregistrements, les vérifie en les déchiffrant et en les comparant, et seulement ensuite supprime toute copie en clair : stockage local du navigateur, synchronisation et les sept instantanés de sauvegarde en rotation.
Dit clairement, parce que cela compte pour votre évaluation :
En résumé : cela protège les données au repos. Cela ne défend pas, et ne peut pas défendre, un appareil déjà sous le contrôle d'un attaquant pendant son utilisation.
Le manifeste déclare exactement deux permissions et aucune permission d'hôte :
Il n'y a aucun script de contenu, aucune permission tabs, cookies ou webRequest, et aucune ressource accessible au web. L'extension ne peut ni lire ni modifier le contenu d'une page, quelle qu'elle soit.
Le scan de QR code par la caméra s'exécute sur une page d'extension ouverte dans un onglet, pas dans la popup — une popup est détruite dès qu'elle perd le focus, ce que fait précisément une demande de permission. Cela ne nécessite aucune permission dans le manifeste : c'est la demande d'accès caméra standard du navigateur, accordée par origine d'extension et révocable dans les paramètres du site, et elle n'apparaît jamais avant que l'utilisateur n'ouvre le scanner. La vidéo est décodée localement, jamais transmise ni stockée.
L'extension n'émet aucune requête automatique en usage normal, et Manifest V3 interdit le code distant. Toutes les connexions qu'elle peut établir :
| Hôte | Quand | Transporte des données utilisateur ? |
|---|---|---|
| worldtimeapi.org timeapi.io | Vérification de dérive d'horloge, mise en cache, échoue silencieusement. TOTP casse si l'horloge dérive. | Non |
| authenticator.sh | Page de bienvenue à l'installation ; page de retour à la désinstallation ou lors d'une note. | Non (journaux de serveur web ordinaires) |
Aucune police, aucun script, aucun style ni aucune image n'est chargé depuis un hôte tiers. Tout ce qui est nécessaire au rendu de l'interface est livré dans le paquet.
Vous n'avez à croire aucun des points ci-dessus sur parole. L'extension est open source et chaque version est reproductible :
.crx publié depuis le Chrome Web Store et décompressez-lenpm ci && npm run build avec Node 20 LTSdist/ obtenu avec le paquet décompresséUn SHA-256 pour chaque fichier du dist/ produit est publié à chaque version GitHub sous la forme SHA256SUMS-v<version>.txt, au format sha256sum : l'étape 4 se réduit donc à un seul appel à sha256sum -c. Les différences doivent se limiter à l'ordre des fichiers dans les archives et aux espaces dans la sortie minifiée d'une version corrective de Node à l'autre.
Les dépendances d'exécution sont délibérément peu nombreuses — OTPAuth, React, jsQR, Zustand, Framer Motion et Lucide — figées par un fichier de verrouillage versionné. Un SBOM CycloneDX est disponible sur demande.
Consulter le code sourceNous sommes un petit éditeur indépendant. Si l'un des points suivants est une exigence stricte de votre processus, mieux vaut le savoir maintenant qu'au bout de trois semaines d'évaluation :
Ce que nous offrons à la place : une transparence totale du code source, un build vérifiable, une surface de permissions minimale et aucune infrastructure serveur susceptible de détenir vos données.
Rapports de vulnérabilité et questions de sécurité : security@authenticator.sh. Notre politique de divulgation, son périmètre, nos délais de réponse et les conditions de safe harbour figurent sur la page politique de sécurité ; ce qui est stocké et ce qui quitte l'appareil est exposé dans la politique de confidentialité.
Nous répondons volontiers à un questionnaire écrit d'évaluation fournisseur ou parcourons le code avec une équipe sécurité.
Pour tout ce qui ne relève pas de la sécurité — installation, récupération de compte, questions de facturation liées à un déploiement — voir le support. Merci de ne pas y envoyer de rapports de vulnérabilité : cette boîte n'est pas traitée comme confidentielle.