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>