Un resumen técnico para quien audita la seguridad. Todo lo que hay aquí se puede contrastar con el código fuente, incluido lo que nos deja peor: lo decimos en lugar de omitirlo.
No hay backend. La extensión es una extensión de Chrome con Manifest V3 que genera códigos TOTP/HOTP localmente con OTPAuth. No operamos servidores, no gestionamos cuentas y no existe ningún canal por el que los datos del usuario puedan llegarnos.
Como no hay servidor, tampoco hay material de clave en el servidor, ni depósito de claves, ni ninguna vía de recuperación bajo nuestro control. Si alguien olvida su contraseña y pierde su código de recuperación, no podemos ayudarle: es intencionado.
La protección por contraseña es opcional y está desactivada por defecto. Con ella activada:
Los datos nunca se cifran directamente con una clave derivada de la contraseña. Una clave maestra aleatoria cifra los registros; la salida de PBKDF2 solo envuelve esa clave maestra. De ahí se siguen dos consecuencias, y ambas importan:
Con la protección por contraseña activada se cifra el registro completo de la cuenta salvo su identificador y su huella —incluido el nombre del servicio—, de modo que un perfil robado no revela en qué servicios tiene cuentas el usuario. Al activarla, la extensión cifra los registros, los verifica descifrándolos y comparándolos, y solo entonces elimina todas las copias en claro: almacenamiento local del navegador, sincronización y las siete instantáneas rotativas de respaldo.
Lo decimos sin rodeos, porque afecta a su evaluación:
En resumen: esto protege los datos en reposo. No defiende, ni puede defender, un dispositivo que ya está bajo el control de un atacante mientras se usa.
El manifiesto declara exactamente dos permisos y ningún permiso de host:
No hay scripts de contenido, ni permisos tabs, cookies o webRequest, ni recursos accesibles desde la web. La extensión no puede leer ni modificar el contenido de ninguna página.
El escaneo de QR con la cámara se ejecuta en una página de la extensión abierta en una pestaña, no en el popup: un popup se destruye al perder el foco, que es justo lo que provoca una solicitud de permiso. Para esto no hace falta ningún permiso en el manifiesto: usa la solicitud de cámara estándar del navegador, concedida por origen de la extensión y revocable en la configuración del sitio, y nunca se pide hasta que el usuario abre el escáner. El vídeo se decodifica localmente y nunca se transmite ni se guarda.
La extensión no hace ninguna petición automática en uso normal, y Manifest V3 prohíbe el código remoto. Todas las conexiones que puede llegar a hacer:
| Host | Cuándo | ¿Lleva datos del usuario? |
|---|---|---|
| worldtimeapi.org timeapi.io | Comprobación de desfase del reloj, cacheada, falla en silencio. Con el reloj desfasado, TOTP deja de funcionar. | No |
| authenticator.sh | Página de bienvenida al instalar; página de opiniones al desinstalar o al valorar. | No (registros normales de servidor web) |
No se cargan fuentes, scripts, estilos ni imágenes desde hosts de terceros. Todo lo necesario para representar la interfaz viaja dentro del paquete.
No hace falta creerse nada de lo anterior. La extensión es de código abierto y cada versión es reproducible:
.crx publicado desde la Chrome Web Store y descomprímalonpm ci && npm run build con Node 20 LTSdist/ resultante con el paquete descomprimidoCon cada publicación en GitHub se publica un SHA-256 de cada archivo del dist/ generado, como SHA256SUMS-v<version>.txt y en formato sha256sum, de modo que el paso 4 se reduce a una sola ejecución de sha256sum -c. Las diferencias deberían limitarse al orden de los archivos dentro de los archivos comprimidos y a los espacios en la salida minificada entre versiones de parche de Node.
Las dependencias en tiempo de ejecución son deliberadamente pocas —OTPAuth, React, jsQR, Zustand, Framer Motion y Lucide— fijadas por un lockfile versionado. Facilitamos un SBOM en formato CycloneDX si se solicita.
Ver el código fuenteSomos un proveedor pequeño e independiente. Si alguno de estos puntos es un requisito ineludible en su proceso, mejor saberlo ahora que tres semanas después de empezar la evaluación:
Lo que ofrecemos a cambio es transparencia total del código, una compilación verificable, una superficie mínima de permisos y ninguna infraestructura de servidor que pudiera llegar a guardar sus datos.
Informes de vulnerabilidades y preguntas de seguridad: security@authenticator.sh. Nuestra política de divulgación, su alcance, los plazos de respuesta y las condiciones de safe harbour están en la página de política de seguridad; qué se almacena y qué sale del dispositivo se detalla en la política de privacidad.
Respondemos con gusto a un cuestionario escrito de evaluación de proveedores o revisamos el código con su equipo de seguridad.
Para cualquier asunto que no sea de seguridad —instalación, recuperación de cuentas, dudas de facturación en un despliegue— consulte soporte. Por favor, no envíe ahí informes de vulnerabilidades: ese buzón no se trata como confidencial.