end-to-end encoding self-test #406
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
3 Participants
Notifications
Due Date
No due date set.
Reference: tahoe-lafs/trac-2024-07-25#406
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?
Figure out what is going on with Ben Laurie's Tahoe node on his FreeBSD-6 using the public Test Grid, make it reproducible if possible in the unit tests, fix it.
Milestone 1.0.1 deleted
See tahoe-dev:
http://allmydata.org/pipermail/tahoe-dev/2008-May/000542.html
I'll read over the thread more closely and see if I can reproduce the problem locally.
I had first thought that it might just be the cap being corrupted, but that doesn't seem likely, given that the storage index is derived from the read-key.
ah, ok, pycryptopp vs the stack. nevermind.
I'm working on adding "end to end" decryption, decoding, and parsing checks, i.e. in source:src/allmydata/test/test_encode.py upload some known-good, fixed ciphertext instead of encrypting, and likewise for SSK's and dirnodes.
data corruption (integrity failure) bug on Ben Laurie's machineto end-to-end encoding self-testThe next step is to see what tahoe on Zandr's lenny-armel box does. The pycryptopp on that box seems to be giving incorrect decryption. Do the unit tests of tahoe on that box detect this misbehavior from pycryptopp?
Assigning this to Zandr in case he wants to look at it before the next time I circle around and log into his Linksys NAS box...
The hope is that when tahoe is used with a broken pycryptopp that gives wrong answers, that the tahoe unit tests fail.
Some tests on Zandr's lenny-armel box do indeed fail, such as
allmydata.test.test_system.SystemTest.test_upload_and_download_random_key
. See the buildbot results: http://allmydata.org/buildbot/builders/Zandr%20Lenny-armel/builds/37/steps/test/logs/stdio . However, these are failing because encrypting a string and then decrypting the ciphertext doesn't yield the original string. A subtler bug (and one that we've had before in pycryptopp) is when encrypting the string and decrypting the ciphertext does yield the original string, but only when you use the same (buggy) code for both encryption and decryption. This ticket is to add a "test vector", for example a fixed ciphertext, computed with a known-good implementation of AES and then hardcoded into the test file as a string literal, and assert that when you decrypt that fixed ciphertext you get the correct plaintext.I'm making some progress on this, but it doesn't need to be done before Tahoe-LAFS v1.6.
Our tests are in general quite comprehensive, but this is a glaring omission.
I think we might have some tests to detect this now. Here's how to find out: mock out the AES class from pycryptopp (which is used in the [immutable upload]source:src/allmydata/immutable/upload.py@4164#L441, [mutable publish]source:src/allmydata/mutable/publish.py@4164#L400, [immutable download]source:src/allmydata/immutable/download.py@4248#L45, and [mutable retrieve]source:src/allmydata/mutable/retrieve.py@4126#L518).
…and then set the mock to encrypt-decrypt wrongly but consistently and then see if any tests fail.
Oh, and I guess this is also half of the job of writing the tests that we need! (If they aren't already there.) Shouldn't be too hard...
I'm demoting this from
critical
tomajor
, since there are other urgent known-bugs (mostly in mutables) that are markedcritical
and this ticket, while certainly important, hasn't been touched in years.