2

Я ищу помощь, чтобы выяснить, как связать секретный ключ с парольной фразой для шифрования файла с помощью GPG. Я проверил много опций (--encrypt, --sign, --recipient, --symmetric и т.д.), Но во всех из них мне удалось расшифровать файл, набрав только парольную фразу, даже на машине, на которой я надеваю не имеют ни открытого, ни закрытого / секретного ключей.

Есть ли способ заставить пользователя иметь секретный ключ и попросить ввести кодовую фразу?

Я открыт для любой другой идеи, которая заставляет двойную проверку безопасности расшифровывать защищенный файл.

Я использую GnuPG версии 2.0.9 поверх Linux.

Мои тестовые командные строки включали:

Я пытался защитить свой файл, используя следующие синтаксисы: ###

gpg --encrypt --symmetric --sign file.txt

gpg --symmetric --sign file.txt

gpg --symmetric --recipient file.txt 

gpg -sb file.txt 

gpg --default-key AFAEF918 --encrypt file.txt 

Во всех попытках защищенный файл был расшифрован с использованием только ключевой фразы, даже на одном компьютере без открытых / закрытых ключей.

/root/.gnupg/secring.gpg
сек 1024D/AFAEF918 2016-02-12
Пользователь uid TEST (ключ TEST Dev GPG)
ssb 2048g/50B959DD 2016-02-12

Спасибо,

1 ответ1

5

Начните с чтения 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .