2010-11-22 9 views
5

Estoy interesado en crear un proceso de tipo desafío/respuesta en Delphi. El escenario es este ... tenemos 2 computadoras ... 1 pertenece al usuario y 1 pertenece a un técnico de soporte.¿Cómo puedo usar Delphi para crear una prueba/respuesta visual para restaurar el acceso a una aplicación?

El usuario se cerró la puerta de un programa determinado, y con el fin de ganar 1 acceso en tiempo, quiero:

  1. El usuario que se presentará con una frase de comprobación, tales como "28394LDJA9281DHQ" o algún tipo de valor razonablemente único
  2. El usuario llamará al personal de soporte y leerá este desafío (después de que el personal de soporte haya validado su identidad)
  3. La persona de soporte escribirá este valor de desafío en un programa de su sistema que generará una respuesta. algo tan único como la respuesta, como "9232KLSDF92SD"
  4. El usuario escribe la respuesta y el programa determina si esta es o no una respuesta válida.
  5. Si es así, se concede al usuario 1 acceso de tiempo a la aplicación.

Ahora, cómo hacer esto es mi pregunta? Tendré 2 aplicaciones que tendrán no tienen acceso en red el uno al otro. ¿Hay alguna funcionalidad dentro de Windows que pueda ayudarme con esta tarea?

Creo que puedo usar algunas funcionalidades dentro de CryptoAPI, pero realmente no estoy seguro de por dónde empezar. Agradecería cualquier ayuda que pudieras ofrecer.

+0

Puede consultar los componentes de protección de software disponibles para Delphi. – avra

Respuesta

8

Implementaría una autenticación Challenge-Response basada en MD5.

De Wikipedia http://en.wikipedia.org/wiki/CRAM-MD5

Protocolo

  1. Desafío: En la autenticación CRAM-MD5, el servidor envía primero una cadena de desafío al cliente.
  2. Respuesta: El cliente responde con un nombre de usuario seguido de un carácter de espacio y luego un 16 bytes digerir en notación hexadecimal. El resumen es la salida de HMAC-MD5 con la contraseña del usuario como la clave secreta y el desafío original del servidor como el mensaje .
  3. Comparación: El servidor utiliza el mismo método para calcular la respuesta esperada. Si la respuesta dada y coinciden con la respuesta esperada, entonces la autenticación fue exitosa.

Esto proporciona tres tipos importantes de seguridad.

  1. Primero, otros no pueden duplicar el hash sin conocer la contraseña. Esto proporciona autenticación.
  2. En segundo lugar, otros no pueden reproducir el hash; depende del desafío impredecible . Esto es llamado variado o repetición prevención.
  3. En tercer lugar, los observadores no aprenden la contraseña. Esto se llama secreto.

Las dos características importantes de este protocolo que proporciona estos tres prestaciones de seguridad son el hash unidireccional y el desafío al azar fresco.

Además, puede agregar alguna identificación de aplicación en la cadena de desafío, para una doble verificación en el remitente del desafío.

Importante: tiene algunas debilidades, evalúe cuidadosamente cómo pueden afectarlo.

7

En cuanto a la estrategia verbal de desafío/respuesta: Utilizamos este enfoque para licenciar una aplicación de nicho en cinco mil estaciones de trabajo en todo el mundo durante más de diez años. Nuestro equipo de soporte lo llamó los "Códigos de lanzamiento de misiles" debido a su similitud con el proceso de autenticación de lanzamiento de misiles clásico visto en películas antiguas.

Esta es una manera extremadamente lenta de proteger su programa. Consumió enormes cantidades de tiempo de nuestro personal y clientes leyendo los códigos hacia y desde los usuarios. Todos lo odiaban.

Su situación/contexto puede ser diferente. Tal vez no lo va a utilizar casi tan a menudo como lo hicimos nosotros. Pero aquí hay algunas sugerencias:

  1. considerar cuidadosamente la longitud y el contenido del código: la mayoría de los usuarios (y personal de apoyo) resienten escribir un montón de personajes. Muchos usuarios son malos mecanógrafos. Considere si una cadena larga e incluyendo los signos de puntuación y la distinción entre mayúsculas y minúsculas los agobian excesivamente en comparación con la cantidad de seguridad añadida.

  2. Después de años de utilizar una implementación verbal de desafío/respuesta, la dejamos en su lugar (como una recuperación) pero agregamos un sistema automatizado simple. Se optó por utilizar FTP en lugar de un enfoque más sofisticado web por lo que no tiene que tener ningún software que se ejecuta en nuestro servidor interno (o tratar con nuestro personal de TI!)

Básicamente, utilizamos Archivos FTP para hacer el intercambio que se hizo previamente en el teléfono. El servidor coloca un archivo en el servidor FTP que contiene la frase de desafío. El nombre del archivo es el nombre del cliente. Nuestro personal de soporte tiene un programa que crea automáticamente este archivo en nuestro sitio ftp.

Nuestro personal le indica al cliente que presione una tecla de acceso rápido que lea el archivo FTP, lo autentique y vuelva a colocar un archivo de respuesta en el servidor.

El software de nuestro personal de soporte ha estado sondeando en espera de que el software del cliente cree el archivo de respuestas. Cuando ve el archivo, lo descarga y confirma su contenido, y lo elimina del servidor.

Por supuesto, puede hacer que este intercambio ocurra tantas veces y en cualquier dirección como necesite en una sesión determinada para lograr sus objetivos.

Los datos en los archivos pueden tener las mismas claves MD5 que usaría verbalmente, para que sea tan seguro como desee.

Una debilidad en este sistema es que el usuario debe tener acceso FTP. Descubrimos que la mayoría de nuestros usuarios (todas las empresas) tienen acceso FTP disponible. (Por supuesto, su base de clientes puede no ...) Si nuestra aplicación en el campo no puede acceder a nuestro sitio FTP, anuncia claramente el problema para que nuestro cliente pueda dirigirse a su personal de TI para solicitar que abra el acceso. Mientras tanto, volvemos a los códigos verbales.

Utilizamos las sencillas herramientas de vany Indy FTP sin ningún problema.

Sin duda, hay algunas debilidades en este enfoque (probablemente incluyendo algunas que no hemos pensado). Pero, para nuestras necesidades, ha sido fantástico. Nuestro personal de soporte y clientes lo adoran.

Lo siento si nada de esto es relevante para usted. Espero que esto te ayude a algunos.

+1

respuesta muy informativa !! ¡califica! – ComputerSaysNo

+0

Gracias, Dorin. Me alegro de que le haya gustado la publicación. – RobertFrank

Cuestiones relacionadas