Comment LifeVeil protège vos fichiers
Cette page explique avec des mots simples ce que fait LifeVeil, et aussi ce qu’il ne peut pas faire. Nous préférons que vous connaissiez les limites plutôt que de vous fier à une promesse trop belle.
En bref
- Tout le chiffrement se fait sur votre téléphone. Il n’y a ni serveur LifeVeil ni compte.
- Les fichiers de chaque coffre sont chiffrés avec une clé aléatoire. Seuls le schéma de ce coffre (avec son code PIN au niveau maximal), sa phrase de récupération si vous en avez ajouté une, ou votre empreinte digitale si vous l’avez activée peuvent déverrouiller cette clé.
- Chaque schéma ouvre un coffre. Un schéma qui ne correspond à aucun coffre enregistré ouvre un coffre vide, et rien n’est écrit tant que vous n’y ajoutez pas de fichier.
- Nous, les développeurs, n’avons jamais votre schéma, votre code PIN, votre phrase ni vos clés. Nous ne pouvons pas ouvrir vos fichiers, ni réinitialiser votre schéma.
- Nous utilisons le chiffrement intégré à Android et la bibliothèque reconnue libsodium. Nous n’avons pas écrit notre propre chiffrement.
- LifeVeil n’a pas encore fait l’objet d’un audit de sécurité indépendant.
De votre schéma à une clé
Vous tracez un schéma sur une grille de 5×5, sans passer deux fois par le même point. Un nouveau schéma que vous configurez doit compter au moins 6 points. LifeVeil transforme le schéma en clé avec Argon2id, issu de libsodium (version 1.0.20 sur Android).
- Paramètres : 64 Mio de mémoire, 3 passes, 1 voie, clé de 256 bits.
- Argon2id est lent volontairement et demande beaucoup de mémoire pour chaque tentative. Deviner avec des cartes graphiques coûte donc beaucoup plus cher.
- Sur nos téléphones de test, un déverrouillage prend environ 0,6 à 0,9 seconde.
- Le schéma est combiné à un sel de l’appareil aléatoire de 16 octets. Ce sel est stocké dans l’application, chiffré avec une clé conservée dans l’Android Keystore, qui ne peut pas être copiée hors du téléphone.
- Aucune copie du schéma n’est stockée, sauf celle conservée avec une phrase de récupération (voir plus bas). L’application vérifie un schéma en essayant de déverrouiller la clé.
- Ce que vous saisissez dans le champ du code PIN au-dessus des points entre dans la même dérivation de clé que le schéma. Un champ vide signifie le schéma seul.
Niveaux de sécurité
Chaque coffre a un niveau. Vous le choisissez au départ, et vous pouvez le changer plus tard dans Paramètres > Coffre > Niveau de sécurité, après avoir tracé à nouveau le schéma.
- Sécurité maximale (Ultra) : schéma et code PIN de 6 à 8 chiffres, tous deux uniquement dans votre tête. Sûr même face à une devinette assistée par l’IA. Si vous oubliez l’un des deux, le coffre ne peut pas être récupéré.
- Niveau 1 (recommandé) : schéma seul. Sûr si vous évitez les formes courantes. Si vous l’oubliez, le coffre ne peut pas être récupéré.
- Niveau 2 : schéma et phrase de récupération notée sur papier. Vous pouvez revenir dans le coffre si vous oubliez le schéma, mais la personne qui trouve le papier peut aussi l’ouvrir.
- Niveau 3 : schéma et empreinte digitale. Le plus pratique, mais quelqu’un pourrait forcer votre doigt sur le capteur. L’empreinte fonctionne pour un seul coffre.
Comment les fichiers sont chiffrés
- Chaque coffre a une clé principale aléatoire de 256 bits. La clé issue de votre schéma et la clé de récupération ne font qu’« envelopper » (chiffrer) cette clé principale.
- Les fichiers, les miniatures et la liste de vos éléments (noms de fichiers d’origine, dates, tailles) sont chiffrés avec AES-256-GCM, grâce au chiffrement intégré à Android. GCM détecte aussi si un fichier a été modifié ou échangé.
- Dans l’application, les fichiers portent des noms aléatoires. Les gros fichiers sont chiffrés par blocs de 1 Mio, ce qui permet de lire les vidéos sans jamais écrire de copie en clair dans le stockage.
- Pour les photos JPEG, les informations cachées (EXIF, comme l’appareil photo et la date) sont stockées à part, elles aussi chiffrées.
- Quand l’application se verrouille, elle remplace par des zéros les clés qu’elle garde en mémoire.
Phrase de récupération
- La phrase de récupération est facultative. Un coffre n’en reçoit une que si vous choisissez le niveau 2, et elle est enregistrée après un court quiz réussi.
- Le générateur de nombres aléatoires sécurisé du téléphone choisit 9 mots anglais. Ils proviennent de deux listes de 1 024 mots courants, dans l’un de 4 ordres fixes. Cela représente 92 bits d’aléatoire. Les mots sont en anglais dans toutes les langues de l’application.
- La phrase passe par les mêmes paramètres Argon2id et déverrouille à elle seule la clé principale. Elle n’a pas besoin du sel de l’appareil, elle fonctionne donc même quand le schéma ne fonctionne plus.
- Une copie de la phrase et une copie du schéma du coffre (et du code PIN) sont stockées sur le téléphone, chacune chiffrée deux fois : une fois avec la clé principale et une fois avec une clé de l’Android Keystore. Quand la phrase ouvre le coffre, l’application montre le schéma une fois. Il est oublié quand l’application se verrouille.
- La phrase reste la même quand vous changez de schéma. Un coffre sans phrase n’offre aucun retour possible si le schéma est oublié.
Empreinte digitale
Le déverrouillage par empreinte digitale est facultatif et fonctionne pour un seul coffre. C’est Android qui vérifie l’empreinte, pas LifeVeil ; l’application ne reçoit jamais votre empreinte. Une clé de l’Android Keystore, utilisable uniquement juste après une vérification biométrique forte, déverrouille la clé principale. Si quelqu’un ajoute une nouvelle empreinte sur le téléphone, cette clé cesse de fonctionner et vous devez de nouveau utiliser votre schéma.
Fichier de sauvegarde
- Une sauvegarde est un seul fichier
.lvb. Il contient vos éléments tels qu’ils sont déjà chiffrés, plus des copies enveloppées de la clé principale : une pour le schéma que vous avez tracé en créant la sauvegarde, et une pour la phrase de récupération, si le coffre en avait une. - La copie liée au schéma utilise un nouveau sel aléatoire pour chaque sauvegarde, et non le sel de l’appareil. C’est ce qui vous permet d’ouvrir la sauvegarde sur un nouveau téléphone.
- L’en-tête du fichier est protégé, de sorte que toute modification ou tout échange de parties est détecté.
- Vous choisissez l’emplacement d’enregistrement avec l’écran d’enregistrement d’Android. Le fichier ne passe jamais par nous.
- Pour restaurer, ouvrez le fichier avec son schéma ou sa phrase. Vous tracez ensuite un nouveau schéma. Le coffre restauré n’a pas de phrase de récupération au départ.
Autres protections dans l’application
- Les captures d’écran, l’enregistrement de l’écran et l’aperçu dans la liste des applications récentes sont bloqués sur tous les écrans.
- Par défaut, l’application se verrouille dès que vous la quittez. Vous pouvez choisir 30 secondes ou 1 minute à la place.
- La sauvegarde dans le cloud d’Android et le transfert d’un téléphone à l’autre n’incluent pas les données de LifeVeil. Utilisez plutôt le fichier de sauvegarde.
- L’application ne demande pas l’accès à la position, aux contacts ni à « tous les fichiers ».
- Un coffre vide pour chaque nouveau schéma. Un coffre sans fichiers a le même aspect, qu’il ait été enregistré ou non : une personne qui vous force à ouvrir l’application ne peut pas savoir ce qu’il y a d’autre. Vous pouvez désactiver cette option dans Paramètres > Sécurité ; un schéma qui n’ouvre rien affiche alors une erreur.
Ralentir les tentatives
Comme chaque schéma ouvre un coffre, deviner revient à ouvrir de nombreux coffres vides. LifeVeil ralentit cela sans l’indiquer à l’écran, et l’attente est la même pour tous les schémas, y compris le bon.
- Sur 24 heures, 10 ouvertures de coffres sans fichiers ajoutent 10 secondes à chaque déverrouillage, 20 en ajoutent 60, et 30 en ajoutent 5 minutes, le maximum.
- Les signes d’automatisation mènent directement au maximum : des schémas terminés à moins de 2 secondes d’intervalle trois fois de suite, ou des touchers qui proviennent de services d’accessibilité ou d’entrées injectées plutôt que d’un doigt.
- Chaque période de 24 heures sans ouverture de coffre vide l’allège d’un cran. Reculer l’horloge du téléphone ne le raccourcit pas.
- Cela ne fonctionne que dans l’application. Cela ne ralentit pas la devinette sur un ordinateur avec un fichier copié (voir les limites ci-dessous).
L’IA et la devinette du schéma
- L’IA ne peut pas sauter le calcul. Chaque tentative doit toujours exécuter Argon2id avec 64 Mio de mémoire. L’IA ne casse ni Argon2id ni AES, donc aucune tentative ne devient moins coûteuse.
- Ce que l’IA change, c’est l’ordre des tentatives. Elle peut apprendre les formes que les gens aiment (lettres, carrés, coins de départ favoris) et les essayer en premier. Elle peut aussi aider à lire un schéma sur une vidéo filmée par-dessus votre épaule, ou à partir des traces de doigts sur l’écran.
- Les défenses portent donc sur le schéma, pas sur le calcul. L’application signale les formes courantes. Le niveau de sécurité maximal ajoute un code PIN de 6 à 8 chiffres, pour qu’un schéma vu sur une vidéo ne suffise pas. Masquer le tracé du schéma ne laisse aucun trait à filmer. Le sel de l’appareil dans l’Android Keystore empêche de deviner hors du téléphone.
Les limites à connaître
Aucune application ne peut protéger contre tout. Voici, en toute honnêteté, les limites de LifeVeil.
Les schémas simples peuvent être devinés
Les formes courtes ou courantes (un L, un Z, une ligne droite) peuvent être devinées en vous observant, grâce aux traces de doigts sur l’écran, ou en quelques essais. Les schémas réels sont bien plus faciles à deviner que ne le laisse penser le nombre de schémas possibles. Utilisez plus de points et plus de changements de direction. L’application vous avertit des schémas très simples, et avant d’enregistrer un coffre dont le schéma compte moins de 6 points.
Combien de temps pourrait prendre la devinette
Dans l’application, chaque essai prend environ une seconde, et des tentatives répétées ralentissent chaque déverrouillage, jusqu’à 5 minutes. Mais une personne qui a votre fichier de sauvegarde, ou qui a récupéré le sel de l’appareil sur un téléphone rooté, peut deviner sur un ordinateur, sans aucune attente. Argon2id ralentit cela, mais un schéma offre bien moins de possibilités qu’un long mot de passe. Estimations approximatives pour une seule carte graphique haut de gamme (classe RTX 4090), à environ 1 000 tentatives par seconde :
| Ce qui est deviné | Possibilités | Temps, une carte graphique |
|---|---|---|
| Les 10 000 schémas les plus courants | 104 | environ 10 secondes |
| Tous les schémas de 6 points | 1,28 × 108 | environ 1,5 jour |
| Tous les schémas de 7 points | 2,42 × 109 | environ 28 jours |
| Tous les schémas de 8 points | 4,36 × 1010 | environ 1,4 an |
| Phrase de récupération (92 bits) | 4,95 × 1027 | environ 1,6 × 1017 ans |
Ce sont des estimations, pas des mesures. Les nombres de schémas sont des maximums ; les schémas réels sont bien moins nombreux. Un matériel plus nombreux ou plus rapide accélère la devinette en proportion. Un code PIN au niveau maximal multiplie ces nombres jusqu’à 108.
Gardez votre fichier de sauvegarde privé
Le fichier de sauvegarde ne contient pas le sel de l’appareil : toute personne qui l’obtient peut donc essayer des schémas hors ligne, comme indiqué ci-dessus. Stockez-le uniquement à un endroit auquel vous seul avez accès, comme votre propre compte cloud, et utilisez un schéma plus long.
La phrase de récupération montre aussi le schéma
Quiconque possède la phrase de récupération d’un coffre peut ouvrir ce coffre, et l’application lui montre alors son schéma et son code PIN. Si vous utilisez le même schéma ailleurs, par exemple pour le verrouillage de l’écran du téléphone, cette personne l’apprend aussi. Gardez le papier aussi précieusement que les fichiers eux-mêmes.
Téléphones rootés ou infectés
Si quelqu’un peut exécuter du code avec les autorisations de l’application (par exemple sur un téléphone rooté, ou avec un logiciel malveillant qui en a le contrôle total), il peut déverrouiller le sel de l’appareil et deviner hors ligne. Tant que le coffre est ouvert, les clés sont en mémoire et peuvent être lues avec un accès root ou un débogueur. Certaines copies faites à l’intérieur d’Android et de Flutter, ainsi que les photos affichées à l’écran, ne peuvent pas être effacées de la mémoire immédiatement.
Certaines informations sont visibles
Le nombre de fichiers chiffrés dans le stockage de l’application, leur taille approximative et leurs dates de création ou de modification ne sont pas cachés. Le fait que LifeVeil soit installé ne l’est pas non plus.
Le coffre vide ne trompe que l’écran
Une personne qui peut lire les fichiers de l’application (sur un téléphone rooté, par exemple) peut compter les dossiers des coffres et voir que ce réglage est activé. Le ralentissement compte de la même façon les coffres vides enregistrés et non enregistrés : l’attente elle-même ne permet donc pas de les distinguer.
Le déguisement ne change que l’écran d’accueil
- Seuls l’icône et le nom sur l’écran d’accueil changent. La liste Paramètres > Applications du téléphone, les infos de l’application et les écrans de stockage affichent toujours LifeVeil.
- Les lecteurs d’écran peuvent encore annoncer « LifeVeil ». Par exemple, le lanceur Samsung One UI donne à TalkBack le vrai nom de l’application, et l’application ne peut pas changer cela.
- Le menu de partage d’Android affiche toujours le vrai nom de l’application : LifeVeil s’en retire donc quand vous changez l’icône. Vous pouvez l’y remettre.
- Les demandes d’autorisation d’Android affichent le vrai nom : l’application demande donc les autorisations avant que vous changiez l’icône.
- Tant que l’icône est changée, l’application n’envoie pas de notifications.
- Le code du déguisement (4 à 8 chiffres) affiche seulement l’écran de verrouillage. Il n’ouvre pas vos fichiers. Il est stocké sous forme de hachage salé, mais avec si peu de possibilités, il est facile à retrouver si quelqu’un obtient le fichier.
L’empreinte digitale est une voie moins solide
Le déverrouillage par empreinte digitale contourne Argon2id. Sa solidité dépend du capteur d’empreinte de votre téléphone et de l’Android Keystore. Vous pouvez le désactiver à tout moment dans les Paramètres.
Informations des photos
- Pour les photos HEIC, PNG et WebP, les informations cachées (EXIF) restent dans le fichier. Le fichier entier reste chiffré.
- Sur Android 10 et versions ultérieures, Android retire la position GPS des photos que lit LifeVeil, car l’application ne demande pas l’accès à la position. Une fois l’original supprimé de la galerie, cette position est perdue.
- Les photos ajoutées avec le sélecteur de photos d’Android reçoivent de nouveaux noms basés sur la date, car le sélecteur ne fournit pas le nom d’origine.
Le verrouillage est suspendu pendant les écrans système
Tant qu’un écran système est ouvert (demande d’autorisation, confirmation de suppression, sélecteur de photos ou de fichiers, invite d’empreinte digitale) et pendant une importation ou une exportation, l’application attend avant de se verrouiller. Si vous avez quitté l’application, elle se verrouille 2 secondes après la fin.
Les coffres partagent un même sel de l’appareil
Tous les coffres d’un téléphone utilisent le même sel de l’appareil. Si quelqu’un possède ce sel, une seule tentative teste tous les coffres à la fois. Le coût pour attaquer un seul coffre reste le même.
Ce qu’aucune application ne peut empêcher
Quelqu’un qui vous regarde tracer votre schéma, ou une caméra qui filme votre écran.
Sans phrase, personne ne peut vous aider
Si vous oubliez le schéma d’un coffre sans phrase de récupération, ou si vous perdez à la fois le schéma et la phrase, personne ne peut récupérer ses fichiers. Pas même nous.