Outline for April 3, 2003
- Principle of Complete Mediation
- All accesses must be checked
- Forces system-wide view of controls
- Sources of requests must be identified correatly
- Source of problems: caching (because it may not reflect the
state of the system correctly); examples are race conditions, DNS
poisoning
- Principle of Open Design
- Designs are open so everyone can examine them and know the
limits of the security provided
- Does not apply to cryptographic keys
- Acceptance of reality: they can get this info anyway
- Principle of Separation of Privilege
- Require multiple conditions to be satisfied before granting
permission/access/etc.
- Advantage: 2 accidents/errors/etc. must happen together to
trigger failure
- Principle of Least Common Mechanism
- Minimize sharing
- New service: in kernel or as a library routine? Latter is
better, as each user gets their own copy
- Principle of Psychological Acceptability
- Willingness to use the mechanisms
- Understanding model
- Matching user's goal
- ACM and primitive operations
- Go over subjects, objects (includes subjects), and state
(S, O, A) where A is ACM
- Transitions modify ACM entries; primitive operations follow
- enter r into A[s,o]
- delete r from A[s,o]
- create subject s' (note
A[s',x] = A[x,s'] = NULLSET
for all x)
- create object o' (note
A[x,o'] = NULLSET for all x)
- destroy subject s'
- destroy object o'
- Commands
- command
c(s1, ..., sk,
o1, ..., ok)
if r1 in
A[s1, o1] and
r2 in
A[s2, o2] and
...
rm in
A[sm, om]
then
op1;
op2;
...;
opn;
end.
- Example 1: creating a file
command create_file(p, f)
create object f;
enter Own into
A[p, f]
enter Read into
A[p, f]
enter Write into
A[p, f]
end.
- Example 2:granting one process read rights to a file
command grant_read(p, q, f)
if Own in A[p, f]
then
enter Read into
A[q, f]
end.
- What is the safety question?
- An unauthorized state is one in which a generic right r
could be leaked into an entry in the ACM that did not previously contain
r. An initial state is safe for r if it cannot lead to a
state in which r could be leaked.
- Question: in a given arbitrary protection system, is safety
decidable?
- Mono-operational protection systems: decidable
- Theorem: there is an algorithm that decides whether a given
mono-operational system and initial state is safe for a given generic
right.
Proof: finite number of command sequences; can eliminate delete,
destroy.
Ignore more than one create as all others are conditioned on
access rights in the matrix. (One exception: no subjects; then we need
one create subject).
Bound: s number of subjects (possibly one more than in original),
o number of objects (same), g number of generic rights; number of
command sequences to inspect is at most
2g(s+1)(o+1) + 1.
- General case: It is undecidable whether a given state of a given
protection system is safe for a given generic right.
- Represent TM as ACM; reduce halting problem to it
This is available in Postscript
and PDF.