欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

在Linux系统中加密邮件的方法

程序员文章站 2023-11-14 23:14:04
如果你一直在考虑如何加密电子邮件,那么在众多的邮件服务和邮件客户端中挑来挑去一定是件头痛的事情.可以考虑两种加密方法:SSL或TLS加密会保护发送到邮件服务器的登录名和密码... 14-10-31...

在Linux系统中加密邮件的方法

如果你一直在考虑如何加密电子邮件,那么在众多的邮件服务和邮件客户端中挑来挑去一定是件头痛的事情.可以考虑两种加密方法:ssl或tls加密会保护发送到邮件服务器的登录名和密码.gunpg是一款标准的、强大的linux加密工具,可以加密和认证消息.如果你可以管理自己的gpg加密,并不考虑第三方工具,那它就够了,其它的我们将在稍后讨论.

即便加密了消息,你仍然会暴露在流量分析中,因为消息头部必须是明文形式.所以需要另一款比如tor network来隐藏你在互联网上的足迹.我们会看看各种邮件服务和客户端,以及其中的利弊.

忘掉web邮件

如果你使用过gmail, yahoo,hotmail或者其它web邮件提供商的邮件服务,那就忘掉它们吧.你在web浏览器里输入的任何信息都会暴露在javascript攻击中,而且无论服务提供商提供什么保障都是过眼云烟(译者注:此说法靠谱否?).gmail,yahoo和hotmail均提供ssl/tls加密来防止消息被窃听.但是它们不会提供任何保护来阻碍它们自己的数据挖掘,因此并不会提供端到端的加密.yahoo和google都声称将在明年推出端到端的加密.对此我持怀疑态度,因为如果一旦它们的核心业务数据挖掘受到干预,它们就什么都干不了了.

市面上也有各式各样的声称可以为所有类型的电子邮件都能提供安全加密的第三方邮件加密服务,比如virtru和safemess.对此我依旧表示怀疑,因为无论是谁,只要持有加密秘钥就可以访问你的消息,所以你还是要依赖于对他们的信任而不是技术.

对等消息可以避免许多使用集中化服务中的缺陷.retroshare和bitmessage是两种流行的范例.我不知道它们是否如实所述,但这么说肯定有其可取之处.

那anddroid和ios又如何呢?假设大部分的android和ios应用都没有权限获取你的消息的话,那就是最安全的.不要照搬我说的 -- 在应用将要安装到你的设备上时麻烦读读相关的服务条款并检查所要求的权限.即便在初次安装时它们的条款是可接受的,也记得单方面的条款改变是行业的标准,所以做最坏的打算是最安全的.

零知识(zero knowledge)

proton mail是一款全新的邮件服务,声称采用零知识就可以实现消息加密.认证和消息加密分为两个单独的步骤,proton遵照swiss隐私条款,它们不会通过日志记录用户的活动.零知识加密提供真正的安全.这代表只有你拥有你的加密秘钥,如果你丢了它们,你的消息就无法恢复了.

也有许多加密电子邮件服务声称可以保护你的隐私.认真阅读细则,查看红色标注的地方,比如受限的用户数据采集,与好友分享,与执法部门的合作等.这些条款暗示它们会收集和共享用户数据,拥有权限获取你的加密秘钥,并读取你的消息.

linux邮件客户端

一款独立的开源邮件客户端,比如, mutt, claws, evolution, sylpheed和alpine,可建立你自己控制的gnupg秘钥,给你大部分的保护.(建立更安全的电子邮件和web浏览的最容易的方式是运行tails live的linux发行版.详情查看通过 tor、tails 和 debian 在网上保护你自己。)

无论你使用的是tails还是一款标准linux发行版,管理gnupg的方法是相同的,所以下面来学习如何使用gnupg加密消息.

使用gnupg

首先,熟悉一下相关术语。openpgp是一种开放的电子邮件加密和认证协议,基于菲利普·齐默曼的pretty good privacy (pgp)。gnu privacy guard (gnupg or gpg)是openpgp的gpl实现。gnupg使用对称公钥加密算法,也就是说会生成一对密钥:一个任何人都可以用来加密发送给你的消息的公钥和一个只有你自己拥有用来解密消息的的私钥。gnupg执行两个分开的函数:数字化签名消息以证明消息来自你和加密消息。任何人都可以读到你的数字签名消息,但只有那些与你交换密钥的人才可以读取加密消息。切记千万不要与他人分享你的密钥!只能分享公钥。

seahorse是gnupg对应的gnome图形化前端,kgpg是kde图形化的gnupg工具。

在Linux系统中加密邮件的方法

kgpg为了创建了管理加密秘钥提供了一个很好的gui界面.

现在我们执行生成和管理gunpg密钥的基本步骤。这个命令生成一个新的密钥:

$ gpg --gen-key

这个过程有许多步骤;对于大部分人来说,只需要回答所有的问题,遵循默认设置就好。当你生成你的密钥时,记下来并将其保存在一个安全的地方,因为如果你丢掉了它,你就不能解密任何消息了。任何关于不要写下密码的建议都是错误的。我们中的大部分人要记住许多登录名和密码,包括那些我们几乎从来不会用到的,所以全部记住它们是不现实的。你知道当人们不写下他们的密码时会发生什么吗?他们会选择生成简单的密码并不断重复使用。你存储在电脑里的任何东西都潜在地会被攻击窃取;一个保存在上锁的柜子里的小本是无法通过渗透获取的,除了物理的入侵,当然入侵者要知道如何去寻找它。

我必须叮嘱你们去弄清楚如何使用新密钥去配置邮件客户端,因为每一个都不同。你可以按照如下操作列出你的密钥:

$ gpg --list-keys/home/carla/.gnupg/pubring.gpg------------------------------pub   2048r/587dd0f5 2014-08-13uid                  carla schroder (my gpg key) sub   2048r/ae05e1e4 2014-08-13

这能快速地获知像密钥的位置、名称(也就是uid)等必要信息。假设你想要把公钥上传到密钥服务器,可以参考实例操作:

$ gpg --send-keys 'carla schroder' --keyserver http://example.com

当你生成了一个新的密钥要上传到公钥服务器,你也应该生成一个撤销证书。不要推迟到以后做———当你生成新密钥时就生成它。你可以给它取任意的名称,比如使用一个像mycodeproject.asc的描述性名称来代替revoke.asc:

$ gpg --output revoke.asc --gen-revoke 'carla schroder'

如果你的密钥变得不可靠了,你可以通过向keyring导入撤销证书来撤销它:

$ gpg --import ~/.gnupg/revoke.asc

然后生成并上传一个新的密钥来取代它。当它们更新到密钥数据库时,所有使用旧密钥的用户都会被通知。

你必须像保护私钥一样保护撤销证书。将它拷贝到cd或usb存储器中,并加锁,然后从电脑中删除。这是明文密钥,所以你甚至可以将它打印出来。

如果你需要一份复制粘贴的密钥,比如在允许将密钥粘贴到网页表格中的公用keyring中,或者是想将公钥发布到个人站点上,那么你必须生成一份公钥的ascii-armored版本:

$ gpg --output carla-pubkey.asc --export -a 'carla schroder'

这会生成可见的明文公钥,就像下面这个小例子:


复制代码
代码如下:
-----begin pgp public key block-----
version: gnupg v1
mqenbfprn4gbcadeexkdrdov3afxl7qqq+i61rmozkwftxljlnbavczpawkwrc3l
irweejiy2vyomq2zxpbldwgejvq5h7/uyjusp8h2ufijt01no1pqjmwaomcs5yts
[...]
i+lnrbp23hevgadnsbwqa8mazguwbietqp7jskjme+ukalm8jy8mdwdys4nmhzy=
=ql65
-----end pgp public key block-----

相信上面的教程应该使你学会如何使用gnupg。如果不够,the gnupg manuals上有使用gnupg和相关全部配置的详细信息。