Modello Clark-Wilson
# Modello Clark-Wilson

Il modello Clark-Wilson venne sviluppato nel 1987 da due studiosi: David D. Clark e David R. Wilson. Questo modello rappresenta un'alternativa al Modello Biba dell'integrità.

## Scenario

L'integrità del modello è definita tramite un insieme di vincoli, e questo è in uno stato consistente se il modello soddisfa i vincoli. Clark-Wilson identifica due meccanismi principali per rafforzare l'integrità e il controllo degli accessi: la transazione e la separazione dei compiti.

### Transazioni

Le transazioni ben formate preservano l'integrità di dati e prevengono che utenti li manipolino arbitrariamente. Una transazione di questo tipo è costituita da una serie di operazioni che muovono il sistema da uno stato consistente ad un altro stato consistente.

In questo ambito le transazioni sono una serie di operazioni che consentono di far passare da uno stato consistente ad uno consistente, anche se questa non è andata a buon fine, in quanto deve essere presente un meccanismo di rollback.

### Separazione dei compiti

La separazione dei compiti è necessaria al fine di evitare frodi interne al sistema. Un'operazione, se è completata da una singola persona, è più suscettibile di frodi. Assegnare più mansioni di un'operazione a diversi individui, limita il problema suddetto, in quanto, per portare a termine l'attacco, tutte le persone devono essere d'accordo. Se almeno una persona compie il proprio lavoro correttamente, l'attacco non va a termine.

## Il modello

Alla base del sistema abbiamo quattro entità di base:

* CDI: entità o dati soggetti a vincoli d'integrità (constrained data item);
* UDI: entità o dati non soggetti a vincoli d'integrità (unconstrained data item);
* IVP: procedure che controllano i vincoli d'integrità (integrity verification procedures);
* TP: procedure di trasformazione che portano il sistema da uno stato valido ad un altro stato valido (transformation procedures).

### Le regole

In questo contesto vengono indicate regole di certificazione (Certification rules) e regole di rinforzo (Enforcement rules):

* CR1: Se un IVP è eseguito, deve assicurarsi che tutti i CDI siano in uno stato valido.
* CR2: Una TP deve trasformare un insieme di CDI da uno stato valido ad uno stato valido.
* ER1: Il sistema deve garantire che solo le TP certificate ad operare su determinati CDI svolgano operazioni su di essi.
* ER2: Il sistema deve associare ad ogni TP il CDI su cui può lavorare e l'utente per conto del quale può lavorare su tale CDI.
* CR3: Le relazioni di permesso devono essere basate sulla separazione dei compiti.
* ER3: Il sistema deve autenticare ogni utente che vuole utilizzare una TP.
* CR4: Tutte le TP devono scrivere in appositi CDI di solo accodamento, tutte le operazioni sufficienti a ricostruire le operazioni svolte.
* CR5: Ogni TP che prende in input un UDI può eseguire solo trasformazioni valide, oppure nessuna trasformazione.
* ER4: Solo chi certifica un TP può cambiare la liste delle entità associata a tale TP.
