[Bitcoin-development] Payment protocol for onion URLs.

Adam Back adam at cypherspace.org
Mon Oct 28 12:14:33 UTC 2013

I think its a mistake relying directly on X509, its subject to corrpution
attacks, involves ASN.1 and enough openSSL X.500 encoding abiguity (or other
code base) to be a security nightmare.

Why not make the payment messages signed by bitcoin keys.  If someone wants
to associate with X.509 they can put a bitcoin address on their SSL site.

If someone can get into your site deeply enough to modify your SSL served
code and you're trying to run ecommerce you have other problems.

Never the less if they care they can clear sign the bitcoin addr with xmlsig
and their X.509 private key, and/or with PGP and a WoT.

I think its smarter to pollute bitcoin main with X509.  Make a little helper
util if there are not enough xmlsig tools that you cant pick one up
opensource for multiple languages.

This then avoids the binding to Tor - you can publish a bitcoin address
authenticated anyway you like.  Eg tahoe-LAFS auth/integrity, i2p, tor, pgp
- you name it.

Maybe I voice this opinion a bit late in the cycle, but I think it would do
bitcoin a favor otherwise its a camels nose in the tent into the TLAs that
control their own X.509 CAs, or issue NSL letters for CA private keys, or
forged certs.  It's all happening and thanks to Snowden we now have even
more evidence...


On Fri, Oct 25, 2013 at 09:06:48PM -0700, Gregory Maxwell wrote:
>On Fri, Oct 25, 2013 at 8:41 PM, Luke-Jr <luke at dashjr.org> wrote:
>> Is there any point to additional encryption over tor (which afaik is already
>> encrypted end-to-end)? Is there a safe way to make this work through tor entry
>> nodes/gateways?
>The x.509 in the payment protocol itself is for authentication and
>non-repudiation, not confidentiality.
>It's used to sign the payment request so that later there is
>cryptographic evidence in the event of a dispute:
>"He didn't send me my alpaca socks!" "Thats not the address I told you to pay!"
>"He told me he'd send my 99 red-balloons, not just one!"  "No way,
>that was the price for 1 red-balloon!"
>Just using SSL or .onion (or whatever else) gets you confidentiality
>and authentication.  Neither of these things get you non-repudiation.
>> It'd be nice to have a way to support namecoin-provided keys too...
>The payment protocol is extensible, so I hope that someday someone
>will support namecoin authenticated messages (but note: this requires
>namecoin to support trust-free SPV resolvers, otherwise there is no
>way to extract a compact proof that can be stuck into a payment
>request) and GPG authenticated messages.
>But those things will require a fair amount of code (even fixing the
>namecoin protocol in the nmc case), and GPG could be done just by
>externally signing the actual payment request like you'd sign any
>file... and considering the sorry state of their _practical_
>usability, I don't think they're worth doing at this time.
>By contrast, I _think_ the tor onion support would require only a
>relatively few lines of code since it could just be the existing x.509
>mechanism with just a simple special validation rule for .onion, plus
>a little tool to repack the keys.  I think it would easily be more
>widely used than namecoin (though probably both would not really be
>used, as gavin notes).
>w/ Gavin's comments I'll go check in with the tor folks and see if
>anyone has ever though of doing this before and if there is already a
>canonical structure for the x.509 certs used in this way.
>October Webinars: Code for Performance
>Free Intel webinars can help you accelerate application performance.
>Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
>the latest Intel processors and coprocessors. See abstracts and register >
>Bitcoin-development mailing list
>Bitcoin-development at lists.sourceforge.net

More information about the bitcoin-dev mailing list