implement plaintext/crypttext merkle trees #64

Closed
opened 2007-06-07 19:12:29 +00:00 by warner · 2 comments
warner commented 2007-06-07 19:12:29 +00:00
Owner

the "thingA" block (scheduled to be renamed in #62) should include the root hashes of a pair of merkle trees: one computed over the segments of plaintext, and another computed over the segments of crypttext.

This will give us the ability to validate individual segments of plaintext (such that we can detect corrupted encryption keys, or bugs in FEC or decryption). At the moment the only form of validation which can detect such problems is the FileID, which cannot be computed until the entire file has been downloaded.

The hash trees themselves are stored in the Bucket, and accessed with a get/set method pair for each tree. All buckets store the same data.

For a first cut, we'll retrieve all the hashes at the same time. A later enhancement should be to retrieve only the hashes we actually need for any given block, to improve the alacrity.

the "thingA" block (scheduled to be renamed in #62) should include the root hashes of a pair of merkle trees: one computed over the segments of plaintext, and another computed over the segments of crypttext. This will give us the ability to validate individual segments of plaintext (such that we can detect corrupted encryption keys, or bugs in FEC or decryption). At the moment the only form of validation which can detect such problems is the FileID, which cannot be computed until the entire file has been downloaded. The hash trees themselves are stored in the Bucket, and accessed with a get/set method pair for each tree. All buckets store the same data. For a first cut, we'll retrieve all the hashes at the same time. A later enhancement should be to retrieve only the hashes we actually need for any given block, to improve the alacrity.
tahoe-lafs added the
code
minor
enhancement
0.2.0
labels 2007-06-07 19:12:29 +00:00
tahoe-lafs added this to the 0.3.0 milestone 2007-06-07 19:12:29 +00:00
warner commented 2007-06-07 20:37:59 +00:00
Author
Owner

this is fully implemented now (I think changeset:c81f2b01ffc6d6c7 was the last fix). It needs more exhaustive unit tests to exercise the failure cases, but that's not a blocker for 0.2.1.

this is fully implemented now (I think changeset:c81f2b01ffc6d6c7 was the last fix). It needs more exhaustive unit tests to exercise the failure cases, but that's not a blocker for 0.2.1.
warner commented 2007-06-08 04:55:00 +00:00
Author
Owner

ok, I implemented a huge collection of tests for this, and I'm now pretty confident that all the possible error cases are sufficiently exercised.

ok, I implemented a huge collection of tests for this, and I'm now pretty confident that all the possible error cases are sufficiently exercised.
tahoe-lafs added the
fixed
label 2007-06-08 04:55:00 +00:00
warner closed this issue 2007-06-08 04:55:00 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: tahoe-lafs/trac-2024-07-25#64
No description provided.