A Java-based secure messaging platform with authentication, encrypted communication, and audit logging to ensure confidentiality, integrity, and authenticity.
This project implements a centralized client-server chat application designed to provide tamper-proof and private communication. It integrates asymmetric cryptography (RSA, Diffie-Hellman) and symmetric AES encryption to ensure end-to-end security, along with protection against replay attacks and unauthorized access.
- User Authentication with Salted Hashes – SHA-256(password + username)
- Automatic Public/Private Key Generation for every user
- AES-CBC Message Encryption with per-message random IVs
- Server-Facilitated RSA/DH Key Exchange for session keys
- Mutual Challenge-Response Authentication between client and server
- Perfect Forward Secrecy with key rotation every 50 messages
- Replay Attack Protection using timestamps, sequential processing, and unique IDs
- Audit Logging to ensure traceability and reliability
- Initial Connection – RSA key pair generation and server public key exchange
- User Authentication & Registration – Secure salted hash validation
- Mutual Authentication – RSA-signed challenge-response mechanism
- Diffie-Hellman Key Exchange – Secure AES-128 session key derivation
- Message Transmission – AES-CBC encryption with IV per message
- Perfect Forward Secrecy – Session keys auto-rotated after 50 messages
- Replay Attack Protection – Timestamps, message ordering, and unique IDs
/src – Java source files for client and server
/logs – Server audit logs
- Java 11 or higher
- Eclipse IDE for Java Developers
git clone https://github.com/Nadun-Dissanayake/Inforamtion-Security.git- Open Eclipse IDE.
- Go to File > Import > Existing Projects into Workspace.
- Select the cloned folder and finish the import.
- Start the Server: Locate the
Servermain class → Right click > Run As > Java Application - Start a Client: Locate the
Clientmain class → Right click > Run As > Java Application
This project is for academic and research purposes. Use responsibly.