2010-11-22 10 views
5

Ich bin daran interessiert, in Delphi einen Challenge/Response-Prozess zu erstellen. Das Szenario ist dies ... wir haben 2 Computer ... 1 gehört dem Benutzer und 1 gehört einem Support-Techniker.Wie kann ich mit Delphi eine visuelle Herausforderung/Antwort erstellen, um den Zugriff auf eine Anwendung wiederherzustellen?

Der Benutzer aus einem bestimmten Programm gesperrt ist, und um 1 Mal Zugang zu gewinnen, ich will:

  1. Der Anwender eine Herausforderung Ausdruck dargestellt werden, wie zum Beispiel „28394LDJA9281DHQ“ oder irgendeine Art von vernünftigen eindeutigen Wert
  2. Der Benutzer wird Support-Mitarbeiter anrufen und diese Herausforderung lesen (nachdem das Support-Personal ihre Identität validiert hat)
  3. Die Support-Person wird diesen Challenge-Wert in ein Programm auf ihrem System eingeben, das eine Antwort generiert, etwas Ähnliches wie die Antwort, wie "9232KLSDF92SD"
  4. Der Benutzer gibt die Antwort ein und das Programm bestimmt, ob dies eine gültige Antwort ist oder nicht.
  5. Wenn dies der Fall ist, erhält der Benutzer einen einmaligen Zugriff auf die Anwendung.

Nun, wie das zu tun ist meine Frage? Ich werde 2 Anwendungen haben, die nicht Netzwerkzugriff miteinander haben. Gibt es irgendeine Funktionalität innerhalb von Windows, die mir bei dieser Aufgabe helfen kann?

Ich glaube, dass ich einige Funktionalität innerhalb CryptoAPI verwenden kann, aber ich bin mir wirklich nicht sicher, wo ich anfangen soll. Ich würde mich über jede Hilfe freuen, die Sie anbieten können.

+0

Sie können sich Software-Schutzkomponenten ansehen, die für Delphi verfügbar sind. – avra

Antwort

8

Ich würde eine MD5-basierte Challenge-Response-Authentifizierung implementieren.

Von wikipediahttp://en.wikipedia.org/wiki/CRAM-MD5

Protokoll

  1. Herausforderung: In CRAM-MD5-Authentifizierung zunächst der Server eine Challenge- Zeichenfolge an den Client sendet.
  2. Antwort: Der Client antwortet mit einem Benutzernamen, gefolgt von einem Leerzeichen Zeichen und dann einem 16-Byte-Digest in hexadezimale Schreibweise. Der Digest ist die Ausgabe von HMAC-MD5 mit dem Benutzer Passwort als der geheime Schlüssel und der Server die ursprüngliche Herausforderung als Nachricht.
  3. Vergleich: Der Server verwendet die gleiche Methode, um die erwartete Antwort zu berechnen. Wenn die angegebene Antwort und die erwartete Antwort übereinstimmen, war die Authentifizierung erfolgreich.

Dies bietet drei wichtige Arten von Sicherheit.

  1. Erstens können andere den Hash nicht duplizieren, ohne das Passwort zu kennen. Dies bietet Authentifizierung.
  2. Zweitens, andere können den Hash nicht wiederholen-es ist abhängig von der unvorhersehbaren Herausforderung. Dies ist verschiedentlich genannt Frische oder Wiederholung Prävention.
  3. Drittens lernen Beobachter das Passwort nicht. Dies wird als Geheimhaltung bezeichnet.

Die beiden wichtigsten Merkmale dieses Protokoll, das diese drei Sicherheitsvorteile bieten, sind die Einweg-Hash- und die frische zufällige Herausforderung.

Zusätzlich können Sie der Challenge-Zeichenfolge eine Anwendungsidentifikation hinzufügen, um den Absender der Anfrage erneut zu überprüfen.

Wichtig: Es hat einige Schwächen, bewerten Sie sorgfältig, wie sie sich auf Sie auswirken können.

7

Zur verbalen Challenge/Response-Strategie: Mit diesem Ansatz lizenzieren wir seit mehr als zehn Jahren eine Nischenanwendung an fünftausend Arbeitsplätzen weltweit. Unser Support-Team nannte es "Raketen-Startcodes", weil es mit dem klassischen Raketenstart-Authentifizierungsverfahren vergleichbar ist, das bei alten Filmen zu beobachten ist.

Dies ist ein extrem zeitaufwendiger Weg, um Ihr Programm zu schützen. Es verbrauchte enorme Mengen an Zeit für unsere Mitarbeiter und Kunden, die die Codes von und zu den Benutzern lasen. Sie alle hassten es.

Ihre Situation/Ihr Kontext kann sich unterscheiden. Vielleicht werden Sie es nicht so oft benutzen wie wir. Aber hier sind einige Vorschläge:

  1. vorsichtig die Länge und Inhalt des Codes berücksichtigen: die meisten Nutzer (und Support-Mitarbeiter) ärgern sich viele Zeichen eingeben. Viele Benutzer sind schlechte Schreibkräfte. Überlegen Sie, ob eine lange Zeichenfolge und die Berücksichtigung von Satzzeichen und Groß-/Kleinschreibung diese im Vergleich zur Menge der hinzugefügten Sicherheit unnötig belasten.

  2. Nach Jahren der Verwendung einer verbalen Challenge/Response-Implementierung, haben wir es (als Fallback) an Ort und Stelle, aber fügte ein einfaches automatisiertes System. Wir entschieden uns für FTP zu verwenden, anstatt eine anspruchsvollere Web-Ansatz, so dass wir keine Software haben, hatte auf unserem hauseigenen Server ausgeführt wird (oder sich mit unserer IT-Mitarbeiter!)

Grundsätzlich verwenden wir FTP-Dateien für den Austausch, der zuvor am Telefon durchgeführt wurde. Der Server legt eine Datei auf dem FTP-Server mit der Challenge-Phrase ab. Der Name der Datei ist der Name des Kunden. Unsere Support-Mitarbeiter haben ein Programm, das diese Datei automatisch auf unserer FTP-Site erstellt.

Der Kunde wird von unseren Mitarbeitern angewiesen, einen Hotkey zu drücken, der die FTP-Datei liest, authentifiziert und eine Antwortdatei auf dem Server ablegt.

Die Software unseres Support-Personals hat abgefragt, bis die Software des Kunden die Antwortdatei erstellt hat. Wenn die Datei angezeigt wird, lädt sie sie herunter und bestätigt ihren Inhalt und löscht sie vom Server.

Sie können diesen Austausch natürlich so oft und in jeder Richtung durchführen, wie Sie in einer bestimmten Sitzung benötigen, um Ihre Ziele zu erreichen.

Die Daten in den Dateien können dieselben MD5-Schlüssel haben, die Sie verbal verwenden würden, damit sie so sicher sind, wie Sie möchten.

Eine Schwäche in diesem System ist, dass der Benutzer FTP-Zugriff haben muss. Wir haben festgestellt, dass die Mehrheit unserer Benutzer (alle Unternehmen) FTP-Zugang haben. (Natürlich kann Ihr Kundenstamm nicht ...) Wenn unsere Anwendung vor Ort nicht auf unsere FTP-Site zugreifen kann, wird das Problem klar angezeigt, sodass unser Kunde zu seinem IT-Personal gehen kann, um die Freigabe des Zugriffs zu beantragen. Inzwischen greifen wir einfach auf die verbalen Codes zurück.

Wir haben die einfachen Indy-FTP-Tools von Plain Vanilla ohne Probleme verwendet.

Zweifellos gibt es einige Schwächen in diesem Ansatz (wahrscheinlich einschließlich einige, an die wir nicht gedacht haben.) Aber für unsere Bedürfnisse war es fantastisch. Unsere Support-Mitarbeiter und Kunden lieben es.

Es tut uns leid, wenn nichts davon für Sie relevant ist. Hoffe das hilft dir einiges.

+1

sehr informative Antwort !! aufbessern! – ComputerSaysNo

+0

Danke, Dorin. Freut mich, dass dir der Beitrag gefallen hat. – RobertFrank