Andy Schroder

On 03/19/2018 09:59 AM, Corné Plooy wrote:
It is a public key hash, yes.  But what I refer to is that the payee-determined 
route section, which starts from an introduction point, protects the payee from 
being located by the payer, but how did the payer contact the payee in the 
first place anyway?  If it was by IP or non-.onion hostname, then the payee has 
been already located and there is no point in hiding from the payer.  If it was 
by .onion hostname, then the payee security is bounded by the security of TOR, 
so it is no more secure for the payee to simply run its LN node on the same 
.onion address (which LN spec supports) and provide the public key of its LN 
node.

Note that onion routing on LN in general protects the payer and the payee from 
being known easily by intermediate hop nodes, and this is the sole intent of 
onion routing for now.  Presumably the payer knows how to contact the payee 
(else how would it form a connection to the payee in order to make an 
interactive request for invoice?).  Presumably if the payee is a merchant, it 
knows how to send its product to the payer (and thus would know details like 
the physical address of the payer).  And so on.  The payee-determined route 
that starts from the introduction point protects the payee from the payer, but 
does it indeed increase the security or is there some other way to locate the 
payee anyway?
If that payee has a LN node that is 100% a TOR hidden service, and you
don't use a (partially) payee-determined route, the payee has to reveal
its node ID to the payer. This is not the same as revealing the physical
identity of the payee, and having a hidden service may help to keep the
two identities separated, but a LN node is a relatively long-lived
entity. Over time, the risk increases that knowledge about the node ID
(e.g. what kinds of transactions are linked to this ID) leaks out and
gets combined, revealing things you don't want to be revealed.

It may, for instance, be that some of your incoming transactions are
inherently linked to your physical identity (e.g. salary), and some
other you don't want linked to yourself. If you have to reveal your node
ID to all payers, you risk those transactions being linked to you,
either now or in the future. Running a node as a TOR hidden service is
not sufficient. However, if you manage to hide your node ID from payers,
this becomes much more difficult; you really gain some privacy.

In fact, using a TOR hidden service may not always be necessary. In some
cases, you could alternatively set up payer/payee communication over a
more-or-less anonymous physical medium; maybe using a burner phone, WiFi
with a randomized MAC address, NFC, or some other kind of radio
communication.

Regarding NFC and radio communication, I think this would be important to bake into the original spec. I'm going to encourage bluetooth over wifi with a randomized MAC address. Bluetooth is likely a little better because you can make a lot of simultaneous bluetooth connections and they don't require you to do any changes to your internet connection, which you still need in order to interact with the bitcoin and lightning networks. Bluetooth also makes it simpler for the payee as far as limiting what the payee can use the connection for. I'm guessing you can randomize the bluetooth MAC address.

One thing for example that makes BIP70 complicated in that regard is that you need to be able to supply a few URLs in order to give the payer an option on how they may want to connect to fetch a payment request (locally via bluetooth, or over the internet using http). Some hacks were made to BIP70 to make it work with bluetooth, but I'm not sure if the design was the best.

 * Demo using my fuel pump and Bitcoin Wallet
     o http://andyschroder.com/BitcoinFluidDispenser/2.3/
         + Watch the first video on this page.
         + I don't think totally offline payments are possible with
           lightning, so that part of the workflow isn't comparable.
 * Details about how Bitcoin Wallet is designed and different ways to
   communicate with the payee.
     o https://github.com/AndySchroder/bips/blob/master/tbip-0075.mediawiki
     o https://github.com/bitcoin-wallet/bitcoin-wallet/wiki/Payment-Requests
     o Note, the bluetooth communication protocol used here still needs
       to be encrypted. That extension was never developed.

Obviously we aren't going to use BIP70 here for lightning, but my point is that there are some lessons that can be learned from the work flow.





The alternative approach to partially payee-determined routes would be
to run different nodes for different identities and to regularly shut
down nodes and set up new ones. This requires expensive on-chain actions
though (more expensive than setting up a new TOR hidden service), and I
don't think it's good for the rest of the network either if channels are
regularly shut down.
Definitely.


  I prefer if people can have lots of privacy, even
when running only a single node.

You could roughly say that TOR is necessary because your IP address can
often be linked to you, and partially payee-determined routes are
necessary because your node ID can often be linked to you.

CJP




_______________________________________________
Lightning-dev mailing list
Lightning-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev

Reply via email to