"Cjdns implements an encrypted IPv6 network using public-key cryptography for
address allocation and a distributed hash table for routing. This provides
near-zero-configuration networking, and prevents many of the security and
scalability issues that plague existing networks.
When you receive a packet of information from the Internet, it seems logical to
assume that it was meant for you - that it came from the computer which it says
it came from and that nobody else has read or modified it on the way. While many
popular software applications are designed around these assumptions, the
existing Internet does not guarantee any of them and a number of network
security exploits come from the cases where these assumptions break down.
Cjdns guarantees confidentiality, authenticity and integrity of data by using
modern cryptography in a non-intrusive way. Information transmitted over a cjdns
network can't be altered or read en-route. While you can create multiple
identities, it's practically impossible to impersonate other nodes on the
network and since a node's IPv6 address is the fingerprint of its key,
man-in-the-middle attacks are not possible.
Traditional networks require manual configuration of IP addresses. For one to
get these addresses one must join an Internet Registry and file a lengthy
application. Cjdns nodes generate their own addresses along with their keys.
When two nodes find each other, they connect. When many nodes find one another,
they form a network. General network architecture is of course needed to avoid
bottlenecks but once the nodes are put in the right places, they will discover
their roles in the network.
Cjdns is built around the bold and unproven assumption that a non-hierarchical
network can scale. Cjdns uses a distributed hash table to spread the load
of routing among a number of nodes, rather than requiring every node know the
exact location of every other node. At the bottom layer, packets are tagged
with the exact route they should take, think of it like driving directions.
At the upper layer the nodes maintain and test routes to other nodes who have
numerically similar IPv6 addresses to their own. Forwarding is achieved by
sending a packet to physically nearby nodes who have destinations numerically
close to the target address."
https://github.com/cjdelisle/cjdns
https://news.ycombinator.com/item?id=9025792
https://github.com/jMyles/cirque
No comments:
Post a Comment