Opened at 2009-12-20T20:28:32Z
Last modified at 2011-09-07T22:28:22Z
#865 new task
Document current crypto and encoding in detail
Reported by: | davidsarah | Owned by: | ioerror |
---|---|---|---|
Priority: | major | Milestone: | eventually |
Component: | documentation | Version: | 1.5.0 |
Keywords: | docs security | Cc: | |
Launchpad Bug: |
Description (last modified by zooko)
Other than the code, the most comprehensive description of Tahoe's current crypto and erasure encoding that I'm aware of is the Storage Security and Survivability Workshop 2008 paper: http://tahoe-lafs.org/~zooko/lafs.pdf. However, that paper does not give the level of detail required for a spec or for a thorough security analysis (for example, it doesn't specify encryption modes or the encoding of inputs to crypto primitives).
This is an obstacle to designing the new crypto, since we don't want to lose features (unless we drop them deliberately) or make mistakes that were avoided in the original design.
Change History (7)
comment:1 Changed at 2009-12-20T22:12:10Z by davidsarah
comment:2 Changed at 2009-12-21T03:45:55Z by davidsarah
As an example of the kind of detail I'm looking for, generating a convergent encryption key for an immutable file would be:
key = SHA256d( netstring("allmydata_immutable_content_to_key_with_added_secret_v1+" ++ netstring(convergence) ++ netstring("%d,%d,%d" % (k, n, segsize))) ++ plaintext)
comment:3 Changed at 2009-12-22T04:43:23Z by warner
yeah, I've been meaning to write this up for a year and haven't gotten around to it. In general, we've been too dependent upon using code as a specification tool.. as the code gets rearranged (for performance reasons, mostly), it becomes less useful as a form of documentation.
I'm actually looking to build two docs: a text one that extracts the crypto and protocol pieces from the current code, and a diagram one that parallels davidsarah's excellent "Elk Point" proposals. I want to be able to compare the features and complexity of our current encoding format against other proposals, and having similar-format pictures for all of them would help that a lot.
comment:4 Changed at 2010-02-01T19:52:16Z by davidsarah
- Milestone changed from undecided to 1.7.0
comment:5 Changed at 2010-03-06T02:58:27Z by zooko
- Owner changed from somebody to ioerror
comment:6 Changed at 2010-05-08T19:22:46Z by zooko
- Milestone changed from 1.7.0 to eventually
comment:7 Changed at 2011-09-07T22:28:22Z by zooko
- Description modified (diff)
I guess what this is asking for would be the unwritten doc "#1: Share Format, Encoding Algorithm" described in source:docs/specifications/outline.txt .