GithubHelp home page GithubHelp logo

smolinari / extremepriv Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jido/extremepriv

0.0 1.0 0.0 120 KB

Extreme privacy demo page

License: MIT License

JavaScript 70.50% TypeScript 15.27% CSS 14.22%

extremepriv's Introduction

extremepriv

Extreme privacy demo page

Try it! || Read more

about extreme privacy

I have had enough of seeing my private information fall into the clutches of wrongdoers. Extreme privacy aims to solve the issue once and for all.

The first principle of the scheme is that personally identifiable information (PII) belongs in the hands of the user, not in the hands of large organisations.

Therefore it should be accessible on user devices only. User devices can elect to share some of it on request, according to the following principles.

The second principle is that web-based services should not hold on to personally identifiable information longer than strictly necessary.

If the service needs to use PII, for example when the client would otherwise leave evidence of private information or when forwarding the information to a third-party service, it should be discarded immediately after use.

The third principle is that web-based services can only access PII temporarily while the user interacts with the service.

Holding on to it after the user leaves the app (or closes the webpage) is prohibited.

demonstration of extreme privacy

The demo page offers to create a user account by entering name, date of birth and other personal information.

However the information is immediately encrypted using a cipher key which stays on the user device.

That prevents any computer other than the user device from accessing it.

To display the user name, the server puts a placeholder on the page which is filled in by the browser on the user device. The server doesn't see the name.

The user can leave the page and come back later to see their name in the placeholder thanks to the cipher key.

The cipher key can be copied to another device or app to access the same information there.

A future version of the page will demonstrate a page update which shows content supposed to be of interest to the user based on their gender. Because it loads different images depending on personal information, this is done server-side. Only strictly relevant information is sent and the server discards it as soon as it finishes preparing the appropriate images.

The future page will also receive a push notification suggesting the user to check their inbox.

That form of communication does not require the server to know the user name, address, phone or e-mail.

technical details

The page uses an AES-GCM 256 bit key for encryption. It stores it in IndexedDB which is local and tied to a specific site.

The encrypted PII is sent to the server so it can be accessed from multiple clients.

Exchange of personal information between client and server will be done using WebSockets.

Push notifications will be received using polling. An actual application could use the push framework provided by the operating system. To reduce the privacy impact, as little data as possible should be given to that framework - in particular there should be no user ID.

The server is based on NestJS and SQLite3. Open the privateserver folder for more details.

limitations of the scheme

Due to the third principle, there are actions that extreme privacy-compliant services cannot perform.

A workaround is to let third-party services take care of them. However these services would likely be non-compliant which would deter users.

Examples of such actions include shipping physical goods to the user doorstep, registering user information for administrative purposes or revealing information related to an offline user to law enforcement.

Some personal information lies in a grey area between public and private, like the e-mail address and phone number of the user.

A compliant service can allow the user to register them outside of the boundaries of personal identifiable information as long as they are clearly labelled as non-private and "at your own risk".

If they are kept private, the app has no means to contact the user other than push notifications and in-app messages.

extremepriv's People

Contributors

jido avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.