(:title ESP Lezione del 29 ventoso 216:)
:: ESP - Lezione del 29 ventoso 216 ::
... altrimenti noto come 19 marzo
Controllo dell'accesso
C'è un modulo, nel sistema, che si occupa di controllarne l'accesso. Valuta se dire SI o NO alle richieste che gli vengono fatte, in base all'identità del richiedente ed ai suoi permessi.
Accountability: = l'esigenza di sapere CHI ha fatto CHE COSA, e QUANDO. Queste informazioni sono importanti soprattutto in quei sistemi dove gli utenti sono noti a priori, anche se non tutti i sistemi sono così.
Come al solito, possiamo distinguere tra politica, ovvero le linee guida da applicare, e meccanismi, ovvero i modi concreti con cui attuerò le mie politiche.
Occorre stare attenti che spesso le autorizzazioni, ovvero le regole di controllo, sono spesso chiamate politiche, ma sono due cose diverse.
Ci sono dei vantaggi nel separare concettualmente le politiche dai meccanismi:
- Posso analizzare la politica senza preoccuparmi di come implementarla
- Posso confrontare politiche diverse senza preoccuparmi di come sono implementate
- Posso confrontare meccanismi diversi senza preoccuparmi delle politiche
- Posso usare un unico meccanismo per implementare diverse politiche.
I meccanismi
I meccanismi presuppongono l'esistenza di un reference monitor, che è una parte fidata del nostro sistema. Deve essere fidata per poter gestire in tutta sicurezza gli accessi al sistema.
Le sue caratteristiche sono quindi:
- tamper proof: nessuno può modificarlo;
- non bypassabile: non esiste un modo di entrare nel sistema senza passare per lui;
- confinato in un piccolo modulo del SO, inaccessibile ai più;
- resistente ai covert channel.
È ovvio che queste caratteristiche sono volute e ricercate, ma non sempre ottenute al 100%.
Progettazione del controllo dell'accesso
Sopra abbiamo visto che c'è distinzione tra politiche e meccanismi. La Politica è la linea guida generale a cui mi ispiro per realizzare la sicurezza del mio sistema. Il Meccanismo è come fisicamente implementerò quelle linee guida.
Ad esempio, posso scegliere come politica un accesso in base all'identità: i belli possono entrare, i brutti no. E il meccanismo dovrà gestire le identità, magari prevedendo un nome diverso ed una password diversa per ogni utente diverso.
Ma non si passa direttamente da politica a meccanismo: in mezzo ci sta il modello. Un modello è una rappresentazione formale delle linee guida della mia politica.
L'aggiunta di questa fase mi permette di realizzare i meccanismi a partire da regole certe, ovvero da regole formali e non da parole un po' vaghe. Un po' la differenza che passava tra la descrizione del sistema e la realizzazione dell'ER.
Il modello è
- completo se rappresenta tutte le richieste previste dalla mia politica,
- consistente se no ncontiene contraddizioni al suo interno, ad esempio, "nega l'accesso a tutti i brutti", e poi sotto ha una regola "Ronaldinho può entrare". Eh no, non ci siamo.
Quando il mio modello rispetta la completezza e la consistenza, allora va tutto bene, il mio modello è sicuro.
Se poi anche il mio meccanismo è corretto rispetto al modello, allora anche il mio sistema è sicuro.
Politiche di sicurezza
Ci sono 3 categorie fondamentali di politiche di sicurezza:
- DAC = Controllo dell'accesso discrezionale
- MAC = Controllo dell'accesso mandatorio
- RAC = Controllo dell'accesso basato sui ruoli
Sono i modi per definire chi può e chi non può spaciugare nel sistema.
Le politiche di amministrazione mi dicono invece chi può specificare le regole. Ad esempio, in una macchina UNIX tipica l'utente root decide per tutti gli altri.
Modelli di sicurezza
I modelli di cui parlavamo prima sono descritti facendo ricorso a queste tre entità:
- soggetti: chi può accedere;
- oggetti: le risorse da proteggere;
- azioni: che cosa si può fare ad una risorsa o ad un soggetto.
In un dato momento, l'insieme dei permessi dati o negati ad ogni soggetto costituisce lo stato di autorizzazione del mio sistema, ovvero lo stato di protezione del sistema stesso.
Le regole di identificazione sono invece degli assiomi che vanno verificati affinché un accesso sia negato o permesso.
Politiche discrezionarie
Le politiche discrezionarie si chiamano così perché prevedono che un utente possa passare dei privilegi ad un altro utente a sua discrezione.
Il controllo dell'accesso viene effettuato in base all'identità dell'utente, e si confronta l'identità con l'insieme di regole che mi dicono che cosa quell'utente può o non può fare.
Ad esempio, SQL implementa una politicha discrezionaria: un utente con GRANT e REVOKE può concedere a sua discrezione privilegi ad altri utenti.
Modello a matrice di accesso
Inventato da Lampson nel 1971, ma usato bene o male ancora adesso