This reminds me of a very tangible shortcoming in the OSI model that <<a href="https://en.wikipedia.org/wiki/Host_Identity_Protocol>" rel="nofollow">https://en.wikipedia.org/wiki/Host_Identity_Protocol></a> is trying to address and which is, in my opinion, far more important that exchanging value.<p>It is the fact that we always talk of machine addresses, and never of machine identities (except through DNS, but DNS is also about giving human-readable identifiers, so it cannot be decentralized <<a href="https://en.wikipedia.org/wiki/Zooko%27s_triangle>" rel="nofollow">https://en.wikipedia.org/wiki/Zooko%27s_triangle></a>).<p>However, now that everyone is using public-key crypto, we should understand that a machine can be referenced by a public key, and that it can prove ownership of it to anyone who asks. (This can also be used to encrypt traffic, but this is not what I am thinking of.)<p>Hence, why do we connect to IP addresses, rather than connecting to public key hashes? Granted, public key hashes are not routable, but there could be a service to provide the mapping from hashes to addresses -- not DNS, because it doesn't have to give human-readable names (so doesn't have to be centralized), and because there is little penalty for receiving a wrong answer (as long as you always check the identity of who you are talking to.<p>I think that, had asymetric crypto been in widespread use before the OSI model came about, this would have been the natural way to do things. Now the problem is unsatisfactorily solved both in DNS (which is not the right solution, as I already explained), and in an ad-hoc way with TLS, in SSH, etc.; but this is still too high in the hierarchy, machines should be addressed with public key fingerprints unless we are concerned about actual routing.