¿Cómo importo una clave SSA RSA en GPG como la clave privada _primaria_?

16

Actualmente tengo una clave SSH que he usado durante un tiempo y me gustaría comenzar a usar GnuPG con un nuevo llavero. Sin embargo, dado que he usado mi clave durante años, me gustaría seguir usando esa clave en GPG como clave principal / principal. Intenté importar la clave a través de estas instrucciones .

Pero, termino con lo que se considera una "subclave". Además, si trato de importarlo sin crear una clave GPG estándar, GPG ni siquiera ve esta subclave. (Supongo que la subclave debe estar firmada por la clave principal primero).

¿Cómo uso esta clave como clave principal dentro de secring.gpg?

Brendan Byrd
fuente
¿En qué sentido te refieres a " clave privada primaria "?
MadHatter

Respuestas:

16

La respuesta simple es: no.

Las claves SSH y las claves GnuPG (en realidad, OpenPGP) son completamente diferentes, aunque ambos protocolos pueden usar pares de claves RSA.

Y además, ¿por qué querrías hacerlo? Incluso si usara el mismo material de clave para componer su clave PGP, aún necesitaría distribuir su clave como una clave PGP. Es probable que no haya estado distribuyendo su clave pública SSH a las personas con las que se corresponde, por lo que desde el punto de vista de la distribución de claves no hay diferencia: deberán recibir una clave pública de usted. E incluso si ha estado distribuyendo su clave pública SSH a otras personas, necesitarían tomar algunos pasos adicionales para poder importarla en su implementación de OpenPGP, lo que puede o no ser fácil.

Como Kasperd señaló bastante acertadamente, debe haber una sola forma de interpretar (particularmente) una firma. Si tuviera que usar la misma clave para PGP y SSH, si alguien pudiera engañarlo para que firme un mensaje especialmente diseñado (que es una capacidad asumida en ciertos ataques del sistema de firma) en uno, entonces incluso si ambos sistemas están seguros de forma aislada podría ser posible elaborar dicho mensaje de una manera que tenga un significado en uno de los sistemas, pero un significado diferente en el otro. Eso, en sí mismo, sería una vulnerabilidad. (¿Explotable? Quién sabe. ¿Pero por qué arriesgarse?)

Ambos pares de claves PGP y SSH son claves a largo plazo, que se utilizan para asegurar claves simétricas efímeras (mensaje y sesión), así como para verificar la autenticidad de una parte remota. Eso hace que la clave privada PGP o SSH sea un objetivo de valor mucho más alto para un atacante que la clave simétrica correspondiente. Si usa el mismo material clave para ambos, y un atacante puede darse cuenta de eso, solo aumenta el valor de un ataque exitoso en ese par de claves.

Sin haber examinado ninguno de los protocolos en detalle, imagino que reconocer que el mismo material clave se está utilizando en ambos probablemente sería bastante trivial, ya que la clave pública se transmite básicamente de forma clara.

Simplemente genere una nueva clave PGP. Si lo desea, hágalo RSA y de la misma longitud que su clave SSH. (Ninguna persona en su sano juicio lo verá mucho más de cerca que verificar la huella dactilar de todos modos). Luego distribuya la clave pública a las personas con las que desea comunicarse, como una clave PGP. Será mucho más fácil para todos, y muy probablemente más seguro, a costa de una pequeña cantidad de entropía del grupo de entropía aleatorio de su sistema, que de todos modos debería reponerse rápidamente.


Si tiene varias claves en su llavero secreto y desea especificar cuál debe usarse de manera predeterminada, use las directivas default-keyy posiblemente default-recipient{,-self}en su ~ / .gnupg / gnupg.conf.

un CVn
fuente
1
Estoy de acuerdo con esta respuesta Sin embargo, hay una razón más para no usar el mismo material clave. Por razones de seguridad, solo debe haber una forma de interpretar una firma. Si la misma firma se interpretara de dos maneras diferentes, sería una vulnerabilidad. Incluso si tanto ssh como gpg son seguros por sí mismos, un adversario podría engañarte para que firmes un mensaje con uno y luego llevar la firma al otro programa, donde podría tener un significado diferente.
kasperd
@kasperd Buen punto. Modifiqué la respuesta; ¿Cómo se siente al respecto ahora?
un CVn
Suena bien.
kasperd
1
Creo que esta respuesta no es completamente precisa: con monkeysphere hay un caso de uso en el que puede desear las claves OpenSSH existentes como subclaves de solo autenticación en su clave OpenPGP personal. Al menos me gustaría usarlo de esa manera.
user134450
Estas teclas no son diferentes en absoluto; sus metadatos son
foo
5

Puede convertir una clave SSH en una clave OpenPGP con la herramienta pem2openpgpdel proyecto monkeysphere . Esta clave puede ser importada por gnupg como un par de claves pública / privada regular. Como la otra respuesta menciona, esto generalmente no es una buena idea porque ssh no tiene un concepto de certificados, por lo que efectivamente está agregando una capacidad a una clave existente que no podría haber tenido antes. Esto generalmente es un no-ir en criptografía.

Lo hice de todos modos con una de mis claves ssh, pero agregué el par de claves a mi otra clave OpenPGP como una subclave que solo tiene un indicador de capacidad: autenticación. Este indicador está destinado a situaciones como esta, en las que no desea firmar ni cifrar nada con un par de claves (significado --encrypty --signopciones para gnupg) pero desea tenerlo en su caja de claves para la autenticación con OpenSSH y el agente gnupg de todos modos.

Para más detalles, consulte la documentación de monkeysphere.

usuario134450
fuente
2

Puede haber buenas razones para convertir una clave de formato PKCS normal para importar a gpg.

Por ejemplo, si desea colocarlo en una tarjeta inteligente. Las funciones que proporciona gpg con sus comandos de información de tarjeta y edición de tarjeta son muy útiles para este propósito, entonces, ¿por qué no usarlo como herramienta? El único obstáculo que uno debe superar es ... exactamente: importar la clave desde el formato estándar PKCS # 8 (o formato "sin procesar" RSA PKCS # 1) al almacén de claves gpg para su posterior procesamiento.

Entonces, ¡tenga en cuenta mi objeción a la respuesta aprobada! :)

Aquí encontrará una respuesta realmente útil a este tipo de preguntas: /unix/276317/how-can-i-import-a-key-in-pem-format-not-openpgp-into -gpg

foo
fuente
1

Use esto en Ubuntu 16.04 o Windows WSL.

sudo apt install -y monkeysphere
cat key.pem | PEM2OPENPGP_USAGE_FLAGS=authenticate pem2openpgp "Key <[email protected]>" > key.pgp

Importar tarjeta. Se puede hacer en Windows o Linux.

gpg --import key.gpg

Mover a la tarjeta

Encuentra el identificador de firma clave.

gpg --list-key

Mover clave de autenticación a la tarjeta

gpg --edit-key FFFFFFFFFFF
keytocard

Seleccione un número para la ranura de autenticación.

Ya terminaste aquí.

Recuerde eliminar la clave del llavero gpg si está usando una tarjeta. Use el identificador de clave de arriba.

gpg --delete-secret-key FFFFFFFFFFF

Misceláneos

No es necesario, pero puede ser útil para obtener una clave en formato pgp basado en texto.

gpg -a --export FFFFFF > key.asc
Fuego
fuente