Project Members
Shryesh Khandelwal - 20164126
Shubham Agarwal - 20164092
Sparsh Joshi - 20164118
Shubham Rao - 20164090
Teibok Lang Chyne -
CryptoChat is a multi user/server architecture chat application that has the following features:
- Encrypted chats (End-To-End encryption with the AES algorithm)
- Hashing (Ensuring integrity of the messages sent to other users)
- Digital Signature (For authentication of the data sent among users)
The project is implemented using Java on the IntelliJ IDE with JDK 1.8.0_u191.
The project has 2 modules:
- ChatServer
- ChatClient
The ChatServer module has 3 classes:
- Server
- ServerMain
- ServerWorker
The program that is responsible for establishing new connections. When a new connection is made, it spawns a ServerWorker instance to handle the new client while the main program listens for any new connections on the port. This class is responsible for establishing the socket before handing work to the ServerWorker instance.
This program is the program that contains the main function and is responsible for starting the server.
This program is responsible for handling the clients connected to the server. It handles everything from login to the sending of the messages between clients. It extends the thread class so each worker is a new thread to handle a separate client. This enables us to handle multiple clients concurrently.
This module has 2 packages
- com.muc
- Crypt_Algo
The com.muc package contains all the clients functionalities. The Crypt_Algo package contains all the algorithms used for encryption, hashing and digitally signing the messages.
It contains the following classes:
- ChatClient
- LoginWindow
- MessageListener(Interface)
- MessagePane
- UserListPane
- UserStatusListener(Interface)
This class handles all the clients functionalities such as handling login, message sending, reading new messages etc.
This class is a frame that allows a user to login to message the other users. This is the program the user executes to start his application.
This is a simple interface for the function which can be overriden to perform actions when a new message is received by a client.
It contains the main code to perform encryption, hashing and digitally signing the data. This window is the one from which the clients interact with each other.
This is the frame that opens after a user logins. It shows a list of users which the client can select to chat.
This is a simple interface which handles online and offline status of users. The functions can be overriden.
Contains the three main algorithms used.
- AES(Encryption)
- MD5(Hashing)
- DigitalSignature(DSA)
Performs the encryption of the data based on the key. Contains both the methods to encrypt and decrypt the data.
The Message Digest-5 algorithm for hashing
Implements the Digital Signature Algorithm commonly used to digitally sign data. Contains both the methods to sign and verify a signature.
DISADVANTAGES
- Both users need to be online and chat windows open to communicate since the server has no buffer to store the messages.
- Lack of a good GUI.
- Lack of many other functionalities common in other chat applications.
PRO
- Security of the messages.