La versión corta: no hay forma de diferenciar entre firmas emitidas antes y después de revocar una clave. Los tiempos falsos del sistema y cómo los atacantes podrían explotarlos proporcionan una explicación bastante obvia para esto.
La versión ligeramente más larga con exploración interactiva: RFC 4880, OpenPGP no especifica ninguna regla sobre cómo manejar las firmas emitidas por claves revocadas, aparte de la oración "A
la clave revocada no debe usarse ". El comportamiento en este caso depende de la implementación. La implementación más común probablemente sea GnuPG, así que intentemos cómo actúa GnuPG. Considere la siguiente situación:
- creó el par de llaves A en el directorio principal A
- firmó un documento de prueba con esta clave
- clave pública exportada A
- la clave pública A importada en el directorio principal B
- creó el par de llaves B en el directorio de inicio B
- clave pública firmada A con clave privada B
Ahora tenemos una clave A no revocada, un documento firmado por esta clave, y esta clave A está certificada por otra parte B (y, por lo tanto, la clave y sus firmas se validan correctamente).
Ahora, ¿qué sucede si revocamos la clave A (después de firmar el documento)?
gpg: Signature made Wed Nov 1 15:39:35 2017 CET
gpg: using RSA key 658787F11DEFDEE1DA206171C2F6C4CC6B298CA6
gpg: Good signature from "A" [full]
gpg: WARNING: This key has been revoked by its owner!
gpg: This could mean that the signature is forged.
gpg: reason for revocation: Key is superseded
¿Qué sucede si se crea otra firma después de revocar A (tomé una copia del directorio principal A de GnuPG antes de revocar la clave), así que B intenta verificar una firma emitida por una clave ya revocada?
gpg: Signature made Wed Nov 3 15:42:31 2017 CET
gpg: using RSA key 658787F11DEFDEE1DA206171C2F6C4CC6B298CA6
gpg: Good signature from "A" [full]
gpg: WARNING: This key has been revoked by its owner!
gpg: This could mean that the signature is forged.
gpg: reason for revocation: Key is superseded
Con otras palabras: no puede discriminar entre una firma emitida antes de la revocación y una emitida después. Y esta es una solución razonable: después de todo, no se involucró la marca de tiempo de terceros, de todos modos, no puede estar seguro acerca de la marca de tiempo de la firma. De hecho, también falsifiqué la hora del sistema al emitir la segunda firma. "¿Se agrega la caducidad de la clave OpenPGP a la seguridad?" proporciona una discusión similar.
De todos modos,
puede ser útil esperar un tiempo: por ejemplo, si proporciona una declaración de transición clave , a la espera de Algún tiempo después de emitir esto (y notificarlo a sus compañeros) antes de revocar la clave anterior puede ser razonable. Al hacerlo, las personas siguen viendo la clave antigua no revocada y pueden firmar su nueva clave, si su política de firma lo permite.