Nous avons tenté de récupérer du texte flouté, pixelisé et caviardé. Voici ce qui est ressorti.

Réponse courte : si une capture d'écran donne à un attaquant ce que les captures d'écran donnent habituellement (une police d'interface connue, une taille de texte connue, un filtre devinable), alors un flou gaussien léger et une pixelisation à petits blocs ne sont pas du caviardage. Dans notre test sur 480 cas, un flou de rayon 2 à 4 px a restitué le texte original à l'identique dans 92 à 100 % des cas. Une pixelisation de quatre pixels l'a restitué dans 71 % des cas. Une superposition « transparente » à 20 % d'opacité l'a restitué à chaque fois. Enregistrer ensuite le résultat en JPEG, comme le fait une application de messagerie, n'a presque rien changé. Le seul traitement qui n'a rien laissé fuir est un rectangle plein et uni par-dessus le texte.
La règle qui ressort des données est simple. Si le rayon du flou ou le bloc de pixels est inférieur à environ 0,3 fois la taille de police en pixels, partez du principe que le texte peut être relu. Entre 0,4 et 0,6 fois, vous laissez encore fuir un tiers à la moitié des caractères, et pour un numéro de carte ou une clé API, c'est une fuite, pas un flou. La récupération n'est tombée au niveau du hasard qu'à partir de 0,8 fois. À ce stade, le flou est si fort qu'un rectangle plein est de toute façon plus esthétique.
Tout ce qui suit est reproductible. Le code, les 480 images traitées et le tableau de résultats sont publiés sous licence CC-BY ; lien en fin d'article.
Pourquoi cette étude
« Ne floutez pas, caviardez » est un conseil ancien. dheera.net l'a démontré en 2014, Depix a montré en 2020 que des mots de passe pixelisés pouvaient être relus, et security.stackexchange le répète depuis dix ans. Ce que nous n'avons pas trouvé, c'est une réponse paramétrique : quelle intensité de flou suffit, pour quelle taille de texte, et que se passe-t-il une fois l'image passée par une messagerie qui la recompresse. On choisit un rayon de flou à l'œil. Nous voulions des chiffres.
Méthode
Échantillons. Six champs du type de ceux qui fuient réellement sur les écrans partagés : une adresse e-mail, un numéro de carte, un IBAN, un numéro de téléphone, une clé API (sk_live_...) et le nom d'une personne. Chacun rendu dans deux polices, Arial (proportionnelle) et Menlo (à chasse fixe), en 14 px et 20 px, sur un fond d'interface sombre, avec un ratio de pixels de 2x, c'est-à-dire une capture d'écran Retina. Soit 24 images sources.
Traitements, au nombre de dix. Flou gaussien avec sigma 2, 4, 8 et 12 px. Pixelisation par blocs de 4, 8, 12 et 16 px. « Transparent » : texte dessiné à 20 % d'opacité sur le fond, ce que certains outils appellent un masque doux. Et un rectangle plein dans la couleur de premier plan, que nous appelons caviardage. Chaque image traitée a aussi été enregistrée une seconde fois en JPEG à qualité 80. 24 x 10 x 2 = 480 cas.
L'attaquant. Nous avons supposé ce qu'une capture d'écran d'un produit connu révèle gratuitement : la police, la taille, la position du champ et son jeu de caractères (des chiffres pour une carte, [a-z0-9._@-] pour un e-mail). L'attaquant connaît ou devine le traitement et son intensité. La récupération est une recherche en faisceau sur les caractères : rendre une chaîne candidate avec la même police, appliquer le même traitement, comparer avec la cible, conserver les six meilleurs préfixes, ajouter un caractère, recommencer. C'est la version rigoureuse de ce que fait Depix pour la pixelisation, et elle fonctionne de la même manière pour le flou et la transparence. Pas d'apprentissage automatique, pas de GPU. Une exécution complète prend environ 25 minutes sur un ordinateur portable.
Notation. Taux d'erreur de caractères (CER ; 0 signifie une récupération parfaite, 1 qu'aucun caractère n'est correct) et correspondance exacte ou non de la chaîne récupérée. Le caviardage est noté CER 1,0 par construction : chaque candidat produit le même rectangle uni, il n'y a donc rien à comparer.
Résultats
Par traitement

- Transparent (20 % d'opacité) : CER moyen 0,00 · Récupération exacte 100 % · Après JPEG q80 0,00 / 100 %
- Flou sigma 2 px : CER moyen 0,00 · Récupération exacte 100 % · Après JPEG q80 0,00 / 100 %
- Flou sigma 4 px : CER moyen 0,03 · Récupération exacte 92 % · Après JPEG q80 0,10 / 88 %
- Pixelisation 4 px : CER moyen 0,11 · Récupération exacte 71 % · Après JPEG q80 0,11 / 71 %
- Pixelisation 8 px : CER moyen 0,49 · Récupération exacte 8 % · Après JPEG q80 0,49 / 8 %
- Flou sigma 8 px : CER moyen 0,57 · Récupération exacte 21 % · Après JPEG q80 0,64 / 17 %
- Pixelisation 12 px : CER moyen 0,63 · Récupération exacte 21 % · Après JPEG q80 0,63 / 21 %
- Pixelisation 16 px : CER moyen 0,83 · Récupération exacte 0 % · Après JPEG q80 0,84 / 0 %
- Flou sigma 12 px : CER moyen 0,84 · Récupération exacte 4 % · Après JPEG q80 0,87 / 0 %
- Caviardage plein : CER moyen 1,00 · Récupération exacte 0 % · Après JPEG q80 1,00 / 0 %
La superposition transparente est celle qui nous a le moins surpris et qui nous inquiète le plus. Dessiner un texte à 20 % d'opacité revient simplement à le dessiner avec moins de contraste. Un réglage des niveaux le fait réapparaître, et notre recherche a réussi les 48 cas. Certains outils de capture d'écran proposent cela comme mode de confidentialité. Ce n'en est pas un.
Le flou léger et les petits blocs de pixels sont entièrement réversibles. Le flou sigma 2 et sigma 4, ainsi que la pixelisation 4 px, ont restitué le texte la plupart du temps. Pas approximativement. Exactement.
Le JPEG ne vous sauve pas. La recompression a ajouté quelques erreurs dans le cas sigma 4 et n'a rien changé pour la pixelisation : les blocs sont grands et unis, ce que le JPEG préserve précisément très bien.
Par intensité relative à la taille du texte

Les valeurs absolues dépendent de la taille de police ; la lecture utile consiste donc à les exprimer comme le rapport entre le sigma du flou (ou le bloc de pixels) et la taille de police en pixels :
- jusqu'à 0,2 : Flou : CER moyen / exact 0,00 / 100 % · Pixelisation : CER moyen / exact 0,01 / 92 %
- environ 0,3 : Flou : CER moyen / exact 0,07 / 83 % · Pixelisation : CER moyen / exact 0,20 / 50 %
- environ 0,4 : Flou : CER moyen / exact 0,37 / 33 % · Pixelisation : CER moyen / exact 0,42 / 8 %
- environ 0,6 : Flou : CER moyen / exact 0,80 / 8 % · Pixelisation : CER moyen / exact 0,40-0,56 / 8-42 %
- 0,8 et plus : Flou : CER moyen / exact 0,87 / 0 % · Pixelisation : CER moyen / exact 0,80-0,87 / 0 %
En dessous d'environ 0,3, le texte revient. Entre 0,4 et 0,6, il revient partiellement, et c'est ce « partiellement » qui constitue la zone dangereuse : dans 46 % des exécutions en pixelisation 8 px et 33 % des exécutions en flou sigma 8, au moins la moitié des caractères étaient corrects. La moitié d'un numéro de carte, ou les douze premiers caractères d'une clé API active, ce n'est pas de la confidentialité. Ce n'est qu'à partir de 0,8 que les résultats se sont approchés du hasard (pour un champ composé uniquement de chiffres, le hasard correspond à un CER d'environ 0,9).
Le texte à chasse fixe et le texte de grande taille sont plus faciles à récupérer

Menlo en 20 px avec une pixelisation de 12 px, soit des blocs de plus de la moitié de la hauteur du texte, est tout de même revenu avec un CER de 0,02. Les polices à chasse fixe offrent une grille à la recherche ; un texte plus grand donne à chaque caractère davantage de pixels pour y laisser une signature. Cela compte, car les terminaux, les IDE, les visionneuses de journaux et la plupart des tableaux d'administration utilisent exactement cette combinaison.
Par champ
Les numéros de carte ont été la cible la plus facile (CER moyen 0,22, 64 % de récupération exacte sur les traitements flou, pixelisation et transparent, sans JPEG) : un alphabet de dix symboles et une longueur fixe. Les adresses e-mail et les clés API ont été les plus difficiles, avec un CER d'environ 0,47, parce que l'espace de recherche par caractère est plus grand. « Les plus difficiles » signifiait tout de même que 36 % d'entre elles sont revenues à l'identique.
Ce que cela signifie en pratique
Caviardez, ne floutez pas, lorsque c'est le contenu qui compte. Un rectangle plein a été le seul traitement de ce test à ne rien laisser fuir, quelles que soient la police, la taille et la compression. C'est aussi le seul dont la sécurité ne dépend pas d'un paramètre que vous devez régler correctement.
Si vous devez flouter, allez-y fort et dimensionnez selon le texte : un sigma d'au moins 0,8 fois la taille de police, ou des blocs de pixels d'au moins 0,8 fois la taille de police. C'est le rapport qui compte, pas le nombre absolu de pixels ; mesurez les deux dans les mêmes unités. Pour une police d'interface de 14 px, cela donne un sigma de 11 px ou plus, bien au-delà de n'importe quel réglage par défaut.
Ne faites jamais confiance à l'opacité. Une superposition transparente est un changement de couleur, pas une suppression.
Ne comptez pas sur la messagerie pour finir le travail. La recompression JPEG a laissé la pixelisation intacte et le flou presque intact.
Le flou le plus sûr est celui qui n'atteint jamais l'écran. Tout ce qui est masqué après la capture peut être attaqué à partir des pixels capturés. Masquer la valeur avant qu'elle ne soit dessinée, dans la page, avant le début du partage ou de l'enregistrement, supprime les pixels dont l'attaque a besoin. C'est l'approche de DataBlur, et c'est la raison première de cette étude.
Limites
Il s'agit d'un attaquant qui connaît la police et le traitement. C'est réaliste pour des captures d'écran d'interfaces courantes, dont la police et la taille sont publiques, mais une police inhabituelle relève la barre. Elle ne la supprime pas : l'attaquant peut toujours essayer les candidats les plus probables.
Deux polices, deux tailles, un seul fond. Les thèmes clairs, les différences d'anticrénelage et le rendu sous-pixel feront bouger les chiffres. Nous ne nous attendons pas à ce qu'ils déplacent beaucoup les seuils, mais nous ne l'avons pas mesuré.
Aucun bruit réel au-delà du JPEG q80. Pas de photos d'écran prises au téléphone, pas de compression vidéo. Les codecs vidéo feront l'objet d'une étude distincte.
L'attaque est une simple recherche en faisceau. De meilleures attaques existent (a priori appris, faisceaux plus larges, contraintes de dictionnaire sur les e-mails et les noms). Nos chiffres sont un plancher de ce qu'un attaquant peut faire, pas un plafond.
Nous avons évalué la récupération d'un texte dont l'attaquant s'attend à la présence. Un texte masqué de longueur inconnue est plus difficile à localiser, même si le cadre du champ reste généralement visible dans l'image floutée.
Données et code
Les 480 images traitées, le tableau de résultats (results.csv) et le script de l'expérience (experiment.py, en Python avec Pillow et NumPy) sont publiés sur github.com/yochef17/blur-recovery-study sous licence CC BY 4.0. Relancer la matrice complète prend environ 25 minutes sur un ordinateur portable. Si vous l'étendez, avec d'autres polices, des thèmes clairs ou de la vidéo, dites-le-nous : support@datablur.app.
Publié par DataBlur. DataBlur est une extension de navigateur qui floute ou caviarde les données sensibles d'une page avant qu'elle ne soit partagée ou enregistrée. Nous avons mené cette étude pour savoir dans quelle mesure le mot « flou » de cette phrase protège quoi que ce soit. Aucune des conclusions ne dépend du produit.