added secret to protect convergent encryption from confirmation-of-a-file and learn-partial-information attacks #365
Labels
No Label
0.2.0
0.3.0
0.4.0
0.5.0
0.5.1
0.6.0
0.6.1
0.7.0
0.8.0
0.9.0
1.0.0
1.1.0
1.10.0
1.10.1
1.10.2
1.10a2
1.11.0
1.12.0
1.12.1
1.13.0
1.14.0
1.15.0
1.15.1
1.2.0
1.3.0
1.4.1
1.5.0
1.6.0
1.6.1
1.7.0
1.7.1
1.7β
1.8.0
1.8.1
1.8.2
1.8.3
1.8β
1.9.0
1.9.0-s3branch
1.9.0a1
1.9.0a2
1.9.0b1
1.9.1
1.9.2
1.9.2a1
LeastAuthority.com automation
blocker
cannot reproduce
cloud-branch
code
code-dirnodes
code-encoding
code-frontend
code-frontend-cli
code-frontend-ftp-sftp
code-frontend-magic-folder
code-frontend-web
code-mutable
code-network
code-nodeadmin
code-peerselection
code-storage
contrib
critical
defect
dev-infrastructure
documentation
duplicate
enhancement
fixed
invalid
major
minor
n/a
normal
operational
packaging
somebody else's problem
supercritical
task
trivial
unknown
was already fixed
website
wontfix
worksforme
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Reference: tahoe-lafs/trac-2024-07-25#365
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Per the discussion on tahoe-dev, p2p-hackers, cryptography, we're going to make a
chk_secret
file that lives in$BASEDIR/private
, and mix the contents of that file into the symmetric encryption key when doing content-hash keying.If you don't want to use a chk secret at all, thus doing traditional convergent encryption, then you accomplished this by writing the empty string into the
chk_secret
file (making it a zero-length file). If there is nochk_secret
file at all, it will treat it as if it had the empty string.http://allmydata.com plans to make their customers'
chk_secrets
be generated from a tagged hash of the customers' root directory capability, thus giving convergence across all files upload by the same customer.Brian and I already wrote code for this and unit tests, but it hasn't been double-checked and committed. Also the version we wrote had an unnecessary complication of treating the absent
chk_secret
file differently than the zero-lengthchk_secret
file, so I want Brian's opinion about the design proposed in this note before I commit it.I'm sorry -- what we plan is not to interpret an empty
chk_secret
file as being the same as a zero-length chk added secret, but rather, if there is nochk_secret
file, to create a new random secret and put it in the file.This is the way to get a random secret for use as a chk added secret.
It means that rm'ing the
private/chk_secret
file will cause the automatic generation of a new one the next time you start your node, but zeroing it out (i.e., rm'ing it and then touching it) will cause the use of the zero-length chk added secret.Make sense? Any objections?
Let's discuss this more.. the last plan that I'd put any thought into was to have the allmydata.com "install wizard" write a secret into that file, rather than having the node create one by itself. It's a question of defaults.
We have to decide if we want to turn off convergence for all users, or turn it off for allmydata.com users and give pure-tahoe users the information to make that decision for themselves.
My friend Drew Hess came up with another concern with publishing hashes of your files: if you've installed some network-accessible service (say, phpbb, or a database of some sort), and the default configuration uses some well-known password (like "admin"), then publishing a hash of the unmodified config file is equivalent to telling the world that you are running this vulnerable configuration.
These files might be of moderate size, so any heuristic which tries to decide whether convergence is safe or not needs to take these files into account. In addition, if the user edits the config file to replace the default password with some low-entropy string, then the guess-partial-information attack applies, as the attacker hashes a dictionary of passwords into that portion of the config file and looks for a match.
Fixed by changeset:29b844efaf7f2eee and changeset:3b7b1932a9869cac. However, the way to control your node's convergent-encryption behavior (see description in comments above) hasn't yet been written into source:docs/configuration.txt.
documentation added by changeset:4b46f1cd5368820f
The patches that fixed this are now listed in the trac changeset timeline as changeset:fc3bd0c9871c7674 and changeset:29b844efaf7f2eee, and the documentation was added in changeset:7f14b933411ff43b.