IPFS is a distributed, immutable, and P2P filesystem. It also includes a mutable naming system called IPNS. Using IPFS as a backend for vault storage has a few benefits over a server:
- P2P: out of human control.
- No worry about the central Bitwarden server being attacked and losing your data.
- If maintaining your own server, no need to configure, manage, backup, and protect your data manually.
This is a simplified version of how the software would function:
- Bitwarden encrypts passwords (vault)
- IPFS client adds vault to IPFS
- IPFS client sets the new vault hash (the hash that the new vault is at) to the user’s IPNS namespace (/ipfs/)
- To sync a client: fetch, decrypt, and merge the vault at the user’s namespace.
It’s a little more complicated than this, but the idea would be to have the option to use IPFS instead of or in combination with a server (for redundancy). I would love to hear more thoughts on this.
IPFS whitepaper: https://github.com/ipfs/papers/raw/master/ipfs-cap2pfs/ipfs-p2p-file-system.pdf
IPFS documentation and implementations: https://github.com/ipfs/ipfs