Phát hiện Sự xâm phạm Chữ ký
Phát hiện sự xâm phạm chữ ký
SignaturesCompromiseDetector là điểm khởi đầu cho hướng dẫn này: nó kiểm tra lịch sử phiên bản của tài liệu đã ký để phát hiện các dấu hiệu nội dung được thêm vào sau khi chữ ký cuối cùng được áp dụng, và báo cáo những gì nó tìm thấy dưới dạng CompromiseCheckResult. Đây là phạm vi bảo mật được bao phủ bởi cụm kiến thức này — nó không bao gồm việc tạo hoặc áp dụng chữ ký, hay mã hóa tài liệu; nó chỉ xem xét các dấu ký đã có trên tài liệu.
Thực hiện Kiểm tra Xâm phạm
Tạo SignaturesCompromiseDetector bằng tài liệu bạn muốn kiểm tra, sau đó gọi SignaturesCompromiseDetector.check(). Kiểm tra sẽ duyệt qua từng dấu ký đã có trên tài liệu và tìm các byte chưa ký được thêm vào sau phiên bản đã ký cuối cùng — một dấu hiệu cho thấy nội dung có thể đã được chèn thêm — đồng thời chấp nhận các vật liệu xác thực dài hạn hợp pháp (như kho lưu trữ bảo mật tài liệu hoặc dấu thời gian lưu trữ) được thêm bởi một dấu ký bao phủ sau này.
Giải thích Kết quả
SignaturesCompromiseDetector.check() trả về một CompromiseCheckResult với bốn thuộc tính:
CompromiseCheckResult.has_compromised_signatures—Truenếu bất kỳ chữ ký nào hiển thị dấu hiệu can thiệp.CompromiseCheckResult.compromised— phản chiếuCompromiseCheckResult.has_compromised_signatures, được cung cấp dưới dạng bí danh tiện lợi chỉ đọc.CompromiseCheckResult.signatures_coverage— số lượng chữ ký mà bộ phát hiện đã kiểm tra trên tài liệu.CompromiseCheckResult.reasons— danh sách các chuỗi ngắn mô tả lý do tài liệu bị gắn cờ, và thời điểm xảy ra.
Một tài liệu không có chữ ký, hoặc không tồn tại tài liệu nào, được báo cáo là không bị xâm phạm, với CompromiseCheckResult.signatures_coverage bằng 0.
Mẹo và Thực tiễn Tốt nhất
- Xem
CompromiseCheckResult.compromisedvàCompromiseCheckResult.has_compromised_signatureslà tương đương — chúng luôn báo cáo cùng một giá trị. - Kiểm tra
CompromiseCheckResult.signatures_coveragetrước khi tin tưởng kết quảFalse: mức độ bao phủ0có nghĩa là bộ phát hiện không tìm thấy dấu nào để kiểm tra, chứ không phải các dấu hiện có đã được xác minh là nguyên vẹn. - Đọc
CompromiseCheckResult.reasonskhiCompromiseCheckResult.has_compromised_signatureslàTrue— danh sách giải thích heuristic nào đã được kích hoạt, điều này hữu ích khi ghi log hoặc trình bày kết quả cho người xem xét. SignaturesCompromiseDetectorkiểm tra lịch sử sửa đổi để tìm dấu hiệu giả mạo; nó không tự xác thực tính toàn vẹn của chữ ký mật mã, vì vậy hãy ghép nó với kết quả xác thực chữ ký của tài liệu khi điều đó quan trọng trong quy trình làm việc của bạn.
Vấn đề thường gặp
| Vấn đề | Nguyên nhân | Cách khắc phục |
|---|---|---|
CompromiseCheckResult.signatures_coverage là 0 đối với một tài liệu mà bạn biết đã được ký | SignaturesCompromiseDetector được tạo mà không có tài liệu, hoặc đối tượng tài liệu không có bất kỳ chữ ký nào có thể truy cập | Xác nhận rằng tài liệu được truyền vào SignaturesCompromiseDetector công khai các ký của nó trước khi gọi SignaturesCompromiseDetector.check() |
CompromiseCheckResult.reasons trống mặc dù bạn mong đợi một lời giải thích | CompromiseCheckResult.has_compromised_signatures là False đối với tài liệu này | Các lý do chỉ được điền khi thực sự phát hiện chỉ báo xâm phạm; danh sách trống trong kết quả sạch là điều mong đợi |
| Một tệp PDF được cập nhật hợp pháp (ví dụ: có dấu thời gian xác thực dài hạn được thêm vào) bị đánh dấu là đã bị xâm phạm | Phần bổ sung sau này không được bao phủ đầy đủ bởi một bằng chứng ký tiếp theo hoặc không được công nhận là tài liệu chỉ để xác thực | Chạy lại kiểm tra sau khi xác nhận việc cập nhật được thực hiện bằng một bằng chứng ký hoặc dấu thời gian bao phủ hợp lệ, và kiểm tra CompromiseCheckResult.reasons để tìm nguyên nhân cụ thể |
FAQ
Thực tế CompromiseCheckResult.compromised kiểm tra gì?
Nó báo cáo cùng một giá trị như CompromiseCheckResult.has_compromised_signatures: liệu SignaturesCompromiseDetector.check() có phát hiện bất kỳ chỉ báo giả mạo nào trên các chữ ký của tài liệu hay không.
Một signatures_coverage của 0 có nghĩa là tài liệu an toàn không?
Không — điều đó có nghĩa là không có chữ ký nào được tìm thấy để kiểm tra. SignaturesCompromiseDetector không thể báo cáo về các dấu ký mà nó không nhìn thấy, vì vậy độ bao phủ 0 là kết quả “không có gì để kiểm tra”, không phải là xác nhận tính toàn vẹn.
Liệu SignaturesCompromiseDetector có thể tạo hoặc xác thực một chữ ký mật mã không?
Không. Nó chỉ kiểm tra lịch sử sửa đổi hiện có của tài liệu để tìm các chỉ báo rằng nội dung đã được thêm vào sau chữ ký cuối cùng. Việc tạo, áp dụng hoặc xác thực chữ ký bằng mật mã nằm ngoài phạm vi của lớp này.
Việc thêm dấu thời gian hợp lệ sau khi ký có luôn gây ra kết quả phát hiện vi phạm không?
Không nhất thiết. Bộ phát hiện được thiết kế để chấp nhận việc thêm sau này nếu nó được bao phủ bởi một chữ ký tiếp theo, hoặc chỉ bổ sung tài liệu xác thực thay vì nội dung mới. Kiểm tra CompromiseCheckResult.reasons nếu bạn thấy một phát hiện bất ngờ.
API Reference Tóm tắt
| Lớp/Phương thức | Mô tả |
|---|---|
SignaturesCompromiseDetector | Kiểm tra tài liệu đã ký để phát hiện các chỉ báo giả mạo sau ký cuối cùng |
SignaturesCompromiseDetector.check() | Thực hiện kiểm tra và trả về một CompromiseCheckResult |
CompromiseCheckResult | Kết quả của kiểm tra xâm phạm |
CompromiseCheckResult.compromised | Bí danh chỉ đọc cho CompromiseCheckResult.has_compromised_signatures |
CompromiseCheckResult.has_compromised_signatures | Liệu có tìm thấy chỉ báo giả mạo |
CompromiseCheckResult.signatures_coverage | Số lượng chữ ký đã kiểm tra |
CompromiseCheckResult.reasons | Chuỗi ngắn giải thích bất kỳ phát hiện nào |