Il client è un concetto di rete: i dati vengono trasportati tra due macchine, il server e il client . Il cliente è colui che avvia la conversazione; il server è quello che è seduto tutto il giorno, in attesa che i client si connettano.
L'utente è l'entità biologica (presunta umana) che controlla il cliente. L'autenticazione riguarda il server, assicurandosi che tutto ciò che riceve provenga da un utente specifico. Tuttavia, il server non sta parlando all'utente (l'essere umano) ma al client (il computer dell'utente). Quando un server autentica l'utente tramite un cookie HTTP , viene autenticato veramente il client : poiché il valore del cookie è stato precedentemente inviato a un cliente specifico, solo quel client può mostrare il valore esatto del cookie. Il server quindi assume che un determinato client è sotto il controllo esclusivo del suo presunto proprietario umano, e quindi ritiene che l'utente umano sia stato coinvolto.
La distinzione tra cliente e utente diventa evidente quando la macchina dell'utente viene sovvertita (ad es. infettata da malware). La macchina inizierà a fare cose al di fuori del controllo dell'utente umano.
Per fare un'analogia, se hai un cane e quel cane mi morde, allora farò causa a tu , non al cane, perché il cane dovrebbe essere sotto il tuo controllo. Anche se il cane contrae rabbia (spiegando il suo comportamento rivendicativo), è ancora una tua responsabilità. In questo senso, autenticare il cane è buono come autenticarti (almeno agli occhi dei miei avvocati) e spetta a te assicurarti che il tuo cane sia davvero sotto il tuo controllo esclusivo.
Con le applicazioni Web e "API", l'immagine può diventare più complessa, perché il server può anche comportarsi come un client rispetto a un altro server. Quel server secondario potrebbe voler assicurarsi dell'identità del primo server o dell'utente umano che ha avviato l'intero processo o entrambi. La terminologia può essere fonte di confusione se vengono riutilizzati gli stessi termini.
Quando si utilizzano coppie di chiavi pubbliche / private, il proprietario della chiave privata (la macchina che contiene la chiave privata) lo utilizza per eseguire alcuni calcoli che si collegano a un altro calcolo che coinvolge la chiave pubblica. Ad esempio, con firme digitali , il proprietario della chiave privata genera una firma su un determinato messaggio ( una sequenza di byte); la firma può essere verificata utilizzando la chiave pubblica. Le firme digitali sono un buon strumento per l'autenticazione: calcolando una firma su una sfida inviata da un verificatore, il proprietario della chiave privata dimostra a quel verificatore la sua padronanza della chiave privata. Il verificatore ottiene quindi la garanzia che sta realmente parlando a "chiunque controlli la chiave privata corrispondente a una determinata chiave pubblica". La parte interessante del processo è che il verificatore non ha bisogno di conoscere la chiave privata per questo, quindi è possibile verificare una firma senza avere il potere di generare firme.