Генериране на ключове OpenPGP с резервно копие#

(Nitrokey FIDO2 - 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.

Note

Тези инструкции се основават на 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, за да видите резултатите (погледнете полето „Ключови атрибути“, което сега гласи 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 + съхранение

Pro 2 + съхранение 2

rsa1024

rsa2048

rsa3072

rsa4096

curve25519 (ECC)

NIST (ECC)

Brainpool (ECC)

secp256k1

Експортиране на публичен ключ и използване на Keyserver#

Въпреки че можете да започнете да използвате своя 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.