Sicurezza Online · 7 min read · Jan 06, 2026
Prevenire il Phishing con l'Autenticazione Mutua
Prevenire il Phishing con l’Autenticazione Mutua
Il phishing è essenzialmente un attacco man-in-the-middle. L’utente viene deviato, ad esempio tramite ingegneria sociale o avvelenamento della cache DNS, verso un sito fraudolento. Poiché l’utente non comprende come convalidare i certificati SSL (e chi lo fa?), il trucco funziona troppo spesso. Sforzi come i certificati di Validazione Estesa sono destinati a fallire in molti casi perché si basano su aiuti visivi incoerenti e non su una crittografia forte. Le password usa e getta da sole si sono dimostrate vulnerabili ad attacchi MITM in tempo reale. Per prevenire il phishing in modo coerente è necessaria una forte autenticazione mutua - convalidare l’host per l’utente e l’utente per l’host.
In questo documento, configureremo un’applicazione JSP per lavorare con il sistema di password usa e getta e autenticazione mutua open-source di WiKID. Ecco come funzionerà: quando un utente desidera accedere al sito target, avvia il client token WiKID e inserisce il proprio PIN. Il PIN viene crittografato dalla chiave pubblica del server e inviato al server. Se il PIN è corretto, la crittografia valida e l’account attivo, un pacchetto dell’OTP, l’URL del sito target e un hash del certificato SSL del sito target vengono inviati al client token. Il client token si connette tramite la connessione internet dell’utente all’URL del sito target e ottiene il certificato SSL, lo hash e lo confronta con l’hash del certificato convalidato. Se i due hash corrispondono, il client token presenta l’OTP e (su piattaforme supportate) avvia il browser predefinito sul sito per l’utente.
Prima, aggiungeremo un dominio sul server WiKID per l’applicazione, poi creeremo un client di rete per la pagina JSP. Aggiungeremo il codice di accesso per WiKID alla pagina JSP, poi lo testeremo da un client token.
Aggiungere un dominio al server WiKID
Questo è abbastanza facile. Dall’interfaccia di amministrazione web del server WiKID, fai clic sulla scheda Domini e Crea Nuovo Dominio. Inserisci un nome di dominio per il gateway e un nome dispositivo. Il nome dispositivo verrà visualizzato sul token WiKID. Nella casella URL Registrato inserisci l’URL della pagina JSP per il server target. Quando il dominio è creato, il server WiKID recupererà il certificato dal server web, quindi assicurati di inserire ‘https:’. Il codice del server sarà l’indirizzo IP del server WiKID, zero-padded (ad es. 10.1.1.1 = 010001001001). Imposta gli altri parametri come meglio credi. Sebbene un PIN più lungo possa aumentare matematicamente la sicurezza, un PIN di quattro cifre potrebbe essere migliore: se un utente utilizza il proprio PIN del bancomat, è più probabile che lo protegga.

Crea un client di rete
Dopo aver salvato le informazioni sul dominio, fai clic sulla scheda Client di Rete e Crea Nuovo Client di Rete. Inserisci un nome per questo client e l’indirizzo IP del server target sulla rete interna. Seleziona wAuth come protocollo e poi scegli il dominio che hai creato sopra.

Fai clic su Aggiungi per accedere alla pagina successiva e inserisci le informazioni per il certificato p12 per il server target. Le comunicazioni tra il server JSP e il server WiKID saranno crittografate con SSL utilizzando questo file p12. Inserisci una passphrase per questo file p12 due volte e la passphrase che hai utilizzato per il certificato del server durante il processo di configurazione. Quando torni alla pagina Client di Rete, vedrai il nuovo client di rete elencato e un link per scaricare il file p12. Scarica il file p12 e mettilo sul tuo server JSP nella stessa directory del tuo codice JSP.

Configurare le tue pagine JSP
Sul tuo server JSP, hai bisogno del file p12 creato sul server WiKID, del file jar del client di rete Java WiKID (Wikid.jar), che è disponibile sul nostro sito web o dal nostro sito Sourceforge, e della tua pagina JSP. Inoltre, devi eseguire Java versione 1.4.2_06 o successiva. Ogni pacchetto client di rete include una pagina di esempio. Qui, modificheremo la pagina example.jsp. Questa pagina include anche codice per aggiungere programmaticamente nuovi utenti.
Apri la tua pagina JSP nel tuo editor preferito:
Prima, importa il client WiKID:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="com.wikidsystems.client.*" %> Questa sezione instaura la connessione tra l’applicazione client di rete e il server WiKID. Affinché questo abbia successo, il client di rete deve aver ricevuto un certificato dal server WiKID. Il certificato è contenuto all’interno di uno store di certificati PKCS12 e richiede una passphrase per accedervi. Il caStore è un Java Keystore che contiene i certificati dei server WiKID a cui ti connetterai con questo client. Puoi copiarlo da WAS come /opt/WiKID/private/CACertStore. La caStorePass è la passphrase per aprire il caStore.
Quando l’oggetto wClient è istanziato, caricherà il certificato e stabilirà una connessione SSL autenticata persistente. Questo viene normalmente fatto una sola volta per server o applicazione e condiviso da più thread. In questo esempio, l’oggetto viene creato e distrutto ad ogni richiesta di pagina. Questo aumenta notevolmente (1000 volte) l’overhead del processo, ma consente di mostrare tutte le funzioni in questa singola pagina di esempio.
I parametri sono:
- wClient(String host, int port, String keyfile, String pass)
- host = indirizzo IP del server WIKID
- port = numero di porta TCP a cui connettersi (default 8388)
- keyfile = Percorso al file di certificato PKCS12
- pass = Passphrase per aprire il file PKCS12
- caStore - Lo store dell’autorità di certificazione per convalidare il certificato del server WAS, scarica questo dal server WiKID (opt/WiKID/private/CACertStore <– NON UTILIZZARE il file cacerts di Java
- caStorePass - La passphrase che protegge il file 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");
%> Login Online
Questa funzione è il login in stato normale per gli utenti. Questo viene chiamato quando il dispositivo degli utenti è connesso alla rete e in grado di richiedere direttamente un codice di accesso.
I parametri sono:
- CheckCredentials(String user, String passcode, String servercode)
- user = userid per convalidare le credenziali
- passcode = codice di accesso a tempo limitato, 1 uso
- servercode = codice a 12 cifre creato sul server WiKID, in questo caso 333344445555
Questo metodo restituisce un booleano che rappresenta l’autenticazione riuscita o non riuscita
<%
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="Success";
} else {
status="Autenticazione Fallita";
}
}
%> Ecco l’HTML per il modulo:
Login Online:
Testare con il Client Token
Se non lo hai già fatto, puoi scaricare una copia del client token open-source di WiKID. Avvia il token con ‘run.sh’ o ‘run.bat’ a seconda della tua piattaforma. La prima volta che avvii il client token, devi creare una passphrase. Una volta avviato, seleziona Azioni e Crea Nuovo Dominio

Inserisci l’identificatore di dominio a 12 cifre e la chiave pubblica verrà inviata al server WiKID. Ti verrà chiesto un PIN.

Il server WiKID memorizzerà il PIN e restituirà un codice di registrazione.

A questo punto, l’account è stato creato sul server WiKID, ma non è attivo. Puoi creare pagine di registrazione self-service per gli utenti basate su credenziali di fiducia esistenti o meccanismi fuori banda, ma in questo caso, convalideremo manualmente l’utente sul server WiKID. Dall’interfaccia web di WiKIDAdmin, fai clic su Utenti e Convalida Manualmente un Utente. Fai clic sul Codice di Registrazione e inserisci un nome utente.

Ora, dal client token, seleziona il dominio che hai creato e inserisci il tuo PIN. Dovresti ricevere il codice di accesso usa e getta (e dovrebbe essere copiato negli appunti) e il tuo browser dovrebbe avviarsi all’URL Registrato.
Combinando i codici di accesso usa e getta per l’autenticazione degli utenti con la convalida integrata del certificato host e l’avvio automatico del browser, abbiamo creato un sistema che è facile per l’utente, ma crittograficamente solido. Il client token è in grado di gestire più relazioni di dominio senza una riduzione della sicurezza grazie all’uso della crittografia a chiave pubblica e il server è in grado di gestire più relazioni di client di rete. Esempi aggiuntivi di client di rete sono disponibili per Ruby, PHP, Python e ASP/COM/.NET. Apache o IIS possono essere configurati utilizzando Radius o LDAP.
Puoi testare questo processo (in modo anonimo) su http://www.wikidsystems.com/signup/example.jsp
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.