On 03/23/2016 01:36 PM, Tom via bitcoin-dev wrote: > On Wednesday 23 Mar 2016 16:24:12 Jonas Schnelli via bitcoin-dev wrote: > * why would you not allow encryption on non-pre-approved connections? Agree > * we just removed (ssl) encryption from the JSON interface, how do you suggest > this encryption to be implemented without openSSL? CurveCP > * What is the reason for using the p2p code to connect a wallet to a node? > I suggest using one of the other connection methods to connect to the node. > This avoids a change in the bitcoin protocol for a very specific usecase. Agree, P2P and client-server protocols are distinct use-cases. Missing this distinction is the root cause of problems with the bloom filters feature. > * Why do you want to do a per-message encryption (wrapping the original)? > Smaller messages that contain predictable content and are able to be matched > to the unencrypted versions on the wire send to other nodes will open this > scheme up to various old statistical attacks. Privacy cannot currently be achieved unless the server is trusted. In most wallet scenarios that's not a reasonable assumption unless one controls the full node. So this is only useful in the case where the wallet is trusting a remote server, and as you point out - message encryption is weak in this case. In a trustless server scenario encryption would be unnecessary overhead. >> Responding peers must ignore (banning would lead to fingerprinting) the > requesting peer after 5 unsuccessfully authentication tries to avoid resource > attacks. > > Any implementation of that kind would itself again be open to resource > attacks. > Why 5? Do you want to allow a node to make a typo? Agree, denial of service protection can and should be much more flexible than this. It's not necessary to incorporate DoS protection into a protocol. I think maybe this stems from the ill-advised attempt at messaging reliability. >> To ensure that no message was dropped or blocked, the complete communication > must be hashed (sha256). Both peers keep the SHA256 context of the encryption > session. The complete enc message (leaving out the hash itself) > must be added to the hash-context by both parties. Before sending a > enc command, the sha256 context will be copied and finalized. > > You write "the complete communication must be hashed" and every message has a > hash of the state until it is at that point. > I think you need to explain how that works specifically. Also, this gets into the area of messaging reliability. This is certainly not something I would recommend for a P2P protocol optimized for maintaining a cache of public data. e