OpenPGP Key Generation On-Device#

As instruções seguintes explicam a geração das chaves OpenPGP directamente na Nitrokey. Isto é feito utilizando a interface de linha de comando do GnuPG. Assim, é necessário ter o GnuPG instalado no seu sistema. A mais recente versão do GnuPG para Windows pode ser encontrada here e a mais recente versão para MacOS pode ser encontrada here. Os utilizadores de sistemas Linux devem instalar o GnuPG com a ajuda do gestor de pacotes.

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.

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. Portanto, 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 tem uma chave completa no seu dispositivo que pode ser utilizada para as várias aplicações listadas no nosso site. Tipo quit e carregar em 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`. Utilize a impressão digital como «keyID» (olhe em gpg -K para a obter) ou utilize 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.