Todavía estoy confundido acerca de las claves y subclaves GPG

Todavía estoy confundido acerca de las claves y subclaves GPG

Acabo de generar una nueva clave con

gpg --clave-generada-rápida

Ahora, cuando lo hago

gpg --lista-claves[correo electrónico protegido]

Me sale algo como esto:

pub   rsa2048 2020-01-29 [SC] [expires: 2022-01-28]
      DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF
uid           [ultimate] [email protected]
sub   rsa2048 2020-01-29 [E]

pero cuando hago esto:

gpg --editar-clave[correo electrónico protegido]

Me sale algo como lo siguiente:

gpg (GnuPG) 2.2.17; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Secret key is available.

sec  rsa2048/DEADBEEFDEADBEEF
     created: 2020-01-29  expires: 2022-01-28  usage: SC  
     trust: ultimate      validity: ultimate
ssb  rsa2048/BEEFDEADBEEFDEAD
     created: 2020-01-29  expires: never       usage: E   
[ultimate] (1). [email protected]

Pensé que entendía al menos un poco el concepto de claves y subclaves, pero esto todavía no tiene sentido para mí.

  1. ¿Por qué el resultado muestra claves públicas en un caso y claves secretas en el otro?
  2. ¿Cómo es que una clave pública ( pub) se muestra como capaz de firmar ( S) en el primer caso, y una clave secreta ( ssb) se muestra como capaz de cifrar ( E) en el segundo caso? ¿No va esto en contra de lo que aprendimos en Public Key Crypto 101?

Respuesta1

¿Por qué el resultado muestra claves públicas en un caso y claves secretas en el otro?

En GnuPG 2.1+, supongo que el --edit-keycomando muestra claves secretas porque eso es lo que siempre ha hecho.

En GnuPG 1.x (y de manera similar en el PGP 2.x original), había dos llaveros completamente separados (pubring y secring). Algunas operaciones funcionaron con uno y otras con el otro. Solía --list-secret-keys​​ser exactamente igual, --list-keysexcepto que se leía desde un archivo diferente y --edit-keyssolía tener un subcomando que alternaba entre las dos vistas.

¿Cómo es que una clave pública (pub) se muestra como capaz de firmar (S) en el primer caso, y una clave secreta (ssb) se muestra como capaz de cifrar (E) en el segundo caso? ¿No va esto en contra de lo que aprendimos en Public Key Crypto 101?

No. El resultado describe una 'clave' como en el objeto PGP (no una 'clave' en el sentido criptográfico puro) y los indicadores de uso describen qué operaciones de PGP son.quiso decirpara ser utilizado, no solo para qué operaciones criptográficas es matemáticamente capaz la clave "interna". Esto significa que no cambian dependiendo de si se mira la mitad pública o privada.

Por ejemplo, su bloque de claves PGP de ejemplo tiene dos pares de claves RSA, y ambas técnicamente podrían firmar/verificar, así como cifrar/descifrar. Pero el objetivo de tener dos es que desea mantener sus propósitos separados; es decir, no desea que GnuPG realice cifrado usando una subclave destinada a firmar, por lo que las banderas de uso la filtran.

(No existe un indicador separado para "descifrar" o "verificar" porque el mensaje o la firma ya indica qué clave usar para eso).

Esto también significa que puede haber múltiples indicadores de uso que se correspondan con la misma operación (firma o verificación) pero en diferentes contextos:

  • "S" permite utilizar la clave para firmar mensajes y archivos (correo electrónico, etc.);
  • "C" permite que la clave se utilice para firmar (certificar) otras claves/subclaves;
  • "A" permite que la clave se utilice para firmar desafíos de autenticación (como en TLS o SSHv2).

Aunque los tres crean el mismo tipo de firmas digitales en el sentido criptográfico, las claves en sí suelen estar separadas por razones políticas. (Por ejemplo, la clave de 'certificación' debería estar mucho más protegida que la clave de 'autenticación').

información relacionada