Decentralizing the IP Address
How might you solve the problem of finding a network recipient anywhere in the world without needing to rely on information provided by an arbitrary standards body?
I struggled a bit with how to open this post. I suppose the best, more straightforward opening is that this whole train of thought is more or less a response to this article in the Anarchist Library linked below, as well as others of its ilk:
In these articles, the technology underpinning the Internet is hailed as a boon for egalitarianism and the downfall of the oppressive state, since the Internet allows ordinary citizens to contact each other and organize directly instead of having governments or corporations mediate and censor that communication. While I agree that this is a lofty goal, I also know that the technology underpinning the Internet is largely a product of governments and corporations convening together to build something quickly and deliberately - in particular, the US Department of Defense built ARPANet (one of the main precursors to the Internet) in order to allow its computers to be spread across all of the US's military bases instead of clustered entirely in the Pentagon (where a single atomic bomb could destroy all of them). As such, I used to worry about how well the Internet could survive if the state were to be dismantled - if anarchism used the Internet to take down the state, but could not subsequently maintain global communication through it, then the state could easily resurface to fill that void and we would be in the same place we were before.
However, as the article above outlines, most parts of the Internet are indeed decentralized and anarchic, and it would largely be quite easy for a decentralized fabric of individuals to maintain it. All communication, after all, is ad hoc on the local level, and each node makes its own decisions about how to transmit data and get it closer to its intended recipient. Ethernet is especially anarchic in that there is no centralized source of permission, unlike competing technologies such as the token ring protocol. And on top of this, all of the Internet's protocols are layered, where, say, TCP streams or UDP packets can be transmitted over any set of underlying technologies you please. Choices of protocol, and choices within that protocol, are, of course, arbitrary, but as long as no one has a strong reason to choose one option or another without strong, independently verifiable empirical evidence to back that choice, I think that people can naturally settle on choices that work.
There is one exception, however: IP addresses. All recipients on the global Internet are identified using an address that is supposed to not only be globally unique, but also relatively indicative of the recipient's location, so that routers can send packets physically toward that location and find the recipient efficiently. To enforce this, that address is assigned by their Internet service provider. And a global standards organization, the Internet Assigned Numbers Authority (IANA) - a nonprofit managed by the United States Department of Commerce - is responsible for determining which ranges of IP addresses an ISP is allowed to give out.
The trouble becomes: who gets address block 0? Who gets address block 1, and so on? The choice is arbitrary. And it is in the game-theoric best interests of most people to be able to pick the number they want - which means most people are going to want block 1, and most people who don't want block 1 are going to want some other special number like 0, 2, 7, 8, 100, or perhaps the maximum number. And then fewer people will want blocks that correspond to unlucky numbers in their culture, such as 4 or 13. In order to come to a resolution and communicate with globally unique IP addresses, without a standards body, anyone who wants to communicate will need to establish some sort of pecking order, which makes it all too tempting for a participant to refuse to cooperate and leave, leading to fracturing of the network.
One might be tempted to say it should be assigned geographically, based on the latitude and longitude of the participant. However, this is actually even more mired in politics and standards bodies. While it is true that latitude (your position north/south on the Earth) can be determined emprically based on calculating the Earth's rotation and the position of the Sun as it moves through the sky throughout the year, longitude (your position east/west on the Earth) relies on a completely arbitrary reference point: 0 degrees longitude, otherwise known as the Prime Meridian, is defined to pass through the Greenwich Observatory in London, England. And I don't think I need to dive into the political processes that caused *that* to be decided, especially when I mention not only that Greek tradition placed Delphi as the "navel" of the world from which all creation spread, but also that the Chinese word for China, 中国 (Zhōngguó), literally means "central country".
Oh yeah, and you can't base the prime meridian on time, either, because UTC is defined as what time it is at the prime meridian (disregarding stuff like Daylight Savings).
So the question becomes, how do you allow people across the globe to share their location with anyone else without having everyone agree on an arbitrary way of cutting the world up? Can we reduce the choices that are necessary for everyone to agree upon with no empirical backing in order for the Internet to work?
---
My current best idea for how to solve this problem is through trilateration, the same principle behind how GPS and other satellite location systems work. In 2D space, if you have an unknown point P; three known points A, B, and C; and the distances between P and each of those points, you can draw circles around A, B, and C with each of those distances and find that all three of them intersect at exactly one point: P. In 3D space, you can do this with four known points - the spheres constructed around known points A, B, C, and D will all intersect at one point, which will be P for this version of the problem. There are several variations of this technique, including ones that account for margins of error in the distances given.
We can do something similar with sharing global locations in a decentralized Internet. If an Internet participant wants to get a response to a message, it would only need to give the distances from itself to a handful of points of interest that both sides of the conversation know about. These points of interest can be pretty much anything as long as they're stationary relative to the Earth - the North and South poles, famous buildings such as the Empire State Building and the Taj Mahal, cell towers/data centers, train/transit stations, geostationary satellites, and more. On any particular network hop, as long as this set of distances includes distance to four points that the current router recognizes, the router would be able to determine the recipient's exact location and send network traffic to the peer that is best able to serve traffic in that direction.
And that mutual set of points is only necessary to share per network hop. Once you have determined the recipient's location from whatever points they've given, you can then rephrase that location in a different set of points that the next network hop is more likely to understand. And you don't even always have to calculate the recipient's location - if they're relatively close to one of the points and you already have a good route to that location, you can just send packets towards that point and call it a day.
And as an added bonus, with an extra point (abiding by certain restrictions), it's not even necessary for either side of the conversation to agree on what distance units are being used. The equations work out that if you have distances with an unknown scale factor to five different points, you can solve for both the unknown point you're trying to trilaterate and the scale factor that was used. This means, practically, that a network participant can send its distances in terms of any of meters, feet, lightyears, Planck lengths, wavelengths of a certain radioactive isotope, or lengths of their right arm, and the neighboring network hop can still figure out what the location is. The main restriction is that the five points cannot all be in the same sphere, which means practically that you will need to mix low-altitude and high-altitude points in your distances report.
Of course, this isn't perfect by itself - there's inevitably going to be a lot of error in these distances, meaning that you can't uniquely identify a network participant by these locations. Plus, there's the problem of how to name those points in the first place.
To solve both of these problems, we can make the root level of Internet addressing public/private key pairs. A private key is chosen arbitrarily by each Internet participant, and a cryptographic algorithm such as ECDSA is used to generate a public key from that - that is to say, it is vanishingly unlikely for another participant to generate the same public key as you. On a small network, you need only share your public key to get a response, while on a large network, you would also share your location data as stated above. And we would stipulate that the points that you specify in the location data are you Euclidean distance to other stationary network participants - for instance, rather than specify your distances to the North and South Pole or to the Taj Mahal, you would specify your distances to research stations at the North and South Pole and to a cell tower near the Taj Mahal; all of these locations, themselves being network participants, can receive packets and answer questions.
This is unfortunately not perfect by itself, either - there is the question of whether people will still agree to use random private keys instead of insisting on certain lucky numbers, as with the address blocks above. If the game theory of that decision, however, eventually leads individual participants to just pick a random number as their private key (instead of leaving in a huff or taking the lucky number by force), I think this system could work quite well in patching one of the most important centralization holes in our Internet infrastructure. (That just leaves the problem of building out infrastructure that uses that system, of course.)