We describe some general tools and concrete security policies and describe how to implement those policies.
{arcane}See (p3,escrow) for some other policies.
Keeping Secrets
The fence analogy
What do these fences divide? They divide sets of pages and nodes.
Who designs these fences? What are the fence tender's tools? Fence tenders are obviously "above" the rules they enforce.
A fence divides some world into two parts. Does one fence tender need to worry about more than two parts?
What does it mean for a secret to stay on one side of the fence? I think that it is necessary to consider the state of one side of the fence. By state we mean the contents of all of the pages and nodes on that side {existence of process too}. To make this more precise probably requires a more formal description of the Gnosis kernel.
Another attempt is to say that the probabilities of states on one side of a fence are determined by the previous state.
It may be possible to frame arguments about these probabilities even when we don't know how to calculate them!
To illustrate the difficulty it would probably be necessary to make arguments about the effect of the state of the cache at program switch time on the speed of the new program.
A reference monitor is a technique for implementing a security policy. Logically it sits between the subjects of the security policy (in the Gnosis system these would be domains) and the objects of the security policy (in Gnosis domains and segments). On every access the reference monitor checks the access for validity and prevents the invalid ones.
In most cases a reference monitor will want to allow some references to be read only, some to be write only, and some to be read write. In terms of information transfer this means that some references allow transfer of information from outside the domain into it, some allow transfer of information from inside the domain out of it, and some allow transfer in both directions.
Basic applicable Gnosis facilities.
Domains and their start keys, as provided by the Gnosis kernel, inherently transfer information in both directions. This means that a reference monitor that wishes to grant read only access to a domain via a start key will either have to trust the domain not to retain information, or filter all calls thru a trusted front end that minimizes the information leakage.
One way of creating a write only domain is to use a trusted front end. This front end would take the parameters provided by the calling domain and use then to fork off a call to the untrusted domain that is to be write only. It would have to ensure that any key parameters passed were read only (e.g. r/o segments). Some useful cases might be solved by not allowing key parameters. It would immediately return to the caller (passing no information). This would prevent the calling domain from getting information based on the time it takes to do a call.
.(2) Users are prevented from writing information from one compartment to another.
To implement this policy a reference monitor is created with the following facilities:
Information on the available resources and which compartments they are in.
When the user's program, running in the new regime, requests access to a new resource the request is checked by the reference monitor. This check has the following outcomes.
The context level of the object is a subset of the context level of the regime. - Read/only access can be granted.
The access is valid for this user {he held the request capability}, but the context level of the object is outside the context level of the regime. - The context level of the regime is upgraded by making all read/write links out of the context read only. Then the context level of the object is checked against the new context level of the regime. -
If they are different, access is granted read/only.
This statement covers wall banging {(p3,bang)} as well as those means of communication that were designed to allow processes to communicate.
While we wish that all state transitions could be subject to these rules, section (p3,noise) describes some transitions that we have not yet managed to eliminate.
Perhaps this view is not applicable to techniques where a computing object moves from one security level to a higher level as it is affected by information from higher levels.
But we have not solved the original problem yet; we have not provided for the inter world communications that are to be allowed. To do this the real initial program creates from a fourth pile one or more instances of one of the following objects:
If the resulting segment key is given to the top secret world, that world can have no influence on the segment even if the segment has a keeper in the secret world.
To recapitulate the above, we have a program IP that is responsible for enforcing the separation.
There may be several such portals between a pair of levels, perhaps one each for each proprietary data type.
In general, however, I don't see how such portals are distributed after creation.
I suspect that several of these questions will be answered when we have the external specs of a portal.
This requires, in general, ways to run programs with simultaneous access to information in several compartments. If such programs were merely given the combined capabilities of the respective programs of the several compartments, those programs might move information from one compartment to another.
If programs with such combined access can be made to run without influence on the constituent compartments the problem is solved.
Programs that must influence data from the compartments must inherently be trusted. We do not treat the administration of such programs here.
We call this new program environment another compartment. We say that this compartment is above the other two. This relationship between compartments obeys the axioms for lattices invented by mathematicians if we consider two compartments equivalent when they are above the same compartments.
The information diodes described in (p3,diode) can serve our purpose. It now becomes clear, however, that those worlds must be dynamically created.
What keys must a program have that allows it to dynamically create these new lattice members? How do the programs in the new compartment refer to the required information in the lower compartments?
Since the programs in the lower compartments don't know to what use their information is being put or when, they must serve higher compartments by providing factories {(p2,factory)} and signals {(formative,signal)}.
Three objections pertain to this method of security
The policing function is integrated with the already complex data base function so as not to allow independent audit or modification.
Only the classes of security policy anticipated by the data base system builder are available. How many data base systems can support a policy of showing median ages of employees whose salary is less than $35,000 within a specified department?