Opened at 2010-01-22T08:11:13Z
Last modified at 2021-03-30T18:40:19Z
#925 assigned defect
Information leak to holders of a directory read cap, about whether each dir entry is writeable — at Initial Version
Reported by: | davidsarah | Owned by: | |
---|---|---|---|
Priority: | normal | Milestone: | soon |
Component: | code-dirnodes | Version: | 1.5.0 |
Keywords: | backward-compatibility privacy security | Cc: | zooko |
Launchpad Bug: |
Description
The encryption of the rw_uri of a dirnode with the writekey of its directory is done in CTR mode, and is length-preserving (excluding the added salt and MAC tag which are fixed-length). This leaks the length of the plaintext rw_uri to a holder of the directory read cap. This is a relatively minor information leak, but it does reveal whether the object pointed to by each dirnode entry would be writeable to someone with the directory write cap -- if not then the ciphertext excluding salt and MAC will be zero-length.
(The directory readcap holder necessarily knows whether or not the object pointed to by the dirnode entry is mutable -- but if it is, then they don't have any need to know whether it is writeable.)
Padding to a fixed length could solve this, but there would be a backward-compatibility problem, because the padding would break earlier storage clients who wouldn't be expecting it. Starting from Tahoe-LAFS 1.6, we could address that by making _unpack_contents strip spaces from the front and end of the decrypted rw_uri, for example. That would potentially allow some future version to pad the URI with spaces to a fixed length.