Swappa : Uni / Sistemi Operativi - Protezione
Creative Commons License

Torna alla pagina di Sistemi Operativi


 :: Appunti 2.0 ::

Protezione

Obiettivi della protezione

Per protezione si intende la messa in sicurezza delle risorse (dette anche oggetti) da parte di accessi non autorizzati di utenti, programmi o processi. Stabilito quest'obiettivo, bisogna distinguere le regole (che tracciano le linee politiche della strategia di protezione ) dai meccanismi (gli strumenti che le applicano) per garantire maggior flessibilità.

Domini di protezione

Un sistema è normalmente composto sia da risorse fisiche (l'hardware) che informative (i file, le strutture di comunicazione, i programmi), ognuna delle quali è caratterizzata da un nome univoco e da un insieme di operazioni consentite.

I processi dovrebbero poter accedere solo a quelle risorse per cui hanno l'autorizzazione, che andrebbe distribuita secondo il principio di minima conoscenza: un processo deve poter accedere solo alle risorse strettamente necessarie per la propria computazione. In questo modo si riesce a limitare la quantità di danni potenziali dovuti ad un processo malfunzionante.

Struttura del dominio di protezione

Per meglio applicare il principio di minima conoscenza ogni processo viene fatto operare in un dominio di protezione, che definisce l'insieme di risorse cui può accedere ed il tipo di operazioni lecite che è autorizzato a compiere. Per ognuno di essi vengono perciò definiti una serie di diritti di accesso, composti da una coppia <nome oggetto, insieme-diritti>. Notare che i domini non devono essere necessariamente disgiunti, ma possono condividere alcuni dei loro diritti.

L'associazione tra diritto e dominio può essere statica o dinamica. Nel primo caso il set di risorse disponibili per il processo è fissato all'inizio per tutta la durata dell'esecuzione; è semplice da implementare ma spesso assegna più diritti di quanto effettivamente il processo abbia bisogno in un dato momento. Con l'associazione dinamica invece vengono forniti meccanismi per cambiare dominio di protezione, il che meglio applica il principio di minima conoscenza a fronte però di una maggiore complessità.

Un dominio può coincidere con:

Va però ricordato che nei cambi di dominio (switch) la loro struttura rimane inalterata, comprese le operazioni abilitate sulle risorse. Per poter modificare diritti e struttura bisogna averne l'autorità.

Matrice d'accesso

Il modello di protezione può essere rappresentato in modo astratto con la matrice di accesso, in cui le righe indicano i domini di protezione e le colonne gli oggetti. In ogni cella vengono invece definiti i diritti d'accesso, ridotti a una lista di operazioni consentite. La decisione del tipo di dominio in cui deve essere incluso un processo spetta generalmente al sistema operativo, mentre è l'utente che decide il contenuto degli elementi nella matrice aggiungendo colonne (quindi creando nuovi oggetti) e impostando alcuni diritti. Notare che la stessa matrice d'accesso può essere considerata come risorsa, dunque si possono impostare diritti d'accesso anche su di essa.

La modifica controllata del contenuto degli elementi della matrice d'accesso è resa possibile da tre operazioni:

I diritti di copia e proprietà permettono di evitare il propagarsi dei diritti d'accesso, ma non garantiscono il contenimento delle informazioni, che è considerato un problema irrisolvibile.

Implementazione della matrice d'accesso

Tabella globale

La tabella globale è la soluzione più semplice e prevede di rappresentare la matrice come una tabella i cui elementi sono terne ordinate <dominio, oggetto, diritti>.

Un primo limite di tale soluzione è che la tabella risulterebbe molto grande (spesso con dimensioni maggiori della memoria centrale) e per giunta la maggior parte delle celle sono vuote dato che non sono definiti diritti per ogni coppia dominio-oggetto. Altro limite è che non sono possibili raggruppamenti di oggetti o domini, cosa che consentirebbe una più facile gestione degli stessi.

Liste di controllo degli accessi

Le liste di controllo degli accessi sono una memorizzazione per colonne della matrice degli accessi: per ogni oggetto si crea una lista composta da coppie ordinate <dominio, diritti>. Si può definire anche un insieme di diritti d'accesso predefinito, da controllare prima della lista di controllo degli accessi.

Liste di capacità dei domini

Le liste di capacità dei domini sono una memorizzazione per righe della matrice degli accessi, e consistono in una lista per ogni dominio formata da coppie <oggetto, diritti>. Gli oggetti sono rappresentati dal loro nome fisico o dal loro indirizzo, e vengono chiamati capacità: il semplice possesso delle capacità autorizza l'accesso.

La lista delle capacità non è direttamente accessibile ma è essa stessa un oggetto protetto. E' gestita dal sistema operativo che concede accessi indiretti ai suoi elementi.

Il meccanismo lock-key

Il meccanismo lock-key (serratura-chiave) è un compromesso tra le due liste viste finora: ogni oggetto ha una lista unica di bit detta lock, mentre ogni dominio ne ha un'altra detta key. Un processo in esecuzione in un dominio può accedere a un oggetto solo se la sua key è in grado di aprire il lock interessato.
Tutto questo meccanismo viene gestito dal sistema operativo.

Confronto

Le liste di controllo degli accessi possono essere specificate dagli utenti e contengono informazioni globali, ma sono inefficienti su grandi sistemi.
Le liste della capacità dei domini sono invece relative agli oggetti dunque hanno informazioni localizzate e sistemi di revoca poco efficienti.

Revoca dei diritti d'accesso

In un sistema di protezione dinamica può essere necessario revocare i diritti di accesso su oggetti condivisi da più utenti. Tali revoche possono essere:

Con lo schema basato sulla lista degli accessi la revoca è un'operazione semplice e immediata: basta cercare il diritto d'interesse e rimuoverlo. Per la lista delle capacità il meccanismo è invece più complesso poiché le informazioni si trovano distribuite su tutto il sistema e bisogna prima recuperarle. Esistono diverse tecniche che si prepongono questo fine:

Sistemi basati sulla capacità

I sistemi basati sulle capacità mettono a disposizione un approccio nativo all'uso di risorse basato sulle capacità, offrendo agli utenti meccanismi per definirle e controllarle più efficacemente.

Protezione basata sul linguaggio

La protezione basata sul linguaggio evita di scaricare tutte le responsabilità di garantire la sicurezza sul sistema operativo prendendosene parte del carico al momento della compilazione del programma applicativo, incorporandola nel linguaggio di programmazione. Permette di conseguenza un controllo più granulare, guadagnando efficienza e flessibilità rispetto alla protezione basata sul kernel (che rimane comunque la più sicura).


Torna alla pagina di Sistemi Operativi

(Printable View of http://www.swappa.it/wiki/Uni/SO-Protezione)