การตรวจจับการละเมิดลายเซ็น
การตรวจจับการละเมิดลายเซ็น
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ตรวจสอบประวัติการแก้ไขเพื่อหาตัวบ่งชี้การดัดแปลง; มันไม่ได้ตรวจสอบความสมบูรณ์ของลายเซ็นแบบ cryptographic ด้วยตนเอง ดังนั้นให้ใช้ร่วมกับผลการตรวจสอบลายเซ็นของเอกสารเองในกรณีที่สิ่งนั้นสำคัญต่อกระบวนการทำงานของคุณ.
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | แก้ไข |
|---|---|---|
CompromiseCheckResult.signatures_coverage เป็น 0 สำหรับเอกสารที่คุณทราบว่าได้รับการลงนาม | SignaturesCompromiseDetector ถูกสร้างขึ้นโดยไม่มีเอกสาร หรือออบเจกต์เอกสารไม่มีลายเซ็นที่เข้าถึงได้ | ยืนยันว่าเอกสารที่ส่งให้ SignaturesCompromiseDetector เปิดเผยลายเซ็นของมันก่อนเรียก SignaturesCompromiseDetector.check() |
CompromiseCheckResult.reasons เป็นค่าว่างแม้ว่าคุณคาดหวังคำอธิบาย | CompromiseCheckResult.has_compromised_signatures เป็น False สำหรับเอกสารนี้ | เหตุผลจะถูกเติมเฉพาะเมื่อพบตัวบ่งชี้การละเมิดจริง; รายการว่างในผลลัพธ์ที่สะอาดเป็นสิ่งที่คาดหวัง |
| PDF ที่อัปเดตอย่างถูกต้อง (เช่น PDF ที่มีการเพิ่มเครื่องหมายเวลา long-term-validation) ถูกทำเครื่องหมายว่าเป็นการละเมิด | การเพิ่มภายหลังไม่ได้รับการคลุมโดยลายเซ็นต่อมาครบถ้วน หรือไม่ได้รับการรับรู้ว่าเป็นวัสดุที่ใช้สำหรับการตรวจสอบเท่านั้น | ทำการตรวจสอบใหม่อีกครั้งหลังจากยืนยันว่าการอัปเดตทำโดยลายเซ็นหรือเครื่องหมายเวลาที่คลุมอย่างเหมาะสม และตรวจสอบ CompromiseCheckResult.reasons เพื่อหาทริกเกอร์เฉพาะ |
FAQ
จริง ๆ แล้ว CompromiseCheckResult.compromised ตรวจสอบอะไร?
มันรายงานค่าที่เหมือนกับ CompromiseCheckResult.has_compromised_signatures: ว่า SignaturesCompromiseDetector.check() พบตัวบ่งชี้การดัดแปลงใด ๆ บนลายเซ็นของเอกสารหรือไม่.
ผลลัพธ์ signatures_coverage เป็น 0 หมายความว่าเอกสารปลอดภัยหรือไม่?
ไม่ — หมายความว่าไม่พบลายเซ็นใดให้ตรวจสอบ SignaturesCompromiseDetector ไม่สามารถรายงานเกี่ยวกับลายเซ็นที่มันไม่เห็นได้ ดังนั้นการครอบคลุม 0 เป็นผลลัพธ์ “nothing to check” ไม่ใช่การยืนยันความสมบูรณ์.
สามารถ SignaturesCompromiseDetector สร้างหรือยืนยันลายเซ็นแบบ cryptographic ได้หรือไม่?
ไม่. มันเพียงตรวจสอบประวัติการแก้ไขที่มีอยู่ของเอกสารเพื่อหาสัญญาณว่ามีการเพิ่มเนื้อหาหลังจากลายเซ็นล่าสุด การสร้าง, การใช้, หรือการตรวจสอบลายเซ็นด้วยเทคนิคการเข้ารหัส ไม่อยู่ในขอบเขตของคลาสนี้.
การเพิ่มตราเวลาอย่างถูกต้องหลังจากการลงลายเซ็นจะทำให้ตรวจพบการละเมิดเสมอหรือไม่?
ไม่จำเป็นเสมอไป ตัวตรวจจับถูกออกแบบให้ยอมรับการเพิ่มภายหลังที่ได้รับการคุ้มครองโดยลายเซ็นต่อมาหรือที่เพิ่มเฉพาะวัสดุการตรวจสอบแทนเนื้อหาใหม่ ตรวจสอบ CompromiseCheckResult.reasons หากคุณพบผลลัพธ์ที่ไม่คาดคิด.
API Reference สรุป
| คลาส/เมธอด | คำอธิบาย |
|---|---|
SignaturesCompromiseDetector | ตรวจสอบเอกสารที่ลงลายเซ็นเพื่อหาตัวบ่งชี้การปลอมแปลงหลังลายเซ็นสุดท้าย |
SignaturesCompromiseDetector.check() | ทำการตรวจสอบและคืนค่า CompromiseCheckResult |
CompromiseCheckResult | ผลลัพธ์ของการตรวจสอบการละเมิด |
CompromiseCheckResult.compromised | นามแฝงแบบอ่านอย่างเดียวสำหรับ CompromiseCheckResult.has_compromised_signatures |
CompromiseCheckResult.has_compromised_signatures | ว่าพบตัวบ่งชี้การทำลายหรือไม่ |
CompromiseCheckResult.signatures_coverage | จำนวนลายเซ็นที่ตรวจสอบ |
CompromiseCheckResult.reasons | สตริงสั้นที่อธิบายผลการค้นหาใด ๆ |