A Social Graph built on IPFS with RSA keys managed and messages signed in the browser

I have been working on ideas for a social graph built on top of IPFS, with RSA keys managed in the browser. Due to some current technical limitations with IPNS in js-ipfs, a small server component is required which talks to a standard IPFS node but message signing happens in the browser. Much more work to do, especially to allow clients to keep their RSA private key entirely to themselves and still be able to find their latest profile information, but I think this is a good start proving the idea can work as a foundation.

tech demo: IPFS Social Graph tech demo 1 - YouTube

1 Like

Tech Demo 2:

Live demo: https://ipfstoy.chws.ca/

  • please lmk if it is down
  • if the captcha blocks u, please put a profileId (available on the menu screen) here for me to manually add to the authorized users.
  • please do not create content that would be considered evil or illegal.
  • developed and tested on recent versions of chrome browser on windows and android.

Encrypted Dms demo:

The encrypted dm works by:

  • when you publish a graphnode it can include a new field called Dm, which is a 3 element array.
  • The first element is an encrypted cid for a Post data structure that the recipient alone will be able to decrypt.
  • The post describes the mimetype of the actual post data and timestamp info, and a link the encrypted body data stored at a separate cid.
  • If they follow you, then they will see the message you sent them :slight_smile: since they will be the only one who gets something other than a domException when trying to decrypt that little block of data.
  • Of course, it would be nice for us to be able to see the message we sent them too, which is where element 2 and 3 of the Dm array come in
  • element 2 is the same as element 1 except only you the sender can decrypt it, and element 3 is an encrypted record of who you sent it to :slight_smile:

Outside observer of the data chain can only see that a certain profile id pushed out some encrypted message at a certain time. Can’t see to who or anything else interesting.

Sounds like winning to me.