Sécurité · 7 min read · Jan 06, 2026
Prévenir le phishing avec l'authentification mutuelle
Prévenir le phishing avec l’authentification mutuelle
Le phishing est essentiellement une attaque de type homme du milieu. L’utilisateur est mal dirigé, par exemple par ingénierie sociale ou empoisonnement de cache DNS, vers un site frauduleux. Comme l’utilisateur ne comprend pas comment valider les certificats SSL (et qui le fait ?), le truc fonctionne bien trop souvent. Des efforts tels que les certificats de validation étendue sont voués à échouer dans de nombreux cas car ils reposent sur des aides visuelles incohérentes et non sur une cryptographie solide. Les mots de passe à usage unique se sont également révélés vulnérables aux attaques MITM en temps réel. Pour prévenir le phishing de manière cohérente, il faut une authentification mutuelle forte - validant l’hôte à l’utilisateur et l’utilisateur à l’hôte.
Dans ce document, nous allons configurer une application JSP pour fonctionner avec le système de mot de passe à usage unique et d’authentification mutuelle open-source de WiKID. Voici comment cela fonctionnera : lorsque l’utilisateur souhaite se connecter au site cible, il démarre le client de jeton WiKID et entre son code PIN. Le code PIN est crypté par la clé publique du serveur et envoyé au serveur. Si le code PIN est correct, le cryptage valide et le compte actif, un paquet de l’OTP, l’URL du site cible et un hachage du certificat SSL du site cible sont envoyés au client de jeton. Le client de jeton se connecte via la connexion Internet de l’utilisateur à l’URL du site cible et obtient le certificat SSL, le hache et le compare au hachage du certificat validé. Si les deux hachages correspondent, le client de jeton présente l’OTP et (sur les plateformes prises en charge) lance le navigateur par défaut vers le site pour l’utilisateur.
Tout d’abord, nous allons ajouter un domaine sur le serveur WiKID pour l’application, puis nous allons créer un client réseau pour la page JSP. Nous ajouterons le code de connexion pour WiKID à la page JSP, puis nous le testerons depuis un client de jeton.
Ajouter un domaine au serveur WiKID
C’est assez facile. Depuis l’interface d’administration web du serveur WiKID, cliquez sur l’onglet Domaines et Créer un nouveau domaine. Entrez un nom de domaine pour la passerelle et un nom de dispositif. Le nom du dispositif apparaîtra sur le jeton WiKID. Dans la boîte URL enregistrée, mettez l’URL de la page JSP pour le serveur cible. Lorsque le domaine est créé, le serveur WiKID récupérera le certificat du serveur web, alors assurez-vous d’entrer ‘https:’. Le code du serveur sera l’adresse IP routable, remplie de zéros du serveur WiKID (par exemple, 10.1.1.1 = 010001001001). Réglez les autres paramètres comme bon vous semble. Bien qu’un code PIN plus long puisse augmenter la sécurité mathématiquement, un code PIN à quatre chiffres peut être mieux : si un utilisateur utilise son code PIN de DAB, il est plus susceptible de le protéger.

Créer un client réseau
Après avoir enregistré les informations du domaine, cliquez sur l’onglet Client réseau et Créer un nouveau client réseau. Entrez un nom pour ce client et l’adresse IP du serveur cible sur le réseau interne. Sélectionnez wAuth comme protocole, puis choisissez le domaine que vous avez créé ci-dessus.

Cliquez sur Ajouter pour obtenir la page suivante et entrez les informations pour le certificat p12 pour le serveur cible. Les communications entre le serveur JSP et le serveur WiKID seront cryptées avec SSL en utilisant ce fichier p12. Entrez une phrase de passe pour ce fichier p12 deux fois et la phrase de passe que vous avez utilisée pour le certificat du serveur pendant le processus de configuration. Lorsque vous revenez à la page Client réseau, vous verrez le nouveau client réseau répertorié et un lien pour télécharger le fichier p12. Téléchargez le fichier p12 et placez-le sur votre serveur JSP dans le même répertoire que votre code JSP.

Configurer vos pages JSP
Sur votre serveur JSP, vous avez besoin du fichier p12 créé sur le serveur WiKID, du fichier jar du client réseau Java WiKID (Wikid.jar), qui est disponible sur notre site web ou sur notre site Sourceforge, et de votre page JSP. De plus, vous devez exécuter la version Java 1.4.2_06 ou ultérieure. Chaque package de client réseau comprend une page d’exemple. Ici, nous allons éditer la page example.jsp. Cette page inclut également du code pour ajouter des utilisateurs nouveaux par programmation.
Ouvrez votre page JSP dans votre éditeur préféré :
Tout d’abord, importez le client WiKID :
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="com.wikidsystems.client.*" %> Cette section instancie la connexion entre l’application client réseau et le serveur WiKID. Pour que cela réussisse, le client réseau doit avoir reçu un certificat du serveur WiKID. Le certificat est contenu dans un magasin de certificats PKCS12 et nécessite une phrase de passe pour y accéder. Le caStore est un Java Keystore qui contient les certificats des serveurs WiKID auxquels vous vous connecterez avec ce client. Vous pouvez le copier depuis WAS en tant que /opt/WiKID/private/CACertStore. Le caStorePass est la phrase de passe pour ouvrir le caStore.
Lorsque l’objet wClient est instancié, il chargera le certificat et établira une connexion SSL authentifiée persistante. Cela se fait normalement une fois par serveur ou application et est partagé par plusieurs threads. Dans cet exemple, l’objet est créé et détruit à chaque requête de page. Cela augmente considérablement (1000 fois) la surcharge du processus mais permet de montrer toutes les fonctions dans cette seule page d’exemple.
Les paramètres sont :
- wClient(String host, int port, String keyfile, String pass)
- host = adresse IP du serveur WIKID
- port = numéro de port TCP à connecter (par défaut 8388)
- keyfile = chemin vers le fichier de certificat PKCS12
- pass = phrase de passe pour ouvrir le fichier PKCS12
- caStore - Le magasin d’autorité de certification pour valider le certificat du serveur WAS, téléchargez ceci depuis le serveur WiKID (opt/WiKID/private/CACertStore <– NE PAS UTILISER le fichier cacerts de Java
- caStorePass - La phrase de passe sécurisant le fichier caStore
<% 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");
%> Connexion en ligne
Cette fonction est la connexion en état normal pour les utilisateurs. Cela est appelé lorsque le dispositif des utilisateurs est connecté au réseau et capable de demander directement un code d’accès.
Les paramètres sont :
- CheckCredentials(String user, String passcode, String servercode)
- user = identifiant de l’utilisateur pour valider les informations d’identification
- passcode = code d’accès à usage unique, limité dans le temps
- servercode = code à 12 chiffres créé sur le serveur WiKID, dans ce cas 333344445555
Cette méthode retourne un booléen représentant une authentification réussie ou non réussie
<%
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="Succès";
} else {
status="Échec de l'authentification";
}
}
%> Et voici le HTML pour le formulaire :
Connexion en ligne :
Tester avec le client de jeton
Si vous ne l’avez pas encore fait, vous pouvez télécharger une copie du client de jeton open-source WiKID. Démarrez le jeton avec ‘run.sh’ ou ‘run.bat’ selon votre plateforme. La première fois que vous lancez le client de jeton, vous devez créer une phrase de passe. Une fois démarré, sélectionnez Actions et Créer un nouveau domaine

Entrez l’identifiant de domaine à 12 chiffres et la clé publique sera envoyée au serveur WiKID. Vous serez invité à entrer un code PIN.

Le serveur WiKID stockera le code PIN et renverra un code d’enregistrement.

À ce stade, le compte a été créé sur le serveur WiKID, mais il n’est pas actif. Vous pouvez créer des pages d’enregistrement en libre-service pour les utilisateurs basées sur des informations d’identification de confiance existantes ou des mécanismes hors bande, mais dans ce cas, nous allons valider manuellement l’utilisateur sur le serveur WiKID. Depuis l’interface web de WiKIDAdmin, cliquez sur Utilisateurs et Valider manuellement un utilisateur. Cliquez sur le code d’enregistrement et entrez un nom d’utilisateur.

Maintenant, depuis le client de jeton, sélectionnez le domaine que vous avez créé et entrez votre code PIN. Vous devriez recevoir le code d’accès à usage unique (et il devrait être copié dans votre presse-papiers) et votre navigateur devrait se lancer vers l’URL enregistrée.
En combinant des codes d’accès à usage unique pour l’authentification des utilisateurs avec la validation intégrée du certificat de l’hôte et le lancement automatique du navigateur, nous avons créé un système qui est facile pour l’utilisateur, mais cryptographiquement solide. Le client de jeton est capable de gérer plusieurs relations de domaine sans réduction de la sécurité grâce à l’utilisation de la cryptographie à clé publique et le serveur est capable de gérer plusieurs relations de clients réseau. Des exemples supplémentaires de clients réseau sont disponibles pour Ruby, PHP, Python et ASP/COM/.NET. Apache ou IIS peuvent également être configurés en utilisant Radius ou LDAP.
Vous pouvez tester ce processus (anonymement) à http://www.wikidsystems.com/signup/example.jsp
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.