# Login

Il login o log in, in italiano accesso, è il processo con cui un utente viene identificato e entra in un sistema informatico o in un'applicazione.
Il termine log in significa letteralmente "entrata nel log", ovvero il registro, di un determinato sistema informativo. Per accedere in un sistema sono tipicamente necessari un nome utente o un indirizzo di posta elettronica e una password. Più raramente si utilizzano codici QR oppure numeri di telefono. Costituisce uno dei fondamenti della sicurezza informatica e della riservatezza nelle applicazioni informatiche.
L'inserimento dei dati di un nuovo utente all'interno del sistema è invece nota come registrazione o signup. La procedura opposta al login, ovvero la disconnessione dal sistema o l'applicazione, è detta logout.

## Componenti di sistema interessati

La procedura si basa sull'esistenza, all'interno del sistema, di:
   * Un elenco di utenti;
   * La parola chiave di accesso, abitualmente denominata password, per ogni utente;
   * I permessi di accesso. Un elenco di funzioni che l'utente può eseguire. Può non esistere, ma può essere anche molto complesso;
   * La classificazione dell'utente in base ai permessi di accesso, e/o al ruolo che svolge all'interno del sistema;
   * Procedure riservate agli amministratori di sistema per gestire queste informazioni;
   * Registro degli eventi (log), su cui viene segnata la cronologia degli accessi.
A questo insieme di informazioni, che possiamo considerare minime, possono essere aggiunti dati anagrafici, preferenze di lavoro, ecc. Il tutto è usualmente denominato account utente.

## Procedura di accesso

* Procedura base, con interfaccia testuale:
** Il sistema richiede il nome utente (in inglese username o userid).
** Colui che desidera entrare digita il proprio nome utente.
** Il sistema verifica che tale nome utente sia compreso tra quelli previsti. In caso positivo richiede la parola chiave abbinata; in caso negativo risponde con un messaggio di errore e rifiuta l'accesso.
** L'utente, già riconosciuto digita la password.
** Il sistema verifica che tale password corrisponda a quella memorizzata al suo interno: in caso positivo concede l'accesso, segnalando la possibilità di ricevere altri comandi, in caso negativo risponde con un messaggio di errore e rifiuta l'accesso.
* Procedure più sicura, sempre con interfaccia testuale:
** Il sistema richiede il "nome utente" (detto anche username o userid).
** Chi desidera entrare digita il proprio nome utente.
** Il sistema chiede la password o parola d'ordine dell'utente.
** L'utente digita la password.
** Se uno dei due dati forniti è sbagliato, il sistema segnala l'errore, ma non segnala invece se in esso sia presente il nome utente o la password, in modo da rendere difficoltoso indovinare il nome utente e la password.
* Procedura con interfaccia grafica:
** Esegue le stesse funzioni, ma raccoglie in un unico passaggio la richiesta di nome utente e password, ad esempio con il tipico form proprio delle applicazioni web. In caso di esito positivo del tentativo di accesso, il sistema risponde generalmente con pagina di benvenuto all'interno del sistema, dell'applicazione o del sito web. Anche in modalità grafica sono previste talvolta procedure semplificate e meno protette. Ad esempio, il nome utente può essere scelto da una lista, oppure il sistema propone automaticamente il nome di un utente predefinito.
In molti casi, per motivi di sicurezza e/o riservatezza, la parola chiave residente nel sistema è crittografata; anche quella digitata dall'utente che richiede l'accesso viene crittografata se il login avviene da remoto.
Quando viene digitata, la password non appare in chiaro sullo schermo: al suo posto, invece, appaiono dei caratteri di altro tipo (tipicamente, dei pallini neri, degli asterischi o altri simboli), per evitare la lettura malevola della password attraverso l'uso dello schermo; a volte non appare nulla, per non rivelare neppure la lunghezza della password. Allo stesso scopo, talvolta il numero di simboli viene modificato dal sistema.
Una criticità comune è lo scarso livello di sicurezza delle password scelte dagli utenti, indovinabili con un'alta probabilità e in poco tempo in caso di attacco informatico. Una password non robusta rende del tutto inutile o comunque di scarsa utilità il salvataggio in locale cifrato, così come la trasmissione cifrata di user e password fra utente e i vari server cui si collega.
Molti server Linux/Unix offrono una possibilità di autenticazione semi-automatica tramite crittografia asimmetrica SSH. L'utente genera una coppia di chiavi pubblica e privata, installa la chiave pubblica sui server cui desidera collegarsi (disabilitando il comune login tramite nome utente e password), e protegge con passphrase la chiave privata salvata fisicamente sul proprio computer ed utilizzata per autenticarsi. Alle successive connessioni ad uno dei server della lista preimpostata, l'autenticazione sarà fatta in automatico tra il computer dell'utente e il server. La chiave pubblica è lo user, mentre la password è la chiave privata (di almeno 128 caratteri alfanumerici), cosa che risolve il ben noto problema della scarsa robustezza delle password scelte dagli utenti. L'utente resta anonimo perché la coppia di chiavi pubblica-privata è generata direttamente da lui, e non da una certification authority terza che dovrebbe prima verificare la sua reale identità.