[tahoe-dev] change to storage layout

Jim McCoy jim.mccoy at gmail.com
Thu Feb 14 20:21:48 UTC 2008


I case you don't remember why base64 was a bad idea way back when, you
are setting yourself up for a heaping helping of woe here.  The OS X
HFS+ filesystem is case-insensitive, case-preserving, so you are going
to hit failures that will take you forever to figure out on the mac.
[It does open up a fun attack-vector though - create blobs that are
similar to ones you have received but differ only in the case of at
least one alpha element of the base62-encoded hash (much easier to
brute-force) and send these out to silently replace the ones you
received for every Mac user on the network]

def brute_case(ListOfBase62SIs):
    hosed = None
    lc_shares = dict([(string.lower(X), X) for X in ListOfBase62SIs])
    while hosed is None:
        (id, data) = generate_random_string_and_return_it_with_hash()
        if string.lower(base62.b2a(id)) in lc_shares:
            hosed = (id, data)
    print "%s (hash %s) stomps on %s, you fail." % (data, id, lc_shares[id])




On Thu, Feb 14, 2008 at 6:00 AM, zooko <zooko at zooko.com> wrote:
> Folks:
>
>  As of changeset [2136] -- 2008-02-12, the organization of shares on
>  storage servers has changed to use base62 encoding instead of
>  base32.



More information about the tahoe-dev mailing list