Autenticador de Google
Google Authenticator es una aplicación para la autenticación en dos pasos que utiliza el algoritmo de contraseña de un solo uso basado en el tiempo (TOTP) y el algoritmo de contraseña de un solo uso basado en HMAC ( HOTP ) de Google LLC . El servicio implementa los algoritmos especificados en RFC 6238 y RFC 4226 . [2]
El Autenticador representa una contraseña numérica de un solo uso de 6 u 8 dígitos que el usuario debe proporcionar además del nombre de usuario y la contraseña para iniciar sesión en Google u otros servicios. El Autenticador también puede generar códigos para aplicaciones de terceros, como administradores de contraseñas o servicios de alojamiento de archivos. Las versiones anteriores del programa estaban disponibles como código abierto en GitHub , pero las últimas versiones son propiedad de Google. [3]
Ejemplo de uso
Normalmente, los usuarios primero deben instalar la aplicación en su dispositivo móvil. Para ingresar al sitio o utilizar los servicios del servicio, debe ingresar un nombre de usuario y una contraseña, iniciar la aplicación del Autenticador e ingresar la contraseña única generada en un campo especial.
Para hacer esto, el sitio proporciona la clave secreta compartida al usuario, que debe almacenarse en la aplicación Google Authenticator. Esta clave secreta se utilizará para todos los futuros inicios de sesión en el sitio.
Con la autenticación de 2 pasos, simplemente saber el nombre de usuario/contraseña no es suficiente para descifrar una cuenta . El atacante también debe conocer la clave secreta o tener acceso físico al dispositivo con Google Authenticator. Una ruta alternativa es un ataque MITM : si la computadora de un usuario está infectada con un troyano , entonces el nombre de usuario, la contraseña y el código de un solo uso pueden interceptarse para luego iniciar su propia sesión de inicio de sesión en el sitio, o monitorear y modificar la información entre el usuario y el sitio.
Implementaciones
Google Authenticator está disponible en Android , [4] BlackBerry e iOS [5] . Varias implementaciones de terceros también están disponibles:
- Windows Phone 7.5/8/8.1/10: Microsoft Authenticator [6] Virtual TokenFactor [7]
- Windows Mobile: Autenticador de Google para Windows Mobile [8]
- CLI de Java: Autenticador.jar [9]
- Interfaz gráfica de usuario de Java: JAut [10] FXAuth [11]
- J2ME: gauthj2me [12] lwuitgauthj2me [13] Mobile-OTP (solo en chino) [14] totp-me [15]
- Sistema operativo Palm: gauthj2me [16]
- Python: paso único [17]
- PHP: GoogleAuthenticator.php [18]
- Rubí: rotp, [19] dos fu [20]
- Rieles: active_model_otp [21] (implementación de terceros)
- webOS: GAuth [22]
- Windows: Gauth4win [23] Autenticador MOS [24] WinAuth [25]
- .NET: Autenticador de dos pasos [26]
- HTML5: html5-google-autenticador [27]
- MeeGo/Harmattan (Nokia N9): GAuth [28]
- Sistema operativo Sailfish: SGAuth, [29] SailOTP [30]
- Apache: Módulo Apache del Autenticador de Google [31]
- PAM: módulo de autenticación conectable de Google [32] oauth-pam [33]
- Backend: LinOTP (Backend de Gestión implementado en python)
- Chrome/Chrome OS: Autenticador [34]
- iOS: autenticación OTP [35]
Descripción técnica
El proveedor de servicios genera una clave secreta de 80 bits para cada usuario (aunque RFC 4226 § 4 requiere un mínimo de 128 bits y recomienda 160 bits). [36] La clave se proporciona como una cadena codificada en Base32 de 16, 26 o 32 dígitos o como un código QR . Con la clave secreta, el cliente genera un HMAC - SHA1 a partir de:
- número de intervalos de 30 segundos desde el comienzo de la " era UNIX " para la variante TOTP
- un contador que se incrementa con cada nuevo código para la variante HOTP .
La porción HMAC luego se extrae y se convierte a un código de 6 dígitos.
Pseudocódigo para OTP basado en tiempo
función GoogleAuthenticatorCode ( cadena secreta ) // basado en
la clave RFC 4226 : = base32decode ( secreto ) // clave: matriz de uint8
mensaje : = htobe64 ( tiempo actual de Unix / 30 ) // mensaje: uint64, hazlo big-endian hash : = HMAC - SHA1 ( clave , mensaje ) // hash: matriz de uint8 offset := último trozo de hash // offset:= hash[hash.size() - 1] & 0x0F truncatedHash := ( hash [ offset ] << 24 ) | ( hash [ offset + 1 ] << 16 ) // hash truncado: uint32 big-endian | ( hash [ compensación + 2 ] << 8 ) | hash [ offset + 3 ] truncatedHash = truncatedHash & 0 x7FFFFFFF // reinicia el código MSB := truncatedHash mod 1000000 rellena el código con 0 hasta que la longitud del código sea 6 código de retorno // código: cadena
Pseudocódigo para Evento/Contador OTP
función GoogleAuthenticatorCode ( cadena secreta )
clave := base32decode ( secreto )
mensaje := contador codificado en hash de 8 bytes
:= HMAC - SH1 ( clave , mensaje ) compensación := último trozo de hash truncadoHash := hash [ compensación .. compensación + 3 ] //4 bytes comenzando en el desplazamiento Establezca el primer bit de truncatedHash en cero //elimine el código de bit más significativo := truncatedHash mod 1000000 complete el código con 0 hasta que la longitud del código sea 6 código de retorno
Transferir cuentas
Los usuarios pueden elegir qué cuentas exportar y luego, después de ser verificados con el PIN del dispositivo o la autenticación biométrica, mostrar un código QR que puede ser escaneado por otro teléfono usando el Autenticador en modo de importación.
Notas
- ↑ Google está haciendo que su cuenta sea mucho más segura con la autenticación en dos pasos: TechCrunch . TechCrunch (20 de septiembre de 2010). Consultado el 12 de marzo de 2016. Archivado desde el original el 12 de marzo de 2016. (indefinido)
- ↑ GitHub - google/google-authenticator: versión de código abierto de Google Authenticator (excepto la aplicación de Android ) . GitHub . Google. — "Estas implementaciones admiten el algoritmo de contraseña de un solo uso (HOTP) basado en HMAC especificado en RFC 4226 y el algoritmo de contraseña de un solo uso basado en tiempo (TOTP) especificado en RFC 6238 ". Consultado el 27 de julio de 2016. Archivado desde el original el 26 de enero de 2021.
- ↑ Willis, Nathan (22 de enero de 2014). " Autenticación multifactor FreeOTP Archivado el 31 de octubre de 2020 en Wayback Machine ". LWN.net . Consultado el 10 de agosto de 2015.
- ↑ https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2 Archivado el 2 de febrero de 2021 en Wayback Machine A
- ↑ Autenticador de Google . Tienda de aplicaciones . Consultado el 27 de julio de 2016. Archivado desde el original el 22 de diciembre de 2015. (indefinido)
- ↑ Autenticador (4 de abril de 2013). Consultado el 27 de julio de 2016. Archivado desde el original el 17 de octubre de 2019. (indefinido)
- ↑ Virtual TokenFactor (enlace no disponible) (26 de febrero de 2012). Consultado el 27 de julio de 2016. Archivado desde el original el 8 de septiembre de 2013. (indefinido)
- ↑ [APLICACIÓN Google Authenticator para Windows Mobile] . Desarrolladores XDA . Consultado el 27 de julio de 2016. Archivado desde el original el 19 de abril de 2019. (indefinido)
- ↑ http://blog dot jamesdotcuff dot net (enlace descendente) . Consultado el 27 de julio de 2016. Archivado desde el original el 1 de agosto de 2014. (indefinido)
- ↑ mclamp/JAut . GitHub . Consultado el 27 de julio de 2016. Archivado desde el original el 4 de agosto de 2015. (indefinido)
- ↑ kamenitxan/FXAuth . GitHub . Consultado el 27 de julio de 2016. Archivado desde el original el 5 de septiembre de 2020. (indefinido)
- ↑ gauthj2me - Autenticación de Google en Java Mobile, j2me - Google Project Hosting . Consultado el 27 de julio de 2016. Archivado desde el original el 6 de enero de 2016. (indefinido)
- ↑ lwuitgauthj2me - Google Authenticator para teléfonos J2ME - Google Project Hosting . Consultado el 27 de julio de 2016. Archivado desde el original el 16 de marzo de 2016. (indefinido)
- ↑ chunlinyao / mobile-otp - Bitbucket (enlace descendente) . Consultado el 27 de julio de 2016. Archivado desde el original el 15 de octubre de 2017. (indefinido)
- ↑ totp-me - TOTP para Java ME - Autenticador de Google . Consultado el 27 de julio de 2016. Archivado desde el original el 5 de enero de 2018. (indefinido)
- ↑ gauth.prc - gauthj2me - Google Authenticator para Palm OS (convertido de java) - Google Authentification en Java Mobile, j2me - Google Project Hosting . Consultado el 27 de julio de 2016. Archivado desde el original el 6 de enero de 2016. (indefinido)
- ↑ tadeck/onetimepass . GitHub . Consultado el 27 de julio de 2016. Archivado desde el original el 27 de octubre de 2020. (indefinido)
- ↑ chregu/GoogleAuthenticator.php . GitHub . Consultado el 27 de julio de 2016. Archivado desde el original el 29 de septiembre de 2020. (indefinido)
- ↑ rotp-RubyGems.org: el servidor de gemas de su comunidad . Consultado el 27 de julio de 2016. Archivado desde el original el 11 de julio de 2019. (indefinido)
- ↑ ukazap/twofu . GitHub . Consultado el 27 de julio de 2016. Archivado desde el original el 12 de septiembre de 2020. (indefinido)
- ↑ heapsource/active_model_otp . GitHub . Consultado el 27 de julio de 2016. Archivado desde el original el 5 de diciembre de 2020. (indefinido)
- ↑ GAut . Consultado el 27 de julio de 2016. Archivado desde el original el 20 de octubre de 2020. (indefinido)
- ↑ gauth4win - Google Authenticator para Windows - Google Project Hosting . Consultado el 27 de julio de 2016. Archivado desde el original el 11 de enero de 2016. (indefinido)
- ↑ Inicio del autenticador MOS . Consultado el 27 de julio de 2016. Archivado desde el original el 17 de febrero de 2020. (indefinido)
- ↑ winauth: Autenticador de Windows para Battle.net/World of Warcraft/Guild Wars 2/Glyph/WildStar/Google/Bitcoin: Google Project Hosting . Consultado el 27 de julio de 2016. Archivado desde el original el 17 de mayo de 2015. (indefinido)
- ↑ glacasa/TwoStepsAuthenticator . GitHub . Consultado el 27 de julio de 2016. Archivado desde el original el 5 de diciembre de 2020. (indefinido)
- ↑ gbraad/html5-google-authenticator . GitHub . Consultado el 27 de julio de 2016. Archivado desde el original el 5 de julio de 2014. (indefinido)
- ↑ Techtransit. Tienda Nokia: descargue GAuth y muchos otros juegos, fondos de pantalla, tonos de llamada y aplicaciones móviles en su teléfono Nokia (enlace no disponible) . Consultado el 27 de julio de 2016. Archivado desde el original el 12 de julio de 2014. (indefinido)
- ↑ SGAut . Consultado el 27 de julio de 2016. Archivado desde el original el 11 de julio de 2019. (indefinido)
- ↑ SailOTP . Consultado el 27 de julio de 2016. Archivado desde el original el 10 de enero de 2021. (indefinido)
- ↑ google-authenticator-apache-module - Módulo Apache para la autenticación de dos factores a través de Google Authenticator - Google Project Hosting . Consultado el 27 de julio de 2016. Archivado desde el original el 19 de noviembre de 2015. (indefinido)
- ↑ google-authenticator - Verificación en dos pasos - Google Project Hosting . Consultado el 27 de julio de 2016. Archivado desde el original el 10 de febrero de 2015. (indefinido)
- ↑ oauth-pam - PAM para usar con sitios web OAuth - Google Project Hosting . Consultado el 27 de julio de 2016. Archivado desde el original el 8 de agosto de 2016. (indefinido)
- ↑ Autenticador . Consultado el 27 de julio de 2016. Archivado desde el original el 17 de octubre de 2019. (indefinido)
- ↑ Autenticación OTP . Tienda de aplicaciones . Consultado el 27 de julio de 2016. Archivado desde el original el 12 de abril de 2019. (indefinido)
- ↑ RFC 4226 - HOTP: un algoritmo de contraseña de un solo uso basado en HMAC . Consultado el 17 de enero de 2018. Archivado desde el original el 6 de abril de 2019. (indefinido)
Enlaces