Sicherheit · 6 min read · Jan 06, 2026

Phishing mit gegenseitiger Authentifizierung verhindern

Phishing mit gegenseitiger Authentifizierung verhindern

Phishing ist im Wesentlichen ein Man-in-the-Middle-Angriff. Der Benutzer wird fehlgeleitet, zum Beispiel durch Social Engineering oder DNS-Cache-Vergiftung, zu einer betrügerischen Seite. Da der Benutzer nicht versteht, wie man SSL-Zertifikate validiert (und wer tut das schon?), funktioniert der Trick viel zu oft. Bemühungen wie erweiterte Validierungszertifikate sind in vielen Fällen zum Scheitern verurteilt, da sie auf inkonsistenten visuellen Hilfsmitteln und nicht auf starker Kryptografie basieren. Einmalpasswörter allein haben sich ebenfalls als anfällig für Echtzeit-MITM-Angriffe erwiesen. Um Phishing konsequent zu verhindern, ist eine starke gegenseitige Authentifizierung erforderlich - die Validierung des Hosts gegenüber dem Benutzer und des Benutzers gegenüber dem Host.

In diesem Dokument werden wir eine JSP-Anwendung konfigurieren, die mit WiKIDs Open-Source-Einmalpasswort- und gegenseitigen Authentifizierungssystem funktioniert. So wird es funktionieren: Wenn ein Benutzer sich auf der Zielseite anmelden möchte, startet er den WiKID-Token-Client und gibt seine PIN ein. Die PIN wird mit dem öffentlichen Schlüssel des Servers verschlüsselt und an den Server gesendet. Wenn die PIN korrekt, die Verschlüsselung gültig und das Konto aktiv ist, wird ein Paket mit dem OTP, der URL der Zielseite und einem Hash des SSL-Zertifikats der Zielseite an den Token-Client gesendet. Der Token-Client geht über die Internetverbindung des Benutzers zur URL der Zielseite, holt das SSL-Zertifikat, hasht es und vergleicht es mit dem validierten Zertifikathash. Wenn die beiden Hashes übereinstimmen, präsentiert der Token-Client das OTP und (auf unterstützten Plattformen) startet er den Standardbrowser zur Seite für den Benutzer.

Zuerst werden wir eine Domain auf dem WiKID-Server für die Anwendung hinzufügen, dann werden wir einen Netzwerkclient für die JSP-Seite erstellen. Wir werden den Anmeldecode für WiKID zur JSP-Seite hinzufügen und dann werden wir es von einem Token-Client testen.

Hinzufügen einer Domain zum WiKID-Server

Das ist ziemlich einfach. Gehen Sie von der Web-Administrationsoberfläche des WiKID-Servers auf die Registerkarte Domains und Neue Domain erstellen. Geben Sie einen Domainnamen für das Gateway und einen Gerätenamen ein. Der Gerätename wird auf dem WiKID-Token angezeigt. Geben Sie im Feld Registrierte URL die URL der JSP-Seite für den Zielserver ein. Wenn die Domain erstellt wird, ruft der WiKID-Server das Zertifikat vom Webserver ab, also stellen Sie sicher, dass Sie ‘https:’ eingeben. Der Servercode ist die routbare, nullgepolsterte IP-Adresse des WiKID-Servers (z.B. 10.1.1.1 = 010001001001). Stellen Sie die anderen Parameter nach Belieben ein. Während eine längere PIN mathematisch die Sicherheit erhöhen kann, kann eine vierstellige PIN besser sein: Wenn ein Benutzer seine ATM-PIN verwendet, ist er eher geneigt, sie zu schützen.

Erstellen Sie eine Domain für die gegenseitige Authentifizierung

Erstellen eines Netzwerkclients

Nachdem Sie die Domaininformationen gespeichert haben, klicken Sie auf die Registerkarte Netzwerkclient und Neuen Netzwerkclient erstellen. Geben Sie einen Namen für diesen Client und die IP-Adresse des Zielservers im internen Netzwerk ein. Wählen Sie wAuth als Protokoll und wählen Sie dann die oben erstellte Domain aus.

Erstellen Sie einen Netzwerkclient für die gegenseitige Authentifizierung

Klicken Sie auf Hinzufügen, um zur nächsten Seite zu gelangen, und geben Sie die Informationen für das p12-Zertifikat für den Zielserver ein. Die Kommunikation zwischen dem JSP-Server und dem WiKID-Server wird mit SSL unter Verwendung dieser p12-Datei verschlüsselt. Geben Sie zweimal ein Passwort für diese p12-Datei und das Passwort ein, das Sie während des Konfigurationsprozesses für das Zertifikat des Servers verwendet haben. Wenn Sie zur Seite Netzwerkclient zurückkehren, sehen Sie den neuen Netzwerkclient aufgelistet und einen Link zum Herunterladen der p12-Datei. Laden Sie die p12-Datei herunter und legen Sie sie auf Ihrem JSP-Server im selben Verzeichnis wie Ihren JSP-Code.

Erstellen Sie einen Netzwerkclient für die gegenseitige Authentifizierung_p12

Konfigurieren Ihrer JSP-Seiten

Auf Ihrem JSP-Server benötigen Sie die p12-Datei, die auf dem WiKID-Server erstellt wurde, die WiKID-Java-Netzwerkclient-JAR (Wikid.jar), die auf unserer Website oder von unserer Sourceforge-Seite verfügbar ist, und Ihre JSP-Seite. Darüber hinaus müssen Sie Java Version 1.4.2_06 oder höher ausführen. Jedes Netzwerkclient-Paket enthält eine Beispielseite. Hier werden wir die example.jsp-Seite bearbeiten. Diese Seite enthält auch Code zum programmgesteuerten Hinzufügen neuer Benutzer.

Öffnen Sie Ihre JSP-Seite in Ihrem bevorzugten Editor:

Zuerst importieren Sie den WiKID-Client:

<%@ page contentType="text/html; charset=UTF-8" %>   
<%@ page import="com.wikidsystems.client.*" %> 

Dieser Abschnitt stellt die Verbindung zwischen der Netzwerkclient-Anwendung und dem WiKID-Server her. Damit dies erfolgreich ist, muss der Netzwerkclient ein Zertifikat vom WiKID-Server erhalten haben. Das Zertifikat ist in einem PKCS12-Zertifikatspeicher enthalten und erfordert ein Passwort, um darauf zuzugreifen. Der caStore ist ein Java-Keystore, der die Zertifikate der WiKID-Server enthält, mit denen Sie sich mit diesem Client verbinden werden. Sie können dies von WAS als /opt/WiKID/private/CACertStore kopieren. Der caStorePass ist das Passwort zum Öffnen des caStore.

Wenn das wClient-Objekt instanziiert wird, lädt es das Zertifikat und stellt eine dauerhafte authentifizierte SSL-Verbindung her. Dies geschieht normalerweise einmal pro Server oder Anwendung und wird von mehreren Threads geteilt. In diesem Beispiel wird das Objekt bei jeder Seitenanforderung erstellt und zerstört. Dies erhöht den Overhead des Prozesses erheblich (1000 Mal), ermöglicht jedoch, dass alle Funktionen auf dieser einzelnen Beispielseite angezeigt werden.

Die Parameter sind:

  • wClient(String host, int port, String keyfile, String pass)
  • host = IP-Adresse des WIKID-Servers
  • port = TCP-Portnummer, um sich zu verbinden (Standard 8388)
  • keyfile = Pfad zur PKCS12-Zertifikatdatei
  • pass = Passwort zum Öffnen der PKCS12-Datei
  • caStore - Der Zertifizierungsstellen-Speicher zur Validierung des WAS-Serverzertifikats, laden Sie dies vom WiKID-Server herunter (opt/WiKID/private/CACertStore <– VERWENDEN SIE NICHT die cacerts-Datei von Java
  • caStorePass - Das Passwort, das die caStore-Datei sichert
<%  String status="";  
    String chall="";        
wClient wc = new wClient("192.168.0.1",   
    8388,   
    "/opt/tomcat/webapps/example/Token_test_client.p12",   
    "yourpassphrase",        
    "/opt/tomcat/webapps/example/CACertStore",   
    "yourpassphrase");    
%> 

Online anmelden

Diese Funktion ist die normale Anmeldung für Benutzer. Dies wird aufgerufen, wenn das Gerät des Benutzers mit dem Netzwerk verbunden ist und direkt einen Zugangscode anfordern kann.

Die Parameter sind:

  • CheckCredentials(String user, String passcode, String servercode)
  • user = Benutzer-ID zur Validierung der Anmeldeinformationen
  • passcode = zeitlich begrenzter, einmal verwendbarer Zugangscode
  • servercode = 12-stelliger Code, der auf dem WiKID-Server erstellt wurde, in diesem Fall 333344445555

Diese Methode gibt einen booleschen Wert zurück, der eine erfolgreiche oder erfolglose Authentifizierung darstellt.

<%   
boolean isValid = false;          
 if(request.getParameter("action") != null && request.getParameter("action").equalsIgnoreCase("Check Online")){  
 isValid = wc.CheckCredentials(request.getParameter("user"), request.getParameter("passcode"), request.getParameter("servercode"));             
   if (isValid){                  
     status="Erfolg";             
   } else {               
     status="Authentifizierung fehlgeschlagen";             
   }   
 }   
%> 

Und hier ist das HTML für das Formular:


  
 

Online-Anmeldung:

Benutzer-ID:
Zugangscode:
Domain-Code:


Testen mit dem Token-Client

Wenn Sie es noch nicht getan haben, können Sie eine Kopie des WiKID Open-Source-Token-Clients herunterladen. Starten Sie den Token mit ‘run.sh’ oder ‘run.bat’, je nach Ihrer Plattform. Beim ersten Start des Token-Clients müssen Sie ein Passwort erstellen. Nach dem Start wählen Sie Aktionen und Neue Domain erstellen

Mutual Authentication Token - Domain hinzufügen

Geben Sie die 12-stellige Domain-ID ein, und der öffentliche Schlüssel wird an den WiKID-Server gesendet. Sie werden nach einer PIN gefragt.

Mutual Authentication Token - PIN eingeben

Der WiKID-Server speichert die PIN und gibt einen Registrierungs-Code zurück.

Mutual Authentication Token - Registrierungs-Code

An diesem Punkt wurde das Konto auf dem WiKID-Server erstellt, ist jedoch nicht aktiv. Sie können Selbstregistrierungsseiten für Benutzer basierend auf vorhandenen vertrauenswürdigen Anmeldeinformationen oder Out-of-Bounds-Mechanismen erstellen, aber in diesem Fall werden wir den Benutzer manuell auf dem WiKID-Server validieren. Klicken Sie von der WiKIDAdmin-Weboberfläche auf Benutzer und Benutzer manuell validieren. Klicken Sie auf den Registrierungs-Code und geben Sie einen Benutzernamen ein.

Mutual Authentication Token - validieren

Jetzt wählen Sie im Token-Client die von Ihnen erstellte Domain aus und geben Sie Ihre PIN ein. Sie sollten den einmaligen Zugangscode zurückerhalten (und er sollte in Ihre Zwischenablage kopiert werden), und Ihr Browser sollte zur registrierten URL gestartet werden.

Durch die Kombination von einmaligen Zugangscodes zur Benutzerauthentifizierung mit der integrierten Validierung des Hostzertifikats und dem automatischen Start des Browsers haben wir ein System geschaffen, das für den Benutzer einfach ist und gleichzeitig kryptografisch sicher ist. Der Token-Client ist in der Lage, mehrere Domainbeziehungen zu verwalten, ohne die Sicherheit zu verringern, dank der Verwendung von Public-Key-Kryptografie, und der Server ist in der Lage, mehrere Netzwerkclient-Beziehungen zu verwalten. Zusätzliche Netzwerkclient-Beispiele sind für Ruby, PHP, Python und ASP/COM/.NET verfügbar. Apache oder IIS können ebenfalls mit Radius oder LDAP konfiguriert werden.

Sie können diesen Prozess (anonym) unter http://www.wikidsystems.com/signup/example.jsp testen

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.