I’m interested in creating a challenge / response type process in Delphi. The scenario is this…we have 2 computers…1 belongs to the user and 1 belongs to a support technician.
The user is locked out of a certain program, and in order to gain 1 time access, I want:
- The user to be presented with a challenge phrase, such as “28394LDJA9281DHQ” or some type of reasonably unique value
- The user will call support staff and read this challenge (after the support staff has validated their identity)
- The support person will type this challenge value into a program on their system which will generate a response, something equally as unique as the response, such as “9232KLSDF92SD”
- The user types in the response and the program determines whether or not this is a valid response.
- If it is, the user is granted 1 time access to the application.
Now, how to do this is my question? I will have 2 applications that will not have networked access to one another. Is there any functionality within Windows that can help me with this task?
I believe that I can use some functionality within CryptoAPI, but I really am not certain where to begin. I’d appreciate any help you could offer.
I would implement a MD5 based Challenge-Response authentication.
From wikipedia http://en.wikipedia.org/wiki/CRAM-MD5
Additionally, you may add some application-identification into the challenge string, for a double check on the sender of the challenge.
Important: it has some weaknesses, evaluate carefully how they may affect you.