Vérifiez vous-même

Nous écrivons que nous ne pouvons pas lire vos données. Vous n'avez pas à nous croire sur parole : voici comment le vérifier vous-même, en cinq minutes, sans savoir coder. La plupart de ces vérifications passent par votre propre navigateur, pas par notre code : nous ne pouvons donc pas en truquer le résultat.

Ce que reçoivent nos serveurs

À faire sur ordinateur : les navigateurs des téléphones n'ont pas cet outil.

Avec Chrome (ou Edge, Brave, Opera) :

  1. Ouvrez app.neatly.money et connectez-vous.
  2. Appuyez sur F12 (Windows) ou Cmd + Option + I (Mac). Le panneau des outils de développement s'ouvre.
  3. Cliquez sur l'onglet « Réseau » (Network).
  4. Ajoutez une dépense, par exemple « Carrefour, 42 € ».
  5. Dans le champ « Filtre » en haut, tapez transaction, puis cliquez sur la ligne qui commence par transaction.create.
  6. Un panneau s'ouvre à droite sur l'onglet « En-têtes » (Headers). Passez à l'onglet voisin « Charge utile » (Payload).
  7. Dépliez le détail : cliquez sur le petit triangle à côté de 0, puis à côté de json, puis à côté de tx.
Vous utilisez Safari ? Voir les étapes pour Safari
  1. Activez l'outil une seule fois : Safari → Réglages → Avancées → cochez « Afficher les fonctionnalités pour les développeurs web ».
  2. Ouvrez app.neatly.money et connectez-vous.
  3. Appuyez sur Cmd + Option + I (ou Développement → « Afficher l'inspecteur web »), puis cliquez sur l'onglet « Réseau » (Network).
  4. Ajoutez une dépense, par exemple « Carrefour, 42 € ».
  5. Dans le champ de filtre en haut à gauche, tapez transaction, puis cliquez sur la ligne transaction.create.
  6. À droite, l'onglet « Aperçu » (Preview) s'ouvre. Dans le menu en haut à droite, choisissez « Request (Object Tree) ».
  7. Dépliez le détail : cliquez sur le petit triangle à côté de 0, puis à côté de json, puis à côté de tx.
Ce que vous verrez une fois tout déplié (raccourci)
▼ 0: {json: {tx: {…}}}
  ▼ json
      expectedOwnerId: "0a2c…"
      expectedVaultEpoch: 0
    ▼ tx
        accountId: "59fe…"
        categoryId: "8324…"
        cryptoVersion: 1
        id: "f277…"
        isActual: true
        payloadEnc: "eyJ2IjoxLCJhbGciOiJBMjU2R0NNIiwiaXYiOiJrM1ZxOFRuWHcwYVo1Y0xwIiwiY3QiOiJacjdXMWVRMnhOOWJUNG1LZkg2…"
        recurringOccurrenceDate: null
        recurringRuleId: null
        rev: 1
        source: "manual"
        transferDirection: null
        transferGroupId: null
        transferToAccountId: null

Ce que vous verrez : nulle part « Carrefour » ni « 42 ». Le montant, le libellé et la date sont dans un seul bloc de caractères illisibles (payloadEnc) : votre dépense, chiffrée sur votre appareil avant de partir. Seuls des identifiants techniques restent lisibles (voir la liste plus bas).

D'autres requêtes partent en même temps (synchronisation, connexion). Vous pouvez les ouvrir aussi : aucune ne contient votre dépense en clair.

Pourquoi c'est une vraie preuve : cet outil appartient à votre navigateur (Google, Apple, Mozilla), pas à nous. Nous ne pouvons pas changer ce qu'il affiche.

Votre sauvegarde, vue de l'intérieur

  1. Dans Neatly Money, ouvrez Paramètres → Données, puis « Créer une sauvegarde ». Un fichier est téléchargé. (Il faut avoir créé votre clé de récupération.)
  2. Ouvrez ce fichier avec un éditeur de texte (Bloc-notes sur Windows, TextEdit sur Mac).

Ce que vous verrez : le numéro de version, la date de création, quelques identifiants techniques, et pour tout le reste de longues suites de caractères illisibles. Aucun montant, aucun libellé, aucun nom de compte ou de catégorie en clair.

Ce que nous voyons en clair, et pourquoi

Sont chiffrés : vos montants et la devise de chacun, soldes, libellés, commentaires, noms de comptes, de banques et de catégories, montants de budgets. Certaines informations restent lisibles, parce que le service en a besoin pour fonctionner :

  • votre compte : adresse e-mail, nom et photo de profil s'il y en a, réglages (langue, thème, formats, devise d'affichage principale, taux de change automatiques ou les vôtres) et préférences de notifications ;
  • l'organisation de vos données : à quel compte et à quelle catégorie appartient chaque opération, les deux comptes reliés par un virement, le type de chaque compte (courant, épargne…), l'arborescence des catégories avec leurs icônes et couleurs, les icônes et couleurs de vos comptes et banques, et lesquelles de nos catégories par défaut vous utilisez ;
  • le calendrier de vos budgets et opérations récurrentes : période, fréquence, prochaine date, dates de début et de fin des budgets et seuil d'alerte, ainsi que la date de chaque opération créée par une récurrence. Pour les autres opérations, la date est chiffrée, mais nous voyons quand chaque enregistrement a été créé, et, quand l'application demande des taux de change, la liste des devises que vous utilisez (sans savoir quelle opération est dans quelle devise) et les dates pour lesquelles il faut un taux ;
  • des informations techniques : identifiants, dates de création et de modification, nombre et taille des enregistrements, vos appareils et le nom de vos clés d'accès (passkeys), les événements de sécurité et, comme sur tout site web, votre adresse IP et votre navigateur dans nos journaux.

Un dernier point : lors de quatre étapes de sécurité du compte (réinitialisation du coffre, suppression du compte, reprise d'un changement de mot de passe interrompu et choix d'un nouveau mot de passe après un e-mail de réinitialisation), votre mot de passe transite par nos serveurs. Il n'est jamais conservé.

Autrement dit, nous pouvons voir que vous avez un compte courant et que vous utilisez notre catégorie par défaut « Courses », mais pas combien vous y dépensez ni chez qui. Le nom des catégories que vous créez vous-même reste chiffré.

Où va l'application

Dans l'onglet « Réseau », vous ne verrez que trois destinations : app.neatly.money (l'application), Supabase (la connexion à votre compte) et Cloudflare (la vérification anti-robots, à la connexion et pour certaines actions sensibles). Une règle de sécurité que votre navigateur applique bloque toute autre destination. Pas de publicité, pas de traceur.

Et les notifications ?

Comment vous prévenir d'un dépassement de budget si nous ne voyons pas vos montants ? Notre serveur envoie seulement un court signal générique, sans montant, sans nom, sans texte. Il passe par le service de notifications d'Apple, de Google ou de Mozilla, qui n'en apprend pas plus que nous. C'est votre appareil qui déchiffre vos données et rédige le texte de la notification.

Vos données restent à vous

À tout moment, exportez vos opérations en CSV ou toutes vos données en JSON, depuis Paramètres → Données. Ces fichiers sont en clair, pour que vous puissiez les ouvrir partout : gardez-les en lieu sûr.

Ce que le chiffrement protège, et ses limites

Nous écrivons « nous ne pouvons pas lire vos données », et non « un piratage est mathématiquement impossible ». Voici pourquoi, sans détour.

Vos données sont protégées si :

  • quelqu'un vole notre base de données ;
  • un employé ou un administrateur curieux regarde nos serveurs ;
  • un tribunal exige les données que nous stockons ;
  • l'un de nos hébergeurs est piraté.

Elles ne sont pas protégées si :

  • votre ordinateur ou votre téléphone est infecté ;
  • une extension malveillante est installée dans votre navigateur ;
  • quelqu'un connaît votre mot de passe ou votre clé de récupération ;
  • le programme livré par notre site est remplacé par une version malveillante*.

* Ce point concerne toute application qui fonctionne dans un navigateur : le programme qui chiffre vos données est téléchargé depuis notre site à chaque ouverture. De notre côté, la mise en ligne est verrouillée : seuls quelques comptes strictement sécurisés peuvent publier une nouvelle version, et aucune n'est mise en ligne tant que des vérifications automatiques n'ont pas confirmé qu'elle provient bien de notre propre code.

Pour aller plus loin