(21 points) A network in the College of Engineering is set up so that individual hosts (really, virtual machines) can run HTTP (web) servers that are available to the outside. (Here, available means the ability to read and write data.)
The hosts can also run email (SMTP) servers available
to other hosts on the CoE network, but these are not
available to the outside. Instead, all outside mail is routed to a machine
named “smtphost”, which forwards it to the internal host, and all internal
mail addressed to external hosts is routed to “smtphost”, which forwards it to the destination.
There are no other servers available to the outside on “smtphost”.
Please model this using an access control matrix.
Use three hosts, “smtphost”,
“innie” for a host on the CoE network, and
“outie” for an outside host.
Don’t forget to include the HTTP servers!
Write a command that allows “innie”
to exchange email directly with “outie”,
bypassing “smtphost” entirely.
Now consider a second host called
“reallyinnie” on the CoE network.
This host has just been added to the network and has no rights initially.
Write a command that gives it the ability to send email to
“outie” if, and only if, “innie”
can send mail directly to “outie”.
(21 points) Suppose Alice has r and w rights over the file book.
Alice wants to copy r rights to book to Bob.
Assuming there is a copy right c, write a command to do this.
Now assume the system supports a copy flag; for example, the right r with the copy flag would be written as rc. In this case, write a command to do the copy.
In the previous part, what happens if the copy flag is not copied?
(29 points) Theorem 3.1, used in the proof of Theorem 3.1, states: “Suppose two subjects s1 and s2 are created and the rights in A[s1, o1] and A[s2, o2] are tested. The same test for A[s1, o1] and A[s1, o2] = A[s1, o2] ∪ A[s2, o2] will produce the same result.” Justify this statement. Would it be true if one could test for the absence of rights as well as for the presence of rights?
(29 points) Prove or give a counterexample:
The predicate can•share(α, x, y, G0) is true if and only if there is an edge from x to y in G0 labeled α, or if the following hold simultaneously.
There is a vertex with an s-to-y edge labeled α.
There is a subject vertex x′ such that x′ = x or x′ initially spans to x.
There is a subject vertex s′ such that s′ = s or s′ terminally spans to s.
There is a sequence of subjects x1 …, xn with x1 = x′, xn = s′, and xi and xi+1 (1 ≤ i < n) being connected by an edge labeled t, an edge labeled g, or a bridge.