Fix relay encryption docs (#849)

This commit is contained in:
João Sousa Andrade
2026-05-09 23:16:27 +08:00
committed by GitHub
parent 9c1c2cea76
commit bb5ac5b1d0
3 changed files with 8 additions and 6 deletions
+1 -1
View File
@@ -103,7 +103,7 @@ Communicates with the daemon via the same WebSocket protocol as the app.
Enables remote access when the daemon is behind a firewall. Enables remote access when the daemon is behind a firewall.
- ECDH key exchange + AES-256-GCM encryption - Curve25519 ECDH key exchange + XSalsa20-Poly1305 (NaCl `box`) encryption
- Relay server is zero-knowledge — it routes encrypted bytes, cannot read content - Relay server is zero-knowledge — it routes encrypted bytes, cannot read content
- Client and daemon channels with identical API (`createClientChannel`, `createDaemonChannel`) - Client and daemon channels with identical API (`createClientChannel`, `createDaemonChannel`)
- Pairing via QR code transfers the daemon's public key to the client - Pairing via QR code transfers the daemon's public key to the client
+3 -2
View File
@@ -40,8 +40,9 @@ function Privacy() {
<li>Session IDs</li> <li>Session IDs</li>
</ul> </ul>
<p> <p>
All messages between your phone and daemon are end-to-end encrypted with AES-256-GCM. All messages between your phone and daemon are end-to-end encrypted with
The relay cannot read your messages, see your code, or decrypt your traffic. XSalsa20-Poly1305. The relay cannot read your messages, see your code, or decrypt your
traffic.
</p> </p>
</section> </section>
+4 -3
View File
@@ -31,7 +31,8 @@ The relay is the simplest way to connect from your phone. It requires no VPN set
1. The daemon generates a persistent ECDH keypair and stores it in `$PASEO_HOME/daemon-keypair.json` 1. The daemon generates a persistent ECDH keypair and stores it in `$PASEO_HOME/daemon-keypair.json`
2. When you scan the QR code or click the pairing link, your phone receives the daemon's public key 2. When you scan the QR code or click the pairing link, your phone receives the daemon's public key
3. Your phone sends a handshake message with its own public key. The daemon will not accept any commands until this handshake completes. 3. Your phone sends a handshake message with its own public key. The daemon will not accept any commands until this handshake completes.
4. Both sides perform an ECDH key exchange to derive a shared secret. All subsequent messages are encrypted with AES-256-GCM. 4. Both sides perform a Curve25519 ECDH key exchange to derive a shared key. All subsequent
messages are encrypted with XSalsa20-Poly1305 (NaCl `box`).
The relay sees only: IP addresses, timing, message sizes, and session IDs. It cannot read message contents, forge messages, or derive encryption keys from observing the handshake. The relay sees only: IP addresses, timing, message sizes, and session IDs. It cannot read message contents, forge messages, or derive encryption keys from observing the handshake.
@@ -40,8 +41,8 @@ The relay sees only: IP addresses, timing, message sizes, and session IDs. It ca
The daemon requires a valid cryptographic handshake before processing any commands. A compromised relay cannot: The daemon requires a valid cryptographic handshake before processing any commands. A compromised relay cannot:
- **Send commands**, Without your phone's private key, it cannot complete the handshake - **Send commands**, Without your phone's private key, it cannot complete the handshake
- **Read your traffic**, All messages are encrypted with AES-256-GCM after the handshake - **Read your traffic**, All messages are encrypted with XSalsa20-Poly1305 (NaCl `box`) after the handshake
- **Forge messages**, GCM provides authenticated encryption; tampered messages are rejected - **Forge messages**, NaCl `box` provides authenticated encryption; tampered messages are rejected
- **Replay old messages**, Each session derives fresh encryption keys - **Replay old messages**, Each session derives fresh encryption keys
### Trust model ### Trust model