From Robin's Wiki

RobinsStuff: DistributedDocuments

Distributed Documents

Synopsis

This is an idea I had a while ago that I wrote up on Slashdot but can't find any more. The idea is to implement a document distribution system which allows the author to send a key of some type out to the intended recipients. This key contains the information required to access the document. However, the initial setup by the author allows certain restrictions to be placed, such as editing and printing. The end user has an authentication key of some type that proves they are who they say they are. The initial author of the document can specify who can do what with the document. Examples of permissions that can be granted on a user-by-user bases are:

It is important to keep in mind that the first three are server-controlled permissions. They can be guaranteed to be enforced, whereas the latter two are client-side, and so really can only be relied on to reduce the chance of this happening accidentally. The authentication/authorisation will use a public/private key system.

An additional feature of this is that it enables documents to expire after a certain date.

Implementation overview

This could be done with a simple client-server mechanism. The key is given to the viewer (e.g. OpenOffice), OpenOffice looks at the key, works out from it what server to ask and the ID of the document, connects to the server, and asks for the document. The server may ask for authentication, and if OpenOffice provides it correctly, the document is returned, with flags specifying the client-side security attributes. A similar process is used if the user attempts to update the document on the server.

More details

This demonstrates the process the client goes through in requesting a document:

From the servers point of view, this is what is happening:

Uses

This type of system could be used to distribute potentially sensitive documents within an organisation. The saving and printing restrictions prevent accidental disclosure, and the authorisation system prevents people seeing it who shouldn't. As the document is stored on a central server, people are always confident of having the latest version. If someone with authority to do so saves changes to the server, then everyone requesting the document after that gets those changes. A facility could be included to allow the client to periodically check for updated versions. If a particular document becomes useless after a certain point in time, or it is sensitive enough that people should have even more restricted access to it, the server can be told to change the permissions on it after a certain point in time. The reverse could be useful: if a document is going to be useful, it can be worked on by a small group of people until the time it is supposed to be released, at which point the permissions are changed to make it open to all.

Extras

Some other ideas that could be used in conjunction with this:

Retrieved from http://www.kallisti.net.nz/RobinsStuff/DistributedDocuments
Page last modified on January 13, 2005, at 01:48 AM