#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

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:

  Write_parent × childname -> Write_child
        |                          |
        v                          v
   Read_parent ● childname ->  Read_child

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.

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.

Last edited at 2014-03-29T11:42:47Z by daira (previous) (diff)

comment:6 Changed at 2014-04-14T23:14:59Z by daira

We resolved to brainstorm about this in a LAFS Tesla Coils and Corpses session soon.

Last edited at 2014-04-15T01:14:49Z by daira (previous) (diff)
Note: See TracTickets for help on using tickets.