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.