Ce billet est la suite technique de “64 bits déterminent ce que vous pouvez téléverser sur Internet”. Si vous ne l’avez pas encore lu, commencez par là. Ici, nous supposons que vous comprenez ce qu’est un hachage perceptuel et pourquoi PhotoDNA, PDQ et NeuralHash sont des proches cousins.
Le 5 août 2021, Apple a annoncé NeuralHash. Le 18 août — treize jours plus tard — un chercheur sous pseudonyme Asuhariet Ygvar a publié sur GitHub une ingénierie inverse complète du modèle extrait des binaires iOS. Quelques jours après, deux chercheurs indépendants — Brad Dwyer et d’autres — ont publié des collisions : deux images visuellement distinctes produisant un même hachage. Le système qu’Apple promettait avec un taux de faux positifs de “un sur un milliard de comptes par an” s’est avéré attaquable avec du matériel grand public.
La réaction publique s’est concentrée sur “Apple a fait une erreur”. L’analyse technique ultérieure a prouvé le contraire : Apple n’a pas fait d’erreur. La fragilité adversariale est une propriété structurelle de la famille des hachages perceptuels. NeuralHash était, au mieux, l’un des designs les plus sophistiqués du marché.
Cinq ans plus tard, l’UE légifère sur le déploiement obligatoire de cette même technologie sur WhatsApp, Signal et Telegram. La règlementation présuppose que l’algorithme est une primitive invariable, comme si c’était SHA-256. Ce n’est pas le cas.
Collision accidentelle versus collision adversariale
Le lecteur familier avec les hachages cryptographiques a un modèle mental : une collision est un événement rare, accidentel, dont la probabilité peut se calculer comme 2^(-n), où n est le nombre de bits. Pour SHA-256, il faut 2^128 opérations pour trouver une collision — ce qui, avec l’infrastructure actuelle, est pratiquement infaisable.
Les hachages perceptuels sont une autre classe d’objet. Cette distinction est cruciale.
Collision accidentelle. Deux images légitimes qui, par hasard, produisent le même hachage. Avec un hachage perceptuel de 64 bits, la probabilité n’est pas de 2^(-64) : elle est beaucoup plus élevée, car l’espace des images “raisonnables” (celles qu’un humain peut générer, pas du bruit aléatoire) présente des régularités statistiques. La probabilité réelle dépend de la distribution du jeu de données, mais reste largement supérieure à la limite théorique.
Collision adversariale. Deux images générées délibérément pour produire le même hachage. Ici, la différence est qualitative. Dans un hachage perceptuel :
- L’espace des hachages est petit (64-96 bits).
- La fonction de hachage est “souple” — de petites perturbations de pixels produisent de petites perturbations du hachage. C’est la propriété que nous recherchons (tolérance au réencodage) mais aussi celle qui permet les attaques (vulnérabilité).
- Les hachages basés sur des CNN (NeuralHash) sont différentiables. Un attaquant peut utiliser la descente de gradient pour trouver directement une collision.
- Les hachages classiques (pHash, PDQ) ne sont pas différentiables au même sens, mais peuvent être attaqués via une recherche locale et des heuristiques standards de ML.
En termes pratiques : trouver une collision adversariale dans un hachage perceptuel est un problème d’optimisation qu’un étudiant de master en ML peut résoudre en une après-midi avec PyTorch et une GPU grand public.
Trois types d’attaques, trois conséquences distinctes
La littérature de 2021-2023 distingue trois modalités d’attaque, chacune ayant des implications opérationnelles différentes.
Collision arbitraire
Étant donné l’algorithme de hachage H, trouver deux images x₁ et x₂ visuellement distinctes telles que H(x₁) = H(x₂). C’est l’attaque la plus simple : elle se produit par construction si l’espace des hachages est petit. Les collisions publiées par Ygvar en août 2021 sont de ce type : un chien et un paysage gris, visuellement sans rapport, produisent le même NeuralHash.
Usage opérationnel : miner la crédibilité du système. Si des collisions peuvent être démontrées publiquement, le postulat selon lequel “le hachage est un identifiant fiable” s’effondre.
Préimage ciblée
Étant donné un hachage cible h₀ (par exemple, extrait de la base NCMEC ou deviné), générer une image x visuellement innocente telle que H(x) = h₀. C’est l’attaque qui suscite des préoccupations opérationnelles.
Usage opérationnel : envoyer des images aux victimes. Un attaquant génère une photo de chats ayant le hachage d’une image CSAM connue. Il l’envoie sur WhatsApp. Le système d’analyse déclenche l’alerte. Bien qu’une vérification humaine puisse conclure à l’innocence de l’image, le processus aura déjà coûté du temps, des ressources juridiques dans certains cas, et aura stigmatisé la victime. À grande échelle — des milliers de victimes simultanées —, le système devient inutilisable.
Apple avait affirmé en 2021 que cette attaque était irréalisable, car la base NCMEC est fermée et l’attaquant ne connaît pas les hachages cibles. Prokos et al. (USENIX Security 2023) ont démontré que cet argument était insuffisant : l’attaquant n’a pas besoin des hachages individuels, un simple accès à une image de référence du jeu cible suffit — ce qui, dans le monde réel, est trivial pour des acteurs sophistiqués.
Évasion
Étant donnée une image x connue (par exemple, du contenu CSAM présent dans la base de hachages), générer une modification x’ qui soit visuellement identique mais produise un hachage différent. C’est l’attaque qui compromet l’utilité du système à son objectif déclaré.
Usage opérationnel : des distributeurs véritables de CSAM appliquent l’attaque à leur contenu. Le système de scan ne détecte pas les copies modifiées, bien qu’elles soient indistinguables pixel par pixel pour un humain. La quantité de nouveau matériel ajouté aux bases de NCMEC croît moins vite que les variations adversariales, et la couverture se dégrade avec le temps.
Le cas NeuralHash en détail
La chronologie de l’effondrement de NeuralHash est pédagogique.
5 août 2021. Apple annonce le package CSAM Detection. La documentation technique publiée inclut l’affirmation d’un faux positif sur un milliard de comptes par an, basé sur des tests internes sur un jeu de données de référence.
18 août 2021. Asuhariet Ygvar publie AppleNeuralHash2ONNX sur GitHub. Le projet extrait le modèle NeuralHash du binaire iOS 14.7 et le convertit au format ONNX, permettant son exécution sur n’importe quelle machine. Le code ne nécessite aucun accès privilégié : les modèles CoreML sont extractibles par tout utilisateur possédant un iPhone jailbreaké ou via une analyse statique du kernel.
19 août 2021. Des utilisateurs du repo publient la première collision : deux images distinctes (collision1.png, collision2.png) produisant le même hachage de 96 bits sous NeuralHash. La technique était une recherche par gradient sur le modèle extrait, environ 50 lignes de PyTorch.
20-27 août 2021. Apple confirme que les collisions démontrées sont réelles, mais affirme qu’elles ne sont pas préoccupantes opérationnellement pour deux raisons : (a) la base NCMEC est secrète, (b) un seuil de 30 correspondances est requis avant de déclencher une alerte. Les critiques répondent : (a) il n’est pas nécessaire de connaître en détail la base, un simple accès à des images de référence du jeu est suffisant, (b) le seuil de 30 devient trivial à dépasser quand l’attaquant peut créer un nombre illimité de collisions.
Septembre 2021. Apple annonce un retard. En coulisses, la décision est liée à l’impossibilité de défendre techniquement le système sans reconnaître publiquement que l’architecture souffrait d’un défaut de conception.
2023. Prokos, Fendley, Green, Jois et Cao publient “Squint Hard Enough: Attacking Perceptual Hashing with Adversarial Machine Learning” à USENIX Security. L’article formalise les trois types d’attaques contre NeuralHash, PhotoDNA (black-box) et PDQ. Il démontre que ces trois modèles sont vulnérables avec des taux de succès supérieurs à 80 %, en utilisant des outils standards d’ML adversarial. Le travail conclut le débat académique : la fragilité n’est pas un bug de NeuralHash ; c’est une propriété structurelle de cette famille d’algorithmes.
Et PhotoDNA ? Et PDQ ?
L’argument souvent avancé est “NeuralHash était basé sur des CNN et donc différentiable ; PhotoDNA est classique et donc sûr”. C’est incorrect.
PhotoDNA est une technologie propriétaire de Microsoft. Nous ne pouvons pas auditer son implémentation exacte. Cependant, Prokos et al. ont démontré des attaques black-box : l’attaquant n’a pas besoin d’accéder à l’algorithme, il lui suffit d’observer les comportements d’entrée/sortie via des services qui l’utilisent. Dans des conditions expérimentales, les attaques black-box contre PhotoDNA ont atteint des taux de succès de 75-80 % pour la génération de collisions.
PDQ, de Meta, est open-source. Tout le monde peut analyser le code et l’attaquer avec des techniques par gradient. Prokos et al. l’ont compromis avec les mêmes méthodes que celles utilisées contre NeuralHash, avec des taux légèrement différents mais comparables.
La raison sous-jacente : tout hachage perceptuel doit être “souple” pour être utile. Si un hachage n’est pas souple, il ne tolère pas le réencodage ni de petites altérations, et perd sa finalité. S’il est souple, il devient attaquable. La souplesse et l’invulnérabilité sont incompatibles par conception.
PhotoDNA, PDQ, pHash, dHash, aHash, NeuralHash : ils sont tous attaquables. À des niveaux de difficulté variés, avec des taux de succès différents, mais sans exception. Il n’existe pas, dans la littérature, de hachage perceptuel combinant tolérance opérationnelle et robustesse adversariale. Le problème reste ouvert et il est probablement théoriquement insoluble sans renoncer à l’une des deux propriétés.
Implications pour la réglementation
Voici ce qui devrait influencer tout débat sur le Chat Control.
La CSA Regulation, proposée par la Commission européenne, impose aux fournisseurs de services de communication de détecter le CSAM dans les messages chiffrés via des scans côté client. La proposition, techniquement neutre, mentionne le “hachage perceptuel” parmi les techniques acceptables. Problème critique : la réglementation traite l’algorithme comme une primitive invariante, comme s’il était cryptographiquement stable.
Ce n’est pas le cas. Et les conséquences opérationnelles sont prévisibles.
Les acteurs sophistiqués contournent le système. Les véritables distributeurs de CSAM, avec un minimum de connaissances techniques, appliquent les stratégies d’évasion publiées dans la littérature académique. Leur contenu échappe aux détections.
Les utilisateurs ordinaires deviennent des cibles faciles. Un attaquant génère des images avec des hachages correspondant à du CSAM connu et les envoie massivement à des victimes (adversaires politiques, ex-partenaires, journalistes, dissidents). Les alertes se déclenchent, des procédures juridiques sont lancées, et la charge de preuve incombe à la victime. Le système crée un nouveau vecteur de harcèlement judiciaire difficile à déconstruire.
Le système capture les utilisateurs intermédiaires. Les utilisateurs partageant ou recevant du contenu sans sophistication technique — et souvent sans intention malveillante explicite — sont majoritairement affectés. Le profil statistique des “capturés” s’éloigne des criminels ciblés par la réglementation.
Ces trois effets combinés entraînent une métrique fondamentale : le coût par cas réel détecté augmente avec le déploiement du système, tandis que le ratio vrais positifs / faux positifs se détériore. Au-delà d’un certain seuil, le système génère plus de bruit que de signal. Les études de la NCMEC sur l’efficacité réelle de PhotoDNA dans des scénarios variés suggèrent que nous approchons déjà de ce seuil. Cependant, les données publiques sont biaisées par les intérêts des fournisseurs.
Les organisations civiles qui ont signé contre la réglementation — Access Now, EFF, EDRi, CCC — ne plaident pas pour un purisme “confidentialité avant tout”. Elles argumentent sur l’inefficacité probable : un système fragile sur le plan adversarial ne remplit pas son objectif, tout en ouvrant des vecteurs d’abus politiques non anticipés par la réglementation.
Ce que cela signifie pour vous
Ce n’est pas un argument contre la lutte contre le CSAM. Aucun chercheur sérieux en cryptographie ou en sécurité ne le présenterait ainsi. C’est un argument contre le fait de fonder tout le poids opérationnel du système sur un algorithme dont la fragilité adversariale est connue depuis quatre ans et documentée dans des revues académiques de premier plan.
Les systèmes sérieux — NCMEC, Meta, Microsoft — combinent les hachages perceptuels avec des classificateurs CNN entraînés contre les attaques adversariales, une révision humaine dans une chaîne d’escalade, l’analyse de réseau et des métadonnées, ainsi que la coopération policière traditionnelle. Le hachage est une première ligne économique, pas une défense complète.
La réglementation européenne inscrit “utilisez des hachages perceptuels” dans la loi. Une loi dure des décennies. Les algorithmes changent en quelques mois. Ce décalage temporel est le piège le plus difficile à corriger une fois légalement inscrit.
Actions concrètes pour les lecteurs techniques :
- Lisez l’article de Prokos et al. (2023). Quarante pages. La section sur les résultats expérimentaux — notamment les tableaux de taux de succès par type d’attaque et de hachage — est citable dans tout débat public. Pas besoin de spécialisation préalable en ML adversarial.
- Reproduisez une attaque en local. Le repo de Ygvar (
AppleNeuralHash2ONNX) est toujours disponible sur GitHub. Nécessite une GPU modeste et deux heures. Voir le modèle produire une collision de vos propres yeux rend l’argument irréfutable. - Exprimez-vous avec des bases solides. Lorsque vous participez à des discussions sur la CSA Regulation — en milieu professionnel, en ligne ou face à un représentant politique — l’argument “c’est fragile sur le plan adversarial, et la littérature l’atteste” est plus utile que “c’est une violation de la confidentialité”. Le premier est vérifiable et non polarisant. Le second est juste, mais perçu comme idéologique.
L’algorithme sur lequel repose la réglementation peut être brisé en une après-midi avec PyTorch. Tous les hachages perceptuels actuels le peuvent. La question n’est pas de savoir si c’est une défaillance de l’algorithme. La vraie question est : un Parlement informé prendrait-il la décision de construire une infrastructure politique sur une base technologique si manifestement fragile ?
Références
- Prokos, J.; Fendley, N.; Green, M.; Jois, T. M.; Cao, Y. “Squint Hard Enough: Attacking Perceptual Hashing with Adversarial Machine Learning”. USENIX Security Symposium, 2023 (arXiv:2112.09283).
- Ygvar, A. “AppleNeuralHash2ONNX”. GitHub, août 2021. Ingénierie inverse de NeuralHash et générateur de collisions.
- Struppek, L.; Hintersdorf, D.; Neider, D.; Kersting, K. “Learning to Break Deep Perceptual Hashing: The Use Case NeuralHash”. ACM FAccT, 2022 (arXiv:2111.06628).
- Jain, S.; Crețu, A.-M.; de Montjoye, Y.-A. “Adversarial Detection Avoidance Attacks: Evaluating the Robustness of Perceptual Hashing-Based Client-Side Scanning”. USENIX Security, 2022.
- Abelson, H.; Anderson, R.; Bellovin, S. M.; et al. “Bugs in Our Pockets: The Risks of Client-Side Scanning”. arXiv:2110.07450, 2021.
- Meta. PDQ Whitepaper. GitHub :
facebook/ThreatExchange, 2019. - Apple. “CSAM Detection Technical Summary”, août 2021. Archivé; plus officiellement publié.
Cet article a été publié en espagnol et traduit avec l’aide de l’IA.