¿Es posible determinar, dado un mensaje PGP que ya puede descifrar, para determinar para qué otras claves PGP también se ha cifrado ese mensaje?
En primer lugar, aunque usaste pgp , supongo que lo harás En realidad estar usando GnuPG. De lo contrario, tráelo, es software libre. Aunque PGP probablemente también tendrá una funcionalidad similar.
Depende. Si el remitente incluyó las huellas digitales clave del destinatario, puede recuperarlas; de lo contrario (si está cifrado con la opción --hidden-recipient
), GnuPG tiene que probar todas sus claves de descifrado privadas contra el mensaje.
Si se incluyen los destinatarios, GnuPG los enumerará cuando se establezca en modo detallado ( --verbose
). Para evitar que GnuPG realmente descifre el mensaje, agregue --list-only
. Las líneas relevantes son las que comienzan con gpg: public key is
.
Esto generará subclaves públicas, que deberá resolver nuevamente usando gpg --list-keys [key-id]
.
Una línea de comando completa para recuperar los destinatarios de un mensaje:
cat message.pgp | LANG=C gpg --verbose --list-only 2>&1 | grep 'gpg: public key is'
Si incluso desea resolver subclaves automáticamente, también pase por cut
y xargs
:
cat message.pgp | LANG=C gpg --verbose --list-only 2>&1 | grep 'gpg: public key is' | cut -d' ' -f 5 | xargs gpg --list-keys
LANG=C
se usa para imponer la localización en inglés, por lo que grep
ping no fallará en otros idiomas.
Lea otras preguntas en las etiquetas public-key-infrastructure gnupg pgp