125 lines
6 KiB
Markdown
125 lines
6 KiB
Markdown
# IAM
|
|
|
|
## Authentication (continua)
|
|
|
|
Avviene in 3 modi:
|
|
* token (qualcosa che l'utente possiede)
|
|
* biometrica (qualcosa che ha (fisicamente))
|
|
* segreto (qualcosa che sa)
|
|
L'approccio preferito e' la *two factor authentication*.
|
|
|
|
### Autenticazione a token
|
|
|
|
Token e' un oggetto (carte a microprocessore, otp keys...) che l'utente utilizza per autenticarsi.
|
|
Il token utilizza un *protocollo di identificazione *per dimostrare al sistema l'identita' dell'utente.
|
|
L'identita' e' garantita dall'unicita' del token.
|
|
|
|
Vantaggi:
|
|
* Maggiore sicurezza (migliore gestione del problema del "replay" delle credenziali). Il problema del replay riguarda il riutilizzo di credenziali nel caso fossero rubate.
|
|
* Accesso ai dati e' possibile solo tramite lettori appositi: **tamper resistance** molto alta. Questo perche' i sistemi di lettura sono spesso costruiti appositamente. Sistemi chiusi: non sono *general purpose*, non sono modificabili.
|
|
* **tamper proof**: impossibile aprire un token senza distruggerlo.
|
|
* **tamper evidence**: e' facile accorgersi che il token e' stato aperto.
|
|
|
|
Svantaggi:
|
|
* perdita/furto di token invalida l'unicita' dello stesso e la validita'. La **perdita** rappresenta il rischio maggiore. Rimpiazzare i token e' lungo e costoso.
|
|
* per utilizzare un token spesso servono lettori appositi (di banda magnetica, di microprocessore)
|
|
* scomodita' di utilizzo (dover portare token per ogni autenticazione). Questo puo' impattare l'utilizzo del sistema.
|
|
|
|
#### Carta a microprocessore
|
|
|
|
Garantisce un livello di sicurezza maggiore rispetto alle carte a banda magnetica, in quanto i codici di sicurezza sono noti al sistema nel caso delle bande magnetiche.
|
|
Nel caso della carta a microprocessore, un **protocollo bidirezionale** fa si che il codice non esca mai dalla card. Questo permette al sistema di lettura e autenticazione di NON conoscere il codice segreto.
|
|
|
|
### Autenticazione biometrica
|
|
|
|
Due tipi:
|
|
* basata su caratteristiche fisiche (impronte digitali).
|
|
* basata su caratteristiche comportamentali (firma autografa su carta).
|
|
|
|
Vantaggi:
|
|
* Facile (sempre disponibile, a contrario del token)
|
|
|
|
Svantaggi:
|
|
* Meno sicura che con token e segreto
|
|
* Sensibile ad attacchi replay (riutilizzo di credenziali)
|
|
* Imprecisa: due possibilita' di errore a probabilita' alta (vedi errori frequenti)
|
|
|
|
#### Autenticazione biometrica: errori frequenti
|
|
|
|
* **FAR** (False Alarm Rate): User legittimo non riconosciuto (falso allarme) a causa dell'imprecisione del metodo di riconoscimento
|
|
* **IPR** (Impostor Pass Rate): User illecito riconosciuto come legittimo, sfruttando l'errore di imprecisione del metodo di riconoscimento
|
|
|
|
[FAR/IPR threshold](./FAR_IPRthreshold.jpg)
|
|
|
|
La soglia (threshold) e' la differenza tra la verifica memorizzata (impronta, viso, retina...) e quella sopperita per l'autenticazione. Piu' la soglia e' ridotta, meglio e', piu' e' alta, piu' frequenti sono i casi di IPR.
|
|
|
|
#### Tecnologie Biometriche
|
|
|
|
* Impronte digitali - errore 10/15%
|
|
* Riconoscimento facciale - errore elevato (>20%)
|
|
* Firma autografa
|
|
* Riconoscimento Iride - basso errore, alta scomodita'
|
|
|
|
### Autenticazione a Segreto (Password / Pin / Chiave simmetrica o asimmetrica)
|
|
|
|
Vantaggi:
|
|
* Semplicita'
|
|
* Disponibilita' (easy deployment)
|
|
* *Consumer Grade* level: utile quando l'utente non ha bisogno di un'autenticazione valida sul lungo periodo (banche, etc)
|
|
|
|
Svantaggi:
|
|
* Dimenticare il segreto e' facile
|
|
* Soggetta a **Sniffing** (intercettazione): La password trasmessa su canali non cifrati puo' essere intercettata (problema del replay)
|
|
* Soggetta a **Guessing/Cracking**: Una password / segreto puo' essere indovinata o scoperta
|
|
* Soggetta a **Phishing**: Truffa ai danni dell'utente che utilizza canali falsi per ottenere le credenziali.
|
|
|
|
#### Password Cracking
|
|
|
|
I modi principali per scoprire la password di un utente sono due, con i seguenti approcci:
|
|
|
|
* **Brute Force**: Approccio detto di *forza bruta*, si basa sui tentativi (si provano tutte le combinazioni di un dato alfabeto alfanumerico/simbolico). E' vanificato dalla lunghezza (numero di bit) della password, infatti con 10/15 caratteri si ottengono 2^80 combinazioni, non calcolabili da una macchina in tempi "umani".
|
|
* **Dictionary Based**: Approccio basato su di un dizionario, consiste nel provare una combinazione di parole conosciute e numeri, sperando nella semplicita' della password stessa. Statisticamente ha molto successo.
|
|
|
|
*Nota: bit-length di una password ed encoding*
|
|
Una password puo' essere costruita di un subset di un dato dizionario / alfabeto, ad esempio:
|
|
* ASCII: 1 char = 1 byte (molto ampio, ma contiene anche caratteri non ammessi nelle comuni password -> costoso)
|
|
* 7-bit ASCII: subset di ASCII
|
|
* **base64**: Subset a 6 bit di ASCII
|
|
|
|
#### Il problema del replay (riutilizzo)
|
|
|
|
Un utente in possesso di un segreto (password) fornisce a un sistema di controllo di accesso le credenziali, che tramite la rete le trasmette a un server di autenticazione. Che succede se il suo segreto viene intercettato, e quali sono le possibili soluzioni?
|
|
|
|
**Soluzione 1: Cifratura / Hashing**
|
|
Utilizzare una funzione di Hash **non invertibile**, quindi collision resistant.
|
|
Questo fa si che in rete non viaggi la password *in chiaro*, ma una cifratura di questa che non puo' essere collegata alle credenziali originali.
|
|
** L'hash delle credenziali pero' e' accettato dal server, che non conosce la password vera e propria. Uno sniffer puo' quindi utilizzare h(C) per autenticarsi sul server.**
|
|
|
|
**Soluzione 2: Authentication Protocol**
|
|
Se il segreto C (password) e' conosciuto sia da client che da server, non e' necessario passarlo in rete per forza, ma e' possibile utilizzare un protocollo di autenticazione, che puo' essere diverso ogni volta, per garantire l'autenticazione e vanificare lo sniffing.
|
|
Un possibile *drawback* e' che il segreto C sia memorizzato in chiaro su entrambe le macchine, il che lo rende **vulnerabile**. Per questo non si memorizza C direttamente, ma **una hash function di C** h(C).
|
|
|
|
* Un esempio possibile di memorizzazione di segreto e' dato da /etc/passwd (e tuttora /etc/shadow) su sistemi UNIX/Linux.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|