Security modelModèle de sécurité
The layers that protect a connection, who can reach the host, and the honest limits.Les couches qui protègent une connexion, qui peut atteindre l'hôte, et les limites honnêtes.
Every connection is end to end TLS 1.3 with a post-quantum key exchange, and the person in front of the PC sees and decides everything.
Chaque connexion est en TLS 1.3 de bout en bout avec un échange de clés post-quantique, et la personne devant le PC voit et décide tout.
1. LayersCouches
| Layer | What |
|---|---|
| Transport | TLS 1.3 only, X25519MLKEM768 hybrid key exchange first (OpenSSL >= 3.5); native clients refuse anything not post-quantum |
| Host identity | self-signed ECDSA P-256 certificate, pinned by the native clients on first use; a changed identity is refused |
| Code proof (native) | HMAC(Argon2id(code, salt), transcript), transcript = nonces + sha256(certificate): no offline brute force, no relay by a man in the middle |
| Mutual auth | the host answers with its own proof: a fake host is detected |
| Trusted devices | 256-bit device secret, same HMAC proof, given only when the host trusts the device |
| Brute force | maxAuthFailures wrong codes from one address: 1 h ban and a new code |
| Registry | devices.json signed with an HMAC key (registry.key, 0600) |
| Web | strict CSP (default-src 'self'), no-store, no inline script, frame-ancestors 'none' |
| UDP video | AES-256-GCM, per-session keys sent inside TLS, replay window, no answer to an unauthenticated address |
| Couche | Quoi |
|---|---|
| Transport | TLS 1.3 seulement, échange de clés hybride X25519MLKEM768 en premier (OpenSSL >= 3.5) ; les clients natifs refusent tout ce qui n'est pas post-quantique |
| Identité de l'hôte | certificat ECDSA P-256 auto-signé, épinglé par les clients natifs à la première connexion ; une identité changée est refusée |
| Preuve du code (natif) | HMAC(Argon2id(code, sel), transcript), transcript = nonces + sha256(certificat) : pas de force brute hors ligne, pas de relais par un homme du milieu |
| Authentification mutuelle | l'hôte répond avec sa propre preuve : un faux hôte est détecté |
| Appareils de confiance | secret d'appareil de 256 bits, même preuve HMAC, donné seulement quand l'hôte fait confiance à l'appareil |
| Force brute | maxAuthFailures mauvais codes depuis une adresse : ban d'1 h et nouveau code |
| Registre | devices.json signé avec une clé HMAC (registry.key, 0600) |
| Web | CSP stricte (default-src 'self'), no-store, aucun script inline, frame-ancestors 'none' |
| Vidéo UDP | AES-256-GCM, clés par session envoyées dans TLS, fenêtre anti-rejeu, aucune réponse à une adresse non authentifiée |
2. Who can reach the hostQui peut atteindre l'hôte
Only the LAN and the PC itself, plus the one path the exposure mode adds; a peer coming through another path is dropped before TLS. Sharing starts off at each launch, and each start gives a new code.
Seulement le LAN et le PC lui-même, plus le chemin que le mode d'exposition ajoute ; un pair arrivant par un autre chemin est coupé avant TLS. Le partage démarre arrêté à chaque lancement, et chaque démarrage donne un nouveau code.
3. LimitsLimites
Warning. A remote terminal runs with the rights of your user. The tamper protection stops the usual ways of touching xdesk, not a determined attacker with a shell: give terminals only to people you trust (the right can be removed live).
- The web client cannot read the certificate: it sends the code inside TLS without the Argon2id binding. Prefer the native clients on an untrusted network.
cloudflaredterminates TLS at the relay.- The Tailscale certificate publishes the MagicDNS name in the public certificate logs.
Attention. Un terminal distant tourne avec les droits de ton utilisateur. La protection contre l'altération arrête les moyens habituels de toucher à xdesk, pas un attaquant déterminé avec un shell : ne donne les terminaux qu'à des personnes de confiance (le droit peut être retiré en direct).
- Le client web ne peut pas lire le certificat : il envoie le code dans TLS sans la liaison Argon2id. Préfère les clients natifs sur un réseau non sûr.
cloudflaredtermine TLS au relais.- Le certificat Tailscale publie le nom MagicDNS dans les logs publics de certificats.