请善用GPG安全你的邮件和文件

  虽说在伟大的天朝,互联网无隐私——很多互联网公司有着强大的控制欲和窥探欲(PC软件没事就把你硬盘扫描的吱吱作响,手机一个最简单的软件都要检查一下软件列表,或者拷贝一下通讯录等),要么公司安全意识淡薄(密码不加密不加盐,没防火墙各种端口打开等),同时很多公司又无底线的将这些信息在网上兜售贩卖,ZF以国家安全为由立法强制软件和互联网公司提供后门和协助解密……
GPG
  针对这些问题,我们普通庶民还是要提高警觉的,不是说在互联网上支付转账的时候才涉及到网络隐私和安全,互联网的安全无处不在,你的信息任何时候都可能会被滥用于诈骗、恶意推送等,如果你看过一些社会工程学的东西,哪怕泄露最不起眼的一点信息有时候也会让你毛骨悚然。

  当然,我们平常在Cyber Life的时候,适当的注意和加强防护意识,还是可以将这些风险大大降低的,比如:

  • 尽量使用开源操作系统和开源软件,比如Linux和FreeBSD,以及各类开源的替代软件。这些系统和软件由于是开源的,所以受到全世界用户的监督,而且不以任何一个国家和政府所牵制。这同时也向大家暗示着:闭源的系统和软件的好用,也是有安全方面的代价的。
  • 对于没有开源实现的软件,就将这些软件放到虚拟机中隔离起来,比如企鹅和阿里类的软件。
  • 各种账户和密码即使使用相同的邮箱注册,也不要使用相同的密码,防止某一家泄露造成撞库的危险。推荐个人密码管理器KeePass
  • 对于网络服务,如果是重要的数据,尽量选择国外的大公司的产品,比如Gmail,Dropbox等。(访问不了的话想办法访问)
  • 对于重要的数据和邮件,请签名和加密。 最后一点,是本文想介绍的。即使国内的邮箱提供商表述的,邮件在传输过程中是加密的,用户密码也是加密的,内部员工也不可逆的,但即使是这样,你在输入框中输入的是实实在在的账户和密码,谁知道后台会不会记录或者其它猫腻呢。小心使得万年船。

  GPG是GNU实现的一个十分流行的加密解密工具,可以用于文件的加密和签名。其具体的设置和使用在阮一峰的GPG入门教程中描述很清楚了,这里就不再啰嗦了(另外GPG中还可以添加个人头像哦!)。这里只是想简单的解释一下:

  • 每一份key的产生有公钥和私钥两部分,任何一个数据如果用公钥加密,只能有对应的私钥解密;如果用私钥加密,只能对应的公钥解密。
  • 公钥是发布到网上的,任何人都可以下载的,私钥是你个人保存的。
  • 如果你将文件用自己的私钥加密,那么这个文件任何人都可以用你公布的公钥解密,这个过程就是数字签名和验证。
  • 如果别人用你公布的公钥加密一个文件发送给你,那只有你用自己的私钥解密这个文件,这个过程就是加密和解密。

  在邮件中,如果你想告诉别人你发的邮件确实是你本人所为,别人接受到的邮件跟你发送的内容是一致的(没有被篡改),那么你需要对你的邮件进行数字签名。如果你发送的内容(或者附件)是不想被别人看见的,那么你需要将该内容用接受邮件的人的公钥进行加密,那么只有真正的接受者才能解密得知邮件的真正内容。

  流行的邮件客户端Thunderbird中默认就安装了Enigmail插件,只需要简单的设置,就可以用ThunderBird发送签名和加密邮件了。网络也有很多教程,此处也不详述,系统(本人Gentoo)设置需要注意以下一些内容:

  • 很多系统默认使用gnome-keyring-common接管密码输入,而Enigmail明确表示不支持gnome-keyring,所以需要删除(或者转移)/etc/xdg/autostart/gnome-keyring-gpg.desktop,同时在$HOME/.gnupg/gpg-agent.conf中添加如下内容:

    1
    pinentry-program /usr/bin/pinentry-gtk-2
  • 你的passphase可以被缓存一段时间,不用每次都输入,这时候需要使用gpg-agent,请在$HOME/.xprofile添加:

    1
    eval $(gpg-agent --daemon) &

然后你就可以用Thunderbird安全的和别人通信啦!
发送界面:
发送界面

  接收结果:
接收结果

  最后,我还想说个插曲:
  当时在TP工作的时候,国外安全机构发现了我司路由器的一个漏洞,然后发邮件给我司技术支持的同事,问漏洞的内容是否需要加密传输还是直接传输,结果我司同事回复说直接发过来吧。
  要知道,在安全领域发现漏洞的时候,是最先向厂商报告,等一段时间或者厂商修复后,才可以对外公布的。所以当时这封邮件如果被其他人发现或者截获,后果将不可设想(虽然这种情况的概率比较低)。但这也显现了技术支持的不专业!

  如果是macOS的工作环境,想要安装这个建议直接使用brew install gnupg2,因为gnupg2的工作依赖其他部分组件,而这一点homebrew直接帮你做好了。
  再次公布我的GPG指纹:

((( A251 3E22 BE65 E709 B1DD 5BE5 D2D3 FB76 C0CC 5261 )))

参考