DSH Mobile Remote security model
Understand the outbound connection, QR-delivered key, sealed tunnel, Relay metadata, and current limitations before pairing a phone.
Version 0.1.4 encrypts DSH HTTP, SSE, and WebSocket content end to end between Mobile and Companion. The Relay routes opaque frames and never receives the content key.
Network boundary
DeepSeek Harness remains bound to 127.0.0.1:3080. The Companion does not create a public listener. It opens an outbound authenticated WSS connection to the configured Relay and rewrites the upstream Host header back to the local DSH listener.
Credentials
Mobile client
Uses account access tokens, short-lived WebView tickets, and a QR-delivered E2EE key stored in platform secure storage. It never receives the computer device token.
Computer
Stores the Relay device token and E2EE key locally in ~/.dsh-remote/config.json with owner-only permissions.
Relay
Stores hashes of passwords, refresh tokens, and device tokens rather than the original values.
Remote session
Uses a single-use ticket, authenticated PSK handshake, directional AES-256-GCM keys, and replay-protected sequence numbers.
What the Relay stores
The Relay stores accounts, devices, pairing state, event kinds, and bounded access-log metadata such as phone information and access times. It cannot decrypt DSH HTTP, SSE, or WebSocket content and does not persist ciphertext payloads.
The Relay can still observe account/device associations, online state, connection time, ciphertext length, and traffic timing. End-to-end content encryption does not make the service anonymous.
Revocation
Removing a pairing revokes the Relay device credential, disconnects active remote access, and clears the local credential after the Relay confirms the operation. The dsh-mobile unpair command provides the same operation when the Web UI is unavailable.
Known MVP limitations
- The QR-delivered PSK profile does not provide forward secrecy.
- Existing pre-0.1.3 pairings must be removed and paired again by QR.
- No email verification or account recovery.
- The Relay must run as a single instance.
- Account deletion, a full privacy policy, and related compliance work are required before app-store distribution.
Operate a tighter boundary
You can deploy your own Relay and control its host, TLS termination, storage, and logs. End-to-end content encryption remains active, while self-hosting additionally places metadata and account storage under your control.
Report security issues privately through the process in the SuiteSECURITY.md. Do not publish exploitable details in a public issue.