Skip to content

A server and client for a chat service providing end to end encryption.

Notifications You must be signed in to change notification settings

Qinusty/Crypt-Chat

Repository files navigation

Client/Server encrypted chat application Travis ci

Example server running at qinusty.co.uk port 5000

Client command guide

/register <username> <password> is used to register an account with the server /login <username> <password> is used to attempt to authenticate with the server

/msg <username> <message> is used to communicate with a user via username (end to end encryption is used) /gmsg <groupname> <message> is used to communicate with a group via the server, all messages are end to end encrypted however user lists are stored. /exit closes the client and logs out of the server

Requirements

  • Postgresql with database
  • Python 3.4.3 or above
  • Virtualenv

Setup basics

Setup tested on Fedora 23 in Gnome terminal, Python 3.4.3 and virtualenv 15.0.1

git clone [email protected]:Qinusty/Crypt-Chat.git
cd Crypt-Chat/
virtualenv -p python3.4 env

activate the virtual environment

  • bash uses . env/bin/activate
  • fish uses . env/bin/activate.fish

Double check python version with python -V If you are still on python 2.7.x, run future python commands with python3.4 instead of python

Client

Modify config.json and add server details.

pip install -r client-requirements.txt
python Client.py

Server

Install requirements with pip install -r server-requirements.txt

Database configuration

Run commands and authenticate when required. You may need to configure postgres to use md5 authentication. Take a look here pg_hba

psql -U <user> -c 'CREATE DATABASE <dbname>'
psql -U <user> <dbname> < DDL/schema.sql

Configure server and database connection settings via server_config.json

python Server.py

Security disclaimer

I cannot guarantee completely secure communications due the self taught nature of my education on encryption. However the end to end encryption uses 4096 bit RSA keys and uses the PKCS1_OAEP standard for RSA encryption and passwords are locally hashed using SHA512 and transmitted with end to end encryption before being stored on the server's database as the unencrypted hash.

About

A server and client for a chat service providing end to end encryption.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages