Git Product home page Git Product logo

encryp.io's Introduction

encryp.io

Prototype of a secure real-time peer-to-peer encrypted communication network. Developed in a 36-hour period at a security hackathon.

Table of Contents

Example

Clone repo, get the requirements to your local virtual environment:

$ git clone https://github.com/KaroliShp/encryp.io.git
$ cd encryp.io
$ pip install -r requirements.txt

Start the server at localhost:5000:

$ python encrypio/server.py

In separate terminals start two clients which will connec:

$ python encrypio/client.py klevas
$ python encrypio/client.py berzas

Then once the connection is established, just enter the other UID in one of the terminals (for example klevas in berzas terminal) and once you're connected, click enter.

Example connection screenshot:

Architecture

A diagram of the architecture:

Each user has their own UID and public and private key pair.

End users (Alice and Bob) connect to the server and authenticate with it. Security is achieved by establishing a TLS connection (both server and client verification).

One of the end users (the initiator) then asks to establish a connection with the other user(s). After the contacted user(s) has accepted the incomming connection request, the server shares relevant public keys and UIDs with relevant parties. P2P connection is then established between the parties.

P2P is secured using ECDH key exchange (with key size of 384 bits). AES keys of 256 bits size are used thereafter to encrypt the communications. Forward secrecy is achieved by using unique symmetric key for each message that gets sent - this gives assurances your session keys will not be compromised even if one of the private keys is compromised.

Tech stack/protocols/ideas etc.

  • Python (sockets, SSL, cryptography libraries)
  • Public key infrastructure (kind of)
  • Cryptography (symmetric ciphers, key-agreement protocols)
  • Networking (communication via TCP-based sockets)

Features

  • Online-only messaging (theoretically, the client could locally hold a limited number of messages for the other party until the other party becomes available)

  • No chat history, thus messages are NEVER stored on any server (a timer is used to ensure message self-destruction in the clients)

Design

Some neat design solutions from one of the h4x0rz (gifs)

encryp.io's People

Contributors

karolishp avatar r-k-jonynas 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.