Generación de claves OpenPGP en el dispositivo

Las siguientes instrucciones explican la generación de claves OpenPGP directamente en el Nitrokey. Esto se hace utilizando la interfaz de línea de comandos de GnuPG. Por lo tanto, necesita tener GnuPG instalado en su sistema. La versión más reciente de GnuPG para Windows puede encontrarse aquí y la versión más reciente para MacOS puede encontrarse aquí. Los usuarios de sistemas Linux pueden instalar GnuPG con la ayuda del gestor de paquetes.

Nota

These instructions are based on GnuPG version 2.2.6 or higher. Some Linux Distributions have an older version installed. In this case please choose a different method as listed here or install a newer version if possible.

Generación de claves

Las siguientes descripciones explican la generación básica de claves en el dispositivo a través de la interfaz de línea de comandos de GnuPG. El comportamiento por defecto es generar claves RSA de 2048 bits. Si quieres cambiar el algoritmo y la longitud de la clave, echa un vistazo primero a la siguiente sección.

Abra una línea de comandos y escriba gpg2 --card-edit.

Para abrir la línea de comandos de Windows, pulsa la tecla Windows y la tecla R. Ahora escribe “cmd.exe” en el campo de texto y pulsa enter. Para abrir un terminal en macOS o GNU/Linux, utiliza la búsqueda de aplicaciones (por ejemplo, Spotlight en macOS).

> gpg2 --card-edit

Reader ...........: 20A0:4108:0000320E0000000000000000:0
Application ID ...: D27600012401020100050000320E0000
Version ..........: 2.1
Manufacturer .....: ZeitControl
Serial number ....: 0000320E
Name of cardholder: [not set]
Language prefs ...: de
Sex ..............: unspecified
URL of public key : [not set]
Login data .......: [not set]
Signature PIN ....: forced
Key attributes ...: rsa2048 rsa2048 rsa2048
Max. PIN lengths .: 32 32 32
PIN retry counter : 3 0 3
Signature counter : 0
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]

gpg/card>

Ahora estás en la interfaz interactiva de GnuPG. Activa los comandos de administración con admin y utiliza generate después para iniciar la generación de claves.

gpg/card> admin
Admin commands are allowed

gpg/card> generate
Make off-card backup of encryption key? (Y/n) n

Please note that the factory settings of the PINs are
   PIN = '123456'     Admin PIN = '12345678'
You should change them using the command --change-pin

Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: Jane Doe
Email address: jane@example.com
Comment:
You selected this USER-ID:
"Jane Doe <jane@doecom>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
gpg: key 817E149CA002B92F marked as ultimately trusted
gpg: revocation certificate stored as '/home/nitrokey//.gnupg/openpgp-revocs.d/E62F445E8BB4B5085C031F5381
7E149CA002B92F.rev'
public and secret key created and signed.


gpg/card>
</jane@doe.com></n></n></n></n>

**Esta «copia de seguridad» sólo guarda la clave de cifrado, pero no las claves de firma y autenticación. En caso de pérdida del dispositivo, no podrá restaurar todo el conjunto de claves. Así que, por un lado, no se trata de una copia de seguridad completa (usa estas instrucciones <https://docs.nitrokey.com/pro/openpgp-key-generation-with-backup.html>`__ en su lugar, si la necesitas) y, por otro lado, te arriesgas a que alguien pueda estar en posesión de tu clave de cifrado. La ventaja de generar las claves en el dispositivo es asegurarse de que las claves se almacenan de forma segura. Por lo tanto, recomendamos omitir esta media copia de seguridad.

Ahora tienes un juego de llaves completo en tu dispositivo que puede ser usado para las varias aplicaciones listadas en nuestro sitio. Escribe quit y pulsa enter para salir.

Cambiar los atributos clave

En esta sección se trata de cambiar los atributos de las claves. Si desea utilizar los valores por defecto, puede continuar con la siguiente sección.

Abra una línea de comandos y escriba gpg2 --card-edit --expert.

> gpg2 --card-edit --expert

Reader ...........: 20A0:4108:0000320E0000000000000000:0
Application ID ...: D27600012401020100050000320E0000
Version ..........: 2.1
Manufacturer .....: ZeitControl
Serial number ....: 0000320E
Name of cardholder: [not set]
Language prefs ...: de
Sex ..............: unspecified
URL of public key : [not set]
Login data .......: [not set]
Signature PIN ....: forced
Key attributes ...: rsa2048 rsa2048 rsa2048
Max. PIN lengths .: 32 32 32
PIN retry counter : 3 0 3
Signature counter : 0
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]

Ahora estás en la interfaz interactiva de GnuPG. Como puedes ver en el campo «Key attributes» (atributos de las claves), el valor por defecto es rsa2048. Para cambiarlos, activa los comandos de administración con admin y utiliza key-attr después para cambiar los atributos de las claves.

gpg/card> admin
Admin commands are allowed

gpg/card> key-attr
Changing card key attribute for: Signature key
Please select what kind of key you want:
&nbsp;&nbsp; (1) RSA
&nbsp;&nbsp; (2) ECC
Your selection? 1
What keysize do you want? (2048) 4096
The card will now be re-configured to generate a key of 4096 bits
Changing card key attribute for: Encryption key
Please select what kind of key you want:
&nbsp;&nbsp; (1) RSA
&nbsp;&nbsp; (2) ECC
Your selection? 1
What keysize do you want? (2048) 4096
The card will now be re-configured to generate a key of 4096 bits
Changing card key attribute for: Authentication key
Please select what kind of key you want:
&nbsp;&nbsp; (1) RSA
&nbsp;&nbsp; (2) ECC
Your selection? 1
What keysize do you want? (2048) 4096
The card will now be re-configured to generate a key of 4096 bits

Puedes elegir el atributo para cada clave (es decir, firma, cifrado y clave de autenticación). La mayoría de la gente utilizará los mismos atributos para cada clave. Escribe list para ver los resultados (mira el campo «Key attributes», que ahora dice rsa4096).

gpg/card> list

Reader ...........: 20A0:4108:0000320E0000000000000000:0
Application ID ...: D27600012401020100050000320E0000
Version ..........: 2.1
Manufacturer .....: ZeitControl
Serial number ....: 0000320E
Name of cardholder: [not set]
Language prefs ...: de
Sex ..............: unspecified
URL of public key : [not set]
Login data .......: [not set]
Signature PIN ....: forced
Key attributes ...: rsa4096 rsa4096 rsa4096
Max. PIN lengths .: 32 32 32
PIN retry counter : 3 0 3
Signature counter : 0
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]

Escriba quit y pulse enter para salir o proceda directamente con la sección anterior para generar realmente las claves con los atributos de clave que acaba de establecer.

La siguiente tabla ilustra qué algoritmo puede utilizarse en cada dispositivo.

Inicie

Pro + Almacenamiento

Pro 2 + Almacenamiento 2

rsa1024

rsa2048

rsa3072

rsa4096

curve25519 (ECC)

NIST (ECC)

Brainpool (ECC)

secp256k1

Exportación de la clave pública y uso del servidor de claves

Aunque puedes empezar a utilizar tu Nitrokey inmediatamente después de generar las claves en tu sistema, necesitas importar tu clave pública en cada sistema en el que quieras utilizar la Nitrokey. Así que para estar preparado tienes dos opciones: O bien guardas la clave pública en cualquier lugar y la utilizas en otro sistema o guardas la clave pública en una página web/servidor de claves.

Generación de un archivo de clave pública

Para obtener un archivo simple de tu clave pública, puedes usar gpg2 --armor --export keyID > pubkey.asc. Utiliza la huella digital como «keyID» (mira gpg -K para obtenerla) o simplemente utiliza tu dirección de correo electrónico como identificador.

Puedes llevar este archivo contigo o enviarlo a quien quieras. Este archivo no es secreto en absoluto. Si quieres usar la Nitrokey en otro sistema, primero importa esta clave pública a través de gpg2 --import pubkey.asc y luego escribe gpg2 --card-status para que el sistema sepa dónde buscar esta clave. Eso es todo.

Carga de la clave pública

Si no quieres llevar un archivo de claves públicas contigo, puedes subirlo a keyserver. Puedes hacerlo escribiendo gpg --keyserver search.keyserver.net --send-key keyID. Si estás usando otra máquina puedes simplemente importarlo usando gpg --keyserver search.keyserver.net --recv-key keyID.

Otra posibilidad es cambiar la configuración de la URL de tu tarjeta. Inicie gpg -card-edit de nuevo y establezca primero la URL donde se encuentra la clave (por ejemplo, en el servidor de claves o en su página web, etc.) mediante el comando url. A partir de ahora puedes importar la clave en otro sistema simplemente utilizando el comando fetch dentro del entorno gpg --card-edit.