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, разработке скриптов автоматизации и обучению персонала.