Skip to content

Krish2005tech/VoidShare

 
 

Repository files navigation

Skribix Logo

VoidShare

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.

Features

  • 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.

Table of Contents

  1. Technologies Used
  2. How It Works
  3. Prerequistes
  4. Usage
  5. Contributors

Technologies Used

  • 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)

Work Flow

  1. Users authenticate via a central server (backend with JWT)

  2. Peers discover each other using Redis

  3. Upon connection request and approval, peers establish a secure WebRTC session

  4. A session key is generated using ECDHE, then shared via ECC encryption

  5. The file is encrypted using AES and transferred in chunks via WebRTC DataChannel

  6. The receiver decrypts and reassembles the file

  7. The session is terminated and keys are securely discarded


Prerequisites

  • Node.js (v14 or higher)
  • Modern browser with WebRTC and Web Crypto API support
  • MongoDB
  • Redis

Steps

  1. Clone the Repository:

     git clone https://github.com/Krish2005tech/VoidShare/tree/demo
  2. ** Start MongoDB**:

     mongod --dbpath /path/to/your/mongodb/data
  3. Start Redis:

     redis-server
  4. Start the Central Server:

     cd central_server
     npm install
     npm start
  5. Start the Frontend:

     cd frontend
     npm install
     npm start
  6. Start the Experiment Server:

     cd Experiments
     npm install
     node server.js
  7. Access the Application: Open your browser and navigate to http://localhost:3000 (or the port specified in your frontend configuration).

Contributors

About

An encrypted Peer-to-Peer file sharing web application

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 98.0%
  • JavaScript 1.6%
  • CSS 0.2%
  • PowerShell 0.1%
  • HTML 0.1%
  • Shell 0.0%