Skip to content

Implementation of an End to end encrypted messaging system, where client to client communication is performed after triple-DES encryption, with the keys exchanged using Diffie-Hellman Key exchange algorithm. A user is also able to create multiple groups and be a part of any set of groups. Messages could be text, images, video file etc.

Notifications You must be signed in to change notification settings

Danialkafeel/End-to-End-Encrypted-Messaging-System

Repository files navigation

END TO END MESSAGING SYSTEM

Prerequisites and Installation

  • Threading pip3 install threading
  • Socket pip3 install socket
  • Os pip3 install os
  • Sys pip3 install sys
  • Hashlib pip3 install hashlib
  • Crypto pip3 install Crypto
  • Time pip3 install time
  • Base64 pip3 install bas64
  • Sqlite3 pip3 install sqlite3
  • JSON pip3 install json
  • Random pip3 install random
  • Subprocess pip3 install subprocess

FLOW AND WORKING

  • A automated program is executed to start desired number of Servers for the application. python3 automate_program.py <Number of servers>
  • Loadbalancer program is started on specified Port number, which uniformly distributes the requests from the different different clients to different Servers accordingly. python3 loadbalancer.py <LoadBalancerPort>
  • Various Clients program are started on different Port nos and all clients are binded to the Loadbalancer. python3 client.py <clientPort> <LoadBalancerPort>
  • Clients can directly send to messages or any file to other clients. Clients can created or join various groups and then send messages or files to different different groups.
  • All the messages and files are encrypted using Triple DES (3DES) encyrption algorithm. Keys between clients are shared using Diffie–Hellman key key exchange algorithm

Various Commands for Client

  • Sign up <username> <rollnumber> <password> - For signing up clients for first time.
  • Login <usernamer+rollnumber> <password> - For logging into their account.
  • Send <Name+Rollno.> <message> - Sending message to any specific client.
  • Send_file file_name <Name||Rollno.> -Sending File to any specific client.
  • Send_group <No.ofgroups> <Groupno.(s)> <message> - Sending group message.
  • Send_group_File <File_Name> <No.ofgroups> <Groupno.(s)> Sending group file.
  • Create <Groupname> -Creating a new Group.
  • Join <Groupname> - Joining Specific Group.
  • Show_my_groups - Displaying groups where I am a member
  • List - Listing avaliable groups to join.

Interaction Model

Interaction model

Class Diagram

class diagram

Snapshots of the Application with various Commands

  • Automate program to create multiple servers

alt text

  • Sign Up

alt text

  • Login Menu , List , Create, Join Commands

alt text

  • Messages between Client to Client and Client to Groups.

alt text

About

Implementation of an End to end encrypted messaging system, where client to client communication is performed after triple-DES encryption, with the keys exchanged using Diffie-Hellman Key exchange algorithm. A user is also able to create multiple groups and be a part of any set of groups. Messages could be text, images, video file etc.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages