TOK的关键技术特点解析系列1

摘要

最近非常火爆的即时通讯软件TOK ,由于在保护隐私上的极致安全,总是有很多人来问TOK 到底为什么是安全的,技术难点在哪里?终于有时间整理一下......

最近非常火爆的即时通讯软件TOK ,由于在保护隐私上的极致安全,总是有很多人来问TOK 到底为什么是安全的,技术难点在哪里?终于有时间整理一下,请各位大神拍砖。

 

本人也是TOK 的用户,作为一个码农的基本素养,我去GitHub上看了TOK 所有的代码,研究了他们的英文技术相关文档,对TOK 的技术难点做一一分解,也许能帮你进一步理解这个新玩意。

 

  • TOK的点对点通信,在没有服务器的情况下,到底如何通信?

理解这个问题确实有些难度,因为这是一个很技术化的问题。

 

我们目前所有的主流通讯软件都是中心化的通讯软件,比如微信、WhatsApp、Facebook messenger、telegram、QQ等等,它们与TOK 在技术架构上有本质的区别。

你看着你的微信通讯录里面有1000人,你以为你是跟每个人在直接聊天,我很明确的告诉你,NO !

 

你的通讯录的每个人,你都是通过微信或者Facebook的中心服务器联系他们的,也就是说,你的手机只是连接了微信的服务器,而微信的服务器接收到了你的信息以后,转发给你1000个朋友。

 

而TOK,则必须是你跟你的1000个好友都单独建立联系通道,这相当于你的手机就是一个小型的自己的服务器,要处理的各种进程很多,它不再依赖中心服务器。(这也是智能手机性能越来越强大的证明)

 

画个简图来展示一下:

 

由上图所见,当前的微信、Facebook等中心化通讯软件,他们都有极其强大的中心服务器,所有人都只跟服务器直接连接,A 与BCDEF的连接,都必须通过中心服务器连接,你发出去的所有信息,都得经过中心服务器的转发、审查、存储,所以你的通信内容全是被第三方轻易看到的。

而TOK ,是真正的点对点通信,A与BCDEF都是直接连接的,不存在所谓的中心服务器,只要任何引导节点活着,没有人可以阻止A与其他人通信。

 

点对点通信的优点很明确:

你与他人的通信内容只有两个人知道,不会被任何人存储、审查、分析等。

 

但点对点通信的缺点也很突出:

也就是如何用你的手机设备,代替强大的服务器性能。

 

这是所有想做点对点通信的团队要花大力气攻克的难题:速度如何更快,效率如何更好,体验如何更好。

以前有一个很流行的通讯软件SKYPE也是点对点通信的,但SKYPE的注册服务器是中心化的(如果你用过SKYPE,应该记得你的登录ID是很短的,但凡很短的ID,百分百是中心化的服务器),而且以前是PC时代,电脑一般不需要考虑耗电的问题,移动时代要实现点对点还是有相当大的难度。

 

从目前的来看,TOK 已经做了很好的速度和效率的提升,虽然仍看到有很多人吐槽,单实际上确实算是移动点对点通信里面做得非常好的了。希望未来能进一步提升用户体验。

 

有兴趣进一步了解技术的可以去Google或百度几个技术关键词:DHT网络、KAD网络,有详细解释没有中心服务器的情况下如何通信,TOK通信的基础原理就是这些基本的点对点方式。

------------------------------------------------------------------

DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。

 

KAD 是Kademlia的简称,一种基于P2P理念的新型网络拓扑结构,主要的目标是做用户不需要连结服务器,而是直接连结到Clients。因此,Kad也被称之为Serverless network(无服务器网络)。Kad具有传统eD2k所不具备的优势

 

-------------------------------------------------------

 

  • 端到端加密,是不是确实比较耗电?

是的,确实端到端的加密是比较耗电的。

但耗电不只是在加密,还有DHT网络的找好友方式。

 

先说加密,

因为你的每条信息,都在你的手机上要加密和解密,这些都需要超大的运算来能完成,所以细心地TOK 用户可以感觉到,有时候手机有点发热,那是因为你的手机CPU在高速运算,给你的信息不断的加密和解密,发送出去的信息要加密,收到的信息要解密,所以,相对而言TOK 是比较耗电的,但目前手机的性能越来越好,这也不是大问题。

 

再来说DHT网络的连接,

因为TOK没有服务器帮你连接其他人,所以你需要一直不停的与你的所有好友保持连接,不停的查找对方的Announce确认是否在线,同时不停的宣告(Announce)自己在线,这个也非常耗电。(注:微信用户只需要和微信服务器一个人保持连接,你的所有好友信息都由微信服务器代为转达)

 

关于加密实在太专业,我就不详解了,问我的人大多是非码农,有兴趣的可以去google一下“非对称加密”算法。

 

-------------------------------------------------

非对称加密算法是一种密钥的保密方法。

非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行加密,同理,乙方使用自己的私钥来进行解密。

另一方面,甲方可以使用自己的私钥对机密信息进行签名后再发送给乙方;乙方再用甲方的公钥对甲方发送回来的数据进行验签。

甲方只能用其私钥解密由其公钥加密后的任何信息。 非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。

非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。

 

  • 为什么有超长的ID,就不需要注册服务器?

TOK ID 又是一个与当前主流中心化通讯软件很不一样的地方。

你会发现TOK ID不需要去任何一个中心服务器上验证,你随便给自己的ID文件取一个名字,都可以生成你自己的TOK ID。

你发现没有,无论你取一个多简单的常用的名称,都不会提示你此名称已被注册,这是因为,这个ID文件包仅仅存在于你的手机上,你只要自己不在自己的手机上使用相同两个ID文件名,就随便你怎么取名都可以,因为你的好友不是通过文件名来识别你,而是通过那个在你手机上生成的随机ID 来识别你。

 

那吃瓜群众要继续问我,为什么那个随机的ID就不用去某个中心化服务器上去验证呢?万一和别人的相同怎么办?

刚才已经说过了,这个ID足够长,且包含文字和数字,这么长的一串随机码,你要碰到重复的概率,基本上是不可能。

 

那么这个ID有多少种可能性?76位,每个可以是0---9和ABCDEF 6个字母,即 76加上16等于10的92次方以上,1后面8个0代表一个亿, 10的92次方,则表示1后面带有11个亿(92除以8),即 N个亿亿亿亿亿亿亿亿亿亿亿(好吧,我也是足够无聊写满了11个亿),这个数字是一个超级天文数字,根本无法穷尽,这个概率相当于你站在地球上,想要用你的飞镖戳中一只月球上你指定的蚂蚁,根本不现实。

 

在有限的人类使用的情况下,遇到重复ID的可能性几乎没有。因此,TOK就与你常见的其它通讯工具不同,完全不需要去验证你的账号是不是别人早就用了。

 

所以,TOK在生成ID账号的那一刻开始,就已经是去中心化的,因为TOK 不需要中心服务器去验证ID的唯一性,它从生成的那一刻开始就是唯一的。

 

而其他的所有中心化通讯工具,首先就有一个注册服务器,正因为你要去那个服务器上注册,所以中心服务器也可以随时把你删了,封杀了。

而TOK ID,永远只在你自己的手机上,任何其他人都无法把你封锁,除非你自己销毁它。

 

你第一次打开TOK ,先要生成自己的TOK ID,而这个ID有76位字母和数字,其中前64位是公钥(也称PK,即Public Key),有公钥,你就可以和其他人进行通信了,后面还有12位,其中8位是随机码和4位验证码,所有信息,只在你的本机上有效。

 

  • 为什么你的TOK ID并不能随意在别的手机上登录?

还在留言区看到一些很有意思的问题,比如很多人都有两个手机,刚刚在一个手机上登录了TOK ,却发现想要用这个ID换一个手机聊天的时候,输入ID文件名是没有意义的,而且也没有地方可以直接输入ID登录,这到底是怎么回事?

 

   第三个问题已经讲过了,你的ID只存在于你的手机上,只在那个ID文件包里面,包括公钥和私钥,都在那个ID文件包里面,如果你要在另一台手机上使用,你必须把ID文件包打包出来(我的---设置---导出文件),自己加密后,发送到另一个手机上,然后用TOK 打开,你才能登陆你之前那个手机的TOK ID账户。

 

   而如果是中心服务器的通讯产品,则完全不需要这么麻烦,因为你的一切账户信息都在中心服务器上,你随时连接就OK了。当然,如果中心服务器删除你,封锁你,你也一点办法都没有。这就是TOK 与其它中心化产品很不一样的地方。

TOK ID只在你自己的手中,其他人没有权力删除封锁它。这就是TOK 的去中心化的体现之一。


来源:朝闻天下

最新文章

极客公园

用极客视角,追踪你最不可错过的科技圈。

极客之选

新鲜、有趣的硬件产品,第一时间为你呈现。

顶楼

关注前沿科技,发表最具科技的商业洞见。