Capability

Da Wikipedia, l'enciclopedia libera.

Il termine capability è un concetto utilizzato nella sicurezza informatica ed è uno dei modelli di sicurezza esistenti. Una capability (conosciuta anche come chiave) è un token di autorità comunicabile e non falsificabile. Essa consiste in un valore che fa riferimento ad un oggetto insieme a una collezione di diritti di accesso. Un programma utente che viene eseguito su un sistema operativo basato su capability deve utilizzare una capability per accedere ad un oggetto.

Un sistema di sicurezza basato su capability è il principio di design che permette ai programmi utente lo scambio diretto delle capabilities seguendo il principio del privilegio minimo, e all'infrastruttura del sistema operativo di rendere questi passaggi efficienti e sicuri.

Anche se molti sistemi operativi implementano meccanismi che assomigliano alle capabilities, solitamente non offrono il supporto per lo scambio delle capabilities tra entità come metodo principale di autorizzazione e distribuzione dei diritti di accesso. Al contrario quest'ultimo è proprio lo scopo di un sistema basato su capability.

Questo sistema di sicurezza utilizza un approccio contrastante rispetto a quello introdotto dai domini gerarchici di protezione.

Il termine capability, come viene utilizzato in questo articolo, non va confuso con l'omonima parola associata a POSIX 1e/2c. Quest'ultimo è un sistema che prevede privilegi meno raffinati e non trasferibili tra processi.

Introduzione[modifica | modifica wikitesto]

Questo sistema di sicurezza segue la logica inversa di quanto organizzato nel meccanismo ACL (Access Control List) dove i permessi sono associati agli oggetti che virtualizzano le risorse medesime ed esprimono chi è autorizzato ad accedervi.

Con il sistema delle capabilty si può gestire la sicurezza all'interno di un dominio, implementando le funzionalità da svolgere nel sistema in maniera modulare e sovrapponibile, dove i sottodomini in cui vengono a svolgersi i processi determinati, verranno dunque a possedere un alto grado di indipendenza in merito alla definizione del proprio meccanismo di protezione e tenderanno a formare strutture lineari facili da: sviluppare, mantenere ed implementare.

All'atto pratico i sistemi che utilizzano le capability associano a ciascun processo una lista di capability (o C-list), che descrive per l'appunto a quali oggetti (per esempio file) il processo può accedere. Una C-list può essere formata da dei nodi, ciascuno dei quali rappresenta i permessi su un determinato oggetto puntato.

Implementazione[modifica | modifica wikitesto]

Ci sono diversi metodi per implementare le capability:

  • In hardware: ad ogni parola in memoria viene aggiunto uno speciale tag che indica se la parola contiene una capability. Solo il sistema operativo possiede i requisiti per poter modificare questi tag.
  • In spazio kernel: il sistema operativo ordina a ciascun processo che tenta di accedere ad un determinato oggetto di verificarne dapprima i permessi consultando una C-list.
  • In spazio utente: le C-list sono memorizzate in spazio-utente, ma per questo motivo devono venire crittografate per impedire contraffazioni da parte degli utenti.
Sicurezza informatica Portale Sicurezza informatica: accedi alle voci di Wikipedia che trattano di Sicurezza informatica