互联网通讯方式设想
0 腾讯的霸权与安全问题
中国网民的网上通讯被腾讯统治很久了。很多人已经不单把QQ当做聊天工具,某些场合已经把QQ当做工作用的正式通讯方式。
某天我走进某老师的办公室,该老师正在跟某个网络设备商的人聊设备购买问题,见我来了也不好让我多等,就跟电话里的人说:”把你QQ告诉我,待会跟你详谈“
使用QQ工作已经不是个别了,4年前我就在某个兼容机店里看到老板娘拿货的时候使用QQ和供货商联系。而早前我联系一家小广告商喷绘背景布也是通过QQ完 成。中国网民的生活、学习、工作,都有QQ的身影。中国没有为互联网做出什么创新,但即时通讯倒是领先国际,MSN跟Gtalk等外国IM其实都无力跟 QQ竞争:形式一样,但是扩展功能跟QQ差太远。QQ的文件传输,群聊,远程协助等等都是MSN和Gtalk没有或者领先很多的。在和传统Email绑定 后,QQ几乎没有死角,一般人的网上通讯都可以通过QQ一个客户端”一站完成“。
但我一直以来都对腾讯QQ心存芥蒂,先不谈腾讯的抄袭史和它对跨平台的漠视,单就一点足以让 腾讯蒙上阴影:腾讯是在中华人民共和国内运营的一家企业,服务器在中国大陆。服务器在大陆,隐私和安全性就有了很大的风险。这个问题其实就是某人被警察请去喝茶之后才意识到的。某人一向在网上对政事少言,平时也没见谈论什么价值观,但为什么平平安安会找他喝茶。思索之后,想到大概是因为在QQ邮箱传了一份 文件。虽然他本人现在还是说”该用的就用“,但我觉得这始终很恐怖。幽游白书里面有一段情节,在一个特定的空间,如果说了禁止说的话,就会被夺取灵魂。我 不想置身于这种环境之中。
最近我一直在思索能有什么通讯方法可以提高信息的安全性,但是又不输于 IM + Email 的组合。要探索未知,需要掌握已知,我整理了一下我已知的计算机网络之上的通讯方式。
1 基于IP地址的简单通讯
互联网未兴起前,计算机之间就有一些通过局域网直传的通讯工具。比如windows下的 net send指令,可以通过指定特定的IP发送一条信息到远程主机(理论上非局域网也可以,但我不知道是否有人这样用)。目标主机收到信息后,会用弹出框的形 式显示信息。但这种工具没有用户验证机制,通常也不加密,到后来导致了spam弹出框的问题,现在的windows一般都直接禁用了这个功能。

图1 基于IP地址的简单通讯工作方式
这种方式可以称为”史前通讯方式“。因为发送信息的时候需要用户知道对方IP,并且没有好友管理、用户验证等功能,已经没有多少应用场合。
2 Email和Google Wave
这里把传统的Email和新潮的Google Wave放在一起,是因为他们的传输方式是相近的。

图1 Email式服务工作方式
Email 式的通讯,引入了服务商的概念。这个服务商可以是自己搭建的服务器,可以是公司部门的服务器,也可以是专业邮件服务提供的服务(比如Gmail)。每个服 务商各自提供用户验证机制,并且可以在服务端提供垃圾过滤功能。每个服务商独立搭建,但是遵循统一的协议,所以可以互相通信。Google Wave的传输方式也大致如此,只是在Email的方式增加了编辑、协作之类的功能。Email为互联网服务了几十年,目前还是一种重要的通讯方式。
在这种工作方式上,信息的保密很大程度取决于服务商。不单要看自己的服务商的可信度,还要看目标服务商的可信度,因为邮件在双方服务商都会备份的。所以如果从Gmail向QQmail发一封邮箱,像水桶原理那样,保密性取决QQmail。
传 统的Email的即时性较差,以往Email被看作是传输严肃认真的文档类信息的载体。在娱乐之上的时代,Email多少有些受冷落。Google Wave是带着改造Email的目的被开发出来的。相比Email,Wave添加了即时性(其实这取决于客户端而已)和多媒体性质。但目前处于试验性质, 因为没有公布Client-Server端的协议,我对Wave的一些设想无法实施。
3 即时通讯工具(IM)
对于即时通讯工具的历史和描述可以去看wiki百科。这里说下我对腾讯的IM,也就是QQ的一些看法。

图3 假想的腾讯中心式IM工作方式
腾讯QQ是一个闭源、闭协议的IM软件,所以注定QQ的工作是以腾讯服务器为中心运作的,客户端无法独立于服务器运作。用户A和用户B的通讯需要通过至少两 步:1)用户A与腾讯服务进行登录验证,并且取回用户B的主机信息(IP等)。2)用户A的客户端与用户B的客户端进行直连,进行即时通讯。
实际上IM是可以去中心化的,比如XMPP就是一个去中心化的开发通讯协议。但是去中心化与腾讯的”绑定用户在自己平台以赚取暴利“的策略冲突,所以腾讯不会开放协议。也是由于商业支持的原因,XMPP的发展一直趋于停滞,比如XMPP的实现之一的Gtalk至今不支持群聊。
回到QQ的话题,如果按照假想式的工作方式,QQ可以保证一定程度的安全。因为私聊的情况下,信息直接在两个客户端间传输,不经第三方。并且一些人验 证,QQ客户端在发送信息的时候是加密传输,防止了监听。但现实往往是残酷的,由于QQ是闭源软件,所以我无法验证QQ客户端是否在内部就设置了监听代 码,以配合公安的审查工作,一但发现敏感词眼即上传该信息到服务器。
所以,腾讯QQ在保密方面是很不靠谱的。而XMPP的功能太弱(至少给个群聊功能好不),而且缺乏发展动力。
4 改进通讯方式
4.1 等待Google Wave变强
Google Wave目前的表现看来,作为下一代通讯协议是很有希望的。但是这终究是Google一家人弄的玩意,目前还看不到别人鸟它。而且这东西现在弄得太高端, 一堆人试用了之后还是不明白这玩意是干麻用的。比如协作编辑这一重要特性,估计需要用的也就是程序员一类专业人员。
对于Wave,我没啥发言权。因为即使是想写一个IM式的客户端,也由于Google根本没把Client-Server协议公布而搁置。
4.2 改进类XMPP开放协议
改进类XMPP开放协议是一个平缓的改良路线,况且XMPP本身就是鼓励二次开发的,同时XMPP类客户端比较充足。
但是改良XMPP协议,别的服务商不认这套,那就又卡住了。一个协议需要通过各家认可,并且作为标准公布,是需要时间和财力的。
4.3 完全去中心化的通讯设想
一切依赖服务器的应用在中国都面临两种情况——被审查或者被墙。
我设想这样一种情况:打开一个客户端,也许是网页应用,也许是桌面GUI程序,也许是手机软件。然后它会提供我的好友列表。我可以跟对方进行各种形式的通 讯,文字、视频、语音、多媒体、文件传输。等等,这不就是QQ吗?不,接着我要确保这个好友检索与信息传输过程不经过任何中心服务器,并且是安全保密的。
信息直传是客户端的事,而检索过程如何摈弃服务器需要斟酌。
说到底为什么IM通常需要一个服务器呢?因为网络应用是基于网络层以上的,在把好友ID和真实IP之间需要一个转换,客户端才能建立链接。而现在这个转换是由服务器完成的:1)用户A登录,给服务器发送自己的网络信息。2)好友用户B登录,给服务器发送自己的网络信息。3)服务器查询发现A和B是好友,于是 给各自的客户端发去对方的真实网络信息。4)A和B的客户端显示对方在线,并且可以建立链接。
那么这个过程是否可以去掉服务器呢?是可以的。过去一周时间我在看eMule的kad网络(Kademlia) 方面的资料。kad网络是一个分布式哈希表,网络中的节点拥有一个ID,并且可以用ID作为key,和一个资源信息构成一个key-value对其他节点提供检索。资源信息可以是一个文件,或者是——物理IP。eMule就是通过kad网络实现了去中心化,同时继续提供检索功能(但是没有模糊查找)。
建立物理链接之后,客户端链接可以做到直连、加密。不过也有一些因素要考虑,比如没有服务器之后,离线信息怎么办?个人资料怎么保存?这个可以在kad网 络中加入第3方服务来做到,这个第3方服务可以是商业服务商,也可以是用户自己搭建的服务器。完全去中心化也会带来很多额外需要考虑的因素。
类似kad这样的覆盖网络被提议用于改善当前的网络质量(疲弱的DNS机制等),还有很大探索空间。
5 结语
Google Wave之前,即时聊天已经沉寂了很久。国内的QQ一家独大,和国外并不热衷IM形成鲜明对比(国外大概流行skype类语音服务)。但是网民对通讯工具 的便捷性和安全性需求会不断推进,QQ的封闭给小众人群带来不便和安全隐患,Wave一时半会又做不了主流。即时聊天有得搞。


评论
即时聊天工具,QQ貌似无可撼动啊