07 abril 2012

Google Authenticator 2

Google Authenticator 2
Habilitar autenticación de doble factor sobre nuestra cuenta de google, nos proporcionará una capa de seguridad adicional al tener que generar una clave basada en el tiempo de un sólo uso junto con nuestra contraseña habitual.

Esta es la segunda versión de Google Authenticator que nada tiene que ver con la primera. Han mejorado la seguridad y su facilidad de uso. Expondré unas pequeñas nociones de cómo funciona y su uso.

Tengo que decir, que técnicamente, sólo es necesario disponer de la clave secreta para generar la clave OTP. Aunque en la práctica, estas claves se generan en el móvil o vía sms.


La habilitación de dicha funcionalidad la encontraremos en la página principal de configuración de cuentas.

Tendremos que validar nuestro número de móvil. Nos enviarán un sms con un código que deberemos de introducir.

En el caso de que no dispongamos de Android, IOS ó Blackberry, nos queda la alternativa del sms (o generar nuestro propio OTP basado en el timestamp actual junto con la clave secreta).

Para los que tengamos un smartphone compatible, google nos proporciona un QRCode que debemos de escanearlo a través de la aplicación Google Authenticator 2, ya que almacenará la clave secreta que servirá de semilla para la generación de nuestros OTP's.

Escanear qrcode y validar.

  • La url del qrcode tiene un aspecto así:
    OTPauth://tOTP/alice@google.com?secret=JBSWY3DPEHPK3PXP
  • La clave secreta está compuesta en base32 y es de tipo TOPT (Time-based One-time Password).
  • Deberemos introducir una clave OTP para validar la autenticación de doble factor a través del movil.
  • + info https://code.google.com/p/google-authenticator/

La generación de códigos OTP en el móvil, se basan en el timestamp actual junto con la clave secreta

Google por su lado, verifica el OTP, ya que posee la clave secreta y la configuracion de nuestra fecha/hora basada en el número de móvil, que lógicamente debe coincidir con la fecha/hora de nuestro móvil (valga la redundancia).

Si está marcada la opción de recordar el equipo desde donde nos logamos, se guarda una cookie para el dominio google.com con 30 días de duración, así, cada vez que iniciemos sesión desde éste, no nos pedirá el OTP.

El OTP tiene una duración máxima de 30 segundos desde que se generó. Aclaremos esto:
  • Google, debido a los desfases horarios, según mis pruebas, tiene establecido un margen de +4 y -3.5 minutos (240 y 210 segundos respectivamente) por delante y por detrás de la fecha/hora actual.
  • Esto es, si tenemos el OTP 123456 generado a las 14:12:00, google calculará los OTP's correspondientes, 8 por delante y 6 por detrás respecto a la fecha/hora de logado:
    • 14:16:00        234925
    • 14:15:30        357532
    • 14:15:00        843793
    • 14:14:30        332266
    • 14:14:00        234123
    • 14:13:30        490645
    • 14:13:00        998832
    • 14:12:30        294211
    • 14:12:00       123456
    • 14:11:30        324483
    • 14:11:00        123548
    • 14:10:30        483246
    • 14:10:00        678314
    • 14:09:30        729603
    • 14:09:00        736294
  • Google comprobará si cualquiera de los OTP's generados corresponden con el introducido. 

Además de ofrecernos seguridad en el inicio de sesión de nuestra cuenta, podemos administrar contraseñas para cada uno de las aplicaciones de terceros que necesiten acceder a nuestros datos. Esto nos proporciona una capa de seguridad adicional para porteger nuestra cuenta al poder revocar estas contraseñas cuando queramos.

A continuación, os dejo un script en php para poder generar nuestros propios OTP. Los parámetros necesarios para que funcionen con la autenticación de doble factor de google son la clave secreta y una correcta configuración de la fecha/hora del sistema.



Artículo cortesía de Adrián Ruiz Bermudo 

3 comments :

Jorge lopez dijo...

Genial post !

Adrián Ruiz dijo...

Gracias compañero ;)

Astur dijo...

He cambiado de móvil y Google Authenticator me da código que al validar la verificación resultan erróneos. Ya he comprobado y cambiado de todo (hora, zona horarios, formatos de fecha..). En el móvil anterior sin problema, escaneo el código y el resultante es válido pero con el nuevo con Android 4.4.2 no hay forma de validar la cuenta y no puedo usar la aplicación en el móvil nuevo. ¿Cuál puede ser la causa de que el código generado al escanear el QR no sea correcto?