Termux – это эмулятор терминала и среда Linux для Android, позволяющая запускать полноценные консольные утилиты без необходимости рутировать устройство. Благодаря доступу к пакетному менеджеру pkg и поддержке популярных криптографических инструментов, Termux становится отличной площадкой для практического обучения криптографии.
Установка необходимых пакетов
Для начала установим базовые инструменты:
pkg update && pkg upgrade -y
pkg install openssl gnupg -y
Пакет openssl предоставляет набор команд для работы с RSA, ECC, симметричным шифрованием и подписью. gnupg (GPG) – удобный инструмент для асимметричного шифрования и управления ключами.
Генерация асимметричных ключей
В дальнейшем будем использовать два типа ключей: RSA (2048‑бит) и ECC (Curve25519). Оба подходят для обучения, однако ECC обеспечивает более короткие ключи при той же степени защиты.
RSA‑ключи с OpenSSL
# Генерация закрытого ключа
openssl genpkey -algorithm RSA -out private_rsa.pem -pkeyopt rsa_keygen_bits:2048
# Вывод публичного ключа
openssl rsa -pubout -in private_rsa.pem -out public_rsa.pem
ECC‑ключи с OpenSSL
# Генерация закрытого ключа (Curve25519)
openssl genpkey -algorithm X25519 -out private_ecc.pem
# Вывод публичного ключа
openssl pkey -pubout -in private_ecc.pem -out public_ecc.pem
Ключи GPG
Для работы с GPG удобно создавать «домашний» каталог ~/.gnupg и использовать интерактивный мастер:
gpg --full-generate-key
В ходе мастера выбираем тип ключа (RSA и RSA, RSA (sign only) и т.п.), размер (2048‑4096 бит) и срок действия. После генерации получаем идентификатор ключа, который будет использоваться для шифрования и подписи.
Шифрование файлов
Продемонстрируем два подхода: симметричное шифрование с помощью OpenSSL и асимметричное шифрование с GPG.
Симметричное шифрование (AES‑256‑CBC)
# Шифрование
openssl enc -aes-256-cbc -salt -in secret.txt -out secret.txt.enc -pass pass:MyStrongPassword
# Расшифровка
openssl enc -d -aes-256-cbc -in secret.txt.enc -out secret.txt.dec -pass pass:MyStrongPassword
Опция -salt добавляет случайную соль, а -pass позволяет указать пароль напрямую (для учебных целей). В реальных сценариях рекомендуется использовать файл пароля или переменную окружения.
Асимметричное шифрование с GPG
# Шифрование для получателя с идентификатором 0xABCD1234
gpg --encrypt --recipient 0xABCD1234 -o secret.txt.gpg secret.txt
# Расшифровка (получатель)
gpg --decrypt -o secret.txt.dec secret.txt.gpg
GPG автоматически использует публичный ключ получателя, а расшифровка происходит с помощью его закрытого ключа.
Подпись файлов
Подпись обеспечивает целостность и аутентичность данных. Рассмотрим подпись с OpenSSL и GPG.
Подпись с помощью RSA‑ключа OpenSSL
# Создание цифровой подписи (SHA256)
openssl dgst -sha256 -sign private_rsa.pem -out document.txt.sig document.txt
# Проверка подписи
openssl dgst -sha256 -verify public_rsa.pem -signature document.txt.sig document.txt
Команда dgst вычисляет хеш и подписывает его закрытым ключом. При проверке используется только публичный ключ.
Подпись с GPG
# Подпись (clearsign) – человекочитаемый результат
gpg --clearsign document.txt
# Подпись в бинарном виде
gpg --detach-sign -o document.txt.sig document.txt
# Проверка подписи
gpg --verify document.txt.sig document.txt
GPG хранит подписи в стандарте OpenPGP и автоматически проверяет их, выводя информацию о подписанте.
Практический сценарий: шифрование и подпись сообщения
Объединим операции: сначала подпишем файл, затем зашифруем подпись и оригинал для получателя.
# 1. Подписываем файл (делаем отдельную подпись)
gpg --detach-sign -o message.txt.sig message.txt
# 2. Объединяем оригинал и подпись в один архив
cat message.txt message.txt.sig > bundle.txt
# 3. Шифруем архив для получателя
gpg --encrypt --recipient 0xABCD1234 -o bundle.txt.gpg bundle.txt
Получатель расшифровывает bundle.txt.gpg, извлекает message.txt и message.txt.sig, затем проверяет подпись с помощью публичного ключа отправителя.
Рекомендации по безопасной работе в Termux
- Регулярно обновляйте пакеты:
pkg update && pkg upgrade. - Храните закрытые ключи в отдельном каталоге с ограниченными правами (
chmod 600). - Не вводите пароли в открытом виде; используйте файлы паролей или переменные окружения.
- Для длительного хранения ключей рекомендуется синхронизировать их с облачным хранилищем, зашифровав предварительно.
Заключение
Termux предоставляет полноценную Linux‑окружение на устройствах Android, что делает его идеальной платформой для практического изучения криптографии. С помощью OpenSSL и GnuPG можно генерировать RSA и ECC‑ключи, шифровать файлы, создавать цифровые подписи и отрабатывать реальные сценарии обмена зашифрованными данными.
Если вы хотите углубить свои навыки, получить индивидуальные консультации по криптографии или организовать обучение сотрудников в рамках корпоративных программ, обратитесь в RybinskLab. Мы предлагаем профессиональные курсы, аудит безопасности и разработку кастомных решений на базе Termux и других открытых технологий.