美文网首页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完成文件加密的基础使用方法

相关文章

  • 在Emacs中使用GPG加密文件

    加密那点事 谁都会有一些不想让其他人知道的东西,银行卡密码、网络登录帐号密码、邮件系统密码、写满了青涩回忆的日记等...

  • 文件加密工具GPG

    GPG GPG是一个基于命令行的工具,主要用于给文件进行加密。 一、生成密钥 在使用GPG之前,必须生成一对密钥。...

  • 安全加密(使用gpg工具实现公钥加密)

    对称加密算法 特性: 缺陷: 算法 密钥交换 应用程序: RPM 使用gpg实现对称加密 gpg -o file ...

  • GPG 基本命令总结

    GPG加密系统 一、基本命令使用 Use "gpg --full-generate-key" for a full...

  • 使用gpg加密和发送文件

    本文使用的操作系统是ubuntu 16.04 desktop版本 安装gpg 也许你会发现已经安装过gnupg了。...

  • gpg2加密解密文件

    加密一个文件 会生成readme.txt.gpg文件 解密一个文件 情况保存的密码,每次使用的时候再重新输入密码

  • 加密

    对称加密 加密一个文件 到192.168.75.5的主机上解密passwd.gpg文件 hash 算法保证数据的完...

  • 2.8 加密工具与散列

    《Linux Shell 脚本攻略(第 2 版)》读书笔记 crypt 加密文件 解密文件 gpg(GNU 隐私保...

  • 使用GPG加密标签

    GPG简介 在GPG工具出现之前,有一个PGP的加密工具(收费),后来由GNU组织开发出了一个新的PGP替代产品,...

  • GPG Suite for Mac(GPG加密软件) v2018

    专业的GPG加密软件哪里有?MacDown为大家带来gpg suite mac破解版,这是一个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