WARNING: NOT AUDITED! USE AT OWN RISK. DONT USE FOR ANYTHING SERIOUS.
Currently, IPFS does not have an inbuilt content encryption system. Many solutions exist on top. I wanted something easy. This builds on senc.
- Full Demo: https://ipfs.io/ipns/ipfs-senc.net/#zGekfyfuYnk9FPsMnJLPQeJ9s9M3AcE4pdNq2ujrKu5WR:/ipfs/QmQgMRb5FZBtX5KBDWGRcc5Vkq5FMvndpEh6YzhMzjCZVo
- Small Demo: https://ipfs.io/ipns/ipfs-senc.net/#z5xBkE3by6qydJRKq3qG7miwBAo4VKnVUemUN2NkdWPGz:/ipfs/QmawKztbUe4DuYdKuCX3JMqDakhAcqas5zxwRRNxSZbEgf
- Secret Sintel: https://ipfs.io/ipns/ipfs-senc.net/#z8C6ojoe8MXsnHBo7R3JkpbfHQfiNHvssPpMSrf8LUUmh:/ipfs/QmShBDVU7aMP517Zg4F85pPpmXZKvxpcGpaPeu9ADeoYRe
See the viewer webapp docs here
This tool is command-line based.
Using go get:
go get github.com/ipfs-shipyard/ipfs-senc/ipfs-senc
# encrypt with a known key. (256bits please)
ipfs-senc share --key <secret-key> <path-to-file-or-directory>
# encrypt with a randomly generated key. will be printed out.
ipfs-senc share <path-to-file-or-directory>
Leave your IPFS node running, or pin this somewhere. consider ipfs-cluster.
# will ask for key
ipfs-senc download <ipfs-link> <local-source-dir-or-file>
# decrypt with given key.
ipfs-senc download --key <secret-key> <ipfs-link> [<local-destination-dir>]
Will use your local ipfs node, or the ipfs-gateway if no local node is available.
If you have the senc
tool, then you can also use the script provided in ipfs-senc/ipfs-senc.sh
This can work entirely on the browser. The viewer code is included in this repo. It needs to learn how to add files too. (drag-it, drop-it, crypt-it, pin-it, share-it, click-it, load-it, de-crypt, view-it).
MIT, copyright Protocol Labs, Inc.