VoidShare is a decentralized peer-to-peer (P2P) encrypted file-sharing system designed to prioritize privacy and security. It enables users to share files directly with peers without relying on centralized servers, ensuring end-to-end encryption and secure communication.
- Decentralized P2P Communication: Direct file sharing between peers using WebRTC and WebSockets.
- End-to-End Encryption: Files are encrypted using AES-256 before transmission, ensuring confidentiality.
- Secure Key Exchange: AES keys are securely exchanged using ECC (Elliptic Curve Cryptography).
- Digital Signatures: Ensures file integrity and authenticity using RSA-based digital signatures.
- Real-Time Communication: Uses WebSockets for signaling and establishing peer connections.
- Progress Tracking: Displays real-time progress for file uploads and downloads.
- Cross-Browser Support: Works seamlessly in modern browsers with WebRTC and Web Crypto API support.
- Frontend: React JS
- Backend: Node.js with WebSocket server
- Cryptography:
- AES-256 for file encryption
- ECC for secure key exchange
- RSA for digital signatures
- WebRTC: Peer-to-peer connection establishment
- Database: MongoDB (for user authentication and metadata storage) , Redis (for session management)
-
Users authenticate via a central server (backend with JWT)
-
Peers discover each other using Redis
-
Upon connection request and approval, peers establish a secure WebRTC session
-
A session key is generated using ECDHE, then shared via ECC encryption
-
The file is encrypted using AES and transferred in chunks via WebRTC DataChannel
-
The receiver decrypts and reassembles the file
-
The session is terminated and keys are securely discarded
- Node.js (v14 or higher)
- Modern browser with WebRTC and Web Crypto API support
- MongoDB
- Redis
-
Clone the Repository:
git clone https://github.com/Krish2005tech/VoidShare/tree/demo
-
** Start MongoDB**:
mongod --dbpath /path/to/your/mongodb/data
-
Start Redis:
redis-server
-
Start the Central Server:
cd central_server npm install npm start -
Start the Frontend:
cd frontend npm install npm start -
Start the Experiment Server:
cd Experiments npm install node server.js -
Access the Application: Open your browser and navigate to
http://localhost:3000(or the port specified in your frontend configuration).
