Proton Authenticator es una app de autenticación de dos factores (2FA) de código abierto que genera códigos de contraseña de un solo uso basados en el tiempo (TOTP) en su dispositivo, permitiéndole acceder a servicios en línea con una capa adicional de seguridad. Utiliza el mismo cifrado bien probado que asegura el resto del ecosistema de Proton. Proton Authenticator es único en el sentido de que fue diseñado desde cero para estar disponible en casi todas las plataformas, preservando al mismo tiempo su privacidad y dándole total propiedad sobre sus datos.

A diferencia de otras apps de autenticación, Proton Authenticator asegura sus datos con cifrado de extremo a extremo, incluso cuando activa la sincronización del dispositivo.

Esto significa que Proton Authenticator evita que nadie, incluido el propio Proton, sepa en qué servicios en línea tiene cuentas. Esta información, al igual que sus correos electrónicos o su historial de navegación, puede revelar mucho sobre usted, y protegerla es esencial para mantener su 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 su dispositivo. Esto significa que Proton no puede acceder a sus datos sin cifrar ni compartirlos con terceros. Los servidores de Proton nunca tienen acceso a sus datos sin cifrar, incluida su contraseña de 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 su 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 nos hace imposible descifrar los datos almacenados, incluso si terceros lo solicitan.

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 SRP (Secure Remote Password) 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 adivinanza de contraseña única 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.

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

Cifrado de datos

Proton Authenticator le permite almacenar de forma segura sus códigos 2FA, incluso si no tiene una Proton Account. Esto significa que el proceso inicial de cifrado debe realizarse completamente en su dispositivo local. Luego, si decide que quiere usar su Proton Account para sincronizar sus 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 app de autenticación 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 su dispositivo de la siguiente manera:

  • Cuentas que utilizan una contraseña de cuenta única: Proton cifra la Clave de usuario con un hash bcrypt de la contraseña de la cuenta y el salt de la cuenta.
  • Cuentas que utilizan 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 el salt de la cuenta.

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

Una vez que activa la sincronización, Proton Authenticator genera una Clave de autenticador aleatoria de 32 bytes. Esta clave está cifrada y firmada con su Clave de usuario, asegurando que solo usted pueda descifrarla; nadie (ni siquiera Proton) puede leer o crear una nueva Clave de autenticador. Una vez que tiene acceso a la Clave de autenticador, todas las entradas en Proton Authenticator se cifran utilizando 256-bit AES-GCM.

Dado que Proton Authenticator no requiere una Proton Account, también necesitamos un esquema de cifrado separado que almacene de forma segura sus datos cuando solo existen en su 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 su dispositivo, confiamos en los proveedores de almacenamiento seguro de claves de cada sistema:

  • Android: Almacenamos de forma segura la clave en el Android Keystore(nueva ventana), 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 su dispositivo.
  • iOS/iPadOS/macOS: Generamos una Clave aleatoria local y la almacenamos en el servicio Keychain(nueva ventana). Esa clave se utiliza para cifrar simétricamente todas las entradas de Proton Authenticator en su dispositivo.
  • Windows: Generamos una Clave aleatoria local y la almacenamos en el Administrador de credenciales de Windows(nueva ventana). Esa clave se utiliza para cifrar simétricamente todas las entradas de Proton Authenticator en su dispositivo. Si la conexión a WCM no está disponible, permitimos que el usuario cifre 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 su dispositivo. Si no hay ningún servicio secreto DBUS configurado, permitimos que el usuario cifre su Clave aleatoria local con una contraseña.

Cifrado de copia de seguridad

Una de las principales fortalezas de Proton Authenticator es que siempre controla sus datos. Esto incluye permitirle hacer copia de seguridad periódicamente de sus códigos en su dispositivo local y establecer una contraseña que cifre estos datos confidenciales.

Para implementar esta copia de seguridad local segura, utilizamos la contraseña que proporcionó para derivar una clave de cifrado segura utilizando Argon2 como KDF (Función de derivación de claves). 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 las contraseñas. Utilizando esta clave de cifrado generada a partir de su contraseña, serializamos todas sus entradas y las ciframos para garantizar que sus datos permanezcan cifrados de forma segura, incluso si se filtra la copia de seguridad. Y al utilizar tecnologías bien conocidas y abiertas, puede descifrar sus datos sin utilizar Proton Authenticator, lo que le permite mantener el control incluso si decide mudarse a otra app de autenticación.

Seguridad a través de la transparencia

Al igual que 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 periódicas, y compartiremos estos informes de auditoría públicamente tan pronto como estén disponibles.

Finalmente, 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.