Я хочу проверить, верна ли парольная фраза моего user-id, расположенного внутри файла. Я сохранил свою парольную фразу в файле (/home/user/.gpg_pass.txt), чем использую ее как:

gpg --verbose --batch --yes --pinentry-mode loopback \
    --passphrase-file=/home/user/.gpg_pass.txt
    --decrypt <file>

Прежде чем использовать эту команду, я хочу убедиться, что парольная фраза внутри файла введена правильно. Пробовал, не помогло:

cat /home/user/.gpg_pass.txt | gpg --dry-run --passwd <key_id>


От man из gpg:

--passwd user-id
       Change the passphrase of the secret key belonging to the certificate 
       specified as user-id.  This is a shortcut for the sub-command passwd  
       of  the edit  key  menu.  When using together with the option --dry-run 
       this will not actually change the passphrase but check that the current 
       passphrase is correct.

Когда я вхожу:

$ gpg --dry-run --passwd <key_id>

Два раза появляется следующее окно. Я ввожу кодовую фразу (если введена неправильная парольная фраза, в GUI-консоли отображается Bad Passphrase (try 2 of 3)):

 ┌────────────────────────────────────────────────────────────────┐
 │ Please enter the passphrase to unlock the OpenPGP secret key:  │
 │ "Alper <alper@gmail.com>"                                      │
 │ 3072-bit RSA key, ID 86B9E988681A51D1,                         │
 │ created 2021-12-15.                                            │
 │                                                                │
 │                                                                │
 │ Passphrase: __________________________________________________ │
 │                                                                │
 │         <OK>                                    <Cancel>       │
 └────────────────────────────────────────────────────────────────┘

Вместо того, чтобы вручную вводить парольную фразу в GUI внутри консоли, может ли она быть передана в gpg --dry-run --passwd <key_id> и может ли ее вывод быть возвращен, проверяя, является ли данная парольная фраза правильной или нет?


Связано: https://stackoverflow.com/q/11381123/2402577

0
alper 19 Дек 2021 в 19:00
Вы пробовали gpg --batch --pinentry-mode loopback --passphrase-file=/home/user/.gpg_pass.txt --dry-run --passwd your-keyid? Поскольку на странице руководства также говорится, что это параметры, позволяющие получить пароль из файла...
 – 
dirkt
22 Дек 2021 в 14:06
Ах, когда файл имеет неправильную парольную фразу, вывод: gpg: error changing the passphrase for keyid Bad passphrase. Если все правильно, то вывода нет. Так что это был ответ, который я искал. Пожалуйста, не стесняйтесь преобразовать ваш комментарий в ответ, чтобы я принял его.
 – 
alper
22 Дек 2021 в 14:26
Не забудьте «безопасно удалить» файл .gpg_pass.txt после эксперимента. Очень неразумно помещать пароль в виде открытого текста в файл. Возможно, он уже был скопирован несколько раз в вашей системе в места, о которых вы даже не знаете!
 – 
elmclose
22 Дек 2021 в 17:21
Какой самый безопасный способ сохранить файл .gpg_pass.txt с паролем gpg?
 – 
alper
22 Дек 2021 в 17:34
1
По крайней мере, держите его в менеджере паролей (lastpass, bitwarden...). Если вы копируете и вставляете пароль, вы должны очистить буфер обмена после использования. Хакеры любят регулярно проверять ваш буфер обмена. Рассмотрите возможность использования цифрового хранилища (например, veracrypt), куда вы можете перетаскивать конфиденциальные файлы и папки.
 – 
elmclose
22 Дек 2021 в 18:30

1 ответ

Лучший ответ

Пытаться

gpg --batch --pinentry-mode loopback --passphrase-file=/home/user/.gpg_pass.txt --dry-run --passwd your-keyid

Поскольку на странице руководства также говорится, что это параметры, позволяющие получить пароль из файла.

Обратите внимание: если вы хотите сделать это из сценария, я предполагаю, что он устанавливает код возврата в зависимости от результата, поэтому проверьте код возврата ($? в большинстве оболочек, используйте echo $?, если вы хотите проверить вручную).

1
dirkt 22 Дек 2021 в 14:31