¿Cómo se definen los indicadores de uso de GPG en la lista de detalles clave?

58

Cuando enumero los detalles de una clave, obtengo un resultado como este:

$ gpg --edit-key SOMEID
pub [..] created: [..] expires: [..]   usage:SC
[..]
sub [..] created: [..] expires: [..]   usage: E

O incluso usage: SCAen otra tecla (la parte de la llave maestra).

¿Qué significan estas abreviaturas en el campo de uso?

Puedo derivar eso:

S -> for signing
E -> for encrypting

Pero ¿qué pasa Cy A?

¿Y hay más?

¿Y dónde buscar cosas como esta?

maxschlepzig
fuente

Respuestas:

59

Ok, el manual de gpg no parece mencionar estas abreviaturas. Por lo tanto, uno tiene que mirar la fuente.

Por ejemplo, en Debian / Ubuntu:

$ apt-get source gnupg2
$ cd gnupg2-2.0.17
$ cscope -bR
$ grep 'usage: %' . -r --exclude '*po*'
$ vim g10/keyedit.c
jump to usage: %
jump to definition of `usagestr_from_pk`

Del código se puede derivar la siguiente tabla:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Carácter constante
───────────────────────────────
PUBKEY_USAGE_SIG S
PUBKEY_USAGE_CERT C
PUBKEY_USAGE_ENC E
PUBKEY_USAGE_AUTH A
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Así, por ejemplo, usage: SCAsignifica que la subclave se puede usar para firmar, para crear un certificado y para fines de autenticación.

maxschlepzig
fuente
77
realmente en cualquier parte de los documentos?
Jaime Hablutzel
@JaimeHablutzel, ¿encontraste alguna buena documentación sobre esto?
Eric Fail
No, lo siento, pero la fuente parece un buen lugar para comenzar
Jaime Hablutzel el
15

El diseño de la --edit-keylista no está documentado (no es que pueda encontrar de todos modos). Sin embargo, las abreviaturas que menciona están en algún lugar de las páginas de información ( info gpg).

Busqué S:y encontré que realmente quería buscar usage:.

En "Opciones relacionadas con la clave GPG":

4.2.1 Cómo cambiar la configuración

Estas opciones se utilizan para cambiar la configuración y generalmente se encuentran en el archivo de opciones.

'--list-options parameters'

 show-usage

      Show usage information for keys and subkeys in the standard
      key listing.  This is a list of letters indicating the allowed
      usage for a key ('E'=encryption, 'S'=signing,
      'C'=certification, 'A'=authentication).  Defaults to no.

Entonces, hacer gpg -k --list-options show-usage 1A3ABKEYte mostrará algo como esto:

pub   rsa4096/1A3ABKEY 2015-01-25 [SC]
uid         [ultimate] Some Key
sub   rsa4096/4B907KEY 2015-09-19 [S]
sub   rsa4096/F9A41KET 2015-09-19 [E]

Puede encontrar más información en "Uso desatendido de GPG"

Uso clave: LISTA DE USO

 Space or comma delimited list of key usages.  Allowed values are
 'encrypt', 'sign', and 'auth'.  This is used to generate the key
 flags.  Please make sure that the algorithm is capable of this
 usage.  Note that OpenPGP requires that all primary keys are
 capable of certification, so no matter what usage is given here,
 the 'cert' flag will be on.  If no 'Key-Usage' is specified and the
 'Key-Type' is not 'default', all allowed usages for that particular
 algorithm are used; if it is not given but 'default' is used the
 usage will be 'sign'.

Entonces, aunque no es inmediatamente aparente, la información está allí, en algún lugar, en su sistema. Si manno te ayuda, prueba man -ky / o info.

jeroentbt
fuente
Puedo ver esto en la página de manual de gpg 1.4.18, sin embargo, parece estar ausente del manual de gpg 2.0.28. Además, en ambas versiones, el comando "gpg -k --list-options show-use 1A3ABKEY" genera "gpg: opción desconocida 'show-use'"
YoungFrog
@YoungFrog. Gracias por el comentario. Aclaré que encontré la información en las páginas de información. En cuanto al comando no funciona, para mí funciona en gpg (2.1.8). Cuando pruebo gpg1 (1.4.19) también obtengo gpg: unknown option 'show-usage' gpg: invalid list optionsAunque su uso está documentado en las páginas de información de gpg1 ...
jeroentbt
5

Estos indicadores clave se definen en la especificación OpenPGP

5.2.3.21. Banderas clave

(N octetos de banderas)

Este subpaquete contiene una lista de indicadores binarios que contienen información sobre una clave. Es una cadena de octetos, y una implementación NO DEBE asumir un tamaño fijo. Esto es para que pueda crecer con el tiempo. Si una lista es más corta de lo que una implementación espera, los indicadores no declarados se consideran cero. Las banderas definidas son las siguientes:

   First octet:

   0x01 - This key may be used to certify other keys.

   0x02 - This key may be used to sign data.

   0x04 - This key may be used to encrypt communications.

   0x08 - This key may be used to encrypt storage.

   0x10 - The private component of this key may have been split
          by a secret-sharing mechanism.

   0x20 - This key may be used for authentication.

   0x80 - The private component of this key may be in the
          possession of more than one person.
AccidentalOps
fuente
55
Esto parece una referencia útil, pero en realidad no responde la pregunta.
G-Man dice 'reinstalar a Monica'
2

Enterrado en lo profundo de la lista de correo de GnuPG ...

¿Qué significan las letras a la derecha de las palabras "uso"?
(S, C, A, E) Solo puedo adivinar | S | ign, | E | ncrypt, ....

(S) ign: firmar algunos datos (como un archivo)
(C) ertify: firmar una clave (esto se llama certificación)
(A) autenticar: autenticarse en una computadora (por ejemplo, iniciar sesión)
(E) ncrypt: cifrar datos

elboulangero
fuente
2

Otra fuente de información es el archivo DETAILS en la distribución GnuPG .

Sección "Campo 12 - Capacidades clave" estados

Las capacidades definidas son:

mi
Encriptar
s
Firmar
C
Certificar
una
Autenticación
?
Capacidad desconocida

Una clave puede tener cualquier combinación de ellos en cualquier orden. 
Además de estas letras, la clave primaria tiene mayúsculas 
versiones de las letras para denotar las capacidades utilizables de todo 
clave y una letra potencial 'D' para indicar una clave deshabilitada.
Claudio B
fuente