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.