implement plaintext/crypttext merkle trees #64

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

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.
warner added the
code
minor
enhancement
0.2.0
labels 2007-06-07 19:12:29 +00:00
warner added this to the 0.3.0 milestone 2007-06-07 19:12:29 +00:00
warner self-assigned this 2007-06-07 19:12:29 +00:00
Author

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.
Author

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.
warner added the
fixed
label 2007-06-08 04:55:00 +00:00
Sign in to join this conversation.
No Milestone
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

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