Comment puis-je utiliser Delphi pour créer un défi / réponse visuel pour restaurer l'accès à une application?

StackOverflow https://stackoverflow.com/questions/4249160

Question

Je suis intéressé à créer un processus de défi / type de réponse à Delphi. Le scénario est le suivant ... Nous avons 2 ordinateurs ... 1 appartient à l'utilisateur et 1 appartient à un technicien de support.

L'utilisateur est verrouillé d'un certain programme, et pour gagner un accès à 1 temps, je veux:

  1. L'utilisateur à présenter une phrase de défi, telle que "28394LDJA9281DHQ" ou un type de valeur raisonnablement unique
  2. L'utilisateur appellera le personnel d'assistance et lira ce défi (après que le personnel d'assistance a validé son identité)
  3. La personne de soutien tapera cette valeur de défi dans un programme sur son système qui générera une réponse, quelque chose de tout aussi unique que la réponse, comme "9232KLSDF92SD"
  4. Les types d'utilisateurs dans la réponse et le programme détermine s'il s'agit ou non d'une réponse valide.
  5. Si c'est le cas, l'utilisateur a accordé un accès à l'application.

Maintenant, comment faire cela est ma question? J'aurai 2 applications qui ne pas ont un accès en réseau. Y a-t-il des fonctionnalités dans Windows qui peuvent m'aider avec cette tâche?

Je crois que je peux utiliser certaines fonctionnalités Cryptoapi, mais je ne suis vraiment pas certain par où commencer. J'apprécierais toute aide que vous pourriez offrir.

Était-ce utile?

La solution

Je mettrais en œuvre une authentification de réponse de défi basée sur MD5.

De Wikipédia http://en.wikipedia.org/wiki/cram-md5

Protocole

  1. Défi: Dans l'authentification CRAM-MD5, le serveur envoie d'abord une chaîne de défi au client.
  2. Réponse: Le client répond par un nom d'utilisateur suivi d'un caractère spatial puis d'un digestion de 16 octets en notation hexadécimale. Le Digest est la sortie de HMAC-MD5 avec le mot de passe de l'utilisateur comme clé secrète et le défi d'origine du serveur comme message.
  3. Comparaison: le serveur utilise la même méthode pour calculer la réponse attendue. Si la réponse donnée et la réponse attendue correspondent, alors l'authentification a réussi.

Cela fournit trois types importants de sécurité.

  1. Tout d'abord, d'autres ne peuvent pas dupliquer le hachage sans connaître le mot de passe. Cela fournit l'authentification.
  2. Deuxièmement, d'autres ne peuvent pas rejouer le hachage - il dépend du défi imprévisible. Ceci est diversement appelé la fraîcheur ou la prévention de la rediffusion.
  3. Troisièmement, les observateurs n'apprennent pas le mot de passe. C'est ce qu'on appelle le secret.

Les deux caractéristiques importantes de ce protocole qui offrent ces trois avantages de sécurité sont le hachage à sens unique et le nouveau défi aléatoire.

De plus, vous pouvez ajouter une identification de l'application dans la chaîne de défi, pour un double vérification de l'expéditeur du défi.

Important: il a quelques faiblesses, évaluez attentivement comment elles peuvent vous affecter.

Autres conseils

En ce qui concerne la stratégie verbale du défi / réponse: nous avons utilisé cette approche pour concéder une demande de niche sur cinq mille postes de travail dans le monde pendant plus de dix ans. Notre équipe d'assistance l'a appelé les "codes de lancement de missiles" en raison de sa similitude avec le processus d'authentification de lancement de missiles classique vu sur les anciens films.

C'est un moyen extrêmement long de protéger votre programme. Il a consommé d'énormes quantités de temps de lecture des codes et en provenance des utilisateurs de nos employés et de nos clients. Ils détestaient tous ça.

Votre situation / contexte peut être différent. Peut-être que vous ne l'utiliserez pas presque aussi souvent que nous. Mais voici quelques suggestions:

  1. Considérez soigneusement la durée et le contenu du code: la plupart des utilisateurs (et du personnel de soutien) ressentent beaucoup de caractères. De nombreux utilisateurs sont de mauvaises dactylographes. Déterminez si une longue chaîne et incluant les marques de ponctuation et la sensibilité des cas les fâchent indûment par rapport au montant de la sécurité ajoutée.

  2. Après des années à utiliser un défi verbal / implémentation de réponse, nous l'avons laissé en place (en tant que retour) mais avons ajouté un système automatisé simple. Nous avons choisi d'utiliser FTP plutôt qu'une approche Web plus sophistiquée afin que nous n'ayons pas besoin d'avoir un logiciel exécuté sur notre serveur interne (ou de traiter avec notre personnel informatique!)

Fondamentalement, nous utilisons des fichiers FTP pour effectuer l'échange qui avait été effectué auparavant au téléphone. Le serveur place un fichier sur le serveur FTP contenant la phrase de défi. Le nom du fichier est le nom du client. Notre personnel d'assistance a un programme qui crée automatiquement ce fichier sur notre site FTP.

Le client est informé par notre personnel de frapper une touche de chaleur qui lit le fichier FTP, l'authentifie et remet un fichier de réponse sur le serveur.

Le logiciel de notre personnel d'assistance a été interrogé en attendant que le logiciel du client crée le fichier de réponse. Lorsqu'il voit le fichier, il le télécharge et confirme son contenu, et le supprime du serveur.

Vous pouvez bien sûr que cet échange se produise autant de fois et dans les deux sens que vous en avez besoin dans une session donnée afin d'atteindre vos objectifs.

Les données dans les fichiers peuvent avoir les mêmes clés MD5 que vous utiliseriez verbalement, afin qu'elle soit aussi sécurisée que vous le souhaitez.

Une faiblesse de ce système est que l'utilisateur doit avoir un accès FTP. Nous avons constaté que la majorité de nos utilisateurs (toutes les entreprises) ont un accès FTP disponible. (Bien sûr, votre clientèle peut ne pas ...) Si notre application dans le domaine n'est pas en mesure d'accéder à notre site FTP, elle annonce clairement le problème afin que notre client puisse se rendre à son personnel informatique pour demander à l'ouverture de l'accès. Pendant ce temps, nous retombons aux codes verbaux.

Nous avons utilisé les outils Plain Vanilla Indy FTP sans problème.

Il ne fait aucun doute qu'il y a des faiblesses dans cette approche (probablement à certains auxquelles nous n'avons pas pensé.) Mais, pour nos besoins, cela a été fantastique. Notre personnel de soutien et nos clients l'adorent.

Désolé si rien de tout cela n'est pertinent pour vous. J'espère que cela vous aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top