﻿﻿{"id":2605,"date":"2026-03-25T16:17:15","date_gmt":"2026-03-25T15:17:15","guid":{"rendered":"https:\/\/elearningsamba.com\/index.php\/reverse-synthid-le-filigrane-de-gemini-mis-a-nu\/"},"modified":"2026-03-25T16:17:15","modified_gmt":"2026-03-25T15:17:15","slug":"reverse-synthid-le-filigrane-de-gemini-mis-a-nu","status":"publish","type":"page","link":"https:\/\/elearningsamba.com\/index.php\/reverse-synthid-le-filigrane-de-gemini-mis-a-nu\/","title":{"rendered":"Reverse-SynthID &#8211; Le filigrane de Gemini mis \u00e0 nu"},"content":{"rendered":"<p>SynthID, le filigrane invisible que Google injecte dans chaque image Gemini, c&#8217;\u00e9tait cens\u00e9 \u00eatre incassable. Sauf qu&#8217;un dev a eu l&#8217;id\u00e9e toute b\u00eate de g\u00e9n\u00e9rer des images noires et blanches avec Gemini, puis de regarder ce qui restait dans le domaine fr\u00e9quentiel. Et l\u00e0, surprise&#8230; le watermark est apparu en clair avec toutes ses fr\u00e9quences porteuses !<\/p>\n<p>Le projet<br \/>\n<a href=\"https:\/\/github.com\/aloshdenny\/reverse-SynthID\">reverse-SynthID<\/a><br \/>\ndocumente le truc de A \u00e0 Z o\u00f9 on comprend en gros, que le marquage IA de Google fonctionne en injectant de l&#8217;\u00e9nergie \u00e0 des fr\u00e9quences bien pr\u00e9cises dans le spectre de l&#8217;image via une<br \/>\n<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Transformation_de_Fourier\">transformation de Fourier<\/a><br \/>\n. Le chercheur a identifi\u00e9 6 fr\u00e9quences porteuses principales, toutes avec une coh\u00e9rence de phase sup\u00e9rieure \u00e0 99,9% et la blague, c&#8217;est que ce pattern est fixe. Donc pas de message unique par image, pas de cl\u00e9 qui change&#8230; c&#8217;est juste la m\u00eame empreinte spectrale sur toutes les images sorties du mod\u00e8le Gemini.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/korben.info\/cdn-cgi\/image\/width=1200,fit=scale-down,quality=90,f=avif\/reverse-synthid-filigrane-gemini-mis-a-nu\/reverse-synthid-filigrane-gemini-mis-a-nu-2.png\" alt=\"\" loading=\"lazy\"><\/p>\n<p><em>Spectre FFT du watermark SynthID &#8211; les pics lumineux correspondent aux fr\u00e9quences porteuses identifi\u00e9es<\/em><\/p>\n<p>Du coup, une fois que vous avez profil\u00e9 cette empreinte avec une cinquantaine d&#8217;images PNG de r\u00e9f\u00e9rence (25 noires, 25 blanches, g\u00e9n\u00e9r\u00e9es via l&#8217;API Gemini), vous pouvez faire deux trucs. D&#8217;abord, d\u00e9tecter le filigrane avec 90% de pr\u00e9cision, sans avoir le moindre acc\u00e8s au code source de Google. Et ensuite le retirer en soustrayant les composantes spectrales identifi\u00e9es, fr\u00e9quence par fr\u00e9quence, tout en pr\u00e9servant la qualit\u00e9 de l&#8217;image \u00e0 plus de 40 dB PSNR. Visuellement identique \u00e0 l&#8217;original !<\/p>\n<p>Et c&#8217;est l\u00e0 que la diff\u00e9rence avec<br \/>\n<a href=\"https:\/\/korben.info\/unmarker-watermark-ia-inutiles-deepfakes.html\">UnMarker<\/a><br \/>\n(dont je vous avais parl\u00e9) saute aux yeux car ce dernier &#8220;secoue&#8221; l&#8217;image en aveugle pour casser le watermark. Alors que Reverse-SynthID, c&#8217;est plut\u00f4t scrut\u00e9 \u00e0 la loupe et hyper cibl\u00e9. R\u00e9sultat, y&#8217;a clairement moins de d\u00e9gradation et un drop de confiance du d\u00e9tecteur.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/korben.info\/cdn-cgi\/image\/width=1200,fit=scale-down,quality=90,f=avif\/reverse-synthid-filigrane-gemini-mis-a-nu\/reverse-synthid-filigrane-gemini-mis-a-nu-3.png\" alt=\"\" loading=\"lazy\"><\/p>\n<p><em>Les fr\u00e9quences porteuses reconstruites &#8211; la structure diagonale du watermark SynthID<\/em><\/p>\n<p>Par contre, je l&#8217;ai impl\u00e9ment\u00e9 en Rust et j&#8217;ai essay\u00e9 de voir si \u00e7a marchait vraiment sur mes propres images g\u00e9n\u00e9r\u00e9e avec Gemini. H\u00e9 bien non, car le bypass ne fait PAS chuter la confiance du d\u00e9tecteur de 100 \u00e0 0, mais juste de quelques pourcents.<\/p>\n<p>Le watermark est att\u00e9nu\u00e9, mais pas effac\u00e9. Ce n&#8217;est donc pas un outil cl\u00e9 en main pour faire dispara\u00eetre tous les filigranes SynthID en un clic. Mais le fait qu&#8217;une seule personne, avec du Python et du traitement de signal classique (FFT, filtres notch, soustraction spectrale), ait pu reverse-engineerer un syst\u00e8me que Google pr\u00e9sente comme LA solution anti-deepfakes&#8230;<\/p>\n<p>\u00c7a confirme ce que les chercheurs de l&#8217;Universit\u00e9 de Waterloo avaient d\u00e9j\u00e0 d\u00e9montr\u00e9 : <strong>le watermarking d&#8217;images IA, c&#8217;est p\u00e9t\u00e9 by design.<\/strong><\/p>\n<p>D&#8217;ailleurs, Google le sait tr\u00e8s bien et ils pourraient changer le pattern demain et tout serait \u00e0 refaire, mais \u00e7a confirme surtout que le principe m\u00eame du watermarking spectral a une date de p\u00e9remption. Apr\u00e8s, \u00e7a arrange tout le monde d&#8217;avoir un truc \u00e0 montrer quand les gouvernements demandent &#8220;<em>et contre les deepfakes, vous faites quoi ?<\/em>&#8220;<\/p>\n<p>Et si c&#8217;est la petite \u00e9toile visible en bas \u00e0 droite des images Gemini qui vous g\u00eane (pas le watermark spectral invisible, juste le marqueur visuel), j&#8217;ai d\u00e9velopp\u00e9<br \/>\n<a href=\"https:\/\/www.patreon.com\/posts\/un-super-outil-146523799\">un outil pour mes Patreons<\/a><br \/>\nqui s&#8217;en occupe.<\/p>\n<p>Bref, tout est<br \/>\n<a href=\"https:\/\/github.com\/aloshdenny\/reverse-SynthID\">sur le repo<\/a><br \/>\nsi le reverse-engineering de watermarks IA, \u00e7a vous branche !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SynthID, le filigrane invisible que Google injecte dans chaque image Gemini, c&#8217;\u00e9tait cens\u00e9 \u00eatre incassable. Sauf qu&#8217;un dev a eu l&#8217;id\u00e9e toute b\u00eate de g\u00e9n\u00e9rer des images noires et blanches avec Gemini, puis de regarder ce qui restait dans le domaine fr\u00e9quentiel. Et l\u00e0, surprise&#8230; le watermark est apparu en clair avec toutes ses fr\u00e9quences porteuses ! Le projet reverse-SynthID documente le truc de A \u00e0 Z o\u00f9 on comprend en gros, que le marquage IA de Google fonctionne en injectant de l&#8217;\u00e9nergie \u00e0 des fr\u00e9quences bien pr\u00e9cises dans le spectre de l&#8217;image via une transformation de Fourier . Le chercheur a identifi\u00e9 6 fr\u00e9quences porteuses principales, toutes avec une coh\u00e9rence de phase sup\u00e9rieure \u00e0 99,9% et la blague, c&#8217;est que ce pattern est fixe. Donc pas de message unique par image, pas de cl\u00e9 qui change&#8230; c&#8217;est juste la m\u00eame empreinte spectrale sur toutes les images sorties du mod\u00e8le Gemini. Spectre FFT du watermark SynthID &#8211; les pics lumineux correspondent aux fr\u00e9quences porteuses identifi\u00e9es Du coup, une fois que vous avez profil\u00e9 cette empreinte avec une cinquantaine d&#8217;images PNG de r\u00e9f\u00e9rence (25 noires, 25 blanches, g\u00e9n\u00e9r\u00e9es via l&#8217;API Gemini), vous pouvez faire deux trucs. D&#8217;abord, d\u00e9tecter le filigrane avec 90% de pr\u00e9cision, sans avoir le moindre acc\u00e8s au code source de Google. Et ensuite le retirer en soustrayant les composantes spectrales identifi\u00e9es, fr\u00e9quence par fr\u00e9quence, tout en pr\u00e9servant la qualit\u00e9 de l&#8217;image \u00e0 plus de 40 dB PSNR. Visuellement identique \u00e0 l&#8217;original ! Et c&#8217;est l\u00e0 que la diff\u00e9rence avec UnMarker (dont je vous avais parl\u00e9) saute aux yeux car ce dernier &#8220;secoue&#8221; l&#8217;image en aveugle pour casser le watermark. Alors que Reverse-SynthID, c&#8217;est plut\u00f4t scrut\u00e9 \u00e0 la loupe et hyper cibl\u00e9. R\u00e9sultat, y&#8217;a clairement moins de d\u00e9gradation et un drop de confiance du d\u00e9tecteur. Les fr\u00e9quences porteuses reconstruites &#8211; la structure diagonale du watermark SynthID Par contre, je l&#8217;ai impl\u00e9ment\u00e9 en Rust et j&#8217;ai essay\u00e9 de voir si \u00e7a marchait vraiment sur mes propres images g\u00e9n\u00e9r\u00e9e avec Gemini. H\u00e9 bien non, car le bypass ne fait PAS chuter la confiance du d\u00e9tecteur de 100 \u00e0 0, mais juste de quelques pourcents. Le watermark est att\u00e9nu\u00e9, mais pas effac\u00e9. Ce n&#8217;est donc pas un outil cl\u00e9 en main pour faire dispara\u00eetre tous les filigranes SynthID en un clic. Mais le fait qu&#8217;une seule personne, avec du Python et du traitement de signal classique (FFT, filtres notch, soustraction spectrale), ait pu reverse-engineerer un syst\u00e8me que Google pr\u00e9sente comme LA solution anti-deepfakes&#8230; \u00c7a confirme ce que les chercheurs de l&#8217;Universit\u00e9 de Waterloo avaient d\u00e9j\u00e0 d\u00e9montr\u00e9 : le watermarking d&#8217;images IA, c&#8217;est p\u00e9t\u00e9 by design. D&#8217;ailleurs, Google le sait tr\u00e8s bien et ils pourraient changer le pattern demain et tout serait \u00e0 refaire, mais \u00e7a confirme surtout que le principe m\u00eame du watermarking spectral a une date de p\u00e9remption. Apr\u00e8s, \u00e7a arrange tout le monde d&#8217;avoir un truc \u00e0 montrer quand les gouvernements demandent &#8220;et contre les deepfakes, vous faites quoi ?&#8220; Et si c&#8217;est la petite \u00e9toile visible en bas \u00e0 droite des images Gemini qui vous g\u00eane (pas le watermark spectral invisible, juste le marqueur visuel), j&#8217;ai d\u00e9velopp\u00e9 un outil pour mes Patreons qui s&#8217;en occupe. Bref, tout est sur le repo si le reverse-engineering de watermarks IA, \u00e7a vous branche !<\/p>\n","protected":false},"author":1,"featured_media":2606,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"give_campaign_id":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_kadence_starter_templates_imported_post":false,"footnotes":""},"class_list":["post-2605","page","type-page","status-publish","has-post-thumbnail","hentry"],"campaignId":"","_links":{"self":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2605","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/comments?post=2605"}],"version-history":[{"count":0,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2605\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media\/2606"}],"wp:attachment":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media?parent=2605"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}