# Clark-Wilson-Modell

Mit Hilfe des Clark-Wilson-Modells lässt sich die Integrität eines Computersystems beschreiben und umsetzen.
Das Sicherheitsmodell beschreibt die Maßnahmen, welche nötig sind, um ein Computersystem in einem integeren Zustand zu erhalten. Dazu werden Maßnahmen in Bezug auf die Datenschädigung oder auf Datenverluste durch Fehler oder absichtliche Kompromittierung eingeführt. Das Modell beschreibt, wie Daten innerhalb einer datentechnischen Verarbeitung gültig bleiben. Weiterhin spezifiziert es Rechte der einzelnen ausführenden Identitäten sowie Regeln zu Erhaltung und Gültigkeit von Systemressourcen.

## Geschichte

Das Modell wurde 1987 von David D. Clark und David R. Wilson beschrieben. Im Gegensatz zu den aus dem militärischen Bereich stammenden Modellen, wie Bell-LaPadula und Biba-Modell, welche die Anforderungen an Trusted Computer System Evaluation Criteria erfüllen, versucht das Clark-Wilson-Modell, Integrität für kommerzielle Sicherheitssysteme zu spezifizieren. Es lässt sich dabei sehr gut auf Geschäftsprozesse und sonstige Anwendungssoftware anwenden.
Das Clark-Wilson-Modell ist hauptsächlich im Finanzsektor verbreitet. Jeder Mainframe verarbeitet Daten heute nach diesem Modell oder einer Variation desselben.

## Grundlagen

Das Modell beschreibt mittels Einhaltungs- (enforcement) und Zertifizierungsregeln (certification) die informationstechnischen Daten und Prozesse. Diese Regeln bilden die Basis zur Sicherstellung der Integrität eines Systems. Das Modell basiert immer auf einer in sich geschlossenen Transaktion.
* Eine gültige Transaktion ist eine Abfolge von Operationen, welche das System von einem Zustand in den nächsten Zustand bringt. Die Transaktion muss immer atomar sein. Dies bedeutet, dass die Zustandsänderung nur erfolgt, wenn die Transaktion keine Fehler aufweist.
* Im Clark-Wilson-Modell wird die Integrität über die Transaktionskontrolle sichergestellt.
* Das Prinzip der Aufgabenteilung (separation of duty) erfordert, dass der Zertifizierer und der Implementierer einer Transaktion unterschiedlich sind.
Dazu werden folgende Konstrukte verwendet:
* Constrained Data Item (CDI): Daten, auf die das Sicherheitsmodell angewandt werden muss, d. h., die immer in einem gültigen Zustand vorliegen müssen.
* Unconstrained Data Item (UDI): Daten, die (noch) nicht dem Sicherheitsmodell unterliegen, z. B. Daten die nicht integer sein müssen oder Benutzereingaben.
* Integrity Verification Procedure (IVP) stellt sicher, dass alle CDIs in einem System einen gültigen Zustand besitzen.
* Transformation Procedures (TPs) nehmen ein CDI oder ein UDI entgegen und überführt diese in ein neues CDI. Dies wird über eine Zertifizierung gelöst.

## Regeln des Clark-Wilson-Modells
### C1

    Alle IVPs müssen ordnungsgemäß sicherstellen, dass sich zu ihrem Ausführungszeitpunkt alle CDIs in einem gültigen Zustand befinden.

### C2

    Alle TPs müssen zertifiziert sein, d. h., sie müssen ein CDI in einen gültigen Zustand überführen. Für jede TP und die Menge der CDIs die von dieser verändert werden dürfen, muss der Sicherheitsverantwortliche eine Relation diesbezüglich führen. Die Relation besitzt die Form (TP$_i$, (CDI$_a$, CDI$_b$, CDI$_c$, …)) und gibt die Argumente an für die die TP zertifiziert ist.

### E1

    Das System muss eine Liste der Relationen aus C2 führen und sicherstellen, dass ein CDI nur von einer TP verändert werden darf für die es beide eine gemeinsame Relation gibt.

### E2

    Das System muss eine Liste von Relationen der Form (UserID, TP$_i$, (CDI$_a$, CDI$_b$, CDI$_c$, …)) führen, die das Benutzerkonto angibt unter der die TP läuft. Es dürfen nur TPs ausgeführt werden, die einer solchen Relation entsprechen.

### C3

    Die Liste von E2 muss zertifiziert sein unter Beachtung der Aufgabentrennung.

### E3

    Das System muss jeden Benutzer authentifizieren der eine TP ausführen will.

### C4

    Alle TPs müssen zertifiziert sein alle Informationen, die notwendig sind um durchgeführten Operationen zu rekonstruieren, an ein Log anzuhängen. Das Log ist ebenfalls ein CDI und erlaubt es nur Daten anzuhängen.

### C5

    Alle TP die ein UDI als Eingangsdaten verarbeiten müssen zertifiziert sein nur gültige Transaktionen für alle möglichen Werte des UDI durchzuführen, oder sonst gar keine Transaktionen durchzuführen. Ergebnis ist ein CDI.

### E4

    Nur der Zertifizierer darf eine Relationsliste ändern. Entsprechend der Aufgabentrennung darf dieser keine Ausführungsrechte an die von ihm tangierten TPs besitzen.