I DB possono contenere dati sensibili, cioè dati che non dovrebbero essere resi pubblici. Il fatto d'essere sensibili dipende sia dal DB sia dal significato dei dati stessi. Ad esempio il DB di una biblioteca pubblica non conterrà dati sensibili, mentre i DB del ministero della difesa conterranno dati totalmente sensibili. Questi due casi sono i più facili da trattare, poichè dei controlli d'accesso al DB possono stabilire chi è autorizzato ad accedervi e chi non lo è. Il caso più complicato si presenta quando in uno stesso DB convivono dati sensibili e dati non sensibili, cioè quando coesistono molteplici gradi di sensibilità. La soluzione in questo caso è limitare l'accesso degli utenti in modo che possano ottenere solo i dati di loro pertinenza. Molti fattori possono determinare la sensibilità dei dati. Un dato può essere volutamente dichiarato sensibile dal DBA, oppure può essere sensibile per il valore che esso contiene. A volte la sola esistenza di un dato può rivelare sensibilità; in altri casi un dato può diventare sensibile solo in presenza di altri dati.
Il DBA è la persona che decide quali dati devono essere contenuti nel DB e chi può avere accesso a questi dati. Le decisioni del DBA sono basate su una politica degli accessi. Il DBMS non fa altro che mettere in pratica, attraverso delle informazioni di controllo, la politica degli accessi decisa dal DBA. Il DBMS considera molti fattori quando decide se permettere un accesso, tra questi fattori descriveremo brevemente:
Quando un dato č aggiornato, per tutta la durata dell'aggiornamento esso non dovrebbe essere disponibile, per evitare l'inconsistenza di altri dati. Un dato deve poter essere bloccato, cioè non può essere manipolato in un determinato intervallo temporale, anche se ciò può causare attesa di altri utenti su quel dato, e in caso di qualche errore anche di attese infinite.
Un DBMS, nel decidere su un accesso, non deve rilasciare dati sensibili ad utenti non autorizzati. Ciò non è molto semplice, poiché a volte anche dati non sensibili possono aiutare, se manipolati in un certo modo, a dedurre dati sensibili. Quindi un DBMS deve stare attento a concedere anche gli accessi a dati non sensibili che possono svelare informazioni riservate.
Alcune caratteristiche di un utente esterno al DB devono essere considerate per rafforzare la sicurezza. Il DBA, infatti, potrebbe permettere l'accesso al DB solo in determinati periodi di tempo, come ad esempio, durante l'orario di lavoro.
I dati possono essere sensibili, ma spesso sono sensibili anche le caratteristiche di un dato. Ovvero anche informazioni sui dati (come l'esistenza o il fatto che non sia uguale a zero), oltre ai valori veri e propri, possono essere delle forme di rivelazioni.
Un altro modo per rivelare dati è rendere noti i limiti dei valori tra i quali esso varia. Usando una tecnica di restringimento simile alla ricerca binaria si può determinare un valore desiderato con una buona precisione.
Si possono svelare dati anche attraverso query negative, cioč query che chiedono che X non è il valore di Y. In particolare sapere che una valore non è uguale a zero è una rivelazione significativa.
In certi casi, la sola esistenza di un dato rivela la sua sensibilità, a prescindere dal valore del dato stesso. Cioè, già sapere che un dato esiste può rivelare informazioni riservate.
Infine, può essere possibile determinare la probabilità che un certo elemento ha una determinato valore, sapendo porre determinate query. Se si vuole scoprire, ad esempio, se il presidente di una società è iscritto a un determinato partito, sapendo che i dati del presidente sono presenti nel DB, si possono porre le seguenti query:
Abbiamo visto come sia difficile determinare quali dati siano sensibili e proteggerli. La situazione è complicata dalla coesistenza di dati sensibili e dati non sensibili. Per ragioni di sicurezza si vogliono svelare solo i dati non sensibili. Tale prospettiva incoraggia una filosofia conservativa nel determinare quali dati rivelare. Questa filosofia conservativa dice di vietare qualsiasi query che menziona campi sensibili. In questo modo saranno vietate molte query ragionevolmente sicure. Noi vogliamo. invece, svelare la maggior parte dei dati in modo che gli utenti del DB abbiano accesso a tutti quelli di cui hanno bisogno. Questa meta, chiamata precisione, protegge dati del tutto sensibili mentre rivela la maggior parte dei dati non sensibili. Si può raffigurare la relazione tra sicurezza e precisione con cerchi concentrici. Come la figura 1.1 mostra, i dati sensibili, presenti nel cerchio più interno, dovrebbero essere protetti attentamente. Continuando con gli strati più esterni troviamo i dati non sensibili da cui si possono dedurre i dati sensibili, quelli non sensibili da cui non è possibile ottenere informazioni sensibili, infine, lo strato più esterno contiene i dati che possono essere rivelati senza problemi. La combinazione ideale di sicurezza e precisione permette di mantenere sicurezza perfetta e massima precisione, cioè di svelare tutti e solo i dati non sensibili. Ciò non è facile da realizzare. Infatti, spesso si deve sacrificare la precisione per mantenere la sicurezza.
![]() |
![]() |
![]() |
DIA - Dipartimento
di
Informatica ed Applicazioni |
![]() |