个人数据安全 (2):保护即时通讯隐私
一般来说,即时通讯(IM)软件都会对客户端到服务器的通讯进行加密,对用户隐私数据安全提供一定程度的保障。但也有例外,比如MSN就完全不加密。所以一些小公司将MSN作为主要IM工具是极为不明智的,借助Wireshark等简单工具对员工间甚至员工和客户间的对话内容进行监听易如反掌,极容易造成商业机密的泄漏。微软坚持使用明文MSN协议的目的让人难以捉摸,其中恐怕难免混有政治因素。使用MSN Shell插件的加密功能或者SSH隧道转发等手段,也可以不同程度地间接加密MSN通讯数据。
即使是那些号称使用加密协议的IM服务,也并不真的就百分之百地安全,在国内的网络环境下尤其如此。一直饱受质疑的QQ(1、2)自不必说,国内其他的IM运营商也多少存在类似的境况。这种行为固然可恶,但作为国内的运营商,若不如此便无法生存——饭否便是个极好的例子。即便是Google,也干出了中文版Gtalk不开启加密(1、2)这样的事情来。如果不采取一些特别的措施,无论你愿不愿意,正如题图一样:The big brother is watching you!
Why?
为什么即使是采用加密协议,仍然逃不过监视?那就要先看看通讯过程中哪些内容被加密,以及是如何被加密的。各种IM系统的加密方式林林总总,有的采用标准的SSL/TLS,有的则自行打造。但总体上说大致还是脱不开SSL/TLS的主体脉络,也就是先用非对称加密交换对称密钥,再用对称密钥对链路上的数据进行加密,同时辅以身份验证。其基本原理可以参见本系列的第一篇。
通常,在发送方和接收方客户端连接到服务器时首先会和服务器协商对称密钥。之后,一条聊天消息从发送到接受大致可以分为一下几个阶段:
所以,被加密的实际上是消息在服务器和客户端之间的传输链路,以防在传输过程中遭到第三方(比如GFW)监听。特别需要注意的是在第2步,消息会在服务器被还原为明文。从功能角度上说,这么做的优势很明显,运营商在服务器端可以提供更多的功能。例如Gtalk的服务器端存储聊天记录,还有QQ的聊天记录漫游,以及对spam消息进行分拣过滤等等。当然,从保护用户隐私的角度考虑,运营商是不应该将明文聊天记录泄漏出去的。然而嘛……大家都知道。
Hosted.IM——搭建自己的IM服务器
既然整个环节的漏洞出在IM运营商处,那么不妨搭建自己的IM服务器吧 这里介绍的由ProcessOne提供的Hosted.IM是一个免费的XMPP托管服务,只需要一个域名即可。提供的功能包括群组聊天、文件传输、域间互通等等,详细说明参见这里。
Hosted.IM的用户界面极精简,配置的过程很简单。首先你得在Hosted.IM上注册帐号,通过邮箱验证后,还需要在自己的域名服务商处为自己的域名配上如下的DNS条目(强烈建议使用国外的域名服务,国内的域名服务很多都不提供SRV设置入口):
_xmpp-client._tcp.your.name. IN SRV 20 0 5222 xmpp2.hosted.im. _xmpp-client._tcp.your.name. IN SRV 10 0 5222 xmpp1.hosted.im. _xmpp-server._tcp.your.name. IN SRV 10 0 5269 xmpp1.hosted.im. _xmpp-server._tcp.your.name. IN SRV 20 0 5269 xmpp2.hosted.im. _jabber._tcp.your.name. IN SRV 20 0 5269 xmpp2.hosted.im. _jabber._tcp.your.name. IN SRV 10 0 5269 xmpp1.hosted.im. _vhreg_auth.your.name. IN TXT "c500b6278e37092eb24eb71492719a7e68009ac5"
将以上的your.name更改为你自己的域名。最后,添加若干用户,便可用Pidgin、Psi等支持XMPP的客户端登录使用了。
简单快捷的背后,缺点也很明显:
ProcessOne
顺便说一说ProcessOne。可能很多人都没有听说过这家公司,但在Erlang和XMPP界,ProcessOne可是鼎鼎大名。近年来Erlang在互联网应用中的流行也跟ProcessOne的杀手级应用ejabberd有着密切的联系——Facebook的IM服务器采用的就是定制版的ejabberd。ProcessOne还有其他的一些有趣的项目,比如:
Erlang应用管理工具,借鉴自CPAN
ProcessOne的IM服务,支持AIM、ICQ、MSN/WLM、Yahoo!等多种IM协议网关,近期还推出了Google Wave的协议网关
Twitter/XMPP网关,借助Gtalk或任意一款XMPP客户端即可免翻墙轻松访问Twitter(最大的缺点是不支持RT)
OTR
如果觉得ProcessOne还是不足以受信怎么办?好吧您可真够多疑的。这时候就可以祭出OTR了。OTR实际上是一类技术的通称,全名是Off The Record,用以指代避免在服务器上以任何形式留存下消息明文的各种技术。
OTR的基本原理其实也很简单,简而言之就是借助公钥加密算法多做一层加密。以XMPP为例,拆解一下就是:
这样做的好处在于:
由于公钥加密的介入,无论所使用的底层IM协议是否支持加密,消息本身的保密性都可得到保障。即使IM服务器尝试对消息 \\(M_2\\) 进行解密,也只能还原出 \\(M_1\\) ,而无法得到 \\(M_0\\) ;也就是说服务器端无论如何都得不到消息明文
这样一来,即使服务器端尝试对解密出的消息“明文”进行存储,也只能存储由公钥加密保护的 \\(M_1\\) ,而无法触及 \\(M_0\\) ,OTR也正是由此而得名的。
Pidgin Encryption
Pidgin便有一个OTR插件——Pidgin Encryption,可对Pidgin支持的各种IM协议进行OTR保护。Debian/Ubuntu用户可以直接用aptitude安装pidgin-ecnryption包。
使用PE时,需要消息收发双方都安装该插件,并各自生成自己的密钥对(推荐使用4096位密钥)。发起会话时,PE会自动发起密钥交换过程,用户只需确认对方的公钥即可。后续的会话过程便都将处于OTR的保护之下。
使用OTR虽然非常安全,但使用起来也相应地有些麻烦。比如通讯双方必须使用相同的OTR算法(这往往意味着双方必须使用同一种IM客户端及OTR插件),以及必须小心保护和备份密钥对文件以防被盗取或遗失。
结语
墙内的网络环境越来越恶劣,让人越来越没有安全感。但其实要对个人隐私进行一些基本的保护,也并不困难。当然不希望在日常生活中也不得不用上这些方法,这篇权且当作是未雨绸缪。
建议继续学习:
- 个人数据安全 (1):用GnuPG保护个人隐私数据 (阅读:3849)
- 谈谈数据安全和云存储 (阅读:2005)
- 数据安全 - 从CSDN网站数据泄露说开去 (阅读:1873)
- 数据安全防范 提升需从今日始 - 浅析数据安全 (阅读:1675)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:连城 (Lian Cheng) 来源: :wq ~/notes
- 标签: 即时通讯 数据安全
- 发布时间:2012-09-19 23:36:23
- [55] IOS安全–浅谈关于IOS加固的几种方法
- [54] android 开发入门
- [54] 如何拿下简短的域名
- [54] 图书馆的世界纪录
- [52] Go Reflect 性能
- [52] Oracle MTS模式下 进程地址与会话信
- [49] 【社会化设计】自我(self)部分――欢迎区
- [48] 读书笔记-壹百度:百度十年千倍的29条法则
- [41] 程序员技术练级攻略
- [35] 视觉调整-设计师 vs. 逻辑