Proton Authenticator es una aplicación de autenticación (2FA) de código abierto que genera códigos de contraseñas de un solo uso basados en el tiempo (TOTP) en tu dispositivo, permitiéndote acceder a servicios online con una capa extra de seguridad. Utiliza el mismo cifrado bien probado que asegura el resto del ecosistema Proton. Proton Authenticator es único porque fue diseñado desde cero para estar disponible en casi todas las plataformas, preservando tu privacidad y dándote la propiedad total de tus datos.

A diferencia de otras aplicaciones de autenticación, Proton Authenticator asegura tus datos con cifrado de extremo a extremo, incluso cuando activas la sincronización de dispositivos.

Esto significa que Proton Authenticator impide que nadie, incluido el propio Proton, sepa en qué servicios online tienes cuentas. Esta información, al igual que tus correos electrónicos o tu historial de navegación, puede revelar mucho sobre ti, y protegerla es esencial para mantener tu privacidad.

El cifrado de extremo a extremo de Proton Authenticator garantiza que todas las operaciones criptográficas, incluida la generación de claves y el cifrado de datos, se realicen localmente en tu dispositivo. Esto significa que Proton no puede acceder a tus datos sin cifrar ni compartirlos con terceras partes. Los servidores de Proton nunca tienen acceso a tus datos sin cifrar, incluida la contraseña de tu Proton Account.

Modelo de cifrado

Proton Authenticator adopta un enfoque integral para garantizar la máxima seguridad y privacidad para todos los datos del usuario. Todas las operaciones criptográficas ocurren localmente en tu dispositivo, y cualquier dato transmitido al servidor siempre está cifrado. Proton nunca tiene acceso a las claves de texto plano necesarias para descifrar los datos del usuario, lo que hace imposible que descifremos los datos almacenados, incluso si lo solicitan terceras partes.

Proton Authenticator utiliza el mismo cifrado avanzado que usamos para la autenticación en Proton Mail. Esto incluye el uso de una versión reforzada del protocolo Secure Remote Password (SRP) que ofrece garantías de seguridad más fuertes contra ataques de intermediario (MITM). Nuestra implementación significa que incluso un atacante que pueda leer, modificar, retrasar, destruir, repetir o fabricar mensajes arbitrariamente entre Proton y un usuario de manera indetectable se limita a verificar solo un intento de contraseña por intento de inicio de sesión, el equivalente a intentar iniciar sesión directamente. De esta manera, incluso si Proton se ve comprometido y actúa maliciosamente, la información equivalente a la contraseña nunca se revela.

Lee más sobre el cifrado de autenticación de Proton

Cifrado de datos

Proton Authenticator te permite almacenar de forma segura tus códigos 2FA, incluso si no tienes una Proton Account. Esto significa que el proceso de cifrado inicial debe realizarse completamente en tu dispositivo local. Luego, si decides que quieres usar tu Proton Account para sincronizar tus códigos entre dispositivos, podemos usar las claves criptográficas almacenadas en los servidores de Proton para realizar la sincronización.

El cifrado de Proton comienza con el servidor de Proton proporcionando la versión cifrada de la clave raíz que la aplicación Authenticator utiliza para cifrar los datos del usuario. Cada usuario de Proton tiene una Clave de Usuario asimétrica, y Proton cifra esta Clave de Usuario en tu dispositivo de la siguiente manera:

  • Cuentas que usan una contraseña de cuenta única: Proton cifra la Clave de Usuario con un hash bcrypt de la contraseña de la cuenta y la sal de la cuenta.
  • Cuentas que usan nuestra función de múltiples contraseñas de cuenta: Proton cifra la Clave de Usuario con un hash bcrypt de la contraseña de la clave y la sal de la cuenta.

Proton Authenticator utiliza bcrypt y una sal de cuenta para hacer hash de tu contraseña como una capa extra de protección contra ataques de fuerza bruta. Incluso si un actor malicioso obtuviera acceso a la base de datos de Proton, las claves de tu cuenta estarían seguras contra ataques de fuerza bruta.

Una vez que activas la sincronización, Proton Authenticator genera una Clave de Authenticator aleatoria de 32 bytes. Esta clave se cifra y firma con tu Clave de Usuario, asegurando que solo tú puedas descifrarla: nadie (ni siquiera Proton) puede leer o crear una nueva Clave de Authenticator. Una vez que tienes acceso a la Clave de Authenticator, todas las entradas en Proton Authenticator se cifran utilizando AES-GCM de 256 bits.

Como Proton Authenticator no requiere una Proton Account, también necesitamos un esquema de cifrado separado que almacene de forma segura tus datos cuando solo existen en tu dispositivo. Al final, la forma más fácil de implementar esto es tratando la Proton Account como un proveedor de claves separado. Al final, se ve de la siguiente manera:

Un diagrama del cifrado de Proton Authenticator sin una Proton Account

Para el almacenamiento local de claves en tu dispositivo, confiamos en los proveedores de almacenamiento seguro de claves de cada sistema:

  • Android: Almacenamos de forma segura la clave en el Android Keystore(ventana nueva), que luego se utiliza para cifrar una Clave Aleatoria Local que almacenamos en el sistema de archivos protegido de la aplicación. Esa clave se utiliza para cifrar simétricamente todas las entradas de Proton Authenticator en tu dispositivo.
  • iOS/iPadOS/macOS: Generamos una Clave Aleatoria Local y la almacenamos en el servicio Keychain(ventana nueva). Esa clave se utiliza para cifrar simétricamente todas las entradas de Proton Authenticator en tu dispositivo.
  • Windows: Generamos una Clave Aleatoria Local y la almacenamos en el Administrador de Credenciales de Windows(ventana nueva). Esa clave se utiliza para cifrar simétricamente todas las entradas de Proton Authenticator en tu dispositivo. Si la conexión al WCM no está disponible, permitimos al usuario cifrar su Clave Aleatoria Local con una contraseña.
  • Linux: Generamos una Clave Aleatoria Local y la almacenamos en el Servicio Secreto DBUS disponible. Esa clave se utiliza para cifrar simétricamente todas las entradas de Proton Authenticator en tu dispositivo. Si no se configura ningún servicio secreto DBUS, permitimos al usuario cifrar su Clave Aleatoria Local con una contraseña.

Cifrado de la copia de seguridad

Una de las principales fortalezas de Proton Authenticator es que siempre controlas tus datos. Esto incluye permitirte hacer copias de seguridad periódicas de tus códigos en tu dispositivo local y establecer una contraseña que cifre estos datos sensibles.

Para implementar esta copia de seguridad local segura, utilizamos la contraseña que proporcionaste para derivar una clave de cifrado segura usando Argon2 como KDF (Función de Derivación de Clave). Una KDF se utiliza para generar claves criptográficas a partir de entradas secretas, como contraseñas introducidas por el usuario, y su objetivo principal es mejorar la seguridad haciendo que sea más difícil y lleve más tiempo a los atacantes descifrar contraseñas. Usando esta clave de cifrado generada a partir de tu contraseña, serializamos todas tus entradas y las ciframos para asegurar que tus datos permanezcan cifrados de forma segura, incluso si la copia de seguridad se filtra. Y al utilizar tecnologías bien conocidas y abiertas, puedes descifrar tus datos sin usar Proton Authenticator, lo que te permite mantener el control incluso si decides cambiar a otra aplicación de autenticación.

Seguridad con transparencia

Como todos los servicios de Proton, Proton Authenticator es de código abierto. Cualquiera puede consultar nuestro código fuente para verificar nuestro modelo de seguridad. Al igual que con nuestros otros servicios, Proton Authenticator también se someterá a auditorías de seguridad independientes regulares, y compartiremos estos informes de auditoría públicamente tan pronto como estén disponibles.

Por último, para los investigadores de seguridad interesados, Proton Authenticator es elegible para el programa de recompensas por errores de Proton, que ofrece premios de hasta 100.000 $ por el descubrimiento de errores en el software de Proton.