We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Безопасное хранение и управление GPG‑ключами в Termux с аппаратной поддержкой TPM

Подробное руководство по защите GPG‑ключей в Termux с использованием TPM‑модуля Android: установка, генерация, импорт, автоматический старт сервисов и лучшие практики.

Termux предоставляет полноценную Linux‑среду на Android‑устройствах, что открывает возможности работы с криптографией непосредственно на смартфоне. Однако хранение приватных GPG‑ключей в файловой системе без дополнительной защиты создаёт риск компрометации. Аппаратный модуль доверенной платформы (TPM) в современных смартфонах может выступать в роли защищённого хранилища и генератора криптографических материалов.

Почему GPG‑ключи нуждаются в надёжном хранилище

GPG‑ключи часто используются для подписи кода, шифрования электронной почты и аутентификации в системах CI/CD. Потеря или кража приватного ключа может привести к утечке конфиденциальных данных и подделке подписей. Поэтому рекомендуется хранить ключи в изолированном, аппаратно‑защищённом хранилище, а не в обычных файлах.

Аппаратный TPM в Android и Termux

Начиная с Android 9 (Pie), большинство устройств поддерживают TPM‑подсистему, реализованную через TEE (Trusted Execution Environment). В Termux к TPM можно обращаться через пакет tpm2-tools и утилиту termux-api, позволяющую взаимодействовать с системными сервисами.

Установка необходимых пакетов

pkg update && pkg upgrade -y
pkg install gnupg tpm2-tools termux-api -y

Создание и импорт GPG‑ключей с поддержкой TPM

1. Инициализируем TPM‑контекст и создаём первичный ключ (SRK):

tpm2_createprimary -C e -g sha256 -G rsa -c primary.ctx

2. Генерируем RSA‑ключ в TPM, который будет использоваться как «персональный» ключ GPG:

tpm2_create -C primary.ctx -g sha256 -G rsa -r tpm_private.bin -u tpm_public.bin

3. Экспортируем публичный ключ в формат OpenPGP и импортируем в GPG‑ключевое кольцо:

# Конвертация TPM‑публичного ключа в PEM
openssl rsa -inform DER -in tpm_public.bin -pubout -out tpm_pub.pem
# Генерация OpenPGP‑ключа на основе TPM‑ключа
gpg --batch --generate-key <

После импорта приватный материал остаётся внутри TPM, а GPG‑ключ лишь ссылается на него через агент.

Управление ключами: экспорт, подпись, проверка

Экспортировать публичный ключ можно обычной командой:

gpg --armor --export user@example.com > public.asc

Подписать файл:

gpg --sign --output file.sig file.txt

Проверить подпись:

gpg --verify file.sig file.txt

Автоматизация и безопасный запуск сервисов

Для автоматического запуска агента gpg-agent при старте Termux удобно добавить его в ~/.bashrc или ~/.zshrc. При этом важно, чтобы процесс запускался только после инициализации TPM‑контекста. Ниже пример скрипта, который начинает (англ. start) агент только при наличии TPM‑устройства:

if tpm2_getrandom 1 &>/dev/null; then
    eval "$(gpg-agent --daemon)"
    echo "gpg-agent started"
else
    echo "TPM not available – gpg-agent not started"
fi

Термин start в данном контексте соответствует определению «to begin or set out, as on a journey or activity» ([cambridge.org](https://dictionary.cambridge.org/us/dictionary/english/start)). Это подчёркивает, что запуск криптографических сервисов должен происходить только после подтверждения готовности аппаратного обеспечения.

Лучшие практики и рекомендации

  • Всегда используйте --batch и --pinentry-mode loopback в скриптах, чтобы избежать интерактивных запросов.
  • Регулярно обновляйте пакеты gnupg и tpm2-tools через pkg upgrade.
  • Храните резервные копии публичных ключей в защищённом облачном хранилище.
  • Ограничьте доступ к файлам ~/.gnupg правами chmod 700.
  • При необходимости экспорта приватного ключа используйте gpg --export-secret-keys только в зашифрованном виде и сразу удаляйте временные файлы.

Заключение

Интеграция TPM в Termux позволяет превратить мобильное устройство в надёжный криптографический модуль, где приватные GPG‑ключи находятся под аппаратным контролем и недоступны обычным процессам. Следуя описанным шагам, вы получаете безопасное хранилище, автоматический запуск сервисов и полную совместимость с существующими GPG‑рабочими процессами.

Если вы хотите внедрить подобные решения в корпоративную инфраструктуру, получить аудит безопасности мобильных устройств или настроить CI/CD‑конвейер с использованием GPG‑подписей, обратитесь к специалистам RybinskLab. Мы предоставляем услуги по настройке Termux, интеграции TPM, разработке скриптов автоматизации и обучению персонала.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен и доработан перед публикацией.

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект