BlindShare - P2P Secure Sharing Suite

BlindShare - P2P Secure Sharing Suite


📌 Overview

BlindShare is a peer-to-peer sharing suite built on WebRTC — every byte travels directly between two browsers, end-to-end encrypted by the browser’s own DTLS layer (AES-GCM). The signaling server sees only SDP and ICE handshake metadata; it never touches your payload.

👉 Try it live: blindshare.in


🧰 The Tool Suite

BlindShare is a single app with six modes, each purpose-built for a different sharing scenario:

ToolWhat it does
BlindDropFile transfer — chunked ArrayBuffer over the data channel, any file type
BlindTextPlain-text messages — paste and send, nothing stored
BlindSnippetCode sharing — monospace layout with syntax highlighting
BlindSecretCredential-safe sharing — masked field, click-to-copy, no shoulder-surfing
BlindShowView-once media — image/video self-removes from the UI after first view
BlindCastLive screen share — getDisplayMedia streamed P2P, no relay through a server

🔐 How the Security Works

  • All data is DTLS-encrypted — mandatory WebRTC standard enforced by the browser, not optional.
  • Signaling server is zero-knowledge — it holds in-memory room state (SDP + ICE candidates) only during connection setup. No payloads, no logs, no database.
  • No accounts, no storage — there’s nothing to breach because nothing is saved.
  • STUN/TURN for NAT traversal — STUN gives public IPs for direct P2P. TURN relays (still DTLS-encrypted) kick in only when symmetric NAT or corporate firewalls block direct paths.

🏗️ Architecture

Browser A                    Signaling Server                  Browser B
(Sender)                     (Node.js + ws)                    (Receiver)
   │                               │                               │
   ├──── SDP offer ───────────────►│                               │
   │                               ├──── SDP offer ──────────────►│
   │                               │◄─── SDP answer ──────────────┤
   │◄─── SDP answer ───────────────┤                               │
   ├──── ICE candidates ──────────►│──── ICE candidates ──────────►│
   │                               │                               │
   └──────────── RTCDataChannel (DTLS/AES-GCM, P2P) ─────────────┘
                        payload never touches the server

🚀 Tech Stack

LayerStack
FrontendReact + Vite + TailwindCSS (TypeScript)
WebRTCRTCPeerConnection, RTCDataChannel, MediaStream
File chunkingFileReader → 16–64 KB ArrayBuffer chunks → Blob reassembly
SignalingNode.js + ws (WebSocket), in-memory room state
DeploymentFrontend on Cloudflare (blindshare.in) · Signaling on Faable

📎 References