- Сообщения
- 999
- Реакции
- 1.432
В данной статье я хотел бы описать алгоритм работы с таким инструментом, как GPG.
GPG (GNU Privacy Guard) - это реализация стандарта OpenPGP (Pretty Good Privacy), который определяет протокол для безопасной связи и хранения данных. OpenPGP основан на сочетании симметричной криптографии и криптографии с открытым ключом и использует различные алгоритмы шифрования для обеспечения конфиденциальности и подлинности данных.
Вот протоколы шифрования, которые обычно используются в GPG:
1. Шифрование с симметричным ключом:
Это тип шифрования, при котором один и тот же секретный ключ используется как для шифрования, так и для расшифровки данных. В GPG шифрование с симметричным ключом используется для шифрования фактического содержимого сообщения с помощью таких алгоритмов, как AES, Blowfish и Twofish.
2. Шифрование с открытым ключом:
Это тип шифрования, при котором для шифрования и расшифровки данных используются два разных ключа. В GPG шифрование с открытым ключом используется для шифрования симметричного ключа, который был использован для шифрования содержимого сообщения, с помощью таких алгоритмов, как RSA и ElGamal.
3. Хеш-функции:
Хэш-функции используются в GPG для создания цифрового отпечатка содержимого сообщения фиксированного размера, который затем используется для проверки целостности и подлинности сообщения. GPG поддерживает различные хэш-функции, включая SHA-1, SHA-256, SHA-512 и MD5.
4. Цифровые подписи:
Цифровые подписи используются в GPG для обеспечения подлинности и целостности содержимого сообщения. Цифровая подпись создается путем применения хэш-функции к содержимому сообщения и последующего шифрования полученного хэш-значения с помощью закрытого ключа отправителя. Получатель может использовать открытый ключ отправителя для проверки цифровой подписи и убедиться, что сообщение не было подделано.
Чтобы начать работу с GPG, необходимо создать пару ключей, состоящую из открытого и закрытого ключей. Открытый ключ используется для шифрования данных и проверки подписей, а закрытый ключ - для расшифровки данных и подписи сообщений. Вы должны хранить свой закрытый ключ в тайне и защищать его, а открытый ключ предоставлять другим.
Чтобы сгенерировать пару ключей, вы можете использовать следующую команду в терминале:
Код:
gpg –full-generate-key
После этого выбираете алгоритм шифрования (рекомендую RSA) и длину ключа (рекомендую 4096), далее ставите 0, если не хотите, чтоб время действия вашего ключа было ограничено по времени, затем пишете y, если всё верно.
Вам будет предложено предоставить некоторую информацию, например, ваше имя и адрес электронной почты (можно ничего не писать), а также выбрать пароль для защиты вашего закрытого ключа. После создания пары ключей вы можете экспортировать свой открытый ключ, чтобы поделиться им с другими с помощью следующей команды:
Код:
gpg --export -a "имя ключа" > public_key.asc
Вы можете импортировать открытый ключ другого человека, чтобы зашифровать для него данные или проверить его подписи:
Код:
gpg --import имя_ключа.asc
Чтобы зашифровать файл, вы можете использовать следующую команду:
Код:
gpg --encrypt --recipient "имя импортированного ключа" путь_до_файла
Это здаст новый файл имя_файла.gpg, который может быть расшифрован только получателем с помощью его закрытого ключа.
Расшифровать файл можно с помощью команды
Код:
gpg –decrypt имя_файла.gpg
Чтобы подписать сообщение, вы можете использовать следующую команду:
Код:
gpg --sign --local-user "имя ключа" путь_до_файла
В результате будет создан новый файл имя_файла.gpg, содержащий вашу цифровую подпись. Получатель может проверить подпись с помощью вашего открытого ключа, чтобы убедиться, что сообщение не было подделано.
Чтобы проверить вашу подпись, получателю необходимо выполнить следующие действия:
Импортировать ваш открытый ключ в свою связку ключей:
Код:
gpg --import ваш_открытый_ключ.asc
Проверить подпись с помощью вашего открытого ключа:
Код:
gpg --verify имя_файла.gpg
Эта команда проверит цифровую подпись в файле .gpg и убедится, что подпись была создана владельцем открытого ключа, который использовался для подписи сообщения.
Если подпись действительна, GPG выведет сообщение о том, что подпись хорошая и что файл был подписан вами:
Код:
gpg: Signature made Mon 10 Apr 2023 08:48:25 AM +03
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, умеете генерировать пару ключей, импортировать ключи, шифровать/расшифровывать файлы и подписывать/проверять подпись файлов.
Последнее редактирование: