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

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

Использование Termux как платформы для обучения криптографии: генерация ключей, шифрование и подпись файлов

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 и других открытых технологий.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом РыбинскЛАБ.

Поделиться знанием:

Нужна профессиональная помощь?

Меня зовут Усачёв Денис Евгеньевич. Я оказываю ИТ-услуги в Рыбинске и Ярославской области: настройка серверов, безопасность, автоматизация бизнеса. Запомните информация развлекательный ознакомительный носит, не нарушайте закон!

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