Discussion:
BIP150/151 concerns and some comments
(too old to reply)
Jonas Schnelli via bitcoin-dev
2017-02-14 16:10:15 UTC
Permalink
Raw Message
Hi

Recently I read some concerns about BIP150/151 and its „identity system“.
I think we should take those concerns seriously and I wrote some
comments for some of the concerns I'm aware of. In my opinion, most of
these worries are unfounded.


Concern 1: BIP150 introduces a identity system that could partition the
network

###############################################################################

- Users already filtering/authenticate peers by IP tables, „addnode“
command, peer banning in app-layer. Fast block relay is a good example
(example: FIBRE).
- BIP150 allows to switch from IP based authentication (which is
obviously not ideal) to a secure form of authentication with pre-shared
keys (ECDH).
- We can’t stop peer operators to selectively manage peers and there are
valid reasons to do that

Concern 2: But BIP150 makes it simpler and increase the risk of network
partitioning

####################################################################################

- What is simpler, presharing a pubkey over a secure channel (PGP /
Signal) and store in on both peers or calling a „addnode <ip>“, or
„iptables-DROP <ip>“?

Concern 3: Identity is not something we want in Bitcoin

#######################################################

- BIP150 introduces an **optional** authentication over a EC pubkey. The
EC pubkey can be changed. It’s different per network interface. You only
reveal it to peers that already have proven the know your identity.
- IP addresses are also a form of identity and way more inflexible and
different to hide.


Concern 4: But peers can fingerprint my node and ban me after BIP150 has
been deployed

######################################################################################

- They can’t fingerprint you over BIP150 messages, it does not reveal
your identity unless the responding peer has proven he knows your identity.


Concern 5: BIP150/151 is not necessary, we have already Tor and STunnel,
etc.

#############################################################################

- Tor is an alternative, right. But do we want to depend on those
technologies? Using tor for a single secure channel seems like using
a sledgehammer to crack a nut.

- How many SPV users have encrypted channels to trusted nodes today? Is
it accessible for the novice user?

- Peer operators who depend on designated connections (with addnode),
what security do they have today (IP address, really?)?

- I think tor is great, it can be an alternative or an additional
security enhancement (encrypt twice). IMO the focus of Tor is not on
securing single channels (it's rather onion routing / anonymity).



Concern 6: BIP151 gives a false sense of security and has no MITM detection

###########################################################################

- BIP151 (pure encryption) has no MITM detection, correct.

- Without BIP151 encryption, everyone can hook into the stream and read
what’s going on. With BIP151, an attacker needs to actively substitute
ephemeral keys in both direction. This attack is A) more complex to
achieve and B) it’s an active attack (no excuse of „I just made some
statistics“), C) it requires the attacker to accept the risk of being
detected.

- C) is true because an optional authentication (can be BIP150 or
different) would reveal the attack.

- Some attacks are worthless if you have to take the risk mentioned in C)



Concern 7: But Bitcoin traffic is trustless, why the hell you want to
encrypt it?

#################################################################################

- If you use one of the todays available SPV clients, you will reveal
your complete wallet content („~all your addresses") to every network
observer between you and the node you have connected to. This means, if
you pay for a coffee (while being on the owners WIFI), the coffee owner
and all the involved ISPs can correlate your wallet with your other
internet behavior. Same is true for your cellphone provider if you use
cellular.

- They still can, if you don’t have a trusted node, by performing the
attack that involves the risk mentioned in Concern 6.



Concern 8: If you want to have a light client, you should use a
different channel to communicate with your full node then the p2p layer

#######################################################################################################################################

- From a design perspective, this could make sense

- From an end user’s perspective, this is undesirable (enabled different
port, lack of a (RPC / ZMQ, etc.) standard, no fallback option if the
trusted node is down, hard to setup)

- Using the p2p channel as the todays SPV do, seems very reasonable to
me. Keep the users on the p2p layer! If we don’t want the users on that
channel, we automatically form a different layer, the wallet-com wild-west.

- Keeping the users on the p2p layer also allows future changes where
they can help the network in some ways.

- Using the p2p layer for a trusted connection also allows to fallback
anytime to non-trusted nodes (if your trusted node is no longer
reachable). If your SPV peer needs to catch up a couple of hours while
your trusted peer was done, fine, download full blocks or change your
bloom filters FP rate significant (or sacrifices your privacy in this case).



</jonas>
Tom Zander via bitcoin-dev
2017-02-14 18:01:03 UTC
Permalink
Raw Message
On Tuesday, 14 February 2017 17:10:15 CET Jonas Schnelli via bitcoin-dev
Post by Jonas Schnelli via bitcoin-dev
- If you use one of the todays available SPV clients, you will reveal
your complete wallet content („~all your addresses") to every network
observer between you and the node you have connected to. This means, if
you pay for a coffee (while being on the owners WIFI), the coffee owner
and all the involved ISPs can correlate your wallet with your other
internet behavior. Same is true for your cellphone provider if you use
cellular.
What about allowing trusted users connecting on a different connection. Much
like the RPC one.
Make that one encrypted. Different usecase, different connection.
--
Tom Zander
Blog: https://zander.github.io
Vlog: https://vimeo.com/channels/tomscryptochannel
Jonas Schnelli via bitcoin-dev
2017-02-14 21:01:51 UTC
Permalink
Raw Message
Post by Tom Zander via bitcoin-dev
Post by Jonas Schnelli via bitcoin-dev
- If you use one of the todays available SPV clients, you will reveal
your complete wallet content („~all your addresses") to every network
observer between you and the node you have connected to. This means, if
you pay for a coffee (while being on the owners WIFI), the coffee owner
and all the involved ISPs can correlate your wallet with your other
internet behavior. Same is true for your cellphone provider if you use
cellular.
What about allowing trusted users connecting on a different connection. Much
like the RPC one.
Make that one encrypted. Different usecase, different connection.
- What protocol would you use? The same p2p protocol but different port
and/or different process? Why?
- If not the p2p protocol, how would you form a standard? Would it be
worth doing a standard?
- Could you fall back to the current SPV model against random untrusted
peers if you additional channel is not available?
- What are the downsides using current p2p network?
- Would this also solve the security problem of creating designated
channels between peers (the "addnode" thing is based on IPs)?

</jonas>
Tom Zander via bitcoin-dev
2017-02-16 15:10:46 UTC
Permalink
Raw Message
On Tuesday, 14 February 2017 22:01:51 CET Jonas Schnelli via bitcoin-dev
Post by Jonas Schnelli via bitcoin-dev
Post by Tom Zander via bitcoin-dev
Post by Jonas Schnelli via bitcoin-dev
- If you use one of the todays available SPV clients, you will reveal
your complete wallet content („~all your addresses") to every network
observer between you and the node you have connected to. This means, if
you pay for a coffee (while being on the owners WIFI), the coffee owner
and all the involved ISPs can correlate your wallet with your other
internet behavior. Same is true for your cellphone provider if you use
cellular.
What about allowing trusted users connecting on a different connection.
Much like the RPC one.
Make that one encrypted. Different usecase, different connection.
- What protocol would you use?
The RPC one. Which I think is JSON.

Your usecase is essentially just calling sendRawTransaction. Don’t
overcomplicate things.
--
Tom Zander
Blog: https://zander.github.io
Vlog: https://vimeo.com/channels/tomscryptochannel
Loading...