
مجموعة أدوات لاختبار متانة علامات المياه في الذكاء الاصطناعي لأغراض البحث فقط: بروكسي عكسي محلي يزيل بيانات C2PA/EXIF/XMP، ويونيكود، وبيانات الإخفاء في الصور/الصوت، والبيانات الوصفية لملفات OOXML/PDF، ويفحص Trojan Source.
وسيط عالمي لتنقية المصدر الرقمي والعلامات المائية أداة بحثية — لأغراض تقييم متانة العلامات المائية فقط.
NullOrigin أداة بحثية. صُنعت لدعم الدراسة الأكاديمية والمستقلة لمتانة العلامات المائية، ولا شيء غير ذلك.
أنظمة العلامات المائية هي ادعاءات أمنية، والادعاءات الأمنية لا تكون ذات معنى إلا عندما يحاول شخص ما كسرها. الأدبيات التي يطبّقها هذا المشروع — Kirchenbauer وآخرون بشأن KGW، وKrishna وآخرون بشأن هجمات إعادة الصياغة، وBoucher & Anderson بشأن Trojan Source — وُجدت لأن الباحثين نشروا هجمات فعلية ليتمكن المدافعون من قياس المتانة الحقيقية بدلاً من افتراضها. هذا هو التقليد الذي ينتمي إليه هذا المستودع.
الاستخدامات المقصودة
غير مقصود، وغير مدعوم
لا شيء هنا يمثل ضابطًا تقنيًا على كيفية عمل الكود. إنه بيان بالشروط التي يُقدَّم بموجبها، وما سيدعمه مؤلفه وما لن يدعمه. البرنامج مقدَّم "كما هو، دون أي ضمان من أي نوع — انظر LICENSE.
اقرأ النطاق والقيود الصادقة قبل استخلاص أي استنتاج من أي رقم يطبعه هذا البرنامج. لا يمكن التحقق من العديد من الأنظمة التي يستهدفها مقابل كاشف عام، والملف README يوضح ذلك بدلاً من التلميح بخلاف ذلك.
اقرأ هذا قبل استخلاص أي استنتاج من أي رقم يطبعه هذا البرنامج.
| الطبقة | ما تفعله فعليًا |
|---|---|
| الأحرف غير المرئية | فعالة تمامًا. تتم إزالة الأحرف ذات العرض الصفري، وأحرف التحكم في الاتجاه، ومحددات التغيّر، وأحمال كتلة Unicode Tags بالكامل، مع الإبلاغ عن العدد. يتم طي التشابهات بين النصوص (homoglyph confusables) عبر النصوص (السيريلية/اليونانية التي تُعرض كـ ASCII). |
| بيانات المستند الوصفية (.docx) | فعالة تمامًا. يتم مسح المؤلف، وآخر محرر، وعدد المراجعات، والطوابع الزمنية، والقوالب، وإصدار التطبيق من docProps، مع الحفاظ على التنسيق بايتًا ببايت. |
| C2PA / EXIF / XMP | فعالة تمامًا. تُعاد بناء الصورة من عينات البكسل الخام إلى حاوية جديدة، بحيث تختفي بيانات JUMBF الموقّعة وجميع البيانات الوصفية. تم التحقق منها بالاختبار ضد نماذج موصولة بعلامات. |
| العلامة المائية الإحصائية KGW | تعتمد كليًا على محرك إعادة الكتابة. بدون نموذج محلي مُهيأ، تبقى العلامة المائية الإحصائية قائمة — والأداة توضح ذلك بدلاً من التلميح بخلافه. |
| SynthID-Text / SynthID-Image / Tree-Ring | غير قابلة للتحقق هنا. تستخدم مفاتيح خاصة وأجهزة فك ترميز مملوكة. يطبّق NullOrigin التشوهات التي تصفها الأدبيات، لكن لا يُدّعى أنها تهزم أجهزة الكشف الحقيقية، لأنه لا يوجد كاشف عام للقياس مقابله. |
| AudioSeal / SynthID-Audio | غير قابلة للتحقق هنا، للسبب نفسه. |
KGWStatisticalDetector هو تطبيق دقيق رياضيًا، متسق ذاتيًا
لمخطط القائمة الخضراء/الحمراء لـ Kirchenbauer وآخرون على رموز المسافات البيضاء. وهو ليس
أداة فك ترميز لأي علامة مائية إنتاجية لأي بائع — فهذه تعتمد على سر خاص
ومفردات BPE الخاصة بالنموذج نفسه.
الغرض منه هو جعل المعيار حقيقيًا: يزرع KGWWatermarkEmbedder علامة مائية حقيقية،
ويهاجمها خط المعالجة (pipeline)، ويقيس الكاشف المطابق الانخفاض الفعلي.
هذا قياس حقيقي للهجوم ضد هذا النظام. ولا ينتقل إلى علامة مائية تابعة لأي بائع.
تُقسَّم المفردات $V$ في كل خطوة $t$ بواسطة دالة تجزئة تستند إلى السياق السابق:
$$s_t = \text{Hash}(w_{t-k}, \dots, w_{t-1})$$
إلى قائمة خضراء $G_t$ بحجم $\gamma|V|$ وقائمة حمراء $R_t$. يُضاف انحياز $\delta > 0$ إلى سجلات (logits) القائمة الخضراء:
$$\tilde{l}{t,v} = \begin{cases} l{t,v} + \delta, & v \in G_t \\ l_{t,v}, & v \in R_t \end{cases}$$
يقيس الكشف عدد الإصابات الخضراء. تحت $H_0$ تكون $\text{Binomial}(T, \gamma)$، لذا:
$$z = \frac{|S_G| - \gamma T}{\sqrt{T\gamma(1-\gamma)}}$$
مع $z > 4.0$ ($p < 3\times10^{-5}$) يُشار إلى أنها اصطناعية.
لماذا تهاجمها إعادة الصياغة: تعيش العلامة المائية بالكامل في انتقالات الـ n-gram المحلية. إعادة كتابة الصيغة السطحية بنموذج غير موصوم يعيد بذر كل موضع. هذا هو هجوم المتانة القياسي في أدبيات العلامات المائية.
لماذا الطول مهم: تنمو $z$ بمعدل $\sqrt{T}$. مقطع من 100 رمز عند كسر أخضر 0.70 لا يصل إلا إلى $z \approx 3.9$ — أي تحت العتبة. يحتاج الكشف إلى بضع مئات من الرموز، وكذلك تحتاج نماذج المعايير ذات المعنى.
APP11، وقطع PNG tEXt/iTXt،
أو صناديق WebP/AVIF c2pa. نظرًا لأن التوقيع يغطي بيانات البكسل، فإن إعادة الترميز
من مخزن عينات خام تزيله دون تحليل JUMBF إطلاقًا.تعديل طور تحت العتبة وإضافات طيفية منخفضة السعة. يُهاجَم بعشوائية الطور فوق التردد الأساسي للكلام، وبتحويل فتحات إيقاف النطاق (band-stop notch) في النطاقات غير الحرجة، وبإعادة تكميم سمعي نفسي (psychoacoustic re-quantization).
| Python | 3.10 أو 3.11 أو 3.12 |
| نظام التشغيل | Linux، macOS (Intel وApple Silicon)، Windows عبر WSL2 |
| اختياري | Ollama أو أي خادم متوافق مع OpenAI — مطلوب لإزالة العلامة المائية من النص |
| اختياري | Docker 20.10+ مع Compose v2 |
git clone https://github.com/rakib-nyc/nullorigin.git cd nullorigin
python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate