[tahoe-dev] [tahoe-lafs] #217: DSA-based mutable files -- small URLs, fast file creation

Brian Warner warner at lothar.com
Wed Jan 6 00:22:59 PST 2010


Nathan Eisenberg wrote:
> I might be confused now. Isn't this what aliases are good for? For
> example,
> 
> http://216.243.10.44/atlas/atlas_networks_logo_143x75.png is an alias of 
> URI:CHK:tslxqfx375xr7dvehtuytz37u4:j2ygje3wlaf3vw6wustqnfzdl2qy23kbojhxpfkxcp74wh5ac7jq:3:10:5433

Nope. If I tell you to use your personal Tahoe agent and fetch
URI:CHK:tslxq... (from a given grid), then either you will see the Atlas
Networks logo, or your agent will signal an error that it was unable to
fetch the requested file. The set of people who are able to control
which logo you see are:

 * you
 * the person who has control over your Tahoe agent: the root admin on
   your machine, the author of the Tahoe code, your OS kernel, etc..
   these are traditionally known as your "TCB"
 * the person who created that filecap

Nominally, I (as the person who told you to fetch URI:CHK:tslxq.. as
opposed to some other filecap) get to control what you see too, but a
property of immutable files is that they map to exactly one sequence of
bytes, so they have the extra guarantee that two people who fetch the
same filecap will see the same thing.

These guarantees are backed by the usual cryptographic assumptions:
nobody's broken AES or SHA-256 yet, and you consider numbers like 2^-128
to be effectively zero.

Whereas if I tell you to use your web browser to look at
http://216.243.10.44/atlas/atlas_networks_log_143x75.png , the set of
people who are able to control what you see are:

 * you
 * the person who has control over your web browser, and your TCB
 * the dozen-or-so routers who sit between you and 216.243.10.44, anyone
   who's broken into them, including the coffee-shop wireless network
   owner and the person who guessed the default password on their cheap
   linksys wifi box, or the bad guy person who's running the wireless
   network named "Free Public WiFi" that your computer decided to use
   because it had the strongest signal-to-noise ratio
 * the thousands of routers capable of injecting BGP entries that will
   direct 216.243.10/24 traffic to the subnet of their choice
 * the person who has control over the web server and proxy table on
   216.243.10.44
 * the person who has control over the Tahoe agent on 216.243.10.44, and
   its TCB
 * the person who created the filecap referenced by the proxy table

If that server were offering TLS/SSL and I gave you an https URL, then
the reliance set would turn into:

 * you
 * the person who has control over your web browser, and your TCB
 * (the owners of any of the hundred-or-so private CA keys that your
   browser has embedded inside it, or anyone who's managed to steal
   them, or anyone who's used the recent MD5/TLS bugs to forge a
   certificate) intersected with anyone who can control where your
   traffic goes
 * the person who has control over the web server and proxy table on
   216.243.10.44
 * the person who has control over the Tahoe agent on 216.243.10.44, and
   its TCB
 * the person who created the filecap referenced by the proxy table

And if I'd given you a DNS name instead of an IP address, we'd have to
add:

 * any of the half-dozen-or-so DNS servers involved in the translation
   process
 * anyone who can poison the DNS cache in your machine or one of those
   other servers


Our goal is to provide better guarantees than the usual URLs. Tahoe's
filecaps provide very strong promises, but only if you use them directly
(through a Tahoe client/agent/gateway node on your own computer).
Anything that maps a different string (without the long cryptographic
goo) to a filecap+agent will lose some of the strength of those
promises.

Even Zooko's desired URL (http://testgrid.allmydata.org/..FILECAP) must
add several parties: all of the ones I listed above, including the DNS
servers. However, since you (as a Tahoe user) can recognize that
URI:DIR2-RO:j74uh.. piece as a tahoe dircap, you could cut-and-paste it
directly into the Tahoe node of your choice, and get all the good
security promises we want without relying upon any of those other
parties. Expressing the dircap in an HTTP URL like this is a compromise:
non-Tahoe users can get insecure access to the intended data, while
knowledgeable Tahoe users can get secure access to it. (Some day, we'll
have tahoe-specific URLs like tahoe:DIR2-RO/j74uh.. and all web browsers
will know how to handle them with their built-in tahoe plugins, and we
won't have to compromise anymore).

Hopefully I understood your objection.. if not, please feel free to
correct me! Also note that "alias" as used by the Tahoe CLI (as in
"tahoe ls alias:") does not give up these guarantees: that alias maps
through a trusted channel (i.e. ~/.tahoe/private/aliases) to a dircap.
Using these CLI aliases does not add any new parties to your reliance
set.

cheers,
 -Brian


More information about the tahoe-dev mailing list