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 without many of the security and robustness issues that regular IPv4 and IPv6 networks have.
There are a few commandline tools to help configure and use cjdns easily
By default, `cjdroute --genconf` generates a password and public key that you can share with a friend or friends, to authorize them to connect to you. Whenever a message tries to be routed to your instance of cjdns, your friend(s) will encrypt that password with that public key. So your instance of cjdns can verify that someone else has the correct password, and that the password was meant only for you, and only you can decrypt that password.
One time peering for each outbound connection
Alicegenerates acjdns password + public key for Bob