Lecture notes by Lynette I. Millett
Clark, David D. and Wilson, David R., A Comparison of Commercial and Military Computer Security Policies. Proceedings IEEE Symposium on Security and Privacy, IEEE Computer Society Press. 1987. pp. 184-194.
In 1987 Clark and Wilson examined how businesses manage the integrity of their data in the "real world" and how such management might be incorporated into a computer system. In the commercial world, we need security policies that maintain the integrity of data. In this environment, illegal data modification occurs due to fraud and error. And there are two classical techniques to prevent fraud and error.
The first technique is the use of well-formed transactions. More specifically, we stipulate that data can be changed only by performing well-formed transactions. Users may not manipulate data arbitrarily, but only in constrained ways that preserve or establish its integrity. An example of this is double-entry bookkeeping. This involves making two sets of entries for everything that happens. Another example is the use of logs. Everything that occurs is recorded on a log. For example, rather than erasing mistakes, the sequence of actions that reverses the mistake is performed and recorded on the log. A record of everything that has occurred is maintained. Using well-formed transactions makes it more difficult for someone to maliciously or inadvertently change data.
Another technique to prevent fraud is referred to as separation of duty. Here, operations on data are separated into subparts that must be done by independent parties. This works to maintain integrity as long as there is no collusion between agents working on different subparts. A typical transaction might look as follows:
How can these mechanisms be implemented? In order to restrict what programs a user can execute, the system must authenticate every user (e.g. with passwords.). We also need a way to associate data with the programs that can manipulate it. To meet the "separation of duty" requirement, users need to be associated with programs. Finally, the system needs to maintain an audit log.
A formal description is as follows. We partition the data items into two sets: constrained data items (CDIs) and unconstrained data items (UDIs). In order to satisfy the create vs. certify rule we define integrity verification procedures (IVPs). These are used to confirm that all CDIs conform to the integrity specifications. We insist that well-formed transactions manipulate only CDIs. Such transactions can also turn UDIs into CDIs. We postulate transformation procedures (TPs) as a way to manipulate CDIs. If a CDI starts in an "integrity" state, then running a TP on that CDI leaves it in that state. The rules can be formalized as follows: