Skip to content

The right way to be social online - ETHBerlinZwei hackathon

Notifications You must be signed in to change notification settings

vincentlg/omerta

Repository files navigation

omerta: code of silence

This project is developed during the ETHBerlinZwei hackathon (2019).

Omertà is a Southern Italian code of silence and code of honor that places importance on silence in the face of questioning by authorities or outsiders; non-cooperation with authorities, the government, or outsiders; wikipedia

Table of Contents

  1. Introduction
  2. The Omerta diagram
  3. What exactly did we do during the Hackatons?
  4. The Demo
  5. What we could not complete
  6. Install & Test
  7. The Team
  8. Licence

Introduction

Let's use Facebook, but with end-to-end encryption!

This is not a troll, people use Twitter and Facebook and it is not going to change soon. People have their habits and above all, their friends and their network are on it and that create a significant retention of users.

Finally, in an ideal world we could continue to use our favorite social networks by adding a feature that would give us a real control of our data.

Starting from this idea, we imagined browser extension which resolve that, as smooth as possible, for users of these social networks.

The user experience with Omerta

Bob and Alice are friends on Facebook. They install the Chrome browser extension "Omerta" and initialize it with their Ethereum account with enough Eth to make only 1 transaction on the mainnet. And that's all.

The user experience with Omerta

When Bob installs the Omerta extension, he creates his mafia by filling the public keys of the member of his mafia (this step could be automated by allowing a Facebook app Omerta that would access the open graph API, we decided not to focus on this part during the Hackathon)

Bob should always be able to decide who can access his messages

How to make sure that only Alice can decode Bob's messages? (and not Mark) Bob generates a secret locally, he encrypts it with Alice's public key, then sends a transaction to Alice with the encrypted secret in the data field of the transaction.(ECIES)

Facebook is an untrusted channel, so encrypt everything sent to him!

Thanks to the Omerta browser extension, when Bob posts a new status on Facebook, Omerta encrypts the message before sending it to Facebook's Backend.

Keep a great user experience for Alice

When Alice loads her Facebook Wall with the status of all her friends, Bob's encrypted status is decoded and replaced on the fly in HTML by the Omerta extension.

With this system, Bob and Alice have all the advantages of Facebook without the disadvantages.

From Facebook's point of view, this hijacking is not easy to detect and sensure, and techniques of offustation can always be added to Omerta to get a head start.

The Omerta diagram

omerta

What exactly did we do during the Hackatons?

  • Design a technical solution to meet the initial idea
  • Try ECEIS implementation to validate that ethereum-identites could be used to share a secret onchain
  • Create Scripts to interchange the event to send a message on Facebook / Twitter
  • Create Crawler to identify encrypted messages and replace them on the fly.
  • Create Scripts to restrieve a specific tx by a sheme in the data (omerta:userid:encryptedsecret)
  • Create Chrome Extension who integrates and orchestrates all these scripts

The Demo

Watch the video!

Watch the video

Install & Test

Disclaimer: this is just a prototype create in a few hours for fun, do not use it for a real project

All the code of the extension is a the root of this repo (master tree) - (Warning, the code is quite instable) The directory holding the manifest file can be added as an extension in developer mode in its current state.

  • Open the Extension Management page by navigating to chrome://extensions.
  • The Extension Management page can also be opened by clicking on the Chrome menu, hovering over More Tools then selecting Extensions.
  • Enable Developer Mode by clicking the toggle switch next to Developer mode.
  • Click the LOAD UNPACKED button and select the extension directory

The extension has been successfully installed

Run Omerta for the first time

omerta

  • Clic on the Extension icon

omerta

  • Import your Eth Account by private Key
  • import your Mafia members by ID (twitter or Facebook) and by their Public Key (not Address)

What we could not complete

The script injection by the extension is not fully functional on Facebook, but we have proved that it is technically possible, we ran out of time.

The team

We are 3 developers (Backend / Blockchain) Tangui Clairet, Nicolas Law, Vincent Le Gallic, We work together at Rockside.io - We come from Paris and we are between 22 and 33 years old.

Licence

MIT

About

The right way to be social online - ETHBerlinZwei hackathon

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published