Aller au contenu
NomaDev

Sécurité

Sécurité : ce qui est où

NomaDev est conçu pour que votre travail n'ait jamais à passer par nous. Cette page explique, point par point, où se trouvent votre code, vos mots de passe et vos clés, et le peu que conserve notre propre service.

Vos projets ne quittent jamais votre ordinateur

Le serveur NomaDev tourne sur l'ordinateur ou le VPS où se trouvent déjà vos projets. Claude Code, git, l'aperçu et les envois s'exécutent tous là.

Votre téléphone se connecte directement à cette machine. À la maison, c'est en général via Tailscale, un réseau chiffré de point à point basé sur WireGuard ; sur un VPS, en HTTPS avec votre propre certificat. Aucun serveur à nous entre les deux : nous ne pourrions pas voir votre code même si nous le voulions.

Mots de passe et phrases secrètes ne sont stockés que sur votre téléphone

Quand un envoi demande un mot de passe FTP ou SFTP, ou la phrase secrète d'une clé SSH, vous la saisissez sur votre téléphone. Si vous choisissez de la mémoriser, elle est enregistrée dans le Keystore Android, le stockage chiffré protégé par le matériel de votre téléphone ; sinon, elle ne sert que pour cette tentative.

Le mot de passe part vers votre ordinateur pour cet envoi unique, reste en mémoire pendant l'envoi et n'est jamais écrit sur le disque — ni sur votre ordinateur ni chez nous. Nos serveurs ne le voient jamais.

Déconnecter le téléphone dans l'app efface aussi les mots de passe qui y sont enregistrés.

Les clés SSH ne bougent que si vous le demandez

Pour publier en SFTP, le serveur utilise les clés SSH déjà présentes sur votre ordinateur, dans le dossier de votre utilisateur. Elles ne sont ni copiées ni transférées ailleurs : le téléphone sait seulement si la clé demande une phrase secrète.

La seule exception, c'est vous qui la décidez : pour utiliser dans le terminal la clé d'une destination, vous pouvez la copier sur le téléphone. Le fonctionnement est expliqué ci-dessous.

Le terminal SSH

Le terminal se connecte du téléphone directement au serveur, en SSH : la connexion est chiffrée de bout en bout et ne passe ni par votre ordinateur ni par aucun de nos serveurs. C'est pourquoi il fonctionne même ordinateur éteint.

Les clés et mots de passe du terminal vivent uniquement sur le téléphone, chiffrés avec une clé du Keystore Android protégée par le matériel. Pour les utiliser, il faut votre empreinte ou votre code PIN, et un déverrouillage dure cinq minutes. Ils ne finissent jamais dans les sauvegardes Android ni sur Google Drive, et seule la partie native de l'app les utilise, au moment de se connecter.

Vous pouvez générer une clé directement sur le téléphone : la partie privée n'en sort jamais, et vous ne copiez sur le serveur que la partie publique. Si vous préférez la clé qu'une destination utilise déjà sur l'ordinateur, l'app la copie une seule fois, après votre empreinte ou code PIN, et seulement si la demande arrive chiffrée, en HTTPS ou via un proxy HTTPS sur la même machine : sur une connexion en clair, l'ordinateur refuse.

La première fois que vous vous connectez à un serveur, l'app vous montre son empreinte et la retient ; pour les destinations déjà confirmées par l'ordinateur, c'est la sienne qui compte. Si l'empreinte change, l'app s'arrête et vous prévient, et pour l'accepter il faut un appui long. Clés et mots de passe ne sont déverrouillés qu'après cette confirmation.

Ce qui passe dans le terminal reste dans la mémoire du téléphone, jamais sur le disque, et disparaît quand vous fermez la session. Le terminal n'apparaît ni dans les apps récentes ni dans les captures d'écran, sauf si vous l'autorisez. En arrière-plan, les sessions restent ouvertes au plus le temps que vous choisissez, et depuis la notification vous les fermez toutes d'un appui.

Seulement les téléphones que vous autorisez

Pour connecter un téléphone, il faut un code affiché sur votre ordinateur : 8 caractères, à usage unique, valable 10 minutes et annulé après 5 essais erronés. Le QR contient le même code.

Chaque téléphone reçoit ensuite son propre jeton d'accès. Le serveur n'en garde que l'empreinte SHA-256, jamais le jeton lui-même : même quelqu'un qui lit les fichiers du serveur ne peut pas se faire passer pour votre téléphone.

Dans les Réglages, vous voyez chaque téléphone connecté et pouvez en déconnecter n'importe lequel. Un téléphone déconnecté ne peut plus se connecter ; redémarrer le serveur ferme aussi une connexion qui était encore ouverte.

Rien n'est ouvert sans authentification

Chaque requête au serveur doit porter le jeton du téléphone. La connexion en temps réel démarre avec un ticket à usage unique valable 30 secondes, pour que le jeton ne se retrouve jamais dans une adresse ou un journal.

L'aperçu du site que vous développez n'est jamais public : il ne s'ouvre que depuis l'app, avec un ticket à usage unique échangé contre un cookie privé.

La première fois que vous envoyez vers un serveur FTPS ou SFTP, l'app vous montre l'empreinte du serveur et NomaDev la retient ; si elle change plus tard, l'app vous prévient avant de continuer.

Ce que gardent nos serveurs, et rien d'autre

Nous faisons tourner un seul service : celui qui relaie les notifications vers votre téléphone, car la clé Firebase nécessaire pour les envoyer ne peut pas être intégrée à l'app.

Il conserve le jeton de notification de votre téléphone, associé à un identifiant aléatoire que votre ordinateur utilise pour demander une notification. Pour chaque notification, il reçoit le type (terminé, question, autorisation, erreur, aperçu), le nom du projet et l'identifiant de la session ; il rédige lui-même le texte à partir de phrases fixes et n'en garde rien.

Il ne reçoit jamais de code, de messages d’erreur, de mots de passe ni de clés. Les statistiques d’utilisation, dans l’app et sur le site, ne démarrent que si vous les acceptez : elles vont à Google Analytics et ne contiennent jamais de code, de fichiers ni de noms de projets.

Et Claude ?

Claude Code tourne sur votre ordinateur avec votre propre compte, et envoie à Anthropic ce dont il a besoin pour travailler sur votre code — exactement comme dans un terminal. NomaDev n'ajoute ni ne change rien à cet échange. Voir la politique de confidentialité d'Anthropic.

Questions de sécurité

Pouvez-vous voir mon code ?

Non. Votre téléphone parle directement à votre ordinateur, et notre seul service gère les notifications, qui ne contiennent jamais de code.

Où sont stockés mes mots de passe FTP et SFTP ?

Uniquement dans le Keystore Android de votre téléphone, et seulement si vous choisissez de les mémoriser. Votre ordinateur les utilise en mémoire pour un seul envoi.

Le terminal SSH passe-t-il par mon ordinateur ?

Non. Le téléphone se connecte directement au serveur. Les clés et mots de passe du terminal sont uniquement sur le téléphone, chiffrés et déverrouillés par votre empreinte ou votre code PIN.

Et si quelqu'un trouve l'adresse de mon serveur ?

Sans le jeton d'un téléphone connecté, chaque requête est refusée, et connecter un nouveau téléphone demande un code affiché sur votre ordinateur.

Et si je perds mon téléphone ?

Déconnectez-le depuis un autre téléphone connecté, dans les Réglages : à partir de ce moment, il ne peut plus se connecter. Si l'app était ouverte, redémarrez aussi le serveur, ce qui ferme la connexion qu'il avait déjà.