02. Autenticazione di client remoti (CHAP)

CHAP, acronimo di Challenge-Handshake Authentication Protocol, è uno schema di autenticazione usato nelle connessioni punto punto basate sul protocollo PPP. Il presupposto è che il server e il client abbiano già condiviso la password di autenticazione.

CHAP verifica periodicamente l'identità del client tramite un processo di handshake. Ciò accade non appena viene stabilito il primo contatto e può accadere di nuovo in qualunque momento.

Lo schema di funzionamento è il seguente:

  • il client invia il proprio identificativo utente;

  • il server risponde inviando un numero pseudocasuale che rappresenta la sfida (challenge);

  • il client costruisce un messaggio combinando il numero pseudocasuale ricevuto e la propria password; ne ricava l'hash e lo invia al server;

  • il server, che ha memoria del numero inviato e conosce la password dell'utente, è in grado di costruire il medesimo messaggio e di ricavare l'hash, allo stesso modo di come ha fatto il client; ciò gli consente, confrontando i due hash (quello calcolato e quello ricevuto) , di determinare se la password utilizzata dal client è corretta. Nel caso la password utilizzata sia errata, la connessione viene terminata.

Durante l'handshake la password non viaggia mai in chiaro, inoltre la variabilità della sfida rende il codice di verifica inviato dal client non riutilizzabile in caso di attacco.