اكتشاف اختراق التوقيع
اكتشاف اختراق التوقيع
SignaturesCompromiseDetector هو نقطة الدخول لهذا الدليل: يقوم بفحص تاريخ مراجعات المستند الموقّع للبحث عن مؤشرات على إضافة محتوى بعد تطبيق آخر توقيع، ويُبلغ عما يجده كـ CompromiseCheckResult. هذه هي السطح الأمني الذي تغطيه هذه المجموعة من قاعدة المعرفة — لا يغطي إنشاء أو تطبيق التواقيع، أو تشفير المستند؛ بل يفحص فقط التواقيع الموجودة بالفعل على المستند.
تشغيل فحص الاختراق
أنشئ SignaturesCompromiseDetector بالمستند الذي تريد فحصه، ثم استدعِ SignaturesCompromiseDetector.check(). يتحقق الفحص من كل توقيع موجود بالفعل على المستند ويبحث عن بايتات غير موقعة مضافة بعد آخر مراجعة موقعة — إشارة إلى أن المحتوى قد تم طبقه لاحقًا — مع تحمل مادة التحقق طويلة الأمد الشرعية (مثل مخزن أمان المستند أو طابع زمني للأرشيف) التي يضيفها توقيع لاحق يغطي السابق.
تفسير النتيجة
SignaturesCompromiseDetector.check() يُعيد CompromiseCheckResult يحتوي على أربع خصائص:
CompromiseCheckResult.has_compromised_signatures—Trueإذا أظهر أي توقيع مؤشرًا على العبث.CompromiseCheckResult.compromised— ينسخCompromiseCheckResult.has_compromised_signatures، مُقدَّم كاسم مستعار للراحة للقراءة فقط.CompromiseCheckResult.signatures_coverage— عدد التوقيعات التي فحصها الكاشف على المستند.CompromiseCheckResult.reasons— قائمة بالسلاسل القصيرة التي تصف سبب وضع العلامة على المستند، ومتى تم ذلك.
يُبلّغ عن مستند لا يحتوي على توقيعات، أو عدم وجود مستند على الإطلاق، بأنه غير مخترق، حيث تكون قيمة CompromiseCheckResult.signatures_coverage مساوية لـ 0.
نصائح وأفضل الممارسات
- عامل
CompromiseCheckResult.compromisedوCompromiseCheckResult.has_compromised_signaturesكقابلة للتبديل — دائمًا ما تُبلغ عن نفس القيمة. - تحقق من
CompromiseCheckResult.signatures_coverageقبل الوثوق بنتيجةFalse: تغطية قدرها0تعني أن الكاشف لم يجد توقيعات لفحصها، وليس أن التوقيعات الموجودة تم التحقق من سلامتها. - اقرأ
CompromiseCheckResult.reasonsعندما يكونCompromiseCheckResult.has_compromised_signaturesهوTrue— توضح القائمة أي خوارزمية تم تفعيلها، وهو أمر مفيد عند التسجيل أو عرض النتيجة على المراجع. SignaturesCompromiseDetectorيفحص سجل الإصدارات بحثًا عن مؤشرات التلاعب؛ لا يتحقق من سلامة التوقيع المشفر بنفسه، لذا يجب ربطه بنتائج التحقق من التوقيع الخاصة بالمستند حيثما يكون ذلك مهمًا في سير عملك.
مشكلات شائعة
| المشكلة | السبب | الإصلاح |
|---|---|---|
CompromiseCheckResult.signatures_coverage هو 0 لوثيقة تعلم أنها موقعة | تم إنشاء SignaturesCompromiseDetector بدون مستند، أو كائن المستند لا يحتوي على توقيعات يمكن الوصول إليها | تأكد من أن المستند الممرَّ إلى SignaturesCompromiseDetector يكشف عن توقيعاته قبل استدعاء SignaturesCompromiseDetector.check() |
CompromiseCheckResult.reasons فارغ على الرغم من أنك كنت تتوقع شرحًا | CompromiseCheckResult.has_compromised_signatures هو False لهذا المستند | يتم ملء الأسباب فقط عندما يتم العثور فعليًا على مؤشر اختراق؛ من المتوقع وجود قائمة فارغة في نتيجة نظيفة |
| يُصنَّف ملف PDF محدث بصورة شرعية (مثل الذي يحتوي على طابع زمني للتحقق طويل الأمد) على أنه مخترق | الإضافة اللاحقة غير مغطاة بالكامل بتوقيع لاحق أو لا تُعترف بها كمادة خاصة بالتحقق فقط | أعد تشغيل الفحص بعد التأكد من أن التحديث تم بواسطة توقيع تغطية مناسب أو طابع زمني، وتفقد CompromiseCheckResult.reasons للعثور على المشغل المحدد |
FAQ
ما الذي يتحقق منه CompromiseCheckResult.compromised فعليًا؟
يُبلغ عن نفس القيمة كما في CompromiseCheckResult.has_compromised_signatures: ما إذا كان SignaturesCompromiseDetector.check() قد وجد أي مؤشر تلاعب عبر توقيعات المستند.
هل يعني وجود signatures_coverage من نوع 0 أن المستند آمن؟
لا — هذا يعني أنه لم يتم العثور على أي توقيعات للفحص. لا يمكن لـ SignaturesCompromiseDetector الإبلاغ عن توقيعات لا يستطيع رؤيتها، لذا فإن تغطية 0 تعني نتيجة “لا شيء للفحص”، وليس تأكيدًا على السلامة.
هل يمكن لـ SignaturesCompromiseDetector إنشاء أو التحقق من توقيع مشفر؟
لا. إنها تفحص فقط تاريخ إصدارات المستند الحالي بحثًا عن مؤشرات على أن المحتوى أُضيف بعد التوقيع الأخير. إنشاء أو تطبيق أو التحقق من صحة التواقيع بشكل تشفيرى خارج نطاق ما تقوم به هذه الفئة.
هل سيؤدي إضافة طابع زمني شرعي بعد التوقيع دائمًا إلى اكتشاف اختراق؟
ليس بالضرورة. تم تصميم الكاشف لتحمل الإضافة اللاحقة التي تكون مغطاة بتوقيع لاحق، أو التي تضيف فقط مادة تحقق بدلاً من محتوى جديد. تحقق من CompromiseCheckResult.reasons إذا رأيت اكتشافًا غير متوقع.
API Reference ملخص
| الفئة/الطريقة | وصف |
|---|---|
SignaturesCompromiseDetector | يفحص المستند الموقع للبحث عن مؤشرات التلاعب بعد آخر توقيع |
SignaturesCompromiseDetector.check() | يُجري الفحص ويُعيد CompromiseCheckResult |
CompromiseCheckResult | نتيجة فحص الاختراق |
CompromiseCheckResult.compromised | الاسم المستعار للقراءة فقط لـ CompromiseCheckResult.has_compromised_signatures |
CompromiseCheckResult.has_compromised_signatures | ما إذا تم العثور على مؤشر تلاعب |
CompromiseCheckResult.signatures_coverage | عدد التوقيعات التي تم فحصها |
CompromiseCheckResult.reasons | سلاسل قصيرة توضح أي اكتشاف |