Приветствую всех посетителей форума! В данной статье я опишу алгоритм работы с таким инструментом, как GPG.
GPG (GNU Privacy Guard) - это инструмент для шифрования данных и цифровых подписей, который помогает защищать личную информацию и обеспечивать безопасную коммуникацию в интернете. Он является бесплатной альтернативой OpenPGP (Pretty Good Privacy), который основан на сочетании симметричной криптографии и криптографии с открытым ключом, и использует различные алгоритмы шифрования для обеспечения конфиденциальности и подлинности данных.
Протоколы шифрования GPG
- Шифрование с симметричным ключом:
Это тип шифрования, при котором один и тот же секретный ключ используется как для шифрования, так и для расшифровки данных. Используется для шифрования фактического содержимого сообщения с помощью таких алгоритмов, как AES, Blowfish и Twofish. Быстро и эффективно для большого обьема данных, но требует безопасного обмена между отправителем и получателем.
- Шифрование с открытым ключом:
Это тип шифрования, при котором для шифрования и расшифровки данных используются два разных ключа - публичный и приватный. Используется для шифрования симметричного ключа, который был задействован для шифрования содержимого сообщения, с помощью таких алгоритмов, как RSA и ElGamal. Подходит для безопасного обмена ключами, так как публичный ключ можно свободно распространять, а приватный остается у владельца. Может быть медленным для больших обьемов данных.
- Хеш-функции:
Хэш-функции используются в GPG для создания цифрового отпечатка содержимого сообщения фиксированного размера, который затем используется для проверки целостности и подлинности сообщения. GPG поддерживает различные хэш-функции, включая SHA-1, SHA-256, SHA-512 и MD5.
4. Цифровые подписи:
Цифровые подписи используются в GPG для обеспечения подлинности и целостности содержимого сообщения. Цифровая подпись создается путем применения хэш-функции к содержимому сообщения и последующего шифрования полученного хэш-значения с помощью приватного ключа отправителя. Получатель может использовать публичный ключ отправителя для проверки цифровой подписи и убедиться, что сообщение не было подделано.
Начало работы
Чтобы начать работу с GPG, необходимо создать пару ключей, состоящую из публичного и приватного ключей. Публичный ключ используется для шифрования данных и проверки подписей, а приватный ключ - для расшифровки данных и подписи сообщений. Приватный ключ хранится в тайне, а публичный ключ предоставляется другим.
Чтобы сгенерировать пару ключей, вы можете использовать следующую команду в терминале:
Выбираете алгоритм шифрования (лучше RSA) и длину ключа (лучше 4096), далее ставите 0, если не хотите, чтоб время действия вашего ключа было ограничено по времени, затем пишете "y".gpg –full-generate-key
Будет предложено предоставить ваше имя и адрес электронной почты (можно ничего не писать), а также выбрать пароль для защиты вашего приватного ключа. После создания пары ключей вы можете экспортировать свой публичный ключ, чтобы поделиться им с другими:
gpg --export -a "имя ключа" > public_key.asc
Импорт публичного ключа другого человека. Используется, чтобы зашифровать для него данные или проверить его подписи:
gpg --import имя_ключа.asc
Команда для зашифровки файла:
Это задаст новый файл имя_файла.gpg, который может быть расшифрован только получателем с помощью его приватного ключа.gpg --encrypt --recipient "имя импортированного ключа" путь_к_файлу
Расшифровать файл можно с помощью команды:
gpg –decrypt имя_файла.gpg
Команда для подписи сообщения:
В результате будет создан новый файл имя_файла.gpg, содержащий вашу цифровую подпись. Получатель может проверить подпись с помощью вашего публичного ключа, чтобы убедиться, что сообщение не было подделано.gpg --sign --local-user "имя ключа" путь_к_файлу
Чтобы проверить вашу подпись, получателю необходимо импортировать ваш публичный ключ в свою связку ключей:
gpg --import ваш_публичный_ключ.asc
Проверить подпись с помощью вашего публичного ключа:
Эта команда проверит цифровую подпись в файле .gpg и убедится, что подпись была создана владельцем публичного ключа, который использовался для подписи сообщения.gpg --verify имя_файла.gpg
Если подпись действительна, GPG выведет сообщение о том, что подпись хорошая и что файл был подписан вами:
gpg: Signature made Mon 10 Apr 2025 08:48:25
gpg: using RSA key 4FCCD9D204E4AA2A00D71C0609E5715428F6DBD6
gpg: Good signature from "testgpg" [ultimate]
Если подпись недействительна, GPG выдаст сообщение об ошибке:
gpg: Signature made [timestamp] using RSA key ID [key ID]
gpg: BAD signature from "Your Name <[email protected]>".
Помимо шифрования и подписи, GPG можно использовать для управления ключами. Перечислить свои ключи можно с помощью следующей команды:
gpg –list-keys
Вы также можете отозвать ключ, если он был скомпрометирован или утерян:
gpg --edit-key "имя ключа"
Это пометит ваш ключ как отозванный и создаст сертификат отзыва, который вы должны хранить в безопасности на случай, если вам понадобится доказать, что ключ был отозван.revkey
Итог
Теперь вы знаете, как работать с GPG, умеете генерировать пару ключей, импортировать ключи, шифровать и расшифровывать файлы, подписывать и проверять подпись файлов. Спасибо, что дочитали. Оставайтесь защищенными!