我用 加密了一个文件gpg -c <file>
并关闭了终端。过了一会儿,我尝试用它解密它gpg <file>
,它解密了它,没有要求密码。这正常吗?如何保证 gpg 会要求输入密码,即使在我的同一台计算机上?
答案1
这是正常现象,gpg
现在用于gpg-agent
管理私钥,并且代理将密钥缓存一定时间(默认情况下最多两个小时,十分钟不活动超时)。
要更改默认值,请创建或编辑名为 的文件~/.gnupg/gpg-agent.conf
,并使用以下条目:
default-cache-ttl
指定缓存条目在上次使用后保留的时间,以秒为单位(默认为 600);max-cache-ttl
指定缓存条目保留的最长时间,以秒为单位(默认为 7200)。
例如:
default-cache-ttl 300
max-cache-ttl 1200
将分别将它们更改为 300 秒和 1200 秒。
更改这些后,您需要重新加载配置:
gpgconf --reload all
答案2
要使 gpg >=2.1 始终要求输入密码,请使用 运行它gpg --pinentry-mode loopback
。
要使 gpg >=2.2.7 始终要求--symmetric
( -c
) 加密的密码,请使用 运行它gpg --no-symkey-cache
。
答案3
GnuPG 2.2.15
--symmetric -c Encrypt with a symmetric cipher using a passphrase. The default sym- metric cipher used is AES-128, but may be chosen with the --cipher-algo option. This command may be combined with --sign (for a signed and sym- metrically encrypted message), --encrypt (for a message that may be decrypted via a secret key or a passphrase), or --sign and --encrypt together (for a signed message that may be decrypted via a secret key or a passphrase). gpg caches the passphrase used for symmetric encryption so that a decrypt operation may not require that the user needs to enter the passphrase. The option --no-symkey-cache can be used to disable this feature.
# encrypt files
gpg -c --no-symkey-cache file.txt
# decrypt files
gpg --no-symkey-cache file.txt.gpg
使用 --no-symkey-cache 选项,它不会缓存您的密码
答案4
强制gpg
忘记所有缓存的密码
如何保证 gpg 会要求输入密码,即使在我的同一台计算机上?
快速回答:
gpg-connect-agent reloadagent /bye
细节:
如果您的目标只是测试以确保 1) 文件实际上受密码保护,并且 2) 您在保护文件时实际上知道并正确输入了密码,那么您可以强制 gpg 忘记缓存的密码并请求像这样再次解密密码(就像@wisbucky 在这条评论中所说的):
# force gpg to forget your temporarily cached passwords
gpg-connect-agent reloadagent /bye
然后,您可以像这样解密文件,它现在会再次要求您输入密码!:
# decrypt a gpg-encrypted file
gpg myfile.txt.gpg
这假设myfile.txt
之前使用 进行了密码加密gpg
,如下所示:
# encrypt myfile.txt into myfile.txt.gpg
gpg -c myfile.txt