Possibilità


  Share  
|


Concettualmente, una possibilità è come la fila di una tabella di controllo di accesso. Ogni oggetto ha associato con esso un insieme degli accoppiamenti, con ogni accoppiamento che contiene un oggetto e un insieme dei diritti. L'oggetto si è associato con questa lista può accedere all'oggetto chiamato in c'è ne dei sensi indicati dai diritti chiamati. Più formalmente:

Lasci la O essere l'insieme degli oggetti e la R l'insieme dei diritti, di un sistema. Una lista c di possibilità è un insieme degli accoppiamenti c = {(o, r): o inclusa nella O, nella r incluse nella R}. Lasci la protezione essere una funzione che determina la lista c di possibilità connessa con un oggetto particolare s. Interpretazione del cap(s) della lista di possibilità = {(oi, ri): 1 < = i < = n} è che la s tematica può accedere al oi usando affatto a destra nel ri.

Abbreviamo "la lista di possibilità" come C-Lista.

Le possibilità incapsulano l'identità dell'oggetto. Quando un processo presenta una possibilità a nome di un utente, il sistema operativo esamina la possibilità per determinare sia l'oggetto che l'accesso a cui il processo è autorizzato. Ciò riflette come i capabiliies per l'amministrazione di memoria funzionano; la posizione dell'oggetto nella memoria è incapsulata nella possibilità. Senza una possibilità, il processo non può chiamare l'oggetto in un senso che gli darà l'accesso voluto.

ESEMPIO: Per aprire una lima di UNIX, un processo dà il nome di archivio al nocciolo. Il nocciolo ottiene il numero di inode della lima risolvendo il nome con la gerarchia della lima. Una volta che il inode è ottenuto, il sistema determina se l'accesso chiesto è assegnato usando i permessi di controllo di accesso. Se l'accesso è assegnato, il sistema operativo restituisce una possibilità denominata un descrittore di lima. La possibilità è limitata strettamente all'oggetto della lima, in modo da anche se la lima è cancellata e una nuova lima con lo stesso nome è generata, il descrittore di lima ancora si riferisce alla lima precedente.


"i codici" di Iliffe sono simili alle possibilità. "le possibilità" sono un senso controllare l'accesso agli oggetti nella memoria o immagazzinaggio secondario. Fabry ha generalizzato questa idea effettuare il richiamo possibilità-basato.

L'architettura delle possibilità è più interessante di quella delle liste di controllo di accesso. Il Access Control List e l'identità trattata sono sotto il controllo del sistema operativo. In assenza dei difetti, i processi dell'utente possono cambiarli soltanto invocando i servizi del sistema operativo. Tuttavia, un processo deve identificare una possibilità per usarla, in modo da il processo deve avere certo controllo sopra le possibilità. Se il processo può forgiare una possibilità ed allora usarlo, i comandi di accesso vengono a mancare.

Esecuzione delle possibilità

Tre meccanismi sono usati per proteggere le possibilità: modifiche, memoria protetta e cryptography.

Un'architettura etichettata ha un insieme delle punte connesse con ogni parola dei fissaggi. La modifica ha due dichiara: l'insieme ed unset. Se la modifica è regolata, un processo ordinario può leggere ma non modificare la parola. Se la modifica è unset, un processo ordinario può leggere e modificare la parola. Più ulteriormente, un processo ordinario non può cambiare il dichiarare della modifica; il processor deve essere in un modo privilegiato da fare così.

ESEMPIO: Il B5700 ha usato un'architettura etichettata (anche se non ha usato le possibilità come meccanismi di protezione). Il campo della modifica ha consistito di tre bit ed ha indicato come l'architettura doveva trattare la parola (indicatore, descrittore, tipo ed e così via).


Più comune è usare le punte di protezione connesse con paginazione o segmentazione. Tutte le possibilità sono memorizzate in una pagina (segmento) che il processo può leggere ma non alterare. Ciò non richiede fissaggi per un fine particolare tranne quella usata dallo schema dell'amministrazione di memoria. Ma il processo deve riferire indirettamente le possibilità, solitamente attraverso gli indicatori, piuttosto che direttamente.

ESEMPIO: Il sistema della PROTEZIONE non ha permesso che i processi modificassero il segmento in cui disposizione di istruzioni. Inoltre ha memorizzato le possibilità in questo segmento. Un registro della recinzione ha separato le istruzioni e le possibilità.


Una terza alternativa deve usare il cryptography. L'obiettivo delle modifiche e della protezione di memoria è di impedire le possibilità essere alterata. Ciò è analoga del controllo di integrità. I totali di controllo crittografici sono un altro meccanismo per il controllo dell'integrità delle informazioni. Ogni possibilità ha un totale di controllo crittografico connesso con esso ed il totale di controllo digitalmente è cifrato usando un cryptosystem di cui la chiave è conosciuta al sistema operativo.

Quando il processo presenta una possibilità al sistema operativo, i primi recomputes che del sistema il totale di controllo crittografico si è associato con la possibilità. Allora cifra il totale di controllo usando la chiave crittografica e lo paragona a quella immagazzinata nella possibilità, o decifra il totale di controllo fornito della possibilità e lo paragona al totale di controllo computato. Se abbinano, la possibilità è invariata. Se non, la possibilità è rifiutata.

ESEMPIO: Il sistema dell'ameba è un sistema distribuito che usa le possibilità per chiamare gli oggetti. Sulla creazione, una possibilità che corrisponde all'oggetto è restituita. Per usare l'oggetto, il programma presenta la possibilità corrispondente. La possibilità mette il nome in codice dell'oggetto (24 bit), dell'assistente che lo hanno generato (48 bit) e dei diritti (8 bit) in una quantità 128-bit. Inizialmente, tutti i diritti sono accesi.

Gli ultimi 48 bit sono usati come campo del controllo. Ciò è un numero casuale selezionato a tempo della creazione. (Poiché la possibilità è data al proprietario dell'oggetto, il proprietario può modificare liberamente i diritti senza pericolo.) Il numero è immagazzinato in una tabella che corrisponde all'assistente che ha generato l'oggetto, in modo da ogni volta che la possibilità è presentata a quell'assistente, verifica che il numero casuale è corretto. Un attacker dovrebbe conoscere il numero casuale per potere forgiare una possibilità. Tuttavia, come note di Tanenbaum, il sistema è vulnerabile se una possibilità è rilevata.


Possibilità di copiatura e d'amplificazione

La capacità di copiare le possibilità implica la capacità di dare i diritti. Per impedire i processi indiscriminatamente dare i diritti assenti, una bandierina della copia è associata con le possibilità. Un processo non può copiare una possibilità ad un altro processo a meno che la bandierina della copia sia regolata. Se il processo copia la possibilità, la bandierina della copia può essere spenta (a discrezione del processo o del nocciolo).

ESEMPIO: L'ameba usa uno schema interessante. Non controlla i diritti di copiatura. Tuttavia, gli usi a cui quei diritti copiati possono essere messi sia limitato.

Supponga i desideri opachi dell'utente per permettere che l'agrifoglio dell'utente legga un oggetto possiede. Passa la sua possibilità per quell'oggetto all'assistente e che chiede che una possibilità limitata per lettura. L'assistente genera una nuova possibilità per l'oggetto ma con soltanto la destra indicata accesa. Il campo di diritti ora è tutto e 0 le tranne la punta colta, che è un 1. Ciò è xor'ed con il controllo casuale e l'input ad una funzione crittografica del hash. L'uscita è il nuovo numero casuale per questa possibilità. La possibilità limitata allora è passata di nuovo ad opaco, che la dà ad agrifoglio.

Quando l'agrifoglio usa la possibilità, l'assistente nota che almeno un bit nel campo di diritti è 0. Prende il campo di diritti, esso dei xor con il numero casuale della possibilità originale (memorizzata in relative tabelle) e hashes il risultato. Se il hash risultante abbina il numero casuale nella possibilità, la possibilità è valida; altrimenti, non è.


L'amplificazione è aumentare dei privilegi. L'idea di programmazione modulare e particolarmente dei tipi di dati astratti, richiede che i diritti che un processo ha sopra un oggetto sono amplificati.

Per capire perchè, consideri il seguente tipo di dati astratto per un contatore.

contatore del modulo; ctr increment(var dell'entrata
di procedura: numero intero); cominci il ctr: = ctr 
+ 1; estremità; getval(ctr dell'entrata di funzione: 
numero intero); cominci getval: = ctr; 
estremità; ctr clear(var dell'entrata di procedura: 
numero intero); cominci il ctr: = 0; 
estremità; estremità.

Supponga che la x è dichiarata per essere un contatore. Le regole dei tipi di dati astratti ammettono che oggetto da raggiungere soltanto dal contro modulo. Così, inizialmente la possibilità per la x conterrebbe la destra invocare il contro modulo soltanto. Ma quando l'oggetto è passato al contro modulo, il processo deve ora potere leggere e scrivere a quell'oggetto. Quindi, la possibilità deve essere amplificata temporaneamente mentre il contatore del modulo è attivo.

ESEMPIO: Il HYDRA seminale del sistema ha usato le mascherine di amplificazione per amplificare i diritti dei processi. È associata con ogni procedura nel modulo una mascherina che aggiunge i diritti alle possibilità come state necessarie. Per esempio, la mascherina per la procedura getval aggiungerebbe i diritti colti mentre la procedura era attiva. La mascherina per la procedura di incremento aggiungerebbe colto e scriverebbe i diritti.


ESEMPIO: Il sistema del iAPX 432 dell'Intel effettua un meccanismo simile in fissaggi. I relativi "descrittori di accesso" corrispondono alle possibilità. Tre bit nella possibilità controllano le varie funzioni del sistema. Uno dell'amplificazione di questi comandi delle punte dei diritti. Quando un tipo di dati astratto modulo è costruito, le punte di permesso del tipo controllo obiettano (che definisce il tipo di dati) sono regolate ai permessi di che la procedura ha bisogno. Quando la procedura è denominata, il sistema controlla la punta di amplificazione. Se è regolato, i diritti nel tipo oggetto di controllo sono or'ed con i diritti nel descrittore dell'oggetto che è passato. Questa combinazione definisce i diritti disponibili alla procedura.


Annullamento dei diritti

In un sistema di possibilità, revocare l'accesso ad un oggetto richiede che tutte le possibilità che assegnano l'accesso a quell'oggetto sono revocate. Concettualmente, ogni processo ha potuto essere controllato e le possibilità essere cancellato. Il costo di un tal funzionamento sarebbe inaccettabile, tuttavia, in modo da i metodi alternativi sono usati.

Il meccanismo più semplice è indirection. Definisca una o più tabelle globali dell'oggetto. In questo schema, ogni oggetto ha un'entrata corrispondente in una tabella. Le possibilità non chiamano direttamente l'oggetto; chiamano l'entrata nella tabella che corrisponde all'oggetto.

Questo schema presenta parecchi vantaggi. In primo luogo, revocare le possibilità, l'entrata nella tabella globale dell'oggetto è invalidata. Allora tutti i riferimenti otterranno un'entrata non valida della tabella e saranno rifiutati. In secondo luogo, se soltanto alcune delle possibilità devono essere revocate, l'oggetto può avere le entrate multiple, ciascuno che corrisponde ad un insieme differente dei diritti o un gruppo differente degli utenti.

ESEMPIO: Usi dell'ameba essenzialmente questo schema. Per revocare una possibilità, il proprietario dell'oggetto invita che il cambiamento dell'assistente il numero casuale e pubblica una nuova possibilità. Ciò invalida tutte le possibilità attuali.


Un meccanismo alternativo di annullamento usa il tipo di dati astratto responsabili. È inclusa con ogni tipo di dati astratto una procedura di annullamento. Quando l'accesso deve essere revocato, il tipo responsabile simpy respinge ulteriori accessi dall'oggetto di cui i diritti stanno revocandi. Ciò non interessa i metodi alternativi di accesso a degli oggetti di fondo i tipi di dati astratti. Per esempio, l'accesso ad una lima può essere revocato, ma questa tecnica non ostruirebbe l'accesso ai segmenti di fondo attraverso un tipo alternativo responsabile. Il sistema SCP3 ha usato questa tecnica.

Confronto con le liste di controllo di accesso

Due domande sono alla base dell'uso dei comandi di accesso:

  1. Dato un oggetto, che oggetti può accedere e come?

  2. Dato un oggetto, che oggetti possono accedergli e come?

Nella teoria, le liste o le possibilità di controllo di accesso possono rispondere a queste domande. Per la prima domanda, le possibilità sono il più semplice; lista giusta gli elementi della C-Lista associata dell'oggetto. Per la seconda domanda, ACLs sono il più semplice; lista giusta gli elementi del Access Control List dell'oggetto. In un sistema di ACL-based, rispondere alla prima domanda richiede tutti gli oggetti essere esplorato. Il sistema estrae tutte le entrate di ACL connesse con l'oggetto in questione. In un sistema possibilità-basato, rispondere alla seconda domanda richiede tutti gli oggetti essere esplorato. Il sistema estrae tutte le possibilità connesse con l'oggetto in questione.

Karger e Herbert speculano che la differenza pratica nel rispondere alla seconda domanda è il motivo più liste di controllo di accesso di uso dei sistemi che le possibilità. Questo problema è fatto più spesso del primo. Poichè il fuoco della risposta di avvenimento sposta da "chi ha acceduto all'oggetto" per includere "che altro ha fatto quell'accesso tematico," i sistemi possibilità-basati possono diventare più comuni.

ciò è un articolo aggiunto da Fred Foster


Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions