Aller au contenu
against.

Comment fonctionne le chiffrement dans against.

Une explication en français clair du chiffrement AES sur l'appareil qui rend tes données against. illisibles pour quiconque sauf toi.

against. chiffre chaque champ sensible sur ton appareil avec AES-256, en utilisant une clé générée au premier lancement et stockée dans l’enclave sécurisée de ton téléphone. Rien ne quitte ton appareil. Voici exactement comment ça fonctionne, et ce que ça t’apporte.

Ce que “chiffré sur l’appareil” veut dire en pratique

Quand tu enregistres une note de rechute, le texte que tu tapes ne passe pas par le réseau. Il n’est pas non plus écrit en clair dans la mémoire de ton téléphone. Avant que la ligne de la base de données soit sauvegardée, le texte est passé à travers AES (l’Advanced Encryption Standard, un algorithme qui est la norme mondiale depuis plus de vingt ans), en utilisant une clé de 256 bits. Le résultat est illisible pour quiconque n’a pas cette clé.

La clé est générée la première fois que tu ouvres l’app. Ce sont 32 octets aléatoires, tirés du générateur de nombres aléatoires cryptographiques de ton téléphone (le même qui protège l’app de ta banque et tes messages). La clé est stockée dans l’enclave sécurisée de ton téléphone : Keychain sur iOS, EncryptedSharedPreferences sur Android. Nous ne la voyons jamais. Nous ne la recevons jamais. Il n’y a pas de bouton “réinitialiser le mot de passe”, parce qu’il n’y a pas de mot de passe à réinitialiser.

Ce que nous chiffrons et ce que nous ne chiffrons pas

Nous chiffrons les champs où ça compte : les notes de rechute, les annotations de déclencheurs, tout ce que tu pourrais écrire qui soit personnel. Nous ne chiffrons pas les champs qui n’en ont pas besoin : les horodatages, les identifiants internes, les versions de schéma. Chiffrer les horodatages n’améliorerait pas ta confidentialité et ralentirait l’app de manière perceptible sur les appareils d’entrée de gamme.

Tu peux auditer cela toi-même dans le code source ouvert. Nous publions le schéma (voir Confidentialité et Sécurité) et les fonctions de chiffrement. Pas de surprise.

Pourquoi le mode CBC

Nous utilisons AES en mode CBC (Cipher Block Chaining) avec un vecteur d’initialisation aléatoire frais pour chaque enregistrement. CBC est bien compris, ne présente pas de faiblesses connues contre le modèle de menaces qui compte ici (accès hors ligne au stockage d’un appareil), et est supporté sur toutes les plateformes mobiles sans nécessiter d’extensions cryptographiques spécifiques à la plateforme. Nous avons envisagé GCM, qui est également largement déployé et ajoute de l’authentification ; pour notre cas d’usage (appareil unique, utilisateur unique, pas de données en transit) la complexité supplémentaire ne justifiait pas son inclusion. Nous pourrions revoir ça dans une version future.

Ce contre quoi ça protège

Si ton téléphone est perdu ou volé et l’écran déverrouillé, against. n’est pas différent de n’importe quelle autre app que le voleur ouvre : il voit ce que tu vois. C’est un risque que nous ne pouvons pas corriger au niveau de l’app ; c’est pourquoi l’app prend en charge un verrouillage biométrique optionnel et un voile de confidentialité.

Si ton téléphone est perdu ou volé et l’écran n’est pas déverrouillé, la base de données chiffrée sur ton appareil est illisible sans la clé, et la clé vit dans l’enclave sécurisée, qui est protégée par le matériel. Un attaquant motivé avec un accès physique et du matériel de laboratoire est une menace que nous ne prétendons pas contrer ; mais pour les risques réalistes (vol de téléphone, accès opportuniste par quelqu’un que tu connais), le chiffrement fait son travail.

Ce contre quoi ça protège, plus important encore

L’autre chose contre laquelle le chiffrement sur l’appareil protège, c’est nous. Nous pourrions recevoir une assignation. Nous pourrions être rachetés par une société aux valeurs différentes. Nous pourrions être compromis par un attaquant. Aucun de ces événements n’exposerait tes données, parce que nous ne les avons pas. Le chiffrement est une contrainte, pas une promesse.

Pour aller plus loin

Voir aussi : Confidentialité et Sécurité.