Giter Club home page Giter Club logo

p2p_texteditor's Introduction

p2p_texteditor

Collaborative text editor design on encrypted channel

Team Members

Brian, Danny, Edwin, Yufeng, Rachid

Minimum Value Product

Users are able to collaborate with other people on documents and see the changes in real-time.

User Stories

  • As a user, I should be able to create documents and share the documents by sending links.
  • I should be able to collaborate with other people
  • My documents should not be able to be read by unauthorized people
  • As a user, I should be able to change the font and size of the text.
  • My documents should be automatically saved when exited.

Capabilities of using device:

  1. Capabilities of the document interface:
    1. Each user will be able to access a cache of their changes they’ve made
    2. Able to edit and read and write the documents
    3. Saves the documents inside the website

Software Architecture

Short desription of Encryption

Note: We are using simple encryption using symmetric keys from the same library as the hybrid encryption called Fernet

To ensure documents could not be read by the server owner or people without permission, we encrypt the files on the server.

We use a hybrid cryptosystem which uses both public key cryptograpghy as well as a symmetric key. This allows the editor to be more efficient. Users on a document will each have a public and private key, while the document will be encrypted with a symmetric key. The symmetric key that encrypts the document will be shared to users that have permissions on the document, by encrypting it using their shared public key, therefore only they can decrypt it with their private key. Since the text editor is most likely to be used for file that can be large, this is more effective as most of the work is done with the efficient symmetric key decryption, while the more computational reliant public key scheme is only needed to decrypt a short key. On top of that, we use CBC (cipher block chaining) which XORs each block of plaintext with the previous ciphertext block before being encrypted, making each ciphertext dependent on its predecessor. This provides even more secrecy of data

We use fernet aes with 128bit keys for symmetric encryption, and rsa with 2048 bit keys.

Next Steps of Implementation

  • Deploy the application on https host on ec2
  • Being able to choose and work on multiple documents
  • Choosing permissions for different users
  • System to track users and files (permissions & keys)
  • SSL socket connections between editors

To Run locally

p2p_texteditor\editor> python .\app.py

p2p_texteditor\editor\static\node_modules\y-websocket\bin> node .\server.js

p2p_texteditor's People

Contributors

djtrinh avatar brianhe12 avatar edsun123 avatar rachidtt avatar yufeng-l avatar

Watchers

James Cloos 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.