Бумажная резервная копия ключей - отличный способ не потерять их. Да, вы можете хранить их на цифровых носителях, таких как USB-накопитель или компакт-диск, но есть вероятность, что данные могут быть повреждены. Сделайте бумажную копию и храните ее в надежном месте.

Это руководство предназначено для пользователей macOS. Если вы используете Linux, действия должны быть аналогичными, но вам придется использовать любой менеджер пакетов, поставляемый с вашим дистрибутивом, поскольку Homebrew специфичен для macOS. Пользователи Windows должны установить Paperkey, используя предварительно скомпилированные двоичные файлы.

Установить Paperkey

У вас должен быть установлен Paperkey как для экспорта, так и для импорта бумажного ключа.

  1. Установите Paperkey через Homebrew:
brew install paperkey

2. Убедитесь, что Paperkey правильно установлен:

paperkey --version  
> paperkey 1.6 (darwin18.6.0) 
> Copyright (C) 2007, 2008, 2009, 2012, 2013, 2016, 2017, 2018 David Shaw <[email protected]> 
> This is free software. You may redistribute copies of it under the terms of 
> the GNU General Public License <http://www.gnu.org/licenses/gpl.html>. 
> There is NO WARRANTY, to the extent permitted by law.

Экспорт ключа

  1. Перечислите ваши доступные секретные ключи GPG:
gpg --list-secret-keys
> /Users/johnny/.gnupg/pubring.kbx 
> -------------------------------- 
> sec rsa4096 2019-12-12 [SC] 
> E363354FA81A5AF9334F02EBD6304AF502D93919 
> uid [ultimate] John Smith <[email protected]> 
> ssb rsa4096 2019-12-12 [E]

2. Экспортируйте свой ключ и pipe | результат в команду Paperkey --output, заменив указанный ниже E36335... uid своим собственным. Введите пароль для ключа.

gpg --export-secret-key E363354FA81A5AF9334F02EBD6304AF502D93919 | paperkey --output paperkey.txt
> x Please enter the passphrase to export the OpenPGP secret key:
> x "John Smith <[email protected]>"
> x 4096-bit RSA key, ID D6304AF502D93919,
> x created 2019-12-12.
> x
> x Passphrase:

3. Ваш секретный ключ теперь находится в paperkey.txt. Это должно выглядеть примерно так:

cat paperkey.txt  
> # Secret portions of key E363354FA81A5AF9334F02EBD6304AF502D93919 
> # Base16 data extracted Thu Dec 12 14:44:00 2019 
> # Created with paperkey 1.6 by David Shaw 
> # 
> # File format: 
> # a) 1 octet: Version of the paperkey format (currently 0). 
> # b) 1 octet: OpenPGP key or subkey version (currently 4) 
> # c) n octets: Key fingerprint (20 octets for a version 4 key or subkey) 
> # d) 2 octets: 16-bit big endian length of the following secret data 
> # e) n octets: Secret data: a partial OpenPGP secret key or subkey packet as 
> # specified in RFC 4880, starting with the string-to-key usage 
> # octet and continuing until the end of the packet. 
> # Repeat fields b through e as needed to cover all subkeys. 
> # 
> # To recover a secret key without using the paperkey program, use the 
> # key fingerprint to match an existing public key packet with the 
> # corresponding secret data from the paper key. Next, append this secret 
> # data to the public key packet. Finally, switch the public key packet tag 
> # from 6 to 5 (14 to 7 for subkeys). This will recreate the original secret 
> # key or secret subkey packet. Repeat as needed for all public key or subkey 
> # packets in the public key. All other packets (user IDs, signatures, etc.) 
> # may simply be copied from the public key. 
> # 
> # Each base16 line ends with a CRC-24 of that line. 
> # The entire block of data ends with a CRC-24 of the entire block of data. 
> 
> 1: 00 04 E3 63 35 4F A8 1A 5A F9 33 4F 02 EB D6 30 4A F5 02 D9 39 19 494042 
> 2: 05 39 FE 07 03 02 A8 D4 41 26 21 29 93 F4 E7 59 2F C4 8B E3 22 C3 E5C919 
> 3: 0A BE 63 AC 1D CA 06 B6 43 FF F5 E5 69 B3 7C FF B4 24 E3 6B 3C DD 3BEEE4 ... 
> 123: 07 70 93 42 01 1D 9F 08 5E 25 EF 15 C5 39 50 D5 2F 24 68 EA F3 52 088714 
> 124: B3 EF C9 83 74 E4 3F 4B 44 6A 83 25 10 50 74 6CDF7A 
> 125: 5494FC

4. Распечатайте paperkey.txt файл и положите его в безопасное место.

Используйте QR-код

Если вы предпочитаете импортировать и экспортировать свой ключ в виде QR-кода, вы можете использовать QREncode. Убедитесь, что приложение, которое вы будете использовать для импорта секретного ключа, принимает этот тип QR-кода. Не все считыватели QR одинаковы.

  1. Установите QREncode:
brew install qrencode

2. Еще раз проверьте правильность установки:

qrencode --version  
> qrencode version 4.0.2 
> Copyright (C) 2006-2017 Kentaro Fukuchi

3. Экспортируйте секретный ключ GPG, передайте | результат в Paperkey, а затем передайте этот результат в Qrencode. Программа создаст изображение QR-кода в secret-key.qr.png.

gpg --export-secret-key E363354FA81A5AF9334F02EBD6304AF502D93919 | paperkey --output-type raw | qrencode --8bit --output secret-key.qr.png

4. Продолжайте и распечатайте secret-key.qr.png файл.

Открытый ключ

При импорте секретного ключа вам необходимо иметь доступный открытый ключ. Поскольку открывать открытый ключ безопасно, вы можете сохранить его на сервере ключей. Вы также можете распечатать свой открытый ключ. К сожалению, Paperkey не поддерживает экспорт вашего открытого ключа в удобочитаемый формат, поэтому вам придется распечатать ключ дословно.

  1. Перечислите свои секретные ключи:
gpg --list-keys  
> /Users/johnny/.gnupg/pubring.kbx 
> -------------------------------- 
> pub rsa4096 2019-12-12 [SC] 
> E363354FA81A5AF9334F02EBD6304AF502D93919 
> uid [ultimate] John Smith <[email protected]> 
> sub rsa4096 2019-12-12 [E]

2. Экспортируйте свой открытый ключ, заменив E3633... идентификатором вашего ключа:

gpg --armor --output public-key.txt --export E363354FA81A5AF9334F02EBD6304AF502D93919 cat public-key.txt  
> -----BEGIN PGP PUBLIC KEY BLOCK----- 
> 
> mQINBF3yl78BEAC1d3hAbfTWxnEWMs79OUGHFMgTGxMX+Rf/ZuD9jqvKV4R5/oQJ 
> XlCNYMVv2uBKFo0rFaJN2uxpQ613dXfhNFkD9VylXrsjpOR/foUOjwkzMrbL7DBa 
> myuaXrkXxZl03FZ52wenYcm1aVvTIrGGewUaGjP2b+5aMdwqXysXywFzPDgtuofQ 
> ... 
> CAPaZTUQOAKscWVdi17GKIwb/1fk9SB2wDbl8EMClwzaRYXj0xOJTa1DpDnqThH2 
> 3/cN47LZOTJxOvKPLj41cvjMqxAuEVRQ8XcpUeD5OWtZf4y+ 
> =9OBm 
> -----END PGP PUBLIC KEY BLOCK-----

3. Теперь вы можете распечатать public-key.txt файл.

Импортировать ключ

Итак, у вас есть ключи на бумаге. Теперь вам нужно его импортировать.

  1. Введите все содержимое вашего открытого ключа в файл с именем public-key.txt.
  2. Уважаемый ключ:
gpg --dearmor public-key.txt

3. Введите все содержимое секретного ключа в файл с именем secret-key.txt.

4. С помощью Paperkey проанализируйте ваш secret-key.txt файл и передайте | результат команде gpg --import:

paperkey --pubring public-key.txt.gpg --secrets secret-key.txt | gpg --import  
> gpg: key D6304AF502D93919: public key "John Smith <[email protected]>" imported 
> gpg: Total number processed: 0 
> gpg: imported: 1 
> gpg: secret keys read: 1

5. Теперь ваш секретный ключ должен быть импортирован!

6. Наконец, удалите файл secret-key.txt:

echo "This file has been deleted." > secret-key.txt && rm secret-key.txt

Эта команда перезаписывает файл secret-key.txt и удаляет его. Файл не попадает в корзину. Этот метод никоим образом не является самым безопасным способом удаления файла, но он лучше, чем просто выбросить его в корзину. Мотивированный злоумышленник может получить ваш секретный ключ, если у него будет доступ к вашему компьютеру.

И вот оно! Это все, что вам нужно сделать, чтобы создать бумажную резервную копию ключей GPG. Убедитесь, что ваши бумажные резервные копии хранятся в надежном месте, например, в сейфе или сейфе. Также неплохо сделать две резервные копии и хранить их в разных местах и ​​использовать стратегию резервного копирования 321.