[tahoe-dev] [tahoe-lafs] #959: tahoe-lafs objects
tahoe-lafs
trac at allmydata.org
Mon Mar 8 17:56:28 PST 2010
#959: tahoe-lafs objects
-------------------------+--------------------------------------------------
Reporter: warner | Owner: nobody
Type: enhancement | Status: new
Priority: major | Milestone: 2.0.0
Component: unknown | Version: 1.6.0
Keywords: | Launchpad_bug:
-------------------------+--------------------------------------------------
Comment(by jsgf):
I was thinking of a simpler scheme to distribute code around a grid:
validation of writes/updates to enforce the syntax of files (such as
directories). The code would be stateless, and have the only side-effect
of either accepting or rejecting an update.
At present this would be useful for: 1) enforcing the syntax of an
immutable file, and 2) enforcing correctness updates to immutable files.
It would be even more useful with append-only files, since you could
enforce new updates to be consistent with what's already present.
Ideally it would be run on each storage server as part of the decision to
accept/reject an incoming share, but this has a couple of obvious
problems: a) the server doesn't gave keys, so can't decrypt incoming
content; b) even if it did, erasure encoding means that a given share
can't be decrypted in isolation anyway; c) and even then, the validator
could only be sure of inspecting a single segment. (But if you're
fetching other shares of a given segment, then fetching other segments may
not be a problem.)
It could also be run on a local gateway, to validate outgoing and incoming
changes, which simplifies the problem. But this wouldn't prevent illegal
updates from ill-behaved clients to immutable files.
A thought on how these validation functions might be implemented. The
obvious would be to have something like:
if (valid(file)) then accept() else reject();
but perhaps it might be more interesting to do something like include the
output of the validator in the file hash, so the validity is more deeply
baked in:
H = hash(file + validity(file))
And a merkle tree would allow you to validate/express validity for parts
of the file rather than the whole thing (which is especially interesting
if the leaves of the tree correlate to synatactic boundaries of the file
rather than just splitting at particular byte boundaries).
But I don't know if that would let you express all the interesting things
one would want to express.
There's some overlap with Schneier's idea of Clueless Agents:
http://www.schneier.com/paper-clueless-agents.html
--
Ticket URL: <http://allmydata.org/trac/tahoe/ticket/959#comment:8>
tahoe-lafs <http://allmydata.org>
secure decentralized file storage grid
More information about the tahoe-dev
mailing list