Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Cómo funciona Google Authenticator y TOTP


 Google Authenticator es un autenticador basado en software (soft-token) que implementa un servicio de verificación de dos pasos (2FA). El siguiente diagrama proporciona detalles pero, ¿Cómo garantiza la seguridad?




Google Authenticator es una aplicación creada por Google y que sirve para proporcionar códigos que puedes usar para verificar tu identidad después de introducir tu usuario y contraseña. Se puede usar para mejorar la seguridad de tu cuenta de Google, pero es compatible con otros servicios como Facebook, Amazon y Hotmail.




Google Authenticator está disponible como aplicación para Android y para iOS. Es una app sencilla que simplemente muestra un código numérico de seis dígitos que cambia cada 30 segundos y que debes usar para verificar tu identidad después de iniciar sesión.

¿Cómo funciona?



Hay dos etapas involucradas:

  • Etapa 1: el usuario habilita la verificación en dos pasos de Google
  • Etapa 2: el usuario usa el autenticador para iniciar sesión, etc.

Etapa 1

Pasos 1 y 2: Bob abre la página web para habilitar la verificación en dos pasos. El front-end solicita una clave secreta. El servicio de autenticación genera la clave secreta para Bob y la almacena en la base de datos del back-end.

Paso 3: el servicio de autenticación devuelve un URI a la interfaz. El URI está compuesto por el emisor de la clave, el nombre de usuario y la clave secreta. El URI se muestra en forma de código QR en la página web.

Paso 4: Bob luego usa Google Authenticator para escanear el código QR generado. La clave secreta se almacena en el autenticador del cliente.

Etapa 2

Pasos 1 y 2: Bob quiere iniciar sesión en un sitio web con la verificación de dos pasos de Google. Para esto, necesita la contraseña. Cada 30 segundos, Google Authenticator genera un tokende 6 dígitos mediante el algoritmo TOTP (contraseña de un solo uso basada en tiempo, según RFC 6238). Bob usa el token para ingresar al sitio web

La base del TOTP es una función hash, es decir, un procedimiento criptográfico. A partir de una contraseña secreta y de una marca de tiempo (en EPOCH - tiempo Unix) se forma una secuencia de caracteres codificada. La contraseña es conocida tanto para el usuario como para el servidor.

Pasos 3 y 4: El front-end envía la contraseña que Bob ingresa al back-end para la autenticación. El servicio de autenticación lee la clave secreta de la base de datos y genera un token de 6 dígitos utilizando el mismo algoritmo TOTP que el cliente.

Paso 5: el servicio de autenticación compara los dos token generados por el cliente y el servidor y devuelve el resultado de la comparación a la interfaz. Bob puede continuar con el proceso de inicio de sesión solo si los dos token coinciden.

¿Este mecanismo de autenticación es seguro?

¿Pueden otros obtener la clave secreta?

Necesitamos asegurarnos de que la clave secreta se transmita mediante HTTPS. El cliente del autenticador y la base de datos almacenan la clave secreta y debemos asegurarnos de que las claves secretas estén cifradas.

¿Los delincuentes informáticos pueden adivinar el token de 6 dígitos?

En principio no. El token tiene 6 dígitos, por lo que la contraseña generada tiene 1 millón de combinaciones y cambia cada 30 segundos. Si un atacante quieren adivinar el token cada 30 segundos, deben ingresar 30.000 combinaciones por segundo. Por eso, también debería haber un control de rate-limit para limitar la cantidad de intentos por segundo.


Time-based One-time Password: TOTP 



Los usuarios de Internet deben introducir contraseñas de manera habitual, por ejemplo para iniciar sesión en una plataforma de red social, en una tienda o en una banca online. Las contraseñas evitan el acceso de terceros a datos sensibles. Sin embargo, muchos usuarios no prestan la atención necesaria, pues los profesionales son capaces de descifrar contraseñas sencillas en cuestión de segundos. Mientras tanto, otros usuarios guardan contraseñas de buena calidad de manera incorrecta, lo que proporciona a los delincuentes una puerta de entrada. Además, no hay que olvidar los puntos débiles de los servicios en los que se inicia sesión. Si las contraseñas no se almacenan de manera adecuada, se ponen en peligro los datos de miles de usuarios. 

¿Cómo funciona el algoritmo Time-based One-time Password?

La base del TOTP es una función hash, es decir, un procedimiento criptográfico. A partir de una contraseña secreta y de una marca de tiempo se forma una secuencia de caracteres codificada. La contraseña es conocida tanto para el usuario como para el servidor. La indicación de tiempo se lleva a cabo en tiempo Unix.

TOTP es en realidad la evolución de HOTP, siglas de «HMAC-based One-time Password». TOTP también está basado en el procedimiento HMAC, la operación hash en segundo plano. Tanto el dispositivo del usuario como el servidor generan un valor hash a partir de la contraseña secreta en combinación con un contador. Dado que ambos valores son idénticos, la autentificación funciona.

La función hash en sí no está definida; en la práctica se recurre p. ej. a SHA-1 (como en el caso de Google Authenticator), que genera un valor hash con una longitud de 160 bits. Para simplificar, este valor se acorta por medio de una función de compresión. Al final se cuenta, por ejemplo, con un número de seis cifras que el usuario puede introducir fácilmente al iniciar sesión en el servicio web.

Como segundo componente de la función, HOTP está basado en un contador que el servidor y el usuario comparten. El problema en este caso es que la contraseña que se genera es válida hasta que se utiliza. TOTP restringe este hecho: el código generado solo se puede utilizar dentro de un periodo de tiempo determinado. Pero ¿cómo funciona?

Hay tres fórmulas relevantes para el algoritmo Time-based-One-time:

TOTP = HOTP(SecretKey,CurrentTime)

Esta sencilla fórmula se limita a especificar que TOTP es un procedimiento HOTP con dos parámetros, SecretKey y CurrentTime:

  • SecretKey: contraseña creada de manera aleatoria conocida tanto por el servidor como por el cliente.
  • CurrentTime: momento actual en tiempo Unix.

No obstante, la indicación del tiempo varía cada segundo. Y un segundo no es suficiente para transmitir el código a la aplicación. Es decir, el TOTP ya no sería válido pasado un segundo, puesto que el servidor ya habría generado un nuevo valor hash. Por este motivo, se recurre a una fórmula adicional:

CurrentTime = floor((unixtime(now) – unixtime(T0))/T1)

El parámetro CurrentTime se define por lo tanto de la siguiente manera:

  • unixtime(now): momento actual en tiempo Unix.
  • unixtime(T0): tiempo Unix en el momento T0 a partir del que se cuenta, en la mayoría de los casos es el 01.01.1970 a medianoche (= 0).
  • T1: intervalo en el que el TOTP debe ser válido, generalmente 30 segundos.
  • floor: función de redondeo para convertir el valor calculado en un número entero.

La división y el redondeo generan el efecto de que el resultado varía en intervalos.

A continuación, el valor hash generado se acorta para que resulte más fácil para el usuario:

Result = TOTPmod10d

Con el cálculo Módulo se genera una suma de verificación:

  • mod 10: módulo con divisor 10
  • d: número de cifras que el TOTP debe tener

De esta forma, la base 10 se eleva a la potencia de las cifras que debe tener el código, se divide el TOTP por este valor y se extrae el resto.

Fuentes: 

Alex Xu

https://blog.segu-info.com.ar/2022/07/como-funciona-google-authenticator-y.html
https://www.ionos.mx/digitalguide/servidores/seguridad/totp/


0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.