Detección de compromiso de firma

Detección de compromiso de firma

Detección de compromiso de firma

SignaturesCompromiseDetector es el punto de entrada para esta guía: inspecciona el historial de revisiones de un documento firmado en busca de indicadores de que el contenido se añadió después de que se aplicó la última firma, y reporta lo que encuentra como un CompromiseCheckResult. Esta es la superficie de seguridad cubierta por este conjunto del base de conocimientos — no cubre la creación o aplicación de firmas, ni el cifrado de documentos; solo examina firmas que ya existen en un documento.


Ejecutando una verificación de compromiso

Construye SignaturesCompromiseDetector con el documento que deseas inspeccionar, luego llama a SignaturesCompromiseDetector.check(). La verificación recorre cada firma ya presente en el documento y busca bytes sin firmar añadidos después de la última revisión firmada — una señal de que el contenido pudo haberse superpuesto posteriormente — mientras tolera material legítimo de validación a largo plazo (como un almacén de seguridad del documento o una marca de tiempo de archivo) añadido por una firma posterior que cubre.


Interpretando el resultado

SignaturesCompromiseDetector.check() devuelve un CompromiseCheckResult con cuatro propiedades:

  • CompromiseCheckResult.has_compromised_signatures — True si alguna firma mostró un indicador de manipulación.
  • CompromiseCheckResult.compromised — replica CompromiseCheckResult.has_compromised_signatures, provisto como un alias de conveniencia solo de lectura.
  • CompromiseCheckResult.signatures_coverage — el número de firmas que el detector examinó en el documento.
  • CompromiseCheckResult.reasons — una lista de cadenas cortas que describen por qué el documento fue marcado, cuándo ocurrió.

Un documento sin firmas, o ningún documento en absoluto, se informa como no comprometido, con CompromiseCheckResult.signatures_coverage igual a 0.


Consejos y Mejores Prácticas

  • Trate CompromiseCheckResult.compromised y CompromiseCheckResult.has_compromised_signatures como intercambiables — siempre informan el mismo valor.
  • Verifique CompromiseCheckResult.signatures_coverage antes de confiar en un resultado de False: una cobertura de 0 significa que el detector no encontró firmas para examinar, no que las firmas existentes se verificaron como intactas.
  • Lea CompromiseCheckResult.reasons cuando CompromiseCheckResult.has_compromised_signatures sea True — la lista explica qué heurística se activó, lo cual es útil al registrar o presentar el resultado a un revisor.
  • SignaturesCompromiseDetector inspecciona el historial de revisiones en busca de indicadores de manipulación; no valida la integridad de la firma criptográfica por sí mismo, así que combínalo con los resultados de validación de firmas del propio documento donde eso sea importante para tu flujo de trabajo.

Problemas comunes

ProblemaCausaSolución
CompromiseCheckResult.signatures_coverage es 0 para un documento que sabes que está firmadoSignaturesCompromiseDetector se construyó sin un documento, o el objeto documento no tiene firmas accesiblesConfirma que el documento pasado a SignaturesCompromiseDetector expone sus firmas antes de llamar a SignaturesCompromiseDetector.check()
CompromiseCheckResult.reasons está vacío aunque esperabas una explicaciónCompromiseCheckResult.has_compromised_signatures es False para este documentoLas razones solo se completan cuando se encontró realmente un indicador de compromiso; se espera una lista vacía en un resultado limpio
Un PDF actualizado legítimamente (p.ej., uno con una marca de tiempo de validación a largo plazo añadida) se marca como comprometidoLa adición posterior no está completamente cubierta por una firma subsiguiente o no se reconoce como material solo de validaciónVuelva a ejecutar la verificación después de confirmar que la actualización se realizó mediante una firma o marca de tiempo de cobertura adecuada, e inspeccione CompromiseCheckResult.reasons para el desencadenante específico

FAQ

¿Qué verifica realmente CompromiseCheckResult.compromised?

Informa el mismo valor que CompromiseCheckResult.has_compromised_signatures: si SignaturesCompromiseDetector.check() encontró algún indicador de manipulación en las firmas del documento.

¿Significa que un signatures_coverage de 0 indica que el documento es seguro?

No — significa que no se encontraron firmas para examinar. SignaturesCompromiseDetector no puede informar sobre firmas que no puede ver, por lo que una cobertura de 0 es un resultado de “nada que comprobar”, no una confirmación de integridad.

¿Puede SignaturesCompromiseDetector crear o verificar una firma criptográfica?

No. Solo inspecciona el historial de revisiones existente de un documento en busca de indicadores de que se añadió contenido después de la última firma. Crear, aplicar o validar criptográficamente firmas está fuera del alcance de lo que hace esta clase.

¿Agregar una marca de tiempo legítima después de firmar siempre provocará un hallazgo de compromiso?

No necesariamente. El detector está diseñado para tolerar una adición posterior que esté cubierta por una firma subsecuente, o que solo añada material de validación en lugar de contenido nuevo. Consulte CompromiseCheckResult.reasons si observa un hallazgo inesperado.


API Reference Resumen

Clase/MétodoDescripción
SignaturesCompromiseDetectorInspecciona un documento firmado en busca de indicadores de manipulación después de la última firma
SignaturesCompromiseDetector.check()Ejecuta la comprobación y devuelve un CompromiseCheckResult
CompromiseCheckResultEl resultado de una comprobación de compromiso
CompromiseCheckResult.compromisedAlias de solo lectura para CompromiseCheckResult.has_compromised_signatures
CompromiseCheckResult.has_compromised_signaturesSi se encontró un indicador de manipulación
CompromiseCheckResult.signatures_coverageEl número de firmas examinadas
CompromiseCheckResult.reasonsCadenas cortas que explican cualquier hallazgo

Ver también

 Español