• Non ci sono risultati.

Sistema firewall a sotto-rete schermata

4.2 Sistemi fidati

Un modo per migliorare la capacità di difesa di un sistema dagli hacker e dai programmi dolosi consiste nell'implementare una tecnologia a sistema fidato. Questa parte del capitolo presenta una breve panoramica su questo argomento. Si inizierà descrivendo alcuni dei concetti di base relativi al controllo dell'accesso ai dati.

4.2.1

Il controllo dell'accesso ai dati

Dopo aver eseguito con successo un'operazione di login, all'utente viene assegnato l'accesso a un insieme di host e applicazioni. Questo in genere non è sufficiente per un sistema che contiene dati riservati nel proprio database. Tramite la procedura di controllo degli accessi degli utenti, un utente può essere identificato sul sistema. A ciascun utente è associato un profilo che specifica quali operazioni e quali accessi ai file sono consentiti. Il sistema operativo può pertanto attivare delle regole sulla base del profilo dell'utente. Ma il sistema di gestione del database deve controllare l'accesso a specifici record e perfino a determinate parti dei record. Per esempio, nel reparto amministrazione di un'azienda tutti devono potere ottenere un elenco del personale ma solo determinate persone potranno avere accesso alle informazioni sugli stipendi. Questo problema non è certo un dettaglio. Mentre il sistema operativo può consentire all'utente l'accesso a un file o a un'applicazione, oltre a questo livello non esiste alcun ulteriore controllo di sicurezza. Il sistema di gestione del database invece deve prendere una decisione per ogni singola richiesta di accesso. Tale decisione non dipende solo dall'identità dell'utente ma anche dai dati consultati e perfino dalle informazioni già divulgate all'utente.

Un modello generale di controllo degli accessi utilizzato nei sistemi di gestione dei database o dei file è quello chiamato a matrice di accesso figura 2.3a. Ecco i principali elementi di questo modello.

Soggetto: entità in grado di accedere agli oggetti. In generale un soggetto è un

processo. Ogni utente o applicazione infatti acquisisce l'accesso a un oggetto tramite un processo che li rappresenta.

Oggetto: qualsiasi elemento per il quale deve essere controllato l'accesso. Fra gli

esempi vi sono i file, le parti di file, i programmi e i segmenti di memoria.

Diritti di accesso: modalità con la quale un soggetto può accedere a un oggetto.

Esempi di operazioni eseguibili sono la lettura, la scrittura e l'esecuzione.

Un asse della matrice è rappresentato dai soggetti identificati che richiedono l'accesso ai dati. In genere questo elenco è costituito da singoli utenti o gruppi di utenti sebbene l'accesso possa essere controllato per terminali, host o applicazioni in sostituzione o in aggiunta al controllo sugli utenti. L'altro asse elenca gli oggetti cui è possibile accedere. Al livello di dettaglio più elevato, gli oggetti possono essere i singoli campi di dati. Gli oggetti della matrice possono essere rappresentati da raggruppamenti più complessi come record, file o perfino interi database. Ciascun elemento della matrice indica i diritti di accesso del soggetto su tale oggetto.

In pratica una matrice degli accessi è normalmente una matrice sparsa implementata per decomposizione in due diversi modi. La matrice può essere decomposta in base alle colonne, fornendo una lista di controllo degli accessi figura 2.3b. Pertanto, per ciascun oggetto, una lista di controllo degli accessi elenca gli utenti e i relativi diritti di accesso. La lista di controllo degli accessi può contenere una voce di default o pubblica che consente di assegnare un determinato insieme di diritti agli utenti che non hanno specifici permessi di accesso. Gli elementi di questo elenco possono includere singoli utenti o anche gruppi di utenti.

Programma 1 . . . Segmento A Segmento B Processo 1 Lettura Esecuzione Lettura Scrittura Processo 2 Lettura • (A)Matrice di accesso

Lista di controllo degli accessi per il Programma 1 :

Processo 1 (lettura, esecuzione)

Lista di controllo degli accessi per il Segmento A:

Processo 1 (lettura, scrittura)

Lista di controllo degli accessi per il Segmento B:

Processo 2 (lettura)

(B) Lista di controllo degli accessi

Permessi per il Processo 1;

Programma 1 (lettura, esecuzione) Segmento A (lettura, scrittura)

Permessi per il Processo 2:

Segmento B (lettura)

(C) Elenco dei permessi Figura 3.3 Struttura di controllo degli accessi.

La decomposizione in base alle righe fornisce un elenco dei permessi (Figura 3.3C) che specifica gli oggetti e le operazioni disponibili per un utente. Ciascun utente avrà un certo numero di permessi e può esser autorizzato ad assegnare tali permessi ad altri. Poiché questi permessi possono essere dispersi nel sistema, rappresentano un grave problema di sicurezza rispetto alle liste di controllo degli accessi. In particolare, il permesso di accesso non deve essere falsificabile. Una tecnica per ottenere ciò consiste nel fare in modo che il sistema operativo conservi tutti i permessi per conto dell'utente. Questi permessi dovranno essere conservati in un'area di memoria inaccessibile agli utenti.

4.2.2

Il concetto di sistema fidato

Ciò che si detto finora riguardava la protezione di un determinato messaggio o elemento contro attacchi attivi o passivi da parte di un determinato utente. Un requisito per certi versi differente ma ampiamente applicabile è quello di proteggere i dati o le risorse sulla base dei cosiddetti livelli di sicurezza. Questo requisito è normalmente previsto negli ambienti militari, dove le informazioni possono essere considerate non classificate, confidenziali,

segrete o top-secret e oltre. Questo concetto è però applicabile anche ad altri settori, dove le informazioni possono essere organizzate in categorie e agli utenti è consentito l'accesso a determinate categorie di dati. Per esempio, il livello di sicurezza più elevato potrebbe essere quello dei documenti di pianificazione strategica dell'azienda, accessibili solo ai top manager e al relativo staff; poi vi potrebbero essere i dati finanziari più delicati e i dati sul personale, accessibili solo da parte del personale di amministrazione, ai top manager e così via.

Quando esistono più categorie o livelli di dati, si parla di sicurezza multilivello. La formulazione generale del requisito di sicurezza multilivello è che un soggetto di alto livello non deve fornire informazioni a un soggetto di livello più basso a meno che questo non rifletta la precisa volontà di un utente autorizzato. Per gli scopi implementativi, questo requisito può essere diviso in due parti e riformulato in modo più semplice. Un sistema sicuro multilivello deve garantire:

No read up: un soggetto può solo leggere un oggetto con un livello di sicurezza

uguale o inferiore. Nella documentazione tecnica viene chiamato proprietà di sicurezza semplice.

No write down: un soggetto può solo scrivere in un oggetto con un livello di

sicurezza uguale o superiore. Nella documentazione tecnica viene chiamato "*- property".

Queste due regole, se rispettate, garantiscono la sicurezza multilivello. Per i sistemi di elaborazione dei dati, l'approccio seguito è stato oggetto di molte ricerche e sviluppi e si basa sul concetto di monitor di riferimento. Questo approccio è rappresentato nella figura 3.4. Il monitor di riferimento è un elemento di controllo presente nell'hardware e nel sistema operativo di un computer che regola l'accesso dei soggetti agli oggetti sulla base dei loro parametri di sicurezza. Il monitor di riferimento ha accesso a un file, il database centrale della sicurezza, che elenca i privilegi di accesso (security clearance) di ciascun soggetto e gli attributi di protezione (classification level) di ciascun oggetto. Il monitor di riferimento garantisce il rispetto delle due regole di sicurezza elencate in precedenza e ha le seguenti proprietà.

Mediazione completa: le regole di sicurezza vengono applicate a ogni accesso e non,

per esempio, solo quando viene aperto un file.

Isolamento: il monitor di riferimento e il database sono protetti da qualsiasi modifica

non autorizzata.

Verificabilità: la correttezza del monitor di riferimento deve essere dimostrabile.

Ovvero deve essere possibile dimostrare matematicamente che il monitor di riferimento garantisce il rispetto delle regole di sicurezza, una mediazione e un isolamento completi.

Si tratta di requisiti molto rigidi. Il requisito di mediazione completa significa che ogni accesso ai dati contenuti nella memoria principale e nei dischi e su nastro deve essere mediato. Un'implementazione puramente software imporrebbe un aggravio prestazionale troppo elevato; la soluzione deve essere almeno parzialmente hardware. Il requisito di isolamento significa che non deve essere possibile per un estraneo, indipendentemente dalla sua abilità, alterare la logica di funzionamento del monitor di riferimento o il contenuto del database centrale di sicurezza. Infine il requisito di prova matematica è formidabile per un sistema così complesso come un computer. Un sistema in grado di soddisfare questi requisiti è chiamato sistema fidato.

L'ultimo elemento rappresentato nell'illustrazione 18 è il file di auditing. Gli eventi più importanti della sicurezza, come il rilevamento delle violazioni alla sicurezza e le modifiche autorizzate al database centrale della sicurezza vengono conservate nel file di auditing

Nel tentativo di rispondere alle sue stesse esigenze e come servizio pubblico, il Dipartimento della Difesa degli Stati Uniti ha fondato nel 1981 il Computer Security Center nel l'ambito della NSA (National Security Agency) con l'obiettivo di incoraggiare lo sviluppo di sistemi fidati. Questo obiettivo viene perseguito tramite il programma Commercial Product

Evaluation Program del centro. In pratica, si tenta di valutare come i prodotti disponibili commercialmente soddisfino i requisiti di sicurezza appena descritti. Il centro classifica i prodotti valutati in base alla gamma di funzionalità. Queste valutazioni sono necessarie per gli acquisti del Dipartimento della Difesa ma vengono rese pubblicamente accessibili: pertanto possono essere utili anche alle aziende che acquistano apparecchiature disponibili commercialmente.

4.2.3

Difesa contro i cavalli di Troia

Un modo per difendersi dagli attacchi a cavallo di Troia consiste nell'uso di un sistema operativo sicuro e fidato.

L'illustrazione 19 ne è un esempio. In questo caso viene utilizzato un cavallo di Troia per aggirare il meccanismo di sicurezza standard utilizzato dalla maggior parte dei sistemi di gestione dei file e dei sistemi operativi: la lista di controllo degli accessi. In questo esempio l'utente Bob interagisce tramite un programma con un file di dati contenente la stringa di caratteri segreta "CPE170KS". L'utente Bob ha assegnato i permessi di lettura/scrittura al file solo per i programmi operanti per suo conto; ovvero solo i processi di proprietà di Bob possono accedere al file.

L'attacco a cavallo di Troia inizia quando un utente ostile, Alice, acquisisce legittimamente l'accesso al sistema e installa un cavallo di Troia e un file di servizio che verrà utilizzato durante l'attacco. Alice assegna a se stessa il permesso di lettura e scrittura su questo file e assegna a Bob il solo permesso di scrittura (19 A). Ora Alice induce Bob a richiamare il programma contenente il cavallo di Troia, sostenendo che si tratta di un programma della massima utilità. Quando il programma scopre di essere eseguito da Bob, legge la stringa di caratteri segreta dal file di Bob e la copia nel file di servizio di Alice (Figura 19 B). Entrambe le operazioni di lettura e scrittura soddisfano i vincoli imposti dalla lista di controllo degli accessi. Per conoscere il valore della stringa, ad Alice non rimane che accedere al proprio file.

Illustrazione 18: Concetto del