Начните с чтения GPG MiniHOWTO и следуйте приведенным там примерам.
Затем обратитесь к руководству GPG для получения дополнительной информации по мере необходимости.
Если возможно
При экспериментировании, пожалуйста, используйте -v и -vv, чтобы увидеть больше информации о том, что происходит.
--symmetric - это специально симметричное шифрование, в котором не предполагается использование ключей - оно использует только кодовую фразу, поэтому ожидается возможность дешифрования только с парольной фразой.
Симметричное шифрование - только пароль
Простейшая симметричная командная строка для шифрования
gpg -v --symmetric test.txt
хотя я бы настоятельно рекомендовал выбрать лучший шифр и большее количество итераций деривации ключей, т.е.
gpg -v --cipher-algo AES256 --s2k-mode 3 --s2k-digest-algo SHA512 --s2k-count 65600000 --symmetric test.txt
для шифрования AES256 с дайджестом SHA-512 и большим количеством итераций ключа (пожалуйста, увеличьте его по сравнению с тем, что я перечислил), или
gpg -v --cipher-algo CAMELLIA256 --s2k-mode 3 --s2k-digest-algo SHA512 --s2k-count 65600000 --symmetric test.txt
для CAMELLIA256, как указано выше в противном случае.
Подписи - без шифрования
-sb это две формы подписи вместе и действует так же, как -b. Во-первых, это НЕ ШИФРОВАЕТ, а просто подписывается отдельной подписью; более полное использование будет:
gpg -u <mykeyid> -b test.txt
за отдельную подпись
Шифрование с открытым ключом
Пример открытого ключа подписи с шифрованием:
gpg -v --local-user <mykeyidToSign> --recipient <theirkeyidToEncryptTo> --sign --encrypt test.txt
Генерация открытого ключа
Я рекомендую более сильный алгоритм шифрования паролем и алгоритм дайджеста при генерации ключей
gpg --s2k-mode 3 --s2k-digest-algo SHA512 --s2k-count 95600000 --cert-digest-algo SHA512 --gen-key
gpg --edit-key <mynewkey>
И, как указано выше, увеличьте -s2k-count, пожалуйста.
Это не только создает надежную деривацию парольной фразы, но также устанавливает сильную современную самоподпись ключа (--cert-digest-algo). Некоторое старое или ограниченное программное обеспечение GPG или PGP может не поддерживать новые собственные подписи SHA512; вместо этого вы можете использовать SHA256, но в эти дни я редко вижу проблемы с SHA512 (и они должны обновиться, если они у них есть).
Следуйте этому, устанавливая предпочтения для самых сильных значений по умолчанию, которые вы можете, например,
gpg --edit-key <mynewkey>
setpref AES256 CAMELLIA256 AES192 CAMELLIA192 AES CAMELLIA128 3DES SHA512 SHA384 SHA256 SHA224 SHA1 BZIP2 ZIP ZLIB
save
этот шаг безопасен, так как любая правильно настроенная отправляющая программа просто пойдет вниз по списку, чтобы найти первый соответствующий шифр, первый соответствующий хеш и первое соответствующее сжатие.
Открытые ключи
Обратите внимание, что фраза-пароль (вводится при генерации ключа, может быть изменена с помощью
passwd
команда в режиме --edit-key - это то, что шифрует закрытый ключ; он НЕ используется тем, кто использует открытый ключ, и ДОЛЖЕН храниться в секрете, как и сам закрытый ключ.
И кодовая фраза, и шифрование с открытым ключом, требующие как
Если вы хотите, чтобы у получателя были ОБА закрытый ключ И фраза-пароль, известная обеим сторонам (отправителю и получателю), вам нужно запустить GPG дважды, т.е.
gpg -v --cipher-algo CAMELLIA256 --s2k-mode 3 --s2k-digest-algo SHA512 --s2k-count 65600000 --symmetric test.txt
Сначала используйте симметричное шифрование, которое будет ВТОРОЙ расшифровкой ("внутренний" слой шифрования лука).
gpg -v --local-user <mykeyidToSign> --recipient <theirkeyidToEncryptTo> --sign --encrypt test.txt.gpg
Затем используйте шифрование с открытым ключом для ранее зашифрованного файла; обратите внимание, что это на test.txt.gpg и выводит test.txt.gpg.gpg
Получатель (или его автоматизированный процесс) сначала расшифрует часть открытого ключа с помощью своего закрытого ключа, а также проверит подпись. Затем, если это корпоративный или командный ключ, они могут направить сообщение предполагаемому получателю, у которого есть симметричный ключ.
Расшифровка (как публичная, так и приватная)
gpg -v --decrypt test.txt.gpg