Check out the new USENIX Web site. next up previous
Next: Publishing a directory Up: Implementation issues Previous: Client software

   
Publishing mutually hyperlinked documents

Suppose Alice wants to anonymously publish HTML files A and B. Assume that file A contains a hyperlink to file B. Alice would like the anonymously published file A to retain its hyperlink to the anonymously published file B. To accomplish this, Alice first publishes file B. This action generates a Publius URL for file B, Burl. Alice records Burl in the appropriate location in file A. Now Alice publishes file A. Her task is complete. Alice now wishes to anonymously publish HTML files C and D. File C has a hyperlink to file D and file D has a hyperlink to file C. Alice now faces the dilemma of having to decide which file to publish first. If Alice publishes file C first then she can change D's hyperlink to C but she cannot change C's hyperlink to D because C has already been published. A similar problem occurs if Alice first publishes file D. The problem for Alice is that the content of a file is cryptographically tied to its Publius URL - changing the file in any way changes its Publius URL. This coupled with the fact that file C and file D contain hyperlinks to each other generates a circular dependency - each file's Publius URL depends on the other's Publius URL. What is needed to overcome this problem is a way to break the dependency of the Publius URL on the file's content. This can be accomplished using the Publius Update mechanism described in Section 3.5. Using the update mechanism Alice can easily solve the problem of mutually hyperlinked files. First Alice publishes files C and D in any order. This generates Publius URL Curl for file C and Publius URL Durl for file D. Alice now edits file C and changes the address of the D hyperlink to Durl. She does the same for file D - she changes the address of the C hyperlink to Curl. Now she performs the Publius Update operation on Curl and the newly modified file C. The same is done for Durl and the newly updated file D. This generates Publius URL Curl2 for for file C and Publius URL Durl2 for file D. The problem is solved. Suppose Bob attempts to retrieve file C with Curl. Bob's proxy notices the file has been updated and retrieves the file from Curl2. Some time later, Bob clicks on the D hyperlink. Bob's proxy requests the document at Durl and is redirected to Durl2. The update mechanism ensures that Bob reads the latest version of each document.
next up previous
Next: Publishing a directory Up: Implementation issues Previous: Client software
Avi Rubin
2000-06-13