¿Cómo implementar la autenticación multifactor mediante un generador de token?

16

Me gustaría implementar la autenticación multifactor en algunos proyectos.

Ahora el primer factor sería el nombre de usuario y la contraseña, para el segundo factor me gustaría usar un generador de tokens.

Estos tokens tendrían 6 caracteres de longitud y serían generados por un dispositivo que lleva el usuario (como un teléfono o un dispositivo especial)

Pero ... no tengo idea de cómo funciona un generador de token y cómo implementarlo. (asi que estoy aqui para aprender)

Eventualmente, me gustaría crear una aplicación de teléfono para hacer la generación de token y un sitio web (php) donde el uso iniciaría sesión.

¿Alguien puede darme algunos consejos en la dirección correcta sobre cómo funcionan estos algoritmos?

    
pregunta HTDutchy 10.10.2011 - 13:51
fuente

6 respuestas

7

Hay muchos ya existentes, y vienen con sus propias API. Puede implementar cualquier algoritmo que desee. Consulte este sitio.

Dibujándolo desde cero, para tokens desconectados tienes algunas opciones. Pueden ser:

  • basado en el contador: una nueva contraseña con cada pulsación y el sistema de autenticación no permite nada al menos tan antiguo como la última contraseña utilizada
  • basado en el tiempo: el algoritmo determina la hora actual y el servidor no permite nada más que el presente, el minuto anterior y el minuto siguiente (o posiblemente una ventana un poco más ancha); requiere una buena sincronización de tiempo

Debe inicializar un algoritmo basado en una secuencia impredecible con un valor compartido secreto y el tiempo o su contador. hash(time . secret) o tal. Usar SHA-256 y cortar algunos bits sería efectivo.

Comparaciones de fuerza:

  • token RSA - 8 dígitos numéricos, 10 8 (uno en cien millones)
  • seis dígitos numéricos, 10 6 (uno en un millón)
  • seis alfanuméricos, 2.1x10 9 (uno en 2 mil millones)
  • seis alfanuméricos, con mayúsculas: 5.6x10 10 (uno en 56 mil millones)

Ver también:

respondido por el Jeff Ferland 10.10.2011 - 15:38
fuente
6

Algunas consideraciones importantes de diseño auxiliar.

¿Usuario único o multiusuario?

Si este es un proyecto favorito solo para ti, entonces muchas tareas de soporte son fáciles. Sin embargo, si se trata de un sistema multiusuario, debe considerar más factores.

¿Token unificado o token por persona?

Un token unificado es un token que proporciona una autenticación equivalente para todos los usuarios. Incluso si hay varios dispositivos físicos, cualquier usuario puede usar cualquier dispositivo físico para la autenticación. Esto es conveniente para el soporte, pero débil para la autenticación. Por otro lado, un token por usuario solo puede ser utilizado por un usuario específico. Cada usuario debe ser asignado de forma única a un dispositivo físico diferente. Si el usuario pierde o daña el dispositivo, el usuario debe ser asignado a un nuevo dispositivo físico. Por usuario proporciona una autenticación más fuerte, pero el soporte operativo es más caro.

Parámetros del sistema de autenticación.

Hay algunos parámetros críticos, como el retraso entre la autenticación fallida y la próxima solicitud de autenticación. Este retraso puede ayudar a proteger contra ataques en línea donde el atacante ha obtenido el nombre de usuario y la contraseña, pero no tiene un dispositivo token válido. Otro parámetro es el número de intentos fallidos hasta que la cuenta se deshabilita temporalmente. Agregar la configuración anterior es el tiempo temporal deshabilitado. Ese es el tiempo después de n intentos fallidos si la cuenta se deshabilita temporalmente.

Protección del dispositivo Token

Dado que el dispositivo token es un componente de autenticación, el dispositivo token será un objetivo tentador para los atacantes. Si está pensando en utilizar un teléfono móvil o un teléfono inteligente, debe pensar en cómo protegerá el software de generación de tokens de los intentos de controlarlo o interrumpirlo. Si su dispositivo es un dispositivo personalizado, ¿qué canales de comunicación tendrá (USB, Ethernet, RS-232) y cómo permitirán que un atacante analice o modifique el dispositivo?

    
respondido por el this.josh 11.10.2011 - 10:14
fuente
6

Actualmente estoy usando el Google Authenticator como mi token OTP de elección.

Si eres nuevo en esto, te recomiendo leer sobre la Iniciativa OATH . Este terreno ha sido bien pavimentado, ¡buena suerte!

    
respondido por el MToecker 10.10.2011 - 21:51
fuente
5

Desea crear una contraseña de un solo uso mediante la combinación de una clave y un contador (o marca de tiempo). El generador de token hace clic en la clave y el contador, trunca el resultado en 6 caracteres e incrementa el contador. El servidor hace lo mismo para comparar.

HOTP es un algoritmo común con un contador, TOTP es uno que usa una marca de tiempo. Una de las ventajas de estos es que los generadores de tokens de hardware y software están disponibles para ellos.

Generar el token es la parte fácil; La autenticación segura y confiable con ese token es más complicada. Duo Security tiene clientes de código abierto para usar con nuestro servicio de dos factores, y pueden ser útiles como referencia. Descargo de responsabilidad, soy un empleado de Duo.

    
respondido por el Karl Anderson 11.10.2011 - 02:34
fuente
1

Actualmente estoy usando una solución de Billion para la autenticación de dos factores. Pero al menos en nuestra configuración requiere computadoras con Windows. Así que estoy un poco curioso sobre el YubiKey. Aquí hay más información.

enlace

enlace

    
respondido por el Arlukin 10.10.2011 - 21:41
fuente
0

En segundo lugar analizaría OATH, Google Authenticator lo usa, así como YubiKey . En realidad, las YubiKeys pueden programarse para hacer unos pocos algoritmos diferentes, así como TOTP con una aplicación de Windows auxiliar.

    
respondido por el bVector 29.03.2012 - 08:55
fuente

Lea otras preguntas en las etiquetas