Walkie Desk

Security technical details

This page is for those who need to evaluate Walkie Desk from a technical point of view. For an overview, see Security.

It describes the service as it is today, in beta: when something changes we update it.

Overview

Walkie Desk has four parts: the program on the PC to be reached, the browser of whoever connects, the coordination server at walkiedesk.app and a relay server (TURN), used only when the two devices cannot connect directly.

Walkie Desk diagram The technician’s browser and the PC with Walkie Desk both connect to the walkiedesk.app coordination server over TLS (1 and 2). The session runs directly between browser and PC, end-to-end encrypted (3); if a direct connection is not possible it goes, still encrypted, through the TURN relay server (4). walkiedesk.appcoordination Browserof the technician PCwith Walkie Desk TURN relayonly if needed 1 2 3 4 4
  1. Browser and walkiedesk.app: HTTPS and secure WebSocket (TLS). Used to sign in to the account and to exchange the session parameters, signed by the devices.
  2. PC and walkiedesk.app: secure WebSocket (TLS) opened by the Windows service, which always verifies the server certificate and name, including revocation checks.
  3. PC and browser: the session itself (video, keyboard, mouse, clipboard), over WebRTC and end-to-end encrypted. The coordination server is not on this path.
  4. Relay: if a direct connection is not possible, the same encrypted packets go through the relay server, which does not have the keys to read them.

Encryption

The session uses WebRTC. Video travels over SRTP, with keys negotiated through DTLS (DTLS-SRTP); keyboard, mouse, clipboard and commands travel in data channels, that is SCTP inside DTLS. Keys are negotiated between the PC and the browser and stay there: neither the coordination server nor the relay server knows them.

In the DTLS handshake each device presents a certificate whose fingerprint is written in the session parameters (SDP). Those parameters are signed by the devices (below): so the browser knows it is talking to the right PC, and the PC to the right browser.

Between the devices and walkiedesk.app everything goes over HTTPS and secure WebSocket (TLS), with HSTS.

Video
SRTP with DTLS keys (DTLS-SRTP)
Keyboard, mouse, clipboard
WebRTC data channels: SCTP over DTLS
Device signatures
ECDSA P-256
Hash of the signed parameters
SHA-256
Pairing and QuickSupport
CPace, password-authenticated key exchange
Account passwords
Argon2id
Second factor
TOTP or WebAuthn (security key or passkey)
Components on the PC
libdatachannel, OpenSSL, libsrtp
Components in the browser
the WebRTC implementation of Chrome, Edge or Firefox

We use widely adopted open source components that we keep up to date; the full list (SBOM) is available on request from the authorities.

Device identity and session signing

Every PC with Walkie Desk and every trusted browser has its own ECDSA P-256 key pair:

A person’s trusted browsers form a signed chain: the first one creates it, and every later browser joins only with the approval of an already trusted browser (with a one-time code) or with the account recovery key. The server stores the chain but cannot add a browser to it, because it does not have the keys to sign it.

Before each session the PC signs its connection proposal and the browser signs its answer, including the DTLS fingerprints. Each side verifies the other’s signature with a key it already knows, before using the parameters.

What this protects: if anyone on the coordination path, the server included, replaced a DTLS fingerprint to get in between the PC and the browser, the signature would no longer be valid and the session would be refused. The server puts the devices in touch, but cannot impersonate them. What this does not cover is explained under Known limitations.

What the server sees and does not see

It sees

  • PCs (identifier, public key, computer name, Windows and program versions), accounts and the public keys of trusted browsers;
  • the data of each session: who connects to which PC, when and for how long, whether it is relayed, technical quality statistics;
  • the servers’ technical logs, such as IP addresses and requested pages.

It does not see

  • the content of sessions: screen, keystrokes, mouse, clipboard;
  • the QuickSupport password and the secret part of the pairing code;
  • the private keys of PCs and browsers.

The servers are in Italy; data and backups stay in the European Union. What we keep, for how long and with which providers: privacy notice.

Account

Unattended access

QuickSupport

Against fake tech support scams: Protection against scams.

Signed programs and the OpenH264 codec

The Walkie Desk setup for Windows, its programs and QuickSupport are signed with Authenticode by the publisher iDev srl, with a timestamp: the signature remains verifiable even after the certificate expires. The third-party libraries included are not signed by us.

The OpenH264 codec is not included: the program downloads it from Cisco’s website and uses it only if its SHA-256 hash is the expected one.

How to check the publisher and the hash of a downloaded file: Security.

Updates and support period

Known limitations

The code of the web app, that is the user area and the viewer the technician connects from, is delivered by the walkiedesk.app server on every visit. Signing the parameters protects sessions from anyone altering the coordination messages, but not from a compromised server that delivered modified code to the browser.

Current mitigation: a strict Content Security Policy, which allows only scripts from the same domain and no third-party resources, except Stripe’s payment component on the Subscription page only. A signed viewer, verifiable without trusting the server, is a planned improvement.

Reporting a problem