gpg 不要求输入密码

gpg 不要求输入密码

我用 加密了一个文件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

相关内容