![Todavía estoy confundido acerca de las claves y subclaves GPG](https://rvso.com/image/1615270/Todav%C3%ADa%20estoy%20confundido%20acerca%20de%20las%20claves%20y%20subclaves%20GPG.png)
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í.
- ¿Por qué el resultado muestra claves públicas en un caso y claves secretas en el otro?
- ¿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-key
comando 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-keys
excepto que se leía desde un archivo diferente y --edit-keys
solí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').