Quick MenuSite |
Main /
GPG关于加密你不应该为你的信息在储存和传送过程中的安全而担心。 最近两三年来,Gmail 一直报告有攻击事件,而且往往称攻击来源于中国(一、二)。而实际上,有消息称,实际上是美国政府要求在 Gmail 中保留的后面,帮了中国黑客的忙(Link)。Gmail 已经是最受信任的邮件服务商了,如果 Gmail 都经常被攻破,别的邮件服务商的就更难说了。而如果是国内的服务商,如果 Party 想要什么,几乎没有拿不到的,除非你不想干了。 从另外一个角度来说,无论是网页上的邮件服务,还是通过客户端连接的邮件服务器,有很多都是在没有加密的情况下传送的(采用 http 的网页,或者是没有打开 ssl 的服务器)。这意味着第三方不需要攻击你的邮箱,直接在传送的过程中就可以获取你的信息。从技术上来说,所有 http 开头的网址都会有这个问题:当你提交密码、发送或者接收任何信息的时候,你的信息所经过的通道上的任何一台机器都可以轻易的截取和查看你的信息,而由于互联网分散化的架构,你的信息传送通路是无法控制的。 除了传送过程中可能出现的问题,信息在保存的过程中,也可能出现问题。南开校园里过去有一个 BBS 叫异域桃园(后来的 yyty.org),据称被学校直接到宿舍里拿走了机器,合并到官方的 BBS 里面去,当然这些都是传说,我没有亲见。不过本拉登同学的例子和陈冠希老师的例子,大家应该都是耳熟能详的。你好端端存在自己机器上的东西,并没有人保证就不会被拿走,或者是在你不知情的情况下获取到,这还不算U盘丢失之类的事件。 加密是其中一种答案。现代密码学的发展使得普通人也可以使用加密技术,而不需要背诵复杂的密码表,或者设计需要两块拼在一起才能确认身份的装置。你需要的是设置一个密码(或者是一个代表密码的东西,不一定是一串字符),然后计算机算法会按照特定的方式帮助你加密你的信息。而自由软件的发展,使得你可以按照自己想要的方式来使用这些软件。 这篇文章中只讨论了信息传送过程中的保护和存储过程中的保护,其中假定你的电脑是受自己控制的(没有中病毒或者木马,也没有被用其他的方式监控,杀毒可以试试 AVG Free),另外你的密码也是受到自己控制的(没有遗忘,或者太容易了以至于很容易被猜到,听说 KeePass 管理密码不错)。 PGP/GnuPG 的历史PGP / GnuPG 是一种签名和加密工具,主要用于邮件通讯过程中的签名和加密。它可以帮助你确认邮件确实是对方发送过来的,在发送的过程中没有被篡改;也可以帮助你对往来邮件进行加密,防止通讯内容被第三方获取。GnuPG 是跨平台的。 “为了帮助政治激进分子们”(美国也有这帮人⋯),Phil Zimmermann 于 1991 年发布了 Pretty Good Privacy(意在“非常好的隐私”,简称 PGP),结合了快速的和健壮的加密算法。这是一个源代码开放的软件,在一帮黑客的帮助下,很快进行了改进,得到了一个可用的版本。由于 Phil 在美国,而美国法律规定强加密的软件出口是受到控制的,因此只有美国人自己能享受到这个待遇。但是美国的法律有一个“漏洞”——出版物是不受控的,所以 MIT 出版了一整本源代码,然后美国之外的黑客再把这本书扫描进电脑,这样 PGP 就有了一个国际版本。 不过 Phil 后来选择将 PGP 作为一个商业软件来开发,并且 PGP 中使用了很多专利算法,这使得它的使用受到了一些限制。到了 1997 年之后,几个基础加密算法的专利过期,使得这件事情出现了转机。大神 Richard Stallman 请求欧洲黑客们实现一个 PGP 的公开版本,因为美国黑客参与这样的工作还是受到法律限制的。之后 Werner Kock 接手了这个工作,发布了 GnuPG (GNU Privacy Guard,GNU 隐私卫士)。于此同时,OpenPGP 工作组制定了相关的公开标准。最终,1999 年,RSA 专利也过期了,公钥加密系统的主要障碍消失了。这一年,他们发布了 GnuPG 1.0.0 版本,德国政府资助了 GnuPG 的开发。Werner 后来也推出了相关的商业软件 g10。 当前,GnuPG 的主要版本是 1.4.11 和 2.0.17。2.x 版本主要是增加了 S/MIME 加密模式(wikipedia)。 TrueCrypt 的历史硬盘信息加密的软件有很多,方式也有很多种。你可以选择加密某个文件(如果只是一次性加密,或者只是加密少量的文件,可以用压缩软件,推荐 7-ZIP;NTFS 文件系统也内置了无缝文件和文件夹加密,在未登录的情况下无法打开对应的文件/文件夹)。微软的 Windows 在 Vista 以后版本的旗舰版标配了 Bitlocker,而 Mac OS 配置的是 FileVault,他们都可以用来对整个硬盘内容进行加密。TrueCrypt 可用来对特定的盘符或者整个硬盘进行加密,也可以创建虚拟的加密盘,在需要的时候进行加载。选择 TrueCrypt 是因为它是开源、跨平台的自由软件,根据2010年的一则新闻,FBI 用 12 个月破解一个用 TrueCrypt 加密过的硬盘,没有成功。 TrueCrypt 的前身是 Paul Le Roux 1997 年发布的 E4M,后来 Paul 不再更新 E4M,而是改为开发商业软件 DriveCrypt(为什么这几个家伙后来都搞商业软件去了?老外也需要养活自己啊)。2004 年基于 E4M 的 TrueCrypt 1.0 发布,2006 年博客Blog on 27th Floor就对其进行了关注,之后小众软件也进行了介绍,目前 TrueCrypt 已经发展到 7.0 版本。 原理TrueCrypt 的加密方式比较简单,基本上不需要解释。比较特别的地方是 TrueCrypt 除了可以用密码加密,也可以指定任意一个文件作为“密钥文件”,用来代替密码或者与密码联合使用。这样一方面提高了加密强度,另外一方面,也为密码的选择提供了多种可能性。 GunPG/PGP 采用的加密方式虽然也并不是新东西了,但大家可能接触的不多,所以还是啰嗦几句。以往我们的加密通常采用的对称加密——也就是用同一个密码加密和解密。这种方式在本地使用没有问题,因为加密和解密都是同一个人。如果用在通讯领域,就面临一个密码泄漏的问题——如果密码泄漏的话,加密也就没有意义了。因此 GnuPG 采用 RSA 加密体系,这是一种非对称的加密方式。简单的说,你生成一对秘钥,私钥由你自己保存,而公钥可以公开给需要发送信息给你的人使用。对方使用这个公钥加密的内容,只有你自己用私钥可以打开;你自己用私钥加密的内容,只有用你的公钥可以打开。这个情况下,你只需要公开你的公钥,对方就可以用你的公钥给你写加密之后的信件,这个新建只有你可以阅读;如果双方交换了各自的公钥,就可以实现双方相互之间的加密通讯了。 GnuPG 的这个加密体系里面,比较重要的一点就是没有一个核心的授权机构,所有的信息传递都是分散化、社会化的。你可以通过任何渠道把自己的公钥传递给你的朋友,也可以把你的公钥发布到公共服务器上面(比如 MIT 的 Key Server),让大家都可以获取到。在安全性受到威胁的情况下——比如说可能会有人用假的公钥替代你的真的公钥,这样你朋友用假的公钥发给你的加密邮件,如果被截取的话,就可以被攻击者阅读,而你反而阅读不了——你可以请两个人都信任的第三个朋友,双方都有他的公钥,他手里也有双方的公钥,他可以用自己的私钥给你或者朋友的公钥进行签名,来保证这个公钥的可信度——这和一个社会的真实运转的情况是很类似的,信任通过一定的传递渠道得到延续,而不需要一个核心的机构来认证。 使用GnuPG 和 TrueCrypt 都是跨平台的工具,在很多平台都可以获取到。鉴于他们都是牵涉到信息安全的工具,一般建议只在官方网站上面下载。 TrueCrypt 本身是一个独立的工具,使用起来并不复杂,网上有很多教程(比如说这里、这里)。当要加密的数据比较少的话,建议不要做盘符加密,而选择虚拟盘符加密。TrueCrypt 会生成一个加密文件,加载之后可以变成一个硬盘,卸载之后把文件可以拷贝在U盘带着到处走。 GnuPG 相对来说复杂一点点,因为 GnuPG 本身只是一个信息加密工具,还需要配合各个平台的邮件客户端,才能真正用在邮件往来中。在 Windows 平台下,虽然 Gpg4win 安装包中提供了一个 Claws-Mail 的邮件工具,毕竟不太顺手。曾经有一个非常好的 Firefox 插件 FireGPG,可以和 Gmail 配合使用,可惜目前已经不再更新。所以,ThunderBird + Enigmail 组合是比较可行的方案。Exaos 有一篇非常好的介绍文章,《GnuPG 与邮件加密》,讲解了用 ThunderBird + GnuPG 移动版组建工作平台的方法,使用方法是和普通版一模一样的,注意其中的软件链接版本有一点点过时,下载的时候自己注意最近的版本链接就 OK。 如果把 ThunderBird + GnuPG 移动版和 TrueCrypt 结合起来,你获得了一套可移动的、本地储存和信息传送都加密工作系统。当你离开电脑的时候,数据被 TrueCrypt 保护着;当你在电脑面前向外界发送信息的时候,数据被 GnuPG 保护着,感觉相当的棒。 链接 |