DisMN8 Specification April 2011
DisMN8 will provide a means to disseminate and share information in a distributed-social network setting. The system is designed to be resistant to targeted attack by governments. The system has two layers; a communication and routing layer, where information is passed between nodes, and an interface layer, where the interface exposed by the first layer is implemented.
The first layer uses a depth-first search to traverse the network. When a node does not connect to the desired node, the algorithm backtracks. Although somewhat inefficient, it is simple and provides compartmentalized knowledge, with each node only having knowledge of nodes immediately adjacent to it. As the search recurses, it searches from each node for other nodes it has knowledge of. Once the requested node is located, the information is passed back up the tree along the same path as the depth-first search followed. This system can be called a Compartmentalized Hash Table.
In order for the network to function with Dynamic IP addresses, a session system must be adopted, whereby all the nodes agree to connect for a certain time period. At the start of the time period, a node is chosen to remain connected until the next session. This node employs a centralized hash table, relating nodes’ public keys to encrypted IP addresses. When a peer reconnects at the next session, for each of its peers, it adds a hash relating the public key of each of its peers to an encrypted version of the recipient peer’s IP address only decodeable by the peer it was encrypted for. When the peers connect, they retrieve the hash(es) associated with their public key, and decrypt a nested hash relating the peer’s user name to its the IP address.
The major problem with this system is that if a user fails to connect at each and every session, it will no longer be up to date on the address of the next hash server. As such, the system can have two modes, a normal mode, and a covert mode. In the normal mode, one computer will function as the hash server permanently, and will be kept on so its IP address is effectively static. In the covert mode, the system discussed above for using a different hash server each day is used, and a user who fails to connect will simply have to either wait for a return to the normal mode or obtain the IP Address of the current server by some means external to the system, i.e. a lost contact dead drop.
The second layer can take many forms, and in this case, it is responsible for serving interactive profile pages. In order to prevent a single point of failure, this layer assumes that user data is distributed on a limited scale. As such, a user can choose how many times they want their personal content mirrored. In return, they will have to mirror the same number of users’ data on their node.
Figure 1.1 (http://en.wikipedia.org/wiki/File:Freenet_Request_Sequence_ZP.svg)