Peer‑to‑Peer Direct Sharing
Share secrets directly without server storage. True zero‑knowledge with WebRTC.
Share Secret P2P
Direct peer‑to‑peer transfer
Share this Room ID with the person you want to send the secret to
Encryption Mode
Quantum‑Safe P2P Transfer
- ML‑KEM‑768 (Kyber) quantum‑safe key exchange
- ChaCha20‑Poly1305 authenticated encryption
- • Secret encrypted end-to-end before P2P transfer
- • Protected against quantum computer attacks
What post-quantum cryptography is and how it protects your secrets
How peer-to-peer sharing works
Create a room
The sender generates a room ID and passes it to the receiver, who joins with it. The signalling server only introduces the two browsers to each other.
Agree on the key
In automatic mode, the receiver generates a one-time ML-KEM-768 key when it connects. If you choose a contact, the secret is encrypted to the key you kept in your vault, and its fingerprint is checked before sending.
Send browser to browser
The secret and any files are encrypted with ChaCha20-Poly1305 and travel over WebRTC, directly or through a TURN relay when the network does not allow a direct connection.
Nothing is stored
Once the transfer ends, no copy of the secret is left on any server.
Peer-to-peer sharing FAQ
- Do we both have to be online at the same time?
- Yes. There is no storage in between: if nobody is in the room, there is nobody to send to. For someone who is not online, create a one-time secret instead.
- What can the TURN relay see?
- Only encrypted traffic. The relay forwards packets when the direct connection fails, but it does not have the keys to decrypt them.
- How do automatic mode and contact mode differ?
- Automatic mode needs no vault, but it encrypts for whoever joins the room with that ID. With a contact, the secret is encrypted to the key you kept: only that person can open it, even if someone else joins the room.
- Can I send files?
- Yes: up to 2 files of 2 MB each per transfer, encrypted just like the text.
- Can I tell who is sending me the secret?
- Yes, if the sender signs with their ML-DSA-65 key and you pick them as the sender when receiving: the signature is checked against that contact's public key.