vuoi
o PayPal
tutte le volte che vuoi
Protezione e sicurezza. Dettagliatamente: come capisco quale
politica sto usando? Bell-La Padula e Biba.
modello
Un sistema definisce un per rappresentare le risorse/oggetti/file e gli utenti che posso-
no agire su queste, ogni utente avrà un dominio che contiene tutti le operazione che gli sono con-
cesse e su quali oggetti. Dato che ogni processo esegue per un determinato utente e può cam-
biare quest’associazione dinamicamente (per meglio implementare il principio del minimo privile-
gio) l’associazione tra processo e dominio è dinamica mentre tra utente e dominio è statica.
politica
L’utente del sistema deve poter specificare una che determini come le entità del model-
lo interagiscano tra loro, solitamente si ha: DAC, MAC e RBAC.
meccanismi
Il sistema infine offre dei per imporre una determinata politica, devono quindi esse-
re flessibili per supportare diverse politiche e al contempo essere distinti dalla politiche stesse.
I domini degli utenti possono essere rappresentati in maniera astratta da una matrice degli ac-
cessi che ha nelle righe ogni singolo utente e una colonna per ogni oggetto (o altro utente): ogni
2 di 6
cella mantiene l’elenco dei permessi per quell’utente relativamente a quell’oggetto. Tra i diritti tro-
copy flag
viamo il che permette di passare il diritto ad altri utenti (per copia o per trasferimento) e
owner
il diritto per gestire i permessi di tutti gli utenti per un determinato oggetto, tipici di una po-
control
litica DAC. Il diritto è invece tipico di una politica MAC e permette di gestire i permessi di
un determinato utente per qualunque oggetto.
La matrice degli accessi è sparsa quindi conviene memorizzarla per colonne (Access Control
List) o per righe (Capability List). Quest’ultime sono più efficienti nella gestione dei permessi in
quanto centralizzano i permessi di ogni utente in un singolo posto ma le ACL sono più performanti
nella gestione dei permessi di un certo oggetto per tutti gli utenti, si predilige quindi un sistema
misto che salva su disco le ACL e man mano che vengono accedute costruisce la CL in memoria
centrale.
In sistemi con politica MAC si ricorre solitamente a due modelli. Il modello Bell-La Padula è in-
centrato sul mantenimento dei segreti a scapito dell’integrità, tipico di un ambiente militare. Ven-
gono definiti 4 livelli di appartenenza per file e utenti. La proprietà di semplice sicurezza impone
che sia possibile leggere solo al proprio livello o inferiori, la proprietà * che sia possibile scrivere
solo al proprio o superiori. Il modello Biba invece è incentrato sulla collaborazione e funziona al
contrario: la proprietà di semplice sicurezza permette una scrittura solo al proprio livello o inferiori
mentre la proprietà di integrità * permette di leggere solo al proprio livello o superiori.
Nel caso di sistemi fidati in cui occorre un controllo a ogni accesso (e non solo al primo) si ricor-
re ai Reference Monitor che sfruttando una Trusted Computing Base (che contiene i permessi ed
è protetta da modifiche non autorizzate) si occupa di eseguire i controlli e tenere traccia in un file
audit file
di log detto di tentativi di violazione dell’accesso e modifiche autorizzate alla TCB.
Semafori nella memoria comune: descrizione generale, rela-
zione d’invarianza e dimostrazioni.
Un semaforo può essere visto come una variabile intera non negativa su cui eseguire due sole
operazioni: P e V. Una P su un semaforo a 0 sospende il processo, altrimenti decrementa di 1 il
semaforo, una V su un semaforo risveglia uno dei processi sospesi se presenti, altrimenti lo in-
crementa di 1. Un semaforo ha:
val
• : valore corrente
I ≥ 0
• : valore iniziale
n
• : numero di P eseguite
P
n
• : numero di V eseguite
V
Varrà quindi sempre la relazione val = I + n − n
V P
Che dà luogo alla relazione d’invarianza n ≤ I + n
P V
I = 1
Nel caso di un semaforo di mutua esclusione si ha con il vincolo che ogni operazione
esegua prima la P poi la V per avere tre proprietà: N = n − n
A. Sezioni critiche della stessa classe sono mutuamente esclusive, cioè vale 1
sez P V
o 0, dimostrabile facilmente sfruttando la relazione d’invarianza e imponendo che P preceda
n ≤ n
sempre V, da cui segue .
V P N = 0 ∧ val = 0
B. Non si può avere deadlock, cioè che sia una situazione impossibile, so-
sez
stituendo nella relazione iniziale infatti risulta che non sia verificata.
C. Se i processi sono fuori dalla sezione critica l’accesso deve essere possibile e immediato,
N = 0 val = 1 I N
cioè se deve valere , come si può verificare facilmente sostituendo e
sez sez
all’interno della relazione iniziale.
Azioni atomiche: cosa sono, su cosa sono fatte, cosa vuol dire
stato consistente. Stati di un’azione monoprocesso e memoria
stabile.
Parzialmente risposta in precedenza
Un’azione atomica è uno strumento di alto livello per modellare programmi tolleranti ai malfun-
zionamenti facendo sì che ogni oggetto transiti sempre da uno stato consistente ad un altro. Dato
3 di 6
relazione invariate,
un tipo, questo definisce una se per un oggetto la relazione invariate del suo
tipo è verificata si dice che è in uno stato consistente.
Per garantire che gli oggetti rimangano sempre consistenti occorre garantire l’atomicità nei con-
o niente),
fronti della concorrenza (serializzabilità) e dei malfunzionamenti (tutto cioè che gli stati
intermedi dell’azione non siano visibili ad altri processi e che in caso di crash lo stato intermedio
degeneri nello stato iniziale (niente) o in quello finale (tutto).
Durante l’esecuzione di un’azione atomica mono processo si possono avere 3 stati:
• Working: gli oggetti sono in stati intermedi inconsistenti che non devono essere visibili ad altri
processi ed un eventuale malfunzionamento deve portare al ripristino dei valori iniziali (abort).
• Aborting: gli oggetti manipolati dall’azione stanno venendo ripristinati al valore iniziale e in
caso di crash deve essere garantito il completamento del ripristino.
• Committing: l’azione ha terminato la sua esecuzione ed è stata eseguita la commit garanten-
do che tutti gli oggetti siano in uno stato finale consistente, in caso di crash deve essere garan-
tito il salvataggio dello stato finale in memoria stabile.
La memoria stabile è un’astrazione che permette operazioni di scrittura e lettura atomiche grazie
all’uso di due dischi permanenti per replicare i dati:
• Se si ha un errore nella scrittura sul primo si ha l’effetto niente perché rimane valido il secon-
do;
• Se si ha un errore nella scrittura sul secondo si ha l’effetto tutto perché rimane valido il primo;
• Se si ha un errore tra la scrittura sui due blocchi entrambi saranno validi e si ha l’effetto tutto
completando l’operazione con la copia del primo nel secondo.
Un disco permanente è un’astrazione ottenuta eliminando ogni disturbo temporaneo come erro-
ri in lettura o scrittura.
Capability list: cosa sono, da cosa derivano e confronto con
ACL.
Le CL derivano dalla matrice degli accessi quando viene rappresentata per righe associando ad
ogni utente un elenco di oggetti e le relative operazioni permesse. Mentre le CL sono più perfor-
manti per controllare i permessi dei singoli utenti le ACL risultano più efficaci nella gestione dei
permessi di un determinato oggetto per tutti gli utenti, operazione molto comune.
Modello a scambio di messaggi: differenze tra comunicazioni
simmetriche e asimmetriche, sincrone e asincrone, con sintas-
si, differenza tra send sincrona e asincrona, perché sono utili le
guardie e sintassi delle guardie.
La comunicazione può avvenire lungo canali simmetrici 1-1 (link) in cui un solo processo comu-
nica con un solo altro, oppure asimmetrici in cui più processi comunicano con uno (port) o più
(mailbox) processi dall’altro lato.
La comunicazione avviene attraverso le primitive send e receive: definito il canale per accettare
messaggi di un certo tipo si usa la send per inviare un messaggio dello stesso tipo lungo un cana-
le di un altro processo, questo processo potrà quindi eseguire la receive per salvare in una varia-
bile il messaggio e ricevere un riferimento al processo mittente, se non ci sono messaggi sul ca-
nale la receive risulta bloccante fino all’arrivo del primo messaggio.
La send può essere asincrona in cui dopo l’esecuzione della send il processo continua ad ese-
guire, in questo modo il messaggio non può contenere informazioni sullo stato del processo al
momento della send ma garantisce un maggior grado di parallelismo, oppure sincrona con ren-
dezvous semplice in cui il processo che esegue la send si sospende fino all’esecuzione della re-
ceive permettendo quindi di inviare informazioni sullo stato e di semplificare la verifica dei pro-
grammi a scapito del parallelismo, si ha anche la variante con rendezvous esteso in cui il mittente
si sospende fintanto che il ricevente non ha completato l’operazione in maniera analoga a una
chiamata a funzione, questo riduce ancora di più il parallelismo ma semplifica ancora di più la ve-
rificabilità.
Le sintassi con guardia vengono in aiuto per evitare l’attesa attiva con una receive non bloccan-
te quando si vuole ricevere contemporaneamente da più canali (guardia alternativa) o implemen-
tare in maniera semplice un server che deve fare quest’operazione a ripetizione (guardia ripetitiva).
4 di 6
Virtualizzazione: schema della virtualizzazione di sistema e
ospitata, ring deprivileging e compression, possibili problema-
tiche nella comunicazione tra VMM e SO guest in architetture
non virtualizzabili. Differenza tra fast binary translation e para-
virtualizzazione.
Parzialmente risposta in precedenza
Nel caso non si abbia a disposizione un processore con supporto nativo alla virtualizzazione oc-
corre adottare tecniche software:
• Fast binary translation: prima dell’esecuzione del codice questo viene scansionato e analizza-
to per individuare le istruzioni privilegiate che sono quindi sostitute con opportuni blocchi di
codice poi conservati in una cache, questa soluzione è molto costosa.
• Paravirtualizzazione: viene offerta un’interfaccia virtuale diversa da quella fisica attraverso le
hypercall API in cui le istruzioni privilegiate vengono richieste al VMM, questa soluzione ha pre-
stazioni migliori e permette la realizzazione di un VMM semplificato ma richiede la ricompilazio-
ne e il porting dei sistemi guest.
Azioni atomiche: effetto domino