Como os sinalizadores de uso do GPG são definidos na lista de principais detalhes?

58

Quando listo os detalhes de uma chave, obtenho uma saída como esta:

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

Ou mesmo usage: SCAem outra tecla (a parte da chave mestra).

O que significam essas abreviações no campo de uso?

Eu posso derivar que:

S -> for signing
E -> for encrypting

Mas Ce quanto A?

E tem mais?

E onde procurar coisas assim?

maxschlepzig
fonte

Respostas:

59

Ok, o manual do gpg não parece mencionar essas abreviações. Assim, é preciso olhar para a fonte.

Por exemplo, no 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`

A partir do código, pode-se derivar a seguinte tabela:

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

Assim, por exemplo, usage: SCAsignifica que a subchave pode ser usada para assinar, criar um certificado e propósitos de autenticação.

maxschlepzig
fonte
7
realmente em qualquer lugar na documentação?
Jaime Hablutzel
@JaimeHablutzel, você encontrou alguma boa documentação sobre isso?
Eric Falha
Não, desculpe, mas a fonte parece um bom lugar para começar
Jaime Hablutzel
15

O layout da --edit-keylistagem não está documentado (não que eu pudesse encontrar de qualquer maneira). As abreviações mencionadas no entanto estão em algum lugar nas páginas de informações ( info gpg).

Procurei S:e achei que eu realmente queria procurar usage:.

Em "Opções relacionadas à chave GPG":

4.2.1 Como alterar a configuração

Essas opções são usadas para alterar a configuração e geralmente são encontradas no arquivo de opções.

'--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.

Então, fazendo gpg -k --list-options show-usage 1A3ABKEYirá mostrar algo assim:

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]

Mais informações são encontradas em "Uso não assistido de GPG"

Uso-chave: USAGE-LIST

 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'.

Portanto, embora não seja imediatamente aparente, as informações estão em algum lugar do seu sistema. Se mannão ajudar, tente man -ke / ou info.

jeroentbt
fonte
Eu posso ver isso na página de manual do gpg 1.4.18, no entanto, parece ausente do manual do gpg 2.0.28. Além disso, nas duas versões, o comando "gpg -k --list-options show-use 1A3ABKEY" gera "gpg: opção desconhecida` show-
use
@YoungFrog. Obrigado pelo comentário. Esclareci que encontrei as informações nas páginas de informações. Quanto ao comando não funcionar, para mim funciona em gpg (2.1.8). Quando tento gpg1 (1.4.19) Eu também terá gpg: unknown option 'show-usage' gpg: invalid list optionsEmbora seu uso está documentado nas informações gpg1 páginas ...
jeroentbt
5

Esses sinalizadores de chave são definidos na especificação do OpenPGP

5.2.3.21 Sinalizadores de chave

(N octetos de bandeiras)

Este subpacote contém uma lista de sinalizadores binários que contêm informações sobre uma chave. É uma sequência de octetos, e uma implementação NÃO DEVE assumir um tamanho fixo. Isso é para que possa crescer com o tempo. Se uma lista for menor do que a implementação espera, os sinalizadores não declarados serão considerados zero. Os sinalizadores definidos são os seguintes:

   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
fonte
5
Parece uma referência útil, mas na verdade não responde à pergunta.
G-Man diz 'Reinstate Monica'
2

Enterrado nas profundezas da lista de discussão do GnuPG ...

O que significam as letras à direita das palavras "uso"?
(S, C, A, E) Só posso adivinhar | S | ign, | E | ncrypt, ....

(S) ign: assina alguns dados (como um arquivo)
(C) ertify: assina uma chave (isso é chamado de certificação)
(A) uthenticate: autentica-se em um computador (por exemplo,
fazendo login) (E) ncrypt: encrypt dados

elboulangero
fonte
2

Outra fonte de informação é o arquivo DETAILS na distribuição do GnuPG .

Seção "Campo 12 - Os principais recursos" estados

Os recursos definidos são:

e
Criptografar
s
Placa
c
Certificar
uma
Autenticação
?
Capacidade desconhecida

Uma chave pode ter qualquer combinação delas em qualquer ordem. 
Além dessas letras, a chave primária possui letras maiúsculas 
versões das cartas para indicar as capacidades utilizáveis ​​de todo 
chave e uma potencial letra 'D' para indicar uma chave desativada.
Cláudio B
fonte