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-app
npm install
Start the server:
npm run dev:server
In a separate terminal, start the client:
npm run dev:client
Build the application:
npm run build
Start the server:
npm run start:server
Start the client:
npm run start:client
Build executables for both Windows and Linux:
npm run build:all
The 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: [email protected]
- GitHub: Farzync
Made with paranoia and love by Faeza Raziq.