美文网首页tip程序员代码改变世界
在Emacs中使用GPG加密文件

在Emacs中使用GPG加密文件

作者: 麦满屯 | 来源:发表于2015-03-10 18:05 被阅读1535次

    加密那点事

    谁都会有一些不想让其他人知道的东西,银行卡密码、网络登录帐号密码、邮件系统密码、写满了青涩回忆的日记等等,这些都是属于每一个人自己专有的信息。随着这两年关于“隐私泄露”话题为人们所关注,这些关乎个人经济、情感、安全的信息受到了越来越多的重视。而且网络密码越来越多的今天,密码存放的安全性也越来越重要。所以,”避免使用统一的密码“成为大家的共识。可是“人脑有极限啊,哪里能记得住那么多的密码?”,所以,把这些个人关键信息记录在一个安全的地方成为了很多人的选择。

    打造一个”安全的地方“的方法有很多,我这里要做的是使用神器”EMACS“配合GnuPG来实现文件的加密存放。Emacs是一个”为装成了编辑器的操作系统“,估计大家都多少有一点概念。那么GnuPG呢?

    GunPG

    维基百科的词条记录说明如下:

    GnuPG (英文:GNU Privacy Guard,简称:GPG)是一种加密软件,它是PGP加密软件的满足GPL协议的替代物。GnuPG依照由IETF订定的OpenPGP技术标准设计。GnuPG用于加密、数字签章及产生非对称匙对的软件。IETF正在为PGP协议进行标准化,标准化的PGP称为OpenPGP。当前版本的PGP及Veridis' Filecrypt与GnuPG或其他OpenPGP系统兼容。GnuPG是自由软件基金会的GNU计划的一部份,目前受德国政府资助。以GNU通用公共许可证第三版授权。

    GnuPG使用用户自行生成的非对称密钥对来加密信息,由此产生的公钥可以同其他用户以各种方式交换,如密钥服务器。他们必须小心交换密钥,以防止得到伪造的密钥。GnuPG还可以向信息添加一个加密的数字签名,这样,收件人可以验证信息完整性和发件人。 GnuPG不利用专利或其他方式限制软件或算法,就像IDEA算法一开始出现在PGP中一样。(可以通过下载相关插件在GnuPG中使用IDEA算法,不过如果在一些IDEA算法为专利的国家中使用,可能需要一份许可)。GnuPG同样也使用各种其他非专利的算法:

    • 分组密码:CAST5,Camellia,Triple DES,AES,Blowfish,Twofish
    • 非对称加密密码:ElGamal,RSA
    • 加密哈希:RIPEMD-160,MD5,SHA-1,SHA-2,Tiger
    • 数字签名:DSA,RSA

    GnuPG是一个混合加密软件程序,它使用常规对称密钥提高加密速度,使用公钥便于交换。通常使用一次性的收件人公钥用以加密会话。

    从上述词条介绍中可以看出:

    • GunPG是支持多种加密算法的加密工具
    • 支持对称加密(词条中写的是”分组加密“)和非对称加密两种加密方式
    • 具有较高的安全性(嗯,一个有1024~4096位长的密码(非对称加密方式下),确实不是轻易可以破解的,具体的,没有研究高大上的加密技术,哪位大侠深入的解释解释?)

    这应该是足够安全了。但是作为一个”选择障碍症“晚期患者,应该如何选择加密方式?对称加密(symmetric encryption)还是非对称加密(asymmetric encryption)哪个是我的菜?

    加密方法的选择

    从阮一峰的网络日志上可以看到:

    加密和解密使用同样规则(简称"密钥"),这被称为"对称加密算法"(Symmetric-key algorithm)。

    加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系即可,这样就避免了直接传递密钥。这种新的加密模式被称为"非对称加密算法"。

    所以,结合不同的使用场合,可以选择合适的加密方式:

    • 对于不需要进行交换的信息,例如我自己的银行卡密码、网络帐号信息,使用对称加密方法即可。关键是不能忘记了当初设定的密码(实在忘记了话,找个地方去哭吧)
    • 对于有重度信息交换需求的,可以选择使用非对称的加密算法。当然,由于GPG会做好相关加解密密钥的管理,所以做好数据备份非常重要。(密钥丢失了的话,那么对于当初加密后的文档就当浮云吧,挥一挥手,潇洒的走开,姿势会比较优美)。

    在Emacs中激活GPG的加密功能

    在Emacs近期版本中(24.4)默认提供了EasyPG包。可以实现对GPG软件的调用,实现文件的加解密功能。具体方法如下:

    1. 安装gpg软件

      Gnupg在Linux、Windows、Mac等主流操作系统上都有相关的发行版本。根据自己的操作系统类型进行自主选择吧。

    2. 在Emacs的配置文件中使用使用如下代码激活EasyPG包:

      (require 'epa-file)
      

    简单吧?配置了上面的代码后,将需要加密的文件扩展名改为 gpg 就可以自动调用gpg软件进行文件的加解密了。

    使用对称加密的方法

    保存文件的时候,Emacs会提示选择加密使用的密钥(Key),如果没有指定Key,那么就会使用“对称加密”的方法。问一次还好,如果次次都问,那就囧了。还好,我们可以吧它关掉。默认情况下,Emacs会使用对称加密的方法进行文件加密。

    (setq epa-file-select-keys 0)
    

    使用非对称加密的方法

    如果打算使用非对称加密方法,可以在需要加密的文件头添加

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

    其中your@email.address是使用gpg创建的密钥。

    使用非对称加密时密钥信息的备份<a id="sec-3" name="sec-3"></a>

    非对称加密的情况下,密钥的保存非常重要。通常情况下,必须做好密钥的备份以备不时之需。备份密钥的命令如下:

    gpg -o keyfile.pub --export "your@email.address"
    gpg -o keyfile.prv --export-secret-keys "your@email.address"
    

    恢复密钥时,执行如下指令即可:

    gpg --import keyfile.pub
    gpg --import keyfile.prv
    

    其他时间,小心的存放你的密钥文件吧。放到一个U盘里,放到你房间的墙角的纸袋里的信封里会是一个比较好的主意。唯一要注意的时,打扫房间的时候别被妈妈扔掉了哈!

    小结

    本文介绍了在Emacs中使用gpg加密文件的方法。上述代码在Windows 7 操作系统中配合Emacs 24.4,gpg4win 2.2.3下调试通过。写下这篇文章以备未来查询使用。

    参考文件:

    更新日志:

    • 2015-03-10 : 初始版本,完成了Emacs配合gpg完成文件加密的基础使用方法

    相关文章

      网友评论

      • 31b8ee5384bd:作者你好,我也是emacs的用户,也喜欢用org-mode记录笔记.今天也出现了要对org-mode进行加密的需求.按照你的教程,也配置好了.但是出现了个小问题,1)文档可以加密,但是还是出冒出要填密码的对话框;2)文档第一次解密需要写密码,后来我把emacs关掉,然后重新打开加密的文档,他就自己帮我解密了,没问我写密码. 不知道这个问题你是否遇到. 我的环境:windows7,emacs24.5.1,GPG4win 2.6
      • 2d032562e88b:用gpg2.2版本加密的文件保存时每次总弹出密码输入对话窗口,而gpg1.4能缓存密码就没此问题,
        可这样指定版本 (setq epg-gpg-program "path/to/gpg1.exe")。
        参考 http://www.gnu.org/software/emacs/manual/html_mono/epa.html 「4 Caching Passphrases」部分,
        视频 org-mode(四):文件加密easypg http://v.youku.com/v_show/id_XNDYwNjgxOTAw.html

      本文标题:在Emacs中使用GPG加密文件

      本文链接:https://www.haomeiwen.com/subject/uravxttx.html