¿Cuáles son las formas típicas de generar una contraseña de un solo uso?

2

Estoy buscando las formas típicas de generar una contraseña de un solo uso. Sé sobre el HOTP y TOPT. Pero, en mi caso, el problema es que el "servidor" solo tiene una pantalla como interfaz y la aplicación otp-generator debe funcionar en uno o más dispositivos móviles.

Actualmente estoy pensando en usar un generador seguro de números pseudoaleatorios. El número generado se mostrará en el "servidor". Luego, el usuario debe ingresar este número en los dispositivos móviles. El generador utiliza el número aleatorio de entrada y un secreto precompartido, los vincula y los codifica varias veces. El resultado es la OTP.

¿Existe una forma estandarizada similar para generar una OTP?

Editar:

Tengo un servidor con un inicio de sesión en un área secreta. Por otro lado, tengo diferentes dispositivos móviles que quizás puedan iniciar sesión en la misma área secreta. Así que hay muchos dispositivos que deben sincronizarse antes de cada inicio de sesión.

En el HOTP hay dos tipos posibles de secretos compartidos: Generación aleatoria y Generación determinística.

En mi opinión, la generación aleatoria no es posible debido a los múltiples dispositivos móviles para el mismo inicio de sesión. No se me ocurre ninguna solución que sincronice el prng seguro como el HMAC_DRGB u otro.

Con Determinist Generation, el secreto maestro solo se almacena en el servidor. No puedo encontrar una manera de compartir el secreto compartido de forma segura solo con una pantalla.

Esa es la razón por la que busco otros estándares para generar una OTP ...

¿O hay alguna forma de almacenar el secreto de forma segura en el servidor y los clientes?

    
pregunta Andreas 10.09.2014 - 13:15
fuente

1 respuesta

1

Piense en esta implementación (Descargo de responsabilidad: esto es básico):

El servidor muestra un número aleatorio que cambia cada 30 segundos (R)
El dispositivo móvil tiene un ID de dispositivo único (DID)
El servidor mantiene un registro de DID autorizados
Tanto el servidor como el dispositivo móvil comparten un secreto (S)

Cuando el dispositivo móvil desea iniciar sesión, solicita la R activa del servidor. El dispositivo móvil luego calcula hash(S + DID + R) y envía el resultado al servidor junto con el DID. El servidor utiliza el mismo algoritmo, y si coincide, entonces tiene cierto nivel de seguridad de que el dispositivo autorizado es el que está iniciando sesión de forma activa.

Combine esto con una credencial de nombre de usuario / contraseña típica que esté vinculada al DID y tenga un 2FA MUY básico. El inconveniente es la necesidad de mantener y comunicar S antes de que comience este proceso.

Este proceso es la función básica de la generación de OTP, pero existen formas más seguras de implementarlo si lo ves. Recuerda la regla:

  

"No hagas tu propio rollo"

    
respondido por el schroeder 11.09.2014 - 21:02
fuente

Lea otras preguntas en las etiquetas