¿Cómo obtengo el campo "nombre de usuario" de un bloque de clave pública con GPG?

¿Cómo obtengo el campo "nombre de usuario" de un bloque de clave pública con GPG?

El hecho de que tenga que preguntar sobre esto después de dedicar tantas horas a esto ya me dice que al menos una de estas dos afirmaciones es cierta:

  1. Estoy haciendo algo terriblemente mal.
  2. PGP/GPG es un desastre absoluto que intencionalmente hace que trabajar con él sea lo más difícil y confuso posible.

Básicamente, mi sistema importa automáticamente cualquier bloque de clave pública PGP que me envíe, con el fin de poder cifrar los mensajes automáticamente cuando se envían (enviados por mí como respuesta).

Cuando cifra un mensaje de texto sin formato con PGP/GPG, le indica al programa qué "receptor" usar. Este término confuso en realidad se refiere al campo "nombre completo + dirección de correo electrónico" (que por alguna razón se llama "nombre de usuario") en una clave pública almacenada en GPG.

Bueno, cuando "importe" un bloque de clave pública PGP (que funciona), no tengo idea de qué es el campo "nombre de usuario", y si no lo sé, no puedo usarlo, ya que La función de cifrado quiere que haga referencia a la "clave pública almacenada" correcta.

Pero, ¿cómo extraigo realmente el campo "nombre de usuario" de la clave pública? Uno pensaría que devolvería esto cuando ejecuta el comando --import, pero hasta donde yo sé, no es así. Y llevo horas y horas indagando en el manual sin encontrar nada relacionado con esto.

Para que conste, encontré este hilo de StackOverflow:https://security.stackexchange.com/questions/50965/extracting-the-gpg-userid-from-the-public-key-file ... pero para mí no tiene ningún sentido. La "solución" ya conoce y especifica algún tipo de identificación, lo que parece anular el objetivo, ya que eso es esencialmente lo que estamos tratando de encontrar (excepto que es el campo "nombre de usuario").

He visto todo tipo de "comandos PGP/GPG comunes/útiles" y ninguno de ellos menciona esto en absoluto. ¿Eh? Esta es la tarea más básica y crucial... Estoy muy confundido. ¿Por qué el comando --import no me proporciona ningún tipo de identificación para usar? ¿Lo hace, pero de alguna manera complicada?

Respuesta1

¿Por qué el comando --import no me proporciona ningún tipo de identificación para usar? ¿Lo hace, pero de alguna manera complicada?

Lo hace, lo que en su mayor parte es incorrecto es su expectativa de una "identificación utilizable".

Cuando cifra un mensaje de texto sin formato con PGP/GPG, le indica al programa qué "receptor" usar. Este término confuso en realidad se refiere al campo "nombre completo + dirección de correo electrónico" (que por alguna razón se llama "nombre de usuario") en una clave pública almacenada en GPG.

El campo se llama "ID de usuario". No se llama "nombre de usuario".

Muchos programas (principalmente gpgy todas las herramientas que lo envuelven)voluntadTambién acepte destinatarios solo con su dirección de correo electrónico, o cualquier otra subcadena que coincida con el ID de usuario, o la huella digital de clave pública completa de 160 bits, o la "ID de clave" (huella digital truncada de 32/64 bits). Por ejemplo:

gpg --recipient [email protected] --encrypt
gpg --recipient EA708A76F932CCEAF60D364375F1129BE6E591E4 --encrypt
gpg --recipient "EA70 8A76 F932 CCEA F60D 3643 75F1 129B E6E5 91E4" --encrypt
gpg --recipient fred --encrypt
gpg --recipient 0x75F1129BE6E591E4 --encrypt

(Puede probar una coincidencia pasándola a gpg --list-keys, por ejemplo gpg -k fred).

De todas ellas, especificar el destinatario mediante huella digital es la opción más segura. El campo "ID de usuario" (ya sea completo o parcial) es solo un identificador seguro si utiliza Web of Trust o tiene alguna otra forma de distinguir una clave "Fred Foobar" legítima de una clave "Fred Foobar" falsa.

Bueno, cuando "importe" un bloque de clave pública PGP (que funciona), no tengo idea de qué es el campo "nombre de usuario", y si no lo sé, no puedo usarlo, ya que La función de cifrado quiere que haga referencia a la "clave pública almacenada" correcta.

GnuPG siempre muestra este campo como parte de la gpg --importsalida (junto con el "ID de clave" de 64 bits). Por ejemplo:

$ gpg --status-fd=2 --importar < /tmp/test.key
gpg: clave75F1129BE6E591E4: Llave pública "Usuario de prueba <[correo electrónico protegido]>"importado
gpg: Número total procesado: 1
gpg: importado: 1

Para utilizar esto en una herramienta automatizada, utilice --status-fdla que le proporciona la huella digital completa de 160 bits. Por ejemplo:

$ gpg --status-fd=2 --importar < /tmp/test.key
[GNUPG:]IMPORTAR_OK 0 EA708A76F932CCEAF60D364375F1129BE6E591E4
[GNUPG:] KEY_CONSIDERED EA708A76F932CCEAF60D364375F1129BE6E591E4 0
[GNUPG:] IMPORT_RES 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0

Si está utilizando algún otro software PGP (es decir, no GnuPG) y no le muestra ninguna información sobre las claves que acaba de importar, entonces es un problema de interfaz de usuario en ese otro software PGP.

información relacionada