Skip to content

Implementation of an encrypted bidirectional communication channel between multiple Android App users and a Taylor-made multi-threaded server in python

Notifications You must be signed in to change notification settings

YardenBakish/Encrypted-Server-Android-App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 

Repository files navigation

Encrypted-Server-Android-App

TABLE OF CONTENTS

Summary

Server

Android App Client

Technical Details

SUMMARY

Implementation of an encrypted bidirectional communication channel between multiple App users and a Taylor-made multi-threaded server in python

Securing the communication channel is achieved via executing the 'Diffie Hellman' key-exchange protocol which results in the client and server jointly establish a shared, secret, and unique key over an insecure channel. This key is used to encrypt subsequent communications using the 'AES-GCM' encryption which provides high speed of authenticated encryption and data integrity

Server

The server program utilizes multithreading allowing it to handle multiple clients, and serves as an EchoServer - sending each client the message it received.

In addition, the server concurrently maintains two logs which monitor various actions, as described in the following table:

Log Records
userslog.txt data received and sent both encrypted and decrypted, clients' times of connection and IP addresses, and key-exchange success status
out.txt server uptime

Android App Client

The client-side is implemented as an Android App, allowing users to establish a secured communication channel, as described below:

  1. Type in your server I.P address and port number (please see 'Important Note' in the 'Technical Details' Section), and click the 'SECURE CHANNEL' button

image

  1. Send and receive messages from server

image

Technical Details

Important Note

When connecting to the server, type in the 'port' text widget: "8080". The 'port' widget was added in case you wish to establish communication via a different port which in this case, requires you to change the port in 'server.py' as well (line 222).

Outside Network

In order to be able to receive data from an outside network i.e. your server program will be able to communicate with clients which are connected to a different network, you must contact your Internet provider and request a static public I.P.

Python Modules

In order to run 'server.py', the following python modules must be included in your available modules:

  • pycrypto
  • pyDHE

About

Implementation of an encrypted bidirectional communication channel between multiple Android App users and a Taylor-made multi-threaded server in python

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages