Part A: In the absence of a file server, what kind of protocol would you propose to use in an all-cache file system when a user program opens a file?
The Answer: The key questions that must be addressed by the protocol are file naming, file location, and file system coherency. Because there is no central file server, file names must not relate to the position of a file in the system; instead, file names must be unique identifiers that are the same for all copies of the file anywhere in the system. Files may move freely in such a system, so the problem of locating a file is complicated, possibly involving falling back on a broadcast request for the machines holding copies of the file to identify themselves.
Part B: Can you propose a way to deal with the problem of incoherency that results when multiple processes open a file for write access?
An Answer: One solution is to invalidate all other copies of a file when one copy is updated, or when one copy is opened for writing. In all versions of this answer, the result of modifying a file is that one copy survives on some machine, and that machine acts as a file server for all users of that file until new copies are made. Such solutions probably require something akin to an election to be held to determine which copy survives when there are competing copies that could be used. Such solutions also probably require a protocol to allow users to dynamically change servers, in the event that the copy of the file they are using is invalidated.
Another Answer: When a process opens a file for write access, the open protocol finds the locations of all copies of the file. With this scheme, all write operations involve duplicate updates of every copy. Updates must be serialized identically for every copy of the file, so that if two update messages from different clients arrive at two copies in different orders, they are reordered and applied in the same order. Group communications protocols are typically needed to solve this problem.
The Answer: In all of the following, R' is the set of rights the system thinks the user has presented.
Part B: For each of the above, what must the user accomplish in order to defeat the system?
The Answer:
Part C: There is something fundamentally wrong with all of the above alternatives. What?
The Answer: None of the above schemes provided the system a way to unbreakably associate a set of rights with the identity of an object. This was hinted at by the comment: ``If the system somehow can remember the value of N that was issued.''
In fact, this can be solved for the those schemes that use N by breaking N into two fields, where one is used to identify the resource to which the rights apply and the other is used by the server to check for validity. In this case, scheme 6 fails to be secure because the plaintext of N is disclosed to the user, and scheme 2 is dangerous if the user manages to crack the encryption. On the other hand, if scheme 6 is modified to only disclose the resource identifier and not the validity check, it can be used as the basis of a secure system.