Резервная копия GPG с помощью Paperkey на Ubuntu
Оглавление
- Почему стоит использовать Paperkey для резервного копирования GPG
- Получение и установка Paperkey
- Настройка резервной копии Paperkey
- Конвертация Paperkey в QR-код
- Восстановление из текстовой резервной копии
- Восстановление из QR-кода
- Когда метод не подходит и альтернативы
- Чеклисты и методология
- Часто задаваемые вопросы

Почему стоит использовать Paperkey для резервного копирования GPG
Paperkey удаляет из экспортированного приватного ключа избыточные данные и оставляет только критические секретные биты. Результат обычно гораздо компактнее стандартного ASCII-армированного PGP-блока, что делает его удобным для записи вручную или печати.
Коротко о преимуществах:
- Низкая поверхность атаки: секрет можно хранить вне сети, физически — на бумаге или в изделии, не подключённом к интернету.
- Простота восстановления: сочетание публичного ключа (из публичного keyserver) и core-строки от paperkey позволяет восстановить полный приватный ключ.
- Универсальность: полученный «ядро»-файл можно конвертировать в QR или другие машинно-читаемые форматы для надёжного переноса.
Важно: безопасность бумажной копии полностью зависит от того, как и где вы её храните. Если бумага потеряна или скомпрометирована, ключ может быть восстановлен посторонним.

Получение и установка Paperkey
Перед установкой обновите индекс пакетов и систему:
sudo apt update
sudo apt upgradeУстановите paperkey:
sudo apt install paperkeyПроверьте версию, чтобы убедиться в успешной установке:
paperkey --version
Настройка резервной копии Paperkey
Ниже приведён пошаговый процесс для безопасного создания paperkey-резервной копии. Предполагается, что у вас уже есть GPG-ключ (например, 4096-bit RSA/RSA), созданный командой gpg --full-gen-key.
- Список ключей в ключнице:
gpg --list-keys
- Экспортируйте приватный ключ в бинарный файл (не ASCII-армированную форму). Обратите внимание на пробелы между флагами:
gpg --export-secret-keys --output private.gpg your-gpg@email.address
- Извлеките «ядро» секретной части с помощью paperkey и сохраните в читаемый файл:
paperkey --secret-key private.gpg --output core-secret.asc- Загрузите ваш публичный ключ на публичный keyserver, чтобы иметь возможность восстановить ключ по его публичной части при необходимости:
gpg --keyserver keyserver.ubuntu.com --send-key YOUR-KEY-FINGERPRINT
Примечание: отпечаток ключа можно получить так:
gpg --with-colons --list-keys your-gpg@email.address | grep pub | awk 'BEGIN{FS=":"} {print $5}'- После успешного создания резервной копии и загрузки публичного ключа безжалостно удалите бинарный экспорт приватного ключа с диска:
shred -uvn 10 ./private.gpgВажно: shred выполняет многократную перезапись файла и затем удаляет его. Для NVMe/SSD и некоторых файловых систем этот метод может быть менее надёжным — смотрите раздел «Ограничения и альтернативы» ниже.
Конвертация Paperkey в QR-код
Чтобы сделать резервную копию менее травмоопасной при наборе вручную, можно закодировать core-secret в QR-изображение.
- Установите генератор QR:
sudo apt install qrencode- Экспортируйте приватный ключ в бинарный файл (аналогично предыдущим шагам):
gpg --export-secret-keys --output qr-private.gpg your-gpg@email.address- Сгенерируйте QR, перенаправив «raw» вывод paperkey в qrencode. Убедитесь в пробелах между флагами и корректном пути вывода:
paperkey --secret-key qr-private.gpg --output-type raw | qrencode --8bit --output /home/$USER/qr-private.png- Откройте файловый менеджер и убедитесь, что изображение присутствует:


Важно: формат QR-кода должен храниться в безопасном месте и быть устойчив к выцветанию при печати. Лучше распечатать несколько копий и хранить их в разных надёжных локациях.
Восстановление из текстовой резервной копии
Процесс восстановления включает получение публичного ключа (из keyserver) и объединение его с core-secret для воссоздания приватного ключа.
- Поиск вашего публичного ключа на keyserver:
gpg --keyserver keyserver.ubuntu.com --search your-gpg@email.address- Выберите нужную запись из списка поиска и экспортируйте публичный ключ в бинарный файл:
gpg --export --output public.gpg your-gpg@email.address
- Воссоздайте приватный ключ, объединив public.gpg и core-secret.asc:
paperkey --pubring public.gpg --secrets core-secret.asc --output private.gpg- Импортируйте восстановленный приватный ключ в ключницу GPG:
gpg --import ./private.gpg
Восстановление из QR-кода
Для восстановления из QR-снимка вам нужно считывать изображение и сохранить его содержимое в файл, который затем использует paperkey.
- Установите утилиты для сканирования QR-кодов:
sudo apt install zbarcam-gtk zbar-tools- Раскодируйте QR-изображение и запишите результат в файл core-secret.asc:
zbarimg --quiet --raw ./qr-private.png > core-secret.asc
- Воссоздайте приватный ключ так же, как в текстовом случае:
paperkey --pubring public.gpg --secrets core-secret.asc --output private.gpg- Импортируйте приватный ключ:
gpg --import ./private.gpg
Хорошо знать: если используете облачные хранилища для черновиков или изображений, не загружайте туда QR с ключом без надёжного шифрования.
Когда метод не подходит и альтернативы
Контрпримеры / ограничения:
- SSD / NVMe: перезапись данных файлов не гарантирует физического удаления с носителя — shred может быть неэффективен на некоторых файловых системах и контроллерах.
- Форм-фактор: если вам неудобно хранить бумагу (пожароопасные или влажные условия), бумажная копия может быстро деградировать.
- Комплексность ключей: для некоторых типов ключей/подключений (смарт-карты, аппаратные ключи) paperkey не применим.
Альтернативы:
- Аппаратные токены (YubiKey, Titan) — ключ хранится в устройстве, его нельзя экспортировать в явном виде.
- Зашифрованные бэкапы в облаке (с локальным шифрованием перед отправкой) — удобно, но требует надёжной секретной фразы.
- Множественные зашифрованные USB-накопители, хранящиеся в сейфах/банковских ячейках.
Чеклисты и методология
Мини-методология создания надёжной бумажной резервной копии:
- Создайте приватный ключ локально на офлайн-машине.
- Экспортируйте приватный ключ в бинарный файл и сразу удалите исходный рабочий файл после извлечения core.
- Сгенерируйте core-secret с paperkey.
- Загрузите публичный ключ на keyserver (или сохраните в безопасном месте).
- Сохраните core-secret в нескольких форматах: печать, QR, зашифрованный USB.
- Проверьте восстановление на тестовой машине (без подключения в интернет), затем уничтожьте временные файлы.
Чеклист для домашнего пользователя:
- Создан локальный GPG-ключ.
- Выполнен экспорт приватного ключа и создан core-secret.asc.
- Публичный ключ загружен на keyserver или сохранён в безопасном месте.
- core-secret распечатан и помещён в влагозащитный конверт.
- Создан QR и хранится отдельно от бумажной копии.
- Тестовый импорт выполнен и подтверждён.
Чеклист для администратора / организации:
- Политика хранения ключей утверждена.
- Минимум две геораспределённые копии в сейфах.
- Процедура восстановления документирована и протестирована.
- Ответственные лица назначены и имеют доступ по процедуре.
Критерии приёмки (после резервного копирования):
- Core-secret успешно экстрагирован и валиден для paperkey.
- Публичный ключ доступен в публичном keyserver или в организации.
- Восстановление приватного ключа проходит без ошибок в тестовой среде.
- Временные/промежуточные файлы уничтожены надёжным способом.
Дерево решений (когда использовать paperkey)
flowchart TD
A[Нужна резервная копия приватного GPG-ключа?] -->|Да| B{Ключ экспортируемый?}
B -->|Да| C{Условия хранения бумаги подходящие?}
C -->|Да| D[Использовать paperkey + печать + сейф]
C -->|Нет| E[Рассмотреть аппаратный токен или зашифрованное облако]
B -->|Нет| F[Аппаратный токен — не экспортируемый ключ]
A -->|Нет| G[Ничего не делать]Часто задаваемые вопросы
Насколько безопасна резервная копия Paperkey?
Paperkey не изменяет криптографические свойства ключа — он сохраняет те же секретные биты. Безопасность зависит от силы ключа (битность, алгоритм) и от того, как вы храните и защищаете бумажную/QR-сборку. Хранение офлайн делает ключ недоступным для удалённых атак, но бумажная копия уязвима к физическому доступу.
Я получаю ошибку corrupted input при экспорте приватного ключа.
Обычно это происходит, если вы передали в paperkey ASCII-армированную (armored) версию ключа. Убедитесь, что экспорт выполнен без опции –armor и вы используете бинарный экспорт:
gpg --export-secret-keys --output private.gpg your-gpg@email.addressМожно ли конвертировать paperkey в другой формат изображения?
Да. Paperkey выводит raw-бинари, которые можно направить в любые генераторы баркодов/изображений. Например, для SVG-штрихкода:
paperkey --secret-key qr-private.gpg --output-type raw | barcode -S > private.svg(Установите соответствующие пакеты для barcode/генераторов.)
Итог
Paperkey — практичный инструмент для тех, кто хочет минимизировать присутствие приватных ключей в онлайне. Он упрощает хранение, облегчает печать и делает возможным хранение секретов в виде QR-кодов. При этом важно учитывать ограничения носителя и обеспечить надёжное физическое хранение и процедуру восстановления.
Сводка: создавайте резервные копии офлайн, тестируйте восстановление и храните бумажные копии в надёжных местах.
Image credit: Sincerely Media via Unsplash. Все изменения и скриншоты — Ramces Red.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента