如何仅在打开.gpg文件时输入密码


17

(我了解以下内容对安全的影响,我对此表示满意。)

我的org目录中只有一个加密文件diary.org.gpg。我从未对其进行任何特殊配置,但仍然

  1. 每当我访问文件时,都会提示我输入加密密码。太好了
  2. 每当我保存缓冲区时,系统都会再次提示我两次输入密码。这是我的问题

请注意,我尚未进行任何配置以使其正常工作,因此有关代理或钥匙圈的任何答案都必须随附配置说明。

我想到将密码写在文件内的某个位置(在标头或文件末尾的注释处)。然后,每当我保存时,Emacs都可以读取缓冲区中的密码,并使用它代替提示我。但是当我开始研究这个问题时,我完全迷失了里面的某个地方epa.el

问:保存缓冲区时,如何从Emacs直接向加密系统/进程发送密码,而不是提示输入密码?

剩下的所有事情(在缓冲区中找到密码)我都可以弄清楚。当我试图了解Emacs如何与gpg交互时,我只是迷路了。

请注意,我在Ubuntu,Arch Linux和Windows上。这就是为什么我的第一个想法是以emacs为中心的解决方案的原因。
只要我仍然可以手动方式访问其中的文件,我就可以使用在Windows上不起作用的解决方案。


认为是这样:orgmode.org/worg/org-tutorials/encrypting-files.html#sec-5是您想要的(gpg代理)。
wvxvw 2015年

@wvxvw也许。它没有说有关保存的任何内容,因此我必须尝试一下。
马拉巴巴

老实说,GPG和相关程序的用户界面非常差。从界面或文档中很难理解它们的作用。但是我对的目的的理解gpg-agentssh-agent,一旦激活它,它就像只存储您拥有的密码一样。因此,无论是在打开文件还是在保存文件时都不会提示您输入密码(只要代理记住了密码),但是我认为这不会扩展到密码短语,这有点傻, 如果是真的。
wvxvw 2015年

您可能想要gpg-agent正确设置,以便它缓存密钥一段时间?:)
半滑舌鳎诺亚克

1
@wvxvw也许以前是这样?我发现上述工具的手册页相当详细,并且(CLI)界面通常是基于终端的程序所期望的。
legends2k 18/09/16

Answers:


12

使用密码和密钥加密

这不会将密码直接保存在文件中,但是会执行类似的操作而没有任何安全隐患,并且可以帮助您实现所需的功能。

  • 您需要使用非对称加密,以便您的密码与密钥环中的电子邮件ID相关联。

  • 将以下内容保存在.gpg文件顶部

-*- epa-file-encrypt-to: ("your@email.address") -*-

首次保存/创建文件时会提示输入密码。但是之后,每次打开保存的文件时,只会提示一次密码

唯一的问题是您一定不能丢失~/.gnupg/默认保存在其中的密钥环文件。

GPG设定

Emacs安装

在emacs中无需为此进行任何设置。

系统设置

但是,您确实需要为系统环境做好准备,并需要几个库才能使GPG功能正常工作。

在进行此设置时,我必须安装以下内容:

  • gpgme-1.5.3
  • libgpg-错误-1.17
  • libksba-1.3.2
  • libassuan-2.2.0
  • libgcrypt-1.6.2
  • gnupg-2.0.26
  • pinentry-0.9.0

我需要上面的一个或两个库,最后我安装了其他库,因为它们是强制性或可选依赖性。

一切安装完成后,执行

> gpg --gen-key

并为自己生成一个永不过期的密钥,并将其与您的真实姓名和电子邮件相关联。

生成的密钥将保存在您的~/.gnupg/目录中。

更改钥匙圈位置

您可以通过更改$GNUPGHOME,使用--homedir--keyring选项来更改密钥环的位置gpg

来自man gpg

--keyring file

将文件添加到当前的密钥环列表。如果文件以波浪号和斜杠开头,则将它们替换为$ HOME目录。如果文件名不包含斜杠,则假定其位于GnuPG主目录中(如果未使用--homedir或$ GNUPGHOME,则为“〜/ .gnupg”)。

请注意,这会将钥匙圈添加到当前列表。如果要单独使用指定的密钥环,请与--no-default-keyring一起使用--keyring。

将GPG与emacs一起使用

在emacs中,您只需创建带有.gpg扩展名的文件。例如,如果文件是原始文件auth.el,则可以将其重命名为auth.el.gpg

将此行放在文件顶部:

;; -*- epa-file-encrypt-to: ("your@email.address") -*-

请注意,我已使用elisp注释字符;;作为此处的示例文件auth.el.gpg

使用您在生成密钥时使用的确切电子邮件地址。

当您尝试保存它时,emacs将在缓冲区中显示以下提示:

Select recipients for encryption.
If no one is selected, symmetric encryption will be performed.  
- `m' to mark a key on the line
- `u' to unmark a key on the line
[Cancel][OK]

  u <GPG KEY> <YOUR NAME> (<YOUR GPG KEY NAME>) <<YOUR GPG KEY EMAIL>>

将点导航到包含键的行,点击m

将点导航到该[OK]按钮,然后单击<return>

现在,您可以保存文件并杀死该文件缓冲区。

下次打开该.gpg文件时,将仅提示您输入一次密码,然后连续保存将无密码提示。

更多信息


如果我丢失了密钥环文件,是否仍可以使用通常的密码打开加密文件,或者它会永远丢失?
马拉巴巴

@Malabarba我还没有尝试过,但我相信它会永远丢失。但是,好消息是,当您将电子邮件和密码与密钥环元素相关联时,该文件仅生成一次。在您第一次添加新的密匙环元素(更多的密码和电子邮件对)之前,不会对其进行修改。我只是将该文件的备份保存在USB密钥和Dropbox中,并确保密码超级安全。
考沙尔·莫迪

我已经测试过对称加密的文档可移植。我在Linux的emacs中加密了某些内容,然后使用许多可用于Windows的免费GPG解密器工具之一将其打开。它要求输入密钥环,并将其指向我在Dropbox中的备份,并且可以正常工作。
2015年

仅供参考:是的,丢失密钥文件意味着您也将永久失去对加密文件的访问权限。您需要密码和私钥文件来解密它们。这是用于非对称加密的GPG安全模型的一部分。
泰勒(Tyler)

看来我毕竟必须回答这个问题。您知道如何更改密钥环文件的位置吗?
马拉巴(Malabarba)

9

原来我要做的就是

(setq epa-file-cache-passphrase-for-symmetric-encryption t)

该解决方案可在Linux和Windows上运行,并且由Ted和Michael在help-gnu-emacs中提供。


很高兴知道这对您有效!我在Emacs配置中使用此设置已有多年,但是在某些时候它刚刚停止工作。我怀疑这与我对gnome-keyring-daemon(它也充当gpg密钥环)的使用有关。
辣椒粉

4
从文档字符串中获取epa-file-cache-passphrase-for-symmetric-encryption:“请注意,如果您使用GnuPG 2.0,则此选项无效。”
Wilfred Hughes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.