Opened at 2013-01-23T16:42:11Z
Last modified at 2014-04-15T01:14:49Z
#1906 new enhancement
constant-time directory lookup
Reported by: | davidsarah | Owned by: | davidsarah |
---|---|---|---|
Priority: | normal | Milestone: | undecided |
Component: | code-dirnodes | Version: | 1.9.2 |
Keywords: | performance directory database newcaps research | Cc: | |
Launchpad Bug: |
Description (last modified by daira)
Currently to look up an entry in a directory, it is necessary to download the whole file backing the directory, then decode it to find the correct child. This takes linear time in the number of entries.
Suppose that the secret cryptovalue of each child were derived from the cap of the parent directory and the child name. Then, provided that the metadata is not needed, it is possible to obtain the child directly rather than via the parent. (If that child does not exist, we can't distinguish that from missing shares, but that isn't necessarily a problem.)
Note that this makes directories more useful for some database-like applications, rather than just as filesystem directories per-se.
Change History (6)
comment:1 Changed at 2013-01-23T16:45:05Z by davidsarah
- Description modified (diff)
comment:2 Changed at 2013-02-03T21:20:43Z by davidsarah
- Keywords research added
comment:3 Changed at 2013-03-03T00:36:51Z by davidsarah
The nearest I got was this: if readcap = gwritecap in some cryptographic group, then × can be multiplication by H(childname) modulo the group order, and readcap ● childname can be readcapH(childname). But then × is not one-way.
comment:4 Changed at 2013-03-03T00:52:12Z by davidsarah
... and the same problem applies to attempts to use partially homomorphic encryption schemes - for all of the schemes I'm aware of, the operation to combine plaintexts is not one-way.
comment:5 Changed at 2014-03-29T11:42:29Z by daira
- Description modified (diff)
Reminder to self: try a pairing-based cryptosystem.
comment:6 Changed at 2014-04-14T23:14:59Z by daira
We resolved to brainstorm about this in a Tahoe Dev Chat soon.
A complication is that it must be possible to derive both the child writecap from the parent writecap and childname, and the child readcap from the parent readcap and childname. This requires the following diagram to commute:
where the downward arrows, '×', and '●' are feasibly computable but one-way operations. This seems like some kind of homomorphic encryption, but the constructions I've tried so far don't quite work.