[tor-dev] Can we stop sanitizing nicknames in bridge descriptors?

Karsten Loesing karsten at torproject.org
Fri May 4 11:04:08 UTC 2012

On 5/4/12 2:21 AM, Ondrej Mikle wrote:
> On 05/03/2012 01:32 PM, Karsten Loesing wrote:
>> On 5/2/12 9:35 PM, Sebastian G. <bastik.tor> wrote:
>>> [...]
>>> "We don't need it, so better remove it." I really like that.
>> I think we're really conservative with giving out bridge data, and
>> that's good.
>> At the same time there's a value in giving out information about
>> bridges, so that "remove everything" is not a good answer.  For example,
>> I think if we give bridge operators better feedback how their bridge is
>> doing, we'll suddenly have a lot more bridges.  Making it easy for
>> bridge operators to use Atlas would be a good step into that direction.
>>  The same applies to funders who realize from our statistics how
>> successful the Tor Cloud project is and who then want to fund it more to
>> make it more usable, support more cloud providers, etc.
> I would suggest looking at homomorphic hash [1] and Shamir's discrete logarithm
> hash function [2]. (Those also work well with linear network coding [3], but not
> sure if it could be useful here.)
> For example, encoding FQDN, IP or nick can be done by splitting the
> argument-to-encode by fields or characters. The parts can be then used as input
> to the hash function.
> The function allows checking whether a nick/FQDN/IP has specific part, or two
> have identical part, but does not disclose "plaintext" of the part.
> Obviously, there are statistical attacks possible: e.g. for FQDNs, the attacker
> could guess which component maps to 'com', as it is the most common TLD.
> Similarly, splitting up into characters can be attacked by using frequency
> tables. There are other things that could apply here (thinking about attacks on
> "plaintext RSA" without padding).
> Nevertheless, I think it's still better than publishing plaintext data if we are
> not sure what they might give away. Implementation using gmp/gmpy/numpy should
> be fairly easy.

Interesting approach.  So, the idea would be to split a nickname like
"ec2bridgeb268f2ae6" into its characters (or pairs of 2 or more
characters?), run it through the hash function, and then be able to
check if the nickname starts with "ec2bridge"?  Plus, the approach would
still work if we later decide we want to find all bridges with nicknames
starting with "rackspacebridge"?

My first concern is that there's not enough entropy in nicknames for the
hash function to provide sufficient protection.  I could imagine it's
not hard to throw variants of all known relay nicknames into that hash
function and learn 50%, if not 75%, of all used bridge nicknames.

My second concern is that this approach would only solve the problem of
counting EC2 bridges, but wouldn't make sites like Atlas more usable for
bridge operators.


More information about the tor-dev mailing list