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: Publishing a directory
Up: Implementation issues
Previous: Client software
Avi Rubin
2000-06-13