[tahoe-lafs-trac-stream] [tahoe-lafs] #308: add directory traversal / deep-verify capability?

tahoe-lafs trac at tahoe-lafs.org
Tue Jan 22 14:09:46 UTC 2013


#308: add directory traversal / deep-verify capability?
-------------------------+-------------------------------------------------
     Reporter:  warner   |      Owner:
         Type:           |     Status:  new
  enhancement            |  Milestone:  2.0.0
     Priority:  major    |    Version:  0.7.0
    Component:  code-    |   Keywords:  vdrive newcaps verify repair
  dirnodes               |  privacy anonymity research
   Resolution:           |
Launchpad Bug:           |
-------------------------+-------------------------------------------------
Changes (by zooko):

 * keywords:  vdrive newcaps verify repair privacy anonymity => vdrive
     newcaps verify repair privacy anonymity research


Old description:

> We might split our current three-level directory capability structure
> (write,
> read, verify) into four levels: write, read, traverse, verify. The
> 'traverse
> cap' would be able to access the traverse cap of child directories, and
> the
> verify cap of child files. It would not be able to read child names.
>
> The issue is that, at present, the verifier manifest (a set of verifier
> caps
> for all files and directories reachable from some root) can only be
> generated
> by someone who holds a readcap for the root. This manifest generation
> cannot
> be safely delegated to some other party (such as a central allmydata
> server).
> So we're forced to decide between having customers expose their files to
> us
> (by giving us their root readcap) or being required to create their
> manifest
> (for file checking/repair) on their own.
>
> If we had traversal caps, then customers could give us the traversal cap
> instead of their read cap. We could still see the shape of their
> filesystem
> (and probably the length of their filenames, and the size of their
> files),
> but perhaps that would be little enough exposure that customers would be
> comfortable with revealing it. In exchange, we could provide the service
> of
> keeping all their files checked and repaired with less effort on their
> part,
> even when they leave their node offline for months at a time.
>
> The implementation would require a couple of pieces:
>
>  * dirnode capabilities would need to have a four-level structure.
> Writecaps
>    beget readcaps. Readcaps beget traversecaps. Traversecaps beget
>    verifycaps.
>  * I think this means that mutable file caps need an extra intermediate
> layer
>    as well: this is tricky, and will require some staring at the DSA
> mutable
>    file diagram to find a place that could accomodate it.
>  * Each edge entry contains five child items: (name, writecap, readcap,
>    traversecap, metadata)
>  * 'name', 'readcap', and 'metadata' are encrypted with a key derived
> from
>    the dirnode's readcap.
>  * 'writecap' is encrypted with the dirnode's writecap.
>  * 'traversecap' is encrypted with the dirnode's traversecap
>
> When we do DSA dirnodes, we should take advantage of the compatibility
> break
> to implement something like this. I suspect it will require changes to
> the
> DSA scheme as well.
>
> (there is probably a better name for this concept.. "walk cap"? "manifest
> cap"? "deep verify cap"?)

New description:

 We might split our current three-level directory capability structure
 (write,
 read, verify) into four levels: write, read, traverse, verify. The
 'traverse
 cap' would be able to access the traverse cap of child directories, and
 the
 verify cap of child files. It would not be able to read child names.

 The issue is that, at present, the verifier manifest (a set of verifier
 caps
 for all files and directories reachable from some root) can only be
 generated
 by someone who holds a readcap for the root. This manifest generation
 cannot
 be safely delegated to some other party (such as a central allmydata
 server).
 So we're forced to decide between having customers expose their files to
 us
 (by giving us their root readcap) or being required to create their
 manifest
 (for file checking/repair) on their own.

 If we had traversal caps, then customers could give us the traversal cap
 instead of their read cap. We could still see the shape of their
 filesystem
 (and probably the length of their filenames, and the size of their files),
 but perhaps that would be little enough exposure that customers would be
 comfortable with revealing it. In exchange, we could provide the service
 of
 keeping all their files checked and repaired with less effort on their
 part,
 even when they leave their node offline for months at a time.

 The implementation would require a couple of pieces:

  * dirnode capabilities would need to have a four-level structure.
 Writecaps
    beget readcaps. Readcaps beget traversecaps. Traversecaps beget
    verifycaps.
  * I think this means that mutable file caps need an extra intermediate
 layer
    as well: this is tricky, and will require some staring at the DSA
 mutable
    file diagram to find a place that could accomodate it.
  * Each edge entry contains five child items: (name, writecap, readcap,
    traversecap, metadata)
  * 'name', 'readcap', and 'metadata' are encrypted with a key derived from
    the dirnode's readcap.
  * 'writecap' is encrypted with the dirnode's writecap.
  * 'traversecap' is encrypted with the dirnode's traversecap

 When we do DSA dirnodes, we should take advantage of the compatibility
 break
 to implement something like this. I suspect it will require changes to the
 DSA scheme as well.

 (there is probably a better name for this concept.. "walk cap"? "manifest
 cap"? "deep verify cap"?)

--

-- 
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/308#comment:15>
tahoe-lafs <https://tahoe-lafs.org>
secure decentralized storage


More information about the tahoe-lafs-trac-stream mailing list