I disagreed then and I disagree now, but my C isn’t up to the task (I can read it well enough, but I doubt I could securely implement a network crypto server the first try). Perhaps I will look into adding this to the golang bitcoin implementation, although I doubt it will go much of anywhere without bitcoind/bitcoin-core (the main canonical implementation) supporting it.
I didn't become aware of those snowden docs until a year and a half after the article about them... :( but the need was obvious enough before they came out (as you can see from the 2016 discussion on the subject).
Sitting down and coding is probably not the limiting reagent in getting the work completed. Review, herding cats, building positive momentum, etc. would all add a lot if you're willing and able to provide it. Collaborating on a second implementation would probably also be useful (though not so much in isolation, but it would be useful for testing and validation). (Heck, even just cheering work along to distract from drama and haters would probably accomplish a lot).
A functioning implementation goes a long way toward herding cats and building positive momentum. Amongst hackers, working code trumps a lot of objections; moreso if it is simply opportunistic and doesn't break anything for old clients, and can be disabled by the fearful pedants.
It's also a great starting point for other practical objections: with a working prototype, you can always counter "but what about edge case $x, huh smart guy?!" with a "well, here's a small patch to address $x, it's in the PR now", which is a great way to achieve forward progress.
I don't recall any objections raised that would be addressed by code. (though also, there have been at various points in time implementations, just not merge ready ones...)
In 2013 there were more serious privacy problems in the bitcoin software which probably would have made the encryption less relevant. Most of the known ones were addressed by 2016. I still didn't hear about the bitcoin tie in until Oct 2019, though, sadly.
Those people deserve privacy too.
Then, it would be possible after the fact to identify a MITM by checking those logs on both ends of the connection. Services could even exist to do this automatically.
The risk of being caught, even if small, would put most three letter agencies off sniffing this kind of thing.
We also came up with a strongly zero-knowledge authentication system where the connection receiver learns absolutely nothing about if authentication is being used by the connection initator. This prevents a MITM from adaptively "Opps, looks like that TCP connection failed" when they notice authentication being attempted in order to avoid detection.
This idea fits pretty nicely with how we manual connections work in Bitcoin... A normal node will make 8 automatic (random) outgoing connections plus up to another 8 connections to manually specified connections. Our thought was that if a manually specified connection was authenticated for partitioning resistance, and the auth failed it could just get treated as a random connection (and, of course, sound klaxons). The end result should be a phenomenal amount of herd immunity where even a small percentage using authentication should totally stop MITM attacks by attackers who really don't want to get detected.
If you're up for it-- jump on in! Other people, ... apparently aren't.