A terminal-based chat application with end-to-end encryption for secure communication.
Secure Messaging App is a lightweight, terminal-based chat application that prioritizes privacy through end-to-end encryption. Built with NodeJS and TypeScript, this application offers secure communication over insecure networks through a combination of RSA and AES-GCM encryption techniques.
- π End-to-End Encryption using RSA + AES-GCM
 - π» Terminal-based user interface
 - π Client-server architecture
 - π± Cross-platform compatibility (Windows, Linux)
 - π Executable builds for easy distribution
 - π§΅ Lightweight with minimal dependencies
 
- TypeScript: For type-safe development
 - Node.js: JavaScript runtime
 - Crypto: Node.js built-in crypto module for encryption
 - esbuild: For bundling the application
 - pkg: For creating standalone executables
 
- Node.js (v16 or higher)
 - npm (v7 or higher)
 
git clone https://github.com/Farzync/secure-console-messaging-app.git
cd secure-console-messaging-appnpm installStart the server:
npm run dev:serverIn a separate terminal, start the client:
npm run dev:clientBuild the application:
npm run buildStart the server:
npm run start:serverStart the client:
npm run start:clientBuild executables for both Windows and Linux:
npm run build:allThe executables will be available in the build/server and build/client directories.
This application implements a two-layer encryption protocol:
- RSA Key Exchange: Used for initial handshake and secure exchange of AES keys
 - AES-GCM: Used for encrypting the actual message content with perfect forward secrecy
 
- No plaintext message storage
 - Zero trust architecture
 - Perfect forward secrecy
 - Ephemeral key generation
 - Message authentication via GCM
 
secure-messaging-app/
β   .gitignore
β   LICENSE
β   package-lock.json
β   package.json
β   README.md
β   tsconfig.json
β
ββββsrc
    ββββbuild
    β       client.js
    β       server.js
    β
    ββββclient
    β   β   index.ts
    β   β   messagingClient.ts
    β   β   types.ts
    β   β
    β   ββββutils
    β           connection.ts
    β           encryption.ts
    β           prompt.ts
    β           timestamp.ts
    β
    ββββserver
        β   index.ts
        β   messagingServer.ts
        β   types.ts
        β
        ββββutils
                encryption.ts
                port.ts
                prompt.ts
                timestamp.ts
This project is licensed under the MIT License - see the LICENSE file for details.
Faeza Raziq
- Email: faezaraziqg@gmail.com
 - GitHub: Farzync
 
Made with paranoia and love by Faeza Raziq.