#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

I guess what this is asking for would be the unwritten doc "#1: Share Format, Encoding Algorithm" described in source:docs/specifications/outline.txt .

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)
Note: See TracTickets for help on using tickets.