The way I see it, a protection system is a formal expression of a security policy. One way to model a protection system is with the use of an Access Control Matrix. In their foundational work, Harrison, Ruzzo, and Ullman, provide proofs about the safety of protection systems modelled using an access control matrix. The results were surprising: they showed that a specific type of protection system could be proved safe within bounded time, however, the proof of safety for an arbitrary protection system is undecidable.
Configuration. An access control matrix based protection system can be represented by a configuration , where
is the set of subjects (active entities like processes),
is a set of objects that includes everything in
plus inactive entities like files, and
is the access control matrix with a row for every subject in
and a column for every object in
. An example is shown below:
| process 1 | process 2 | file 1 | |
| process 1 | read,write,own,execute | read | own,read,write |
| process 2 | write | read,write,own,execute | read |
In the above matrix P[process1,file1] = {own,read,write} is a list of rights that process1 has over file1.
Commands. In a protection system, the create command creates a subject or object. The enter command grants a right (read, write, own, or execute) to a subject s for a particular object o. Granting involves appending the new right to the existing list of rights P[s,o]. The delete command deletes a right from P[s,o]. The execution of each command changes the configuration of the system from some to some
.
Leak. A right r is considered to be leaked if it gets added to the list of rights for a subject that did not have that right before. Leaking does not include the situation in which the owner explicitly grants the right r for an object to someone else.
Safety. The safety of a protection system is stated with respect to a particular right (like read, write, own). A protection system is considered safe with respect to a right r, if r cannot be leaked.
Mono-operational. A type of protection system where the commands are made up of a single operation (e.g. enter sets only one right at a time, create creates one subject or object, etc.)
Theorem 1. There is an algorithm which decides whether or not a given mono-operational protection system and initial configuration is unsafe for a given right r.
Proof Outline. This proof shows that there is a minimal sequence of commands — specifically one that starts with a create or enter command and is followed by a chain of enter commands — that leaks the right r. However, If right r is never leaked — that is the system is safe — then there is a maximum bound on the length of that chain of enter commands. In either case, the algorithm decides the safety of the system with respect to right r in a finite amount of time.
Preliminaries. We can model the changes in the configuration of the protection system with time as a series of state transitions. For example, you start with an initial state (or configuration) . Then, the execution of a command like enter or create would change the state of the system to
. This will continue as commands get executed one after another. We can write this as:
(1)
Proof by contradiction. If the right r is leaked, then we can consider the above as the minimal sequence of commands , after which, command
leaks right r from
. Notice that
must be an enter command because that’s the only command that sets rights.
Claim. is a create or enter command and
is a chain of enter commands.
is a delete or destroy command: If
deletes a subject or object that is not accessed by the subsequent enter commands, then
can be removed and the right r will still be leaked. The difference is that the right will be leaked from some state
rather than
. Now note that
could not have deleted a subject or object that is accessed by a subsequent enter command because that would result in an invalid sequence in which state
could have never been reached.
is a create subject command and
OR
is a create object command: Remember that
is the last non-enter command and thus, commands
are all enter commands. Now, if
creates an object, then we know that
otherwise commandÂ
would not have a subject from which to leak the right r. Given that there is at least one existing subject before
executes, we can simply remove this command and substitute the created object with some existing subject in
. Since the subsequent commands are all enter commands, they will simply act on the substitute subject rather than the object. Furhter, the enter commands on the substitue subject will not interfere with the leakage of right r (do we know this for sure? feel free to comment). Now, if
creates a subject and
, then we can do the same thing — remove $C_n$ and replace the created subject in subsequent commands with an existing subject in
. Thus, we again have a shorter sequence that leaks the right r, contradicting the fact that (1) is a minimal sequence.
- Otherwise,
is a create subject command and
: Notice that
because for this “proof by contradiction” we already started with the assumption that the sequence resulting when
is not possible. So,
. Now, since
, all create commands prior to
must be create object commands. Further, since
is the last non-enter command, it must be the one creating the subject — say, s — from which the right r is leaked eventually. Notice that we can safely remove all create object commands prior to
and replace the created objects in subsequent enter commands with s, thus again, getting a shorter sequence of commands in which the right r is leaked.
Now that we have established the minimal sequence of commands when the right r is leaked, we will show that the same sequence of commands has an upper bound when the right r is not leaked. The reason for the upper bound is that after the first create command, the subsequent enter commands won’t enter a right r’ into a cell of the access control matrix that already has r’. Thus, eventually the rights in the access control matrix will be saturated and the algorithm will end. ♦
So how does the algorithm work? It creates a subject and then tries all possible combinations of rights in the remaining sequence of enter commands. The upper bound m on the command sequence length when the right r is not leaked is given by:
(2)
where g is the number of rights. (2) basically says that a maximum of one additional subject may need to be created and the enter commands need to try all rights on all possible combinations of subjects and objects.
