Генерация ключей OpenPGP на устройстве#

(Nitrokey Pro 2 - macOS)

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.

Примечание

Эти инструкции основаны на GnuPG версии 2.2.6 или выше. В некоторых дистрибутивах Linux установлена более старая версия. В этом случае, пожалуйста, выберите другой метод, как указано здесь или установите более новую версию, если это возможно.

Генерация ключей#

Следующие описания объясняют базовую генерацию ключей на устройстве через интерфейс командной строки GnuPG. По умолчанию генерируются ключи RSA размером 2048 бит. Если вы хотите изменить алгоритм и длину ключа, сначала ознакомьтесь со следующим разделом.

Откройте командную строку и введите gpg2 --card-edit.

Чтобы открыть командную строку Windows, нажмите клавишу Windows и клавишу R. Теперь введите „cmd.exe“ в текстовое поле и нажмите клавишу Enter. Чтобы открыть терминал на macOS или GNU/Linux, воспользуйтесь поиском приложений (например, spotlight на 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>

Теперь вы находитесь в интерактивном интерфейсе GnuPG. Активируйте команды администратора с помощью admin и используйте generate после этого, чтобы начать генерацию ключей.

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>

Пожалуйста, не создавайте предложенную резервную копию вне карты памяти. Эта «резервная копия» сохраняет только ключ шифрования, но не ключи подписи и аутентификации. В случае потери устройства вы не сможете восстановить весь набор ключей. Таким образом, с одной стороны, это не полная резервная копия (используйте эти инструкции вместо этого, если вам это нужно), а с другой стороны, вы рискуете тем, что кто-то другой может завладеть вашим ключом шифрования. Преимущество генерации ключей на устройстве заключается в том, что ключи хранятся надежно. Поэтому мы рекомендуем пропустить этот полурезервный вариант.

Теперь на вашем устройстве есть полный набор ключей, который можно использовать для различных приложений, перечисленных на нашем сайте. Введите quit и нажмите Enter для выхода.

Ключевые атрибуты изменений#

Этот раздел посвящен изменению ключевых атрибутов. Если вы хотите использовать значения по умолчанию, вы можете перейти к следующему разделу.

Откройте командную строку и введите 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]

Теперь вы находитесь в интерактивном интерфейсе GnuPG. Как вы можете видеть в поле «Атрибуты ключа» выше, по умолчанию установлено значение rsa2048. Чтобы изменить его, активируйте команды администратора с помощью admin и используйте key-attr после этого для изменения атрибутов ключей.

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

Вы можете выбрать атрибут для каждого ключа (то есть ключа подписи, шифрования и аутентификации). Большинство людей будут использовать одни и те же атрибуты для каждого ключа. Введите list, чтобы увидеть результаты (посмотрите на поле «Key attributes», в котором теперь написано 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]

Введите quit и нажмите Enter для выхода или перейдите непосредственно к предыдущему разделу для генерации ключей с атрибутами ключей, которые вы только что установили.

В следующей таблице показано, какой алгоритм может быть использован на том или ином устройстве.

Начало

Профи + хранение

Pro 2 + Storage 2

rsa1024

rsa2048

rsa3072

rsa4096

curve25519 (ECC)

NIST (ECC)

Brainpool (ECC)

secp256k1

Экспорт открытого ключа и использование сервера ключей#

Хотя вы можете начать использовать Nitrokey сразу после генерации ключей на вашей системе, вам необходимо импортировать ваш открытый ключ на каждую систему, на которой вы хотите использовать Nitrokey. Поэтому, чтобы быть готовым, у вас есть два варианта: Либо вы сохраняете открытый ключ в любом удобном для вас месте и используете его на другой системе, либо вы сохраняете открытый ключ на веб-странице/сервере ключей.

Генерация файла открытого ключа#

Чтобы получить простой файл вашего открытого ключа, вы можете просто использовать gpg2 --armor --export keyID > pubkey.asc. Используйте либо отпечаток пальца в качестве «keyID» (посмотрите gpg -K, чтобы получить его), либо просто используйте свой адрес электронной почты в качестве идентификатора.

Вы можете носить этот файл с собой или отправить его любому желающему. Этот файл не является секретным. Если вы хотите использовать Nitrokey на другой системе, сначала импортируйте этот открытый ключ через gpg2 --import pubkey.asc, а затем введите gpg2 --card-status, чтобы система знала, где искать этот ключ. Вот и все.

Загрузка открытого ключа#

Если вы не хотите носить с собой открытый ключевой файл, вы можете загрузить его на keyserver. Это можно сделать, набрав gpg --keyserver search.keyserver.net --send-key keyID. Если вы используете другую машину, вы можете просто импортировать его, используя gpg --keyserver search.keyserver.net --recv-key keyID.

Другая возможность - изменить настройки URL на вашей карте. Запустите gpg -card-edit снова и сначала установите URL, где находится ключ (например, на сервере ключей или на вашей веб-странице и т.д.) с помощью команды url. С этого момента вы можете импортировать ключ на другую систему, просто используя команду fetch в среде gpg --card-edit.