OpenPGP Key Generation On-Device#

(Nitrokey Pro 2 - Windows)

The following instructions explain the generation of OpenPGP keys directly on the Nitrokey. This is done by using the command line interface of GnuPG. Thus, you need to have GnuPG installed on your system. The newest GnuPG version for Windows can be found here and the newest version for MacOS can be found here. Users of Linux systems please install GnuPG with help of the package manager.

Nota

Estas instruções são baseadas no GnuPG versão 2.2.6 ou superior. Algumas Distribuições Linux têm uma versão mais antiga instalada. Neste caso, escolha um método diferente como listado here ou instale uma versão mais recente, se possível.

Geração de chaves#

As seguintes descrições explicam a geração básica de chaves no dispositivo através da interface de linha de comando do GnuPG. O comportamento padrão é gerar chaves RSA de tamanho 2048 bit. Se você quiser alterar o algoritmo de chave e o comprimento, dê uma olhada na próxima seção primeiro.

Abra uma linha de comando e digite gpg2 --card-edit>`.

Para abrir a linha de comando do Windows, por favor pressione a tecla Windows-key e a tecla R. Agora digite “cmd.exe” no campo de texto e pressione enter. Para abrir um Terminal em macOS ou GNU/Linux, por favor use a busca da aplicação (por exemplo, holofotes em 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>

Agora você está na interface interativa do GnuPG. Ative os comandos de administração com admin e use `x id="104"></x> depois para iniciar a geração das chaves.

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>

Por favor, não crie a cópia de segurança sugerida fora do cartão. Esta «cópia de segurança» apenas guarda a chave de encriptação, mas não as chaves de assinatura e autenticação. Em caso de perda do dispositivo, você não será capaz de restaurar todo o conjunto de chaves. Assim, por um lado não é uma cópia de segurança completa (use estas instruções em vez disso, se precisar de uma) e por outro lado arrisca-se a que outra pessoa possa ficar na posse da sua chave de encriptação. A vantagem de gerar chaves no dispositivo é garantir que as chaves sejam armazenadas com segurança. Portanto, recomendamos saltar este meio-backup.

Agora você tem uma chave completa no seu dispositivo que pode ser usada para as várias aplicações listadas no nosso site. Digite quit e pressione enter para sair.

Modificar Atributos Chave#

Esta secção trata da alteração dos atributos-chave. Se você quiser usar os valores propostos, você pode prosseguir com a próxima seção.

Abra uma linha de comando e digite 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]

Agora você está na interface interativa do GnuPG. Como você pode ver no campo «Key attributes» acima, o valor padrão rsa2048 está definido. Para alterá-los, ative os comandos admin com admin e use key-attr depois para alterar os atributos das chaves.

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

Você pode escolher o atributo para cada chave (ou seja, assinatura, criptografia e chave de autenticação). A maioria das pessoas irá usar os mesmos atributos para cada chave. Digite list para ver os resultados (veja o campo «Key attributes», que agora diz 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]

Digite quit e aperte enter para sair ou proceder diretamente com a seção anterior para realmente gerar as chaves com os atributos de chave que você acabou de definir.

A tabela a seguir ilustra qual algoritmo pode ser usado em qual dispositivo.

Início

Pro + Armazenamento

Pro 2 + Armazenamento 2

rsa1024

rsa2048

rsa3072

rsa4096

curva25519 (ECC)

NIST (ECC)

Brainpool (ECC)

secp256k1

Exportação de Chaves Públicas e Utilização do Servidor de Chaves#

Embora possa começar a usar a sua Nitrokey imediatamente após gerar as chaves no seu sistema, precisa de importar a sua chave pública em todos os sistemas, você quer usar a Nitrokey ligada. Por isso, para estar preparado, você tem duas opções: Ou guarda a chave pública onde quiser e usa-a noutro sistema ou guarda a chave pública num webpage/keyserver.

Geração de um arquivo de chave pública#

Para obter um ficheiro simples da sua chave pública, pode apenas usar gpg2 --armor --export keyID > pubkey.asc`. Use a impressão digital como «keyID» (olhe em gpg -K para a obter) ou use apenas o seu endereço de e-mail como identificador.

Você pode carregar este arquivo com você ou enviá-lo a quem quiser. Este ficheiro não é de todo secreto. Se quiser usar a Nitrokey noutro sistema, primeiro importa esta chave pública através de gpg2 --import pubkey.asc e depois digite gpg2 --card-status para que o sistema saiba onde procurar por esta chave. E é tudo.

Carregamento da chave pública#

Se você não quiser carregar um arquivo de chave pública com você, você pode carregá-lo no keyerver. Você pode fazer isso digitando gpg --keyserver search.keyserver.net --send-key keyID`. Se você estiver usando outra máquina você pode simplesmente importá-la usando gpg --keyserver search.keyserver.net --recv-key keyID`.

Outra possibilidade é alterar a configuração do URL no seu cartão. Inicie o gpg -card-edit novamente e primeiro defina o URL onde a chave está situada (por exemplo, no servidor de chaves ou na sua página web, etc.) através do comando url. De agora em diante você pode importar a chave em outro sistema apenas usando o comando fetch dentro do comando `x id="313"></x> ambiente.