Key management on a decentralized network #187
Replies: 4 comments 9 replies
-
(moved here from issue) This a very interesting and complex usecase you are describing. Scaling a key pair exchange is always challenging. Full blown PKIs normally include certificates that you can chain and thereby derive trust from a shared root key. VpnCloud does not support this (neither does tinc, afaik). There are no certificates, no cert chains and no inherited trust. I could add this but I am not sure I want to go down this rabbit hole (SSL is having security issues because of this feature). Your setup seems fine as far as I can see. It is not clear who owns which component and whether there are different zones of trust. It looks a little bit odd to put private keys in a repo though. Did you know, you could derive the VpnCloud key pairs from passwords too? Not sure if that helps. Your usecase is interesting. Let me know, if you have any blog post that describes the setup. It could be helpful for other users if I link to it in the documentation. |
Beta Was this translation helpful? Give feedback.
-
Beacons already offer a format to publish network nodes information. Maybe I should have a closer look on that feature and first automate publication and synchronization of this data on github. |
Beta Was this translation helpful? Give feedback.
-
new proposalTo follow up with this discussion, the original proposal was a bit complicated to implement so I came up with this alternative flow that takes advantage of having the users and their public key ssh access setup on each node: downsidesthe downside with this proposal compared to the original one is that instead of the community of node owners only having deployment access through the upper Kubernetes layer, they now have at least ssh access to every other node (although the commands could also be locked down here in authorized_keys to only allow creating a new peer config). feature requestto make this work vpncloud would be to add the ability to read peer configurations from a directory /etc/vpncloud/peers (public key, dns name and port) - one file per peer. after the scp of the peer config we could also have ansible restart the remote vpncloud service. as a temporary workaround, we could wrap vpncloud into a starting script to generate the config from this list of peers more discussionthe other tweak would be to have each node(s) owner generate a single key per user (the private/public vpncloud key is the same for every node owned by that user). Question: wouldn't there be a way to piggy back off ssh-keygen generated keys and use those instead as input to vpncloud? would that be interesting to allow reusing ssh keys within vpncloud? |
Beta Was this translation helpful? Give feedback.
-
@dswd after some time in the wilderness of ipfs, figured out my solution was way more complicated than it needed to be. @bmullan idea to look into how to work with DNS was the good one Looking at the beacon infrastructure I also think that direction is more promising than text files loading since you already have everything to load continuously new known nodes. What we have in mind:
so our config would look like this:
but... the beacon only contains ip addresses of peers and their ports. https://github.com/dswd/vpncloud/blob/master/src/beacon.rs ...would there be a way to also stuff public keys in that stream? It's a good compact format, but I'd suggest capnproto to make it a bit more extensible and versionable (while keeping it compact): https://github.com/capnproto/capnproto-rust or perhaps just protobuf: |
Beta Was this translation helpful? Give feedback.
-
vpncloud is good stuff. seems to be a great start as a solution to build a decentralized data center.
Given this scenario:
The challenge we have is to have each node share its public key generated at setup with every other node and have these nodes reload new nodes public keys before the node tries to join the vpn.
This is the solution we're shooting for right now:
does this approach make sense?
Beta Was this translation helpful? Give feedback.
All reactions