Google Authenticator es un autenticador basado en software de Google que implementa servicios de verificación en dos pasos utilizando el algoritmo de contraseña única basada en el tiempo (TOTP; especificado en RFC 6238) y el algoritmo de contraseña única basado en HMAC (HOTP; especificado en RFC 4226), para autenticar usuarios de aplicaciones de software. [2]
Desarrollador (es) | |
---|---|
Versión inicial | 20 de septiembre de 2010 [1] |
Repositorio | github |
Escrito en |
|
Sistema operativo | Android , iOS , BlackBerry OS |
Plataforma | Móvil |
Licencia | Freeware propietario (las versiones anteriores estaban bajo la licencia Apache 2.0) |
Sitio web | reproducir |
Al iniciar sesión en un sitio que admita Authenticator (incluidos los servicios de Google) o al utilizar aplicaciones de terceros que admitan Authenticator, como administradores de contraseñas o servicios de alojamiento de archivos , Authenticator genera una contraseña única de seis a ocho dígitos que los usuarios deben ingresar además de sus datos de inicio de sesión habituales.
Las versiones anteriores del software eran de código abierto, pero desde 2013 las versiones son propietarias . [3]
Caso de uso típico
Para usar Authenticator, la aplicación se instala primero en un teléfono inteligente. Debe configurarse para cada sitio con el que se utilizará: el sitio proporciona una clave secreta compartida al usuario a través de un canal seguro, que se almacenará en la aplicación Authenticator. Esta clave secreta se utilizará para todos los inicios de sesión futuros en el sitio. [ cita requerida ]
Para iniciar sesión en un sitio o servicio que utiliza autenticación de dos factores y es compatible con Authenticator, el usuario proporciona el nombre de usuario y la contraseña al sitio, que calcula (pero no muestra) la contraseña de un solo uso de seis dígitos requerida y le pide al usuario que ingrese eso. El usuario ejecuta la aplicación Authenticator, que calcula y muestra de forma independiente la misma contraseña, que el usuario escribe, autenticando su identidad. [ cita requerida ]
Con este tipo de autenticación de dos factores, el mero conocimiento del nombre de usuario y la contraseña no es suficiente para ingresar a la cuenta de un usuario; el atacante también necesita conocimiento de la clave secreta compartida o acceso físico al dispositivo que ejecuta la aplicación Authenticator. Una ruta alternativa de ataque es un ataque man-in-the-middle : si la computadora utilizada para el proceso de inicio de sesión se ve comprometida por un troyano , el nombre de usuario, la contraseña y la contraseña de un solo uso pueden ser capturados por el troyano, que luego puede iniciar su propia sesión de inicio de sesión en el sitio o supervisar y modificar la comunicación entre el usuario y el sitio. [ cita requerida ]
Descripción técnica
Durante la configuración, el proveedor de servicios genera una clave secreta de 80 bits para cada usuario (mientras que RFC 4226 §4 requiere 128 bits y recomienda 160 bits). [4] Esto se transfiere a la aplicación Authenticator como una cadena base32 de 16, 26 o 32 caracteres o como un código QR .
Posteriormente, cuando el usuario abre la aplicación Authenticator, calcula un valor hash HMAC - SHA1 utilizando esta clave secreta. El mensaje que es HMAC-ed puede ser:
- el número de períodos de 30 segundos desde la época de Unix ( TOTP ); o
- un contador que se incrementa con cada nuevo código ( HOTP ).
Una parte del HMAC se extrae y se muestra al usuario como un código de seis dígitos.
Licencia de código fuente
La aplicación Google Authenticator para Android era originalmente de código abierto, pero luego pasó a ser propietaria. [3] Google puso a disposición una fuente anterior para su aplicación Authenticator en su repositorio de GitHub ; la página de desarrollo asociada dice:
"Este proyecto de código abierto le permite descargar el código que impulsó la versión 2.21 de la aplicación. Las versiones posteriores contienen flujos de trabajo específicos de Google que no forman parte del proyecto". [5]
Después de que Google Authenticator dejara de ser de código abierto, se creó un clon de software libre llamado FreeOTP [6] [3] , predominantemente una nueva reescritura pero que incluía algo de código del original.
Google proporciona las versiones de Authenticator para Android , [7] BlackBerry e iOS [8] .
Ver también
- Autenticación multifactor
- Algoritmo de contraseña de un solo uso basado en HMAC
- FreeOTP
- LinOTP
Referencias
- ^ "Google está haciendo que su cuenta sea mucho más segura con la autenticación de dos pasos - TechCrunch" . TechCrunch . 2010-09-20 . Consultado el 12 de marzo de 2016 .
- ^ "GitHub - google / google-authenticator: versión de código abierto de Google Authenticator (excepto la aplicación de Android)" . GitHub .
Estas implementaciones admiten el algoritmo de contraseña única basada en HMAC (HOTP) especificado en RFC 4226 y el algoritmo de contraseña única basada en el tiempo (TOTP) especificado en RFC 6238.
- ^ a b c Willis, Nathan (22 de enero de 2014). " Autenticación multifactor FreeOTP ". LWN.net . Consultado el 10 de agosto de 2015.
- ^ "RFC 4226 - HOTP: un algoritmo de contraseña de un solo uso basado en HMAC" . Tools.ietf.org. 2005-02-15 . Consultado el 25 de marzo de 2019 .
- ^ "Google-authenticator - Verificación en dos pasos - Alojamiento de proyectos de Google" .
- ^ "FreeOTP" .
- ^ https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2 A
- ^ "Autenticador de Google" . Tienda de aplicaciones .
enlaces externos
- Autenticador de Google en la Ayuda de Google
- Google Authenticator (Android) y Google Authenticator (otro) código fuente heredado en GitHub
- Código fuente del módulo Google Authenticator PAM en GitHub
- Implementación de Google Authenticator en Python en Stack Overflow
- Autenticador en F-Droid
- Implementación de Django-MFA mediante Google Authenticator : Django-mfa es un paquete simple para agregar una capa adicional de seguridad a su aplicación web django. Le da a la aplicación web una contraseña que cambia aleatoriamente como protección adicional.
- Código fuente de la versión 1.02 en GitHub