¿Generando tokens de una sola vez desde la clave API?

6

Tengo un sitio web para el que estoy creando un módulo de Drupal que permite a los usuarios de ese sitio de Drupal navegar a mi sitio web directamente desde el sitio de Drupal.

Tengo la intención de distribuir claves de API secretas a cada uno de los administradores del sitio de Drupal y necesitan ingresar ese valor en su copia del módulo de Drupal.

Cuando este sitio de Drupal presenta mi módulo a sus usuarios, hacer clic en ciertos enlaces debería llevar al usuario a mi sitio junto con un conjunto de datos secretos que mi sitio puede usar para autenticar esta navegación. Habrá un FORMULARIO presentado al usuario y un enlace presente para que al hacer clic en el enlace 'envíe' el formulario a través de POST y redirija al usuario también.

Necesito usar esta clave 'api' secreta para generar algún tipo de código de tiempo limitado / único que se le dará al navegador del usuario. Cualquier usuario inteligente que copie este código generado no debería poder reutilizarlo para ingresar a mi sitio más adelante.

  1. ¿Debería usar esta clave API como contraseña para cifrar algunos datos que coinciden con el resto de la solicitud POST? Al recibirlo, lo descifro utilizando mi copia de su clave de API y si coincide con el resto de los datos, ¿lo considero validado?

  2. ¿O debería hacer algún tipo de hashing unidireccional - md5?

  3. ¿Debo cambiar la dirección actual de forma unidireccional y permitir el acceso solo durante 5-10 minutos?

(movido desde enlace )

    
pregunta siliconpi 07.04.2011 - 13:47
fuente

2 respuestas

4

Lo primero y más importante nunca use MD5 para nada relacionado con la seguridad. Es un algoritmo muy roto. Debe usar cualquier cosa de la familia SHA2, SHA256 es una excelente opción. Una forma de lograr este tipo de autenticación es con un HMAC La clave API podría servir como la clave secreta K en el algoritmo. El servidor con la clave API secreta tendría que aceptar la publicación y proporcionar el token de autenticación. El mensaje resultante tendría que tener un ID y el código de autenticación de mensaje para esa solicitud POST. La ID podría ser la clave principal para el usuario de la API, y el código de autenticación sería generado por el servidor que utiliza esta API.

En este caso, Criptografía de clave pública es una exageración y un cifrado simétrico ("cifrado") no es útil en absoluto.

    
respondido por el rook 10.04.2011 - 10:44
fuente
0

Hace mucho tiempo implementé un complemento OTP (una sola vez) para Joomla.

el código fuente es aquí .

Lo que planeé hacer es, dentro de una sesión válida, generé OTP que autentificaría algunas acciones, por un tiempo específico. La OTP se enviaría por un canal fuera de banda como, por ejemplo, SMS. Desafortunadamente, el proyecto murió, pero creo que este código base puede ser de alguna manera útil para usted.

    
respondido por el VP. 26.04.2011 - 16:30
fuente

Lea otras preguntas en las etiquetas