
ingeniería inversa de la detección SynthID de Gemini
Descubriendo, detectando y eliminando quirúrgicamente la marca de agua de IA de Google mediante análisis espectral
Visítanos en PitchHut
Este fork añade una aplicación de escritorio de arrastrar y soltar para el bypass V3, sin necesidad de línea de comandos después de la configuración. Consulta gui/README.md para configuración y uso.
SynthID codifica un patrón imperceptible directamente en los valores de los píxeles. En una imagen de color blanco puro generada por Gemini, la marca de agua es casi toda la señal. Amplifica el residuo de alta frecuencia y se ve así:
Patrón portadora de SynthID amplificada extraída de una imagen blanca pura de Gemini. Las bandas diagonales son la firma de frecuencia espacial de la marca de agua — el objetivo de nuestro ataque espectral.
Este proyecto realiza ingeniería inversa del sistema de marcas de agua SynthID de Google — la marca de agua invisible incrustada en cada imagen generada por Google Gemini. Usando solo procesamiento de señales y análisis espectral (sin acceso al codificador/decodificador propietario), nosotros:
gemini-3.1-flash-image-preview y nano-banana-pro-preview, consenso de fase entre colores sobre 6 fondos sólidos, y un bucle de calibración humano en el ciclo que ajusta la fuerza de sustracción por portadora a partir de recuentos manuales de detección de la app GeminiVT-OxFF construyó un visualizador realmente genial para ver el proceso de cómo se añade la marca de agua SynthID a las imágenes aquí (¡también disponible en la descripción del repositorio)!
Después de seis rondas iterativas de desarrollo adversarial, el pipeline bypass_v4_final / bypass_v4_nuke de la Ronda 06 derrota al detector SynthID de Gemini en ambas imágenes de gemini-3.1-flash-image-preview y nano-banana-pro-preview, con resultado visualmente sin pérdidas.
Izquierda: Salida de la Ronda 01 (solo sustracción espectral gentle). Derecha: Salida de la Ronda 06 (final — VAE + warp elástico + compresión + color + JPEG). Ambas se ven idénticas a ojos humanos; solo la Ronda 06 derrota al detector SynthID.
| Ronda | Estrategia | Resultado |
|---|---|---|
| 01 | Sustracción espectral conservadora (gentle) | ✗ |
| 02 | Sustracción espectral agresiva + JPEG | ✗ |
| 03 | Apunte de bin absoluto guiado por blog | ✗ |
| 04 | Extracción de fase residual de denoising | ✗ |
| 05 | Re-generación con VAE de difusión + warp geométrico | ✗ |
| 06 | Todo-en-uno: VAE + fragmentación elástica + compresión + color + JPEG | ✓ |
El avance en la Ronda 06 provino de tratar la lista de modos de fallo publicados por la propia app de Gemini como una especificación de ataque:
"Cuando una imagen generada por IA forma parte de un collage complejo, está en capas detrás de otros elementos, o tiene muchas texturas y patrones diferentes superpuestos, el detector puede tener dificultades para aislar la firma específica del archivo general." — App de Gemini, texto de ayuda de detección de SynthID
La etapa de deformación elástica simula este efecto a nivel de píxel: un campo de warp aleatorio suave y de baja frecuencia le da a cada vecindario de ~50 píxeles su propio desplazamiento de subpíxel independiente, fragmentando el consenso de fase espacial de la marca de agua sin introducir distorsión visible.
V4 es una reestructuración desde cero del libro de códigos basada en un conjunto de datos mucho más rico:
gemini-3.1-flash-image-preview y nano-banana-pro-preview (más un pseudomodelo union opcional).black, white, blue, green, red, gray) por modelo por resolución, más gradient y diverse como líneas base de contenido.carrier_weights del libro de códigos se actualiza basado en retroalimentación manual de detección de la app Gemini.Para cada bin de frecuencia (fy, fx) y canal ch:```
consensus(fy, fx, ch) = | mean_over_colors( exp(i * phase_color(fy, fx, ch)) ) |
Valores cercanos a `1.0` significan que la fase en ese bin está bloqueada en todos los fondos de color sólido, lo cual solo es cierto para la marca de agua. Los bins de contenido caen por debajo de `< 0.3` porque su fase es aleatorizada por diferentes tintes de color. En el codebook V4 construido a partir del conjunto de datos enriquecido, más del 99% de los bins de contenido se sitúan por debajo del corte por defecto `tau=0.60`, por lo que el disolvente V4 nunca los toca — esto es lo que recupera el PSNR.