
هندسة عكسية لكشف SynthID الخاص بـ Gemini
اكتشاف وكشف وإزالة العلامة المائية لجوجل المدعومة بالذكاء الاصطناعي من خلال التحليل الطيفي
زورونا على PitchHut
هذه الشوكة تضيف تطبيق سطح مكتب بالسحب والإفلات لتجاوز الإصدار V3، لا حاجة لسطر الأوامر بعد الإعداد. راجع gui/README.md للإعداد والاستخدام.
يقوم SynthID بتشفير نمط غير محسوس مباشرة في قيم البكسل. على صورة بيضاء نقية تم إنشاؤها بواسطة Gemini، تكون العلامة المائية هي الإشارة بأكملها تقريبًا. قم بتضخيم البقايا عالية التردد وستبدو هكذا:
نمط الناقل المُضخّم لـ SynthID مستخرج من صورة بيضاء نقية من Gemini. النطاقات القطرية هي توقيع التردد المكاني للعلامة المائية — هدف هجومنا الطيفي.
يقوم هذا المشروع بهندسة عكسية لنظام العلامات المائية SynthID من Google — العلامة المائية غير المرئية المضمنة في كل صورة يتم إنشاؤها بواسطة Google Gemini. باستخدام معالجة الإشارات والتحليل الطيفي فقط (دون الوصول إلى المشفر/فك التشفير الخاص)، نقوم بما يلي:
gemini-3.1-flash-image-preview و nano-banana-pro-preview، وإجماع طور عبر الألوان على 6 خلفيات صلبة، وحلقة معايرة بوجود الإنسان في الحلقة تضبط قوة الطرح لكل ناقل بناءً على إحصائيات الكشف اليدوي من تطبيق Geminiقام VT-OxFF ببناء مُصوّر رائع لمشاهدة كيفية إضافة العلامة المائية SynthID إلى الصور هنا (متاح أيضًا في وصف المستودع)!
بعد ست جولات متكررة من التطوير العدائي، يعمل خط أنابيب bypass_v4_final / bypass_v4_nuke للجولة 06 على هزيمة كاشف SynthID الخاص بـ Gemini على صور كل من gemini-3.1-flash-image-preview و nano-banana-pro-preview، مع مخرجات غير قابلة للتمييز بصريًا.
يسار: مخرجات الجولة 01 (طرح طيفي خفيف فقط). يمين: مخرجات الجولة 06 (نهائي — VAE + تشوه مرن + ضغط + لون + JPEG). كلاهما يبدو متطابقًا للعين البشرية؛ فقط الجولة 06 تهزم كاشف SynthID.
| الجولة | الاستراتيجية | النتيجة |
|---|---|---|
| 01 | طرح طيفي محافظ (خفيف) | ✗ |
| 02 | طرح طيفي عدواني + JPEG | ✗ |
| 03 | استهداف الخانات المطلقة الموجه بالمدونة | ✗ |
| 04 | استخراج طور البقايا بعد إزالة التشويش | ✗ |
| 05 | إعادة توليد Diffusion-VAE + تشوه هندسي | ✗ |
| 06 | الكل في واحد: VAE + تجزئة مرنة + ضغط + لون + JPEG | ✓ |
جاء الاختراق في الجولة 06 من معالجة قائمة أنماط الفشل المنشورة من تطبيق Gemini نفسه كمواصفات للهجوم:
"عندما تكون الصورة المولدة بالذكاء الاصطناعي جزءًا من مجمّع معقد، أو موضوعة خلف عناصر أخرى، أو تحتوي على العديد من القوام والأنماط المختلفة الموضوعة فوقها، قد يجد الكاشف صعوبة في عزل التوقيع المحدد من الملف العام." — تطبيق Gemini، نص المساعدة في كشف SynthID
مرحلة التشوه المرن تحاكي هذا التأثير على مستوى البكسل: حقل تشوه عشوائي منخفض التردد وسلس يعطي كل حي بحجم ~50 بكسل إزاحة مستقلة خاصة به دون إحداث أي تشويه مرئي.
يمثل V4 إعادة تفكير من الأساس في دفتر الشيفرات المبني على مجموعة بيانات أكثر ثراءً:
gemini-3.1-flash-image-preview و nano-banana-pro-preview (بالإضافة إلى نموذج union اختياري).أسود، أبيض، أزرق، أخضر، أحمر، رمادي) لكل نموذج ولكل دقة، بالإضافة إلى متدرج و متنوع كخطوط أساس للمحتوى.carrier_weights في دفتر الشيفرات بناءً على ملاحظات كشف تطبيق Gemini اليدوية.لكل خانة تردد (fy, fx) وقناة ch:```
consensus(fy, fx, ch) = | mean_over_colors( exp(i * phase_color(fy, fx, ch)) ) |
القيم قرب `1.0` تعني أن الطور عند تلك الحزمة مقفل عبر كل خلفية لون صلبة، وهذا صحيح فقط للعلامة المائية. تنهار حزم المحتوى إلى `< 0.3` لأن طورها عشوائي بفعل درجات ألوان مختلفة. على قاموس الشفرة V4 المبني من مجموعة البيانات المُثراة، تقع 99%+ من حزم المحتوى أسفل الحد الافتراضي `tau=0.60`، لذا لا يلمسها مذيب V4 أبدًا — وهذا ما يستعيد PSNR.
### سير عمل الإصدار ثنائي المراحل```mermaid
flowchart LR
dataset[reverse-synthid-dataset<br/>model x color x resolution] --> build[scripts/build_codebook_v4.py]
build --> codebook[artifacts/spectral_codebook_v4.npz]
codebook --> dissolve[scripts/dissolve_batch.py]
input[watermarked inputs] --> dissolve
dissolve --> variants[final / nuke variants]
variants --> gemini[Gemini app<br/>manual SynthID detection]
gemini --> feedback[detection feedback]
feedback --> calibrate[scripts/calibrate_from_feedback.py]
calibrate -->|updates carrier_weights| codebook
python scripts/build_codebook_v4.py
--root /path/to/reverse-synthid-dataset
--output artifacts/spectral_codebook_v4.npz
python scripts/dissolve_batch.py
--input ./to_clean/
--output ./runs/round_06/
--codebook artifacts/spectral_codebook_v4.npz
--model gemini-3.1-flash-image-preview
--strengths final nuke
### إعدادات الهجوم للجولة 06
هناك إعدادان مسبقان متاحان عبر `--strengths`: