تشخیص نفوذ امضا
تشخیص نفوذ امضا
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را بهعنوان قابل تعویض در نظر بگیرید — آنها همیشه مقدار یکسانی را گزارش میدهند.- قبل از اعتماد به نتیجهٔ
False،CompromiseCheckResult.signatures_coverageرا بررسی کنید: پوشش0به این معنی است که آشکارساز هیچ امضایی برای بررسی نیافته است، نه اینکه امضای موجود تأیید شده بهعنوان سالم باشد. - هنگامی که
CompromiseCheckResult.has_compromised_signaturesبرابرTrueباشد،CompromiseCheckResult.reasonsرا بخوانید — این فهرست توضیح میدهد کدام هورستیک فعال شده است، که برای ثبت لاگ یا نمایش نتیجه به بازبین مفید است. SignaturesCompromiseDetectorتاریخچهٔ بازنگری را برای نشانههای دستکاری مینگرد؛ خود بهتنهایی یکپارچگی امضای رمزنگاریشده را تأیید نمیکند، بنابراین در مواردی که برای جریان کار شما مهم است، نتایج اعتبارسنجی امضای خود سند را همراه آن استفاده کنید.
مسائل رایج
| مشکل | دلیل | راهحل |
|---|---|---|
CompromiseCheckResult.signatures_coverage 0 برای سندی که میدانید امضا شده است | SignaturesCompromiseDetector بدون سند ساخته شده بود، یا شی سند امضای قابل دسترسی ندارد | قبل از فراخوانی SignaturesCompromiseDetector.check()، تأیید کنید که سندی که به SignaturesCompromiseDetector پاس داده شده است امضاهای خود را نشان میدهد |
CompromiseCheckResult.reasons خالی است، اگرچه شما انتظار توضیح داشتید | CompromiseCheckResult.has_compromised_signatures False برای این سند | دلیلها فقط زمانی پر میشوند که نشانگر نفوذ واقعاً پیدا شده باشد؛ انتظار میرود در نتیجهای پاک، لیست خالی باشد |
| یک PDF که بهطور مشروع بهروز شده است (مثلاً 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 | رشتههای کوتاه توضیحدهندهٔ هر یافته |