[tor-dev] Namecoin .onion to .bit linking

Jeremy Rand biolizard89 at gmail.com
Tue May 19 21:38:58 UTC 2015

Hash: SHA256

On 05/19/2015 03:31 PM, OnioNS Dev wrote:
>> On 05/19/2015 10:02 AM, Daniel Martí wrote:
>>> I'm not familiar with Namecoin, but I thought I'd just point
>>> out that someone will be working on OnioNS, the onion name
>>> system, as part of the SoP in Tor. The person who will be
>>> working on it just sent an e-mail to this very list yesterday.
>>> You two seem to be after the same "human-readable way to
>>> access .onion domain names" target as you yourself described,
>>> so there might be room for collaboration.
>> I'm aware of OnioNS, but haven't yet had time to thoroughly read
>> the proposal.  It's certainly on my to-do list, if nothing else
>> for cross-pollination of ideas.
>> - -Jeremy
> Yes, I'm here. Last year I explored Namecoin as a possible 
> alternative DNS for Tor hidden services.

Indeed, we conversed a few times last year about that topic.  I'm
quite looking forward to catching up on what you've come up with since
those early conversations -- more ideas are always a good thing.

> I spent some time over it, but I also ran into the same problems 
> previously mentioned above: how to link HS RSA keys to Namecoin
> ECDSA keys. I came up with two solutions: sign the Namecoin key
> with the HS key and embed that signature in the blockchain, or
> introduce a new blockchain that relied on the same cryptography as
> hidden services (RSA, Ed25519, ECDSA, etc, as long as they
> matched).

I hadn't actually thought of the idea of using a parallel blockchain
with different signature opcodes as a solution for this particular
problem.  I'm not sure if you're aware, but some people have proposed
creating altcoins that use quantum-resistant signatures such as
Lamport signatures just in case such quantum resistance turns out to
be useful, so that actually isn't as crazy an idea as some might assume.

Generally for this purpose, I think signing a Namecoin name with a HS
key makes more sense than a parallel blockchain.  Signing a Namecoin
*address* (what I assume you mean by key) would be harder, because
Bitcoin-based currencies like Namecoin intentionally don't reuse
addresses, so a name will get transferred to a new address every time
it is altered or renewed.  Of course, then you need to deal with the
ability for the .onion key to revoke a Namecoin name's authority.

> As I mentioned in the ACM paper, it's non-trivial to build this 
> correlation and I came to the conclusion that solutions would look 
> more like a hack than an elegant solution.

Certainly not trivial, but it doesn't seem like an overly complex
issue to attempt, to me.  But that's why I'm asking for feedback --
I'd prefer that any solutions have holes poked in them before
implementation effort is expended on them, and certainly you've
expended a lot more thought on this particular topic over the past
year than I have.  The biggest issue I'm aware of is cross-protocol
attacks... are there other pitfalls you've encountered that I should
be aware of?

> Moreover, even if the correlation could be built, it's impractical
> to require clients to download the whole blockchain before use, so
> you still have to address the issue of preventing name servers
> from lying.

SPV-based systems appear well-suited to solve that problem for most
cases.  HashEngineering created a Namecoin port of the BitcoinJ SPV
library (it only took him a few days, I think), and used it to create
an Android Namecoin client.  He didn't implement parsing of the name
script opcodes, but that's not a super-complicated thing to do.
Almost all of the code in Namecoin is the same as Bitcoin; the
differences are pretty minimal, so Bitcoin's lightweight client modes
such as SPV work pretty much verbatim when applied to Namecoin.
Actually getting a working product that handles the name opcodes is
mainly a matter of implementation rather than any novel engineering.

SPV by itself does allow a peer to falsely claim that a name hasn't
been updated after the block that the SPV proof is for.  Daniel Kraft
(Namecoin's chief scientist) is experimenting with a fix for that, by
having miners place a merkle trie commitment of the unspent name set
in each block's coinbase transaction, whose accuracy would be enforced
by blockchain validation.  This mode (abbreviated SPV+UNO-CBC) would
ensure that name values returned over SPV are current (up to a
sufficient block depth to avoid a lucky miner being able to mine a few
invalid blocks with bad commitments; 12 blocks seems to be reasonable

> I hope you can see that it's a difficult problem. I think Namecoin
>  could use a solution if you come up with one, and I would be 
> interested in hearing about it. I came to the conclusion that 
> Namecoin would not work and wrote something different. Namecoin
> does many things well and I took those good design ideas, but I
> also changed the setup to solve many of its weaknesses. Namecoin,
> GNS, and OnioNS are good alternative DNSs, each with their own
> approach. Let's see if we can work together here, we might be able
> to help one another.
> Jesse V.

Totally agree -- working together is preferable to worrying about
which solution is "the right one", so to speak.  These things all have
their benefits and drawbacks.

- -Jeremy
Version: GnuPG v2


More information about the tor-dev mailing list