降低被监控的风险,常用通信软件哪个最安全?

我们常用的哪些通信软件比较安全,可以降低被监控的风险?相信是许多人关心的话题。Podcast节目《我们与黑的距离》撰文比较了台湾最常用的通信软件Facebook Messenger、LINE、WhatsApp、Telegram跟Signal。《科技新报》取得文章授权,一起来了解。

随着香港国安法在7月1日正式生效,笔者陆陆续续收到一些朋友的问题想了解到底用什么通信软件比较安全、可以降低被监控的风险,于是决定用这篇来告诉大家到底要怎么判断一个通信软件安不安全,以及比较了五款台湾最常用的通信软件Facebook Messenger、LINE、WhatsApp、Telegram跟Signal评估后的结果。

怎么看一个通信软件安不安全?

笔者在评估软件的信息安全景,会同时考虑到资料的安全性跟用户的隐私,在这里把其中比较常被考量的因素分为两大类:技术层面跟组织政策层面。

技术层面

技术层面会考量的点包含了:

过去通信软件为了提供消息备份的功能,会在服务器端解密用户的消息存储,这样的坏处是通信软件能看到消息的内容,用户比较没有隐私,将消息存放在云计算也让云计算服务器成为黑客的目标,握有解密密钥的通信软件公司也可能被政府要求交出密钥。

随着大众的安全与隐私意识上涨,点对点加密就成为了一种更受欢迎的加密方式。这是一种只有收发消息两端可以加密与解密消息的沟通方式,优点是解密后的消息只会保存在用户端,安全性跟隐私性较高,所以目前很多通信软件都主打点对点加密通信。

不过,点对点加密并不是无敌,即使都是点对点加密,使用哪一种点对点加密机制也会影响安全性,并不是每一种点对点加密机制都一样安全。而且,点对点加密还是有遭受中间人攻击的危险,这也是为什么点对点加密应该要搭配身份认证机制跟自动通知密钥变更的功能才更加安全。

另外,有一些通信软件虽然有这个功能但默认却是没有打开,让很多用户在不知情下使用了没有使用点对点加密的通信方式,比如Telegram跟Facebook Messenger。

此外,当通信软件强调自己有许多安全保护机制时,如果没有把程序代码开源(公开)的话,所有保障安全的说法都是无法受到大众检验的,因此相对于不公开源的通信软件来说,开源的通信软件在安全性上比较有保障。

组织与政策层面

信息安全的问题往往不只牵扯到技术面,也经常牵扯到很多组织政策与政治面的问题。在查看资料安全性跟隐私性的时候,通常也会评估以下的因素:

注重信息安全的用户需要养成一种习惯,在把资料交出去时先想想能不能信任那个公司/ 组织。盈利组织不会免费提供服务,当服务免费的时候,通常用户付出的就是他们的资料,很多服务的盈利模式是利用分析用户的数据去推销广告或是做其他用途,所以用户信息对他们来说就是直接影响获利的资源,在这样的状况下,使用这种服务通常隐私性会比较低。

另外,对于一些主要需求是反政府监控的用户来说,通信软件服务商会不会配合政府要求交出用户资料就是一个重要的考量点。通常服务提供商必需要符合当地法律才可以在那个地区提供服务,所以除非直接放弃业务(如Google和Facebook退出中国市场)否则通常都会配合法院要求,在这样的状况下,了解这些公司在配合调查时会提供什么样的资料也是一件重要的事情,做安全考量的时候就是要不断做最坏的打算,假设资料真的被提供出去,监控者可以借此掌控多少消息也是一个关键的考量点。

比较常用通信软件的安全性

利用以上列出的考量因素,笔者花了很多时间去查比对目前台湾常用的几家通信软件,包含Facebook Messenger、LINE、WhatsApp、Telegram跟Signal,分析这些结果之后将通信软件的安全度进行排名。不过这个排名是综合了以上所有提到的因素,依照每个人的需求不同或许有不同的结论,所以也把比较表放在下方。

五种通信软件比较。安全度:红→低;橘→中;绿→高。(WeChat是已知受政府监控的软件,在此不列入比较。)

以下依照安全程度低至高的排名做说明:

第五名:Facebook Messenger

其实Facebook Messenger一直都没有主打自己的安全功能,拿它来比较或许不太公平,不过因为台湾很多用户而且也有人在问,就一起放进来了。Facebook Messenger之所以落到最后一名,原因如下:

第四名:LINE

LINE使用了Letter Sealing的独创点对点加密机制,但并没有详细公开这个加密机制的细节,目前分析此机制的论文没有发现特别弱点的,不过可能因为主要用户在亚洲,也比较少对于此加密机制的讨论。LINE用户要注意的是,当配合法院要求调查时,他提供的信息相较于其他通信软件是最多的。

  • 语音跟文本都支持点对点加密
  • 群组50人以上不支持点对点加密
  • 程序代码非开源
  • 无自动检查密钥变更通知
  • 接受法院调查时提供以下资料:注册信息(个人资料图像,显示名称,电子邮件地址,电话号码,LINE ID,注册日期等),指定用户的通信数据(消息发送日期,发送者的IP地址),没有加密的文本聊天消息(默认是加密,所以如果被关掉了文本消息会被保存)
第三名:Telegram最近台湾很多用户认为LINE不安全转向使用Telegram,但比较发现其实安全程度以技术层面来看并没有好很多。Telegram的问题如下:

第二名:WhatsApp

全球使用用户很多的WhatsApp在技术上安全性其实并不差,默认提供点对点加密,并且使用的是跟Signal一样的Signal Protocal点对点加密机制。另外服务强调消息并不会被备份,而且是少数通信软替中能做密钥变更通知的(此功能需要手动打开)。不过WhatsApp也存在以下问题:

  • 程序代码非开源
  • 由盈利组织运营(Facebook),且公司有泄露用户资料的黑历史(剑桥事件)
  • 群组无法确认用户密钥
  • 会配合美国法院传票调查交出以下消息:名称,开始使用的日期,最后查看消息的时间,IP,email地址。美海外的法院调查也有机会配合但没有说明会交出那种资料。
第一名:SignalSignal因为被吹哨者Edward Snowden表示自己在使用而吸引了很多用户,不过经过比较后发现Signal并不是浪得虚名。Signal无论在技术面还是组织政策面都是相对较安全的通信软件,而且Signal由非营利组织运营,大家也不用担心这是一篇业配。程序代码客户端跟服务器端完全开源,完全不备份用户消息,全部通信(不只文本,语音也受到加密)默认皆为点对点加密,并且使用了备受多国密码学研究员检验的Signal Protocol,支持身份验证及自动密钥变更通知。不过,Signal也是会配合法院传票提供信息,但会在提供资料时公开在网页上,Signal表示因为根本没有存用户的消息等等资料,唯一能提供的就是用户注册日期跟最后使用App的时间,这些提供的资料是这些比较的软件中最少的,连IP地址都没有提供给法院。
建议搭配VPN(Virtual Private Network)使用由上面的分析可以知道,很多通信软件是有可能会配合法院传票通知提供用户的IP消息,若有需要降低暴露真实通信IP的需求建议搭配VPN使用。除此之外,在网络架构受到监管的地区,也可以降低被监控的风险。至于如何使用VPN网络上有很多教学,这边就不赘述,大家有问题也可以留言或私信问笔者。

信息保护及反监控不能只靠通信软件

最后笔者想要强调一个很重要的观念,再安全的通信软件保护的都是消息在传输过程中的安全,无法保护消息在产生过程跟收到消息后的安全。简单来说就是,假设你的消息在发送过程中是安全的,但你的手机或是接收消息的设备已经被攻击渗透,那用了再安全的通信软件都没用。

因此,平常创建良好的使用习惯是很重要的,无论是手机还是计算机设备,应该都要装上杀毒软件,如果有需要使用一些高风险的App(例如需要使用Wechat跟客户沟通),建议分开安装在不同的设备上。浏览网站跟收发短信及Email时都需要小心不知名的网址与附件。

补充知识:什么是点对点加密(End-to-end encryption)这个视频解释得非常清楚:

在解释什么是点对点前,必须先解释什么不是点对点。知道消息要能利用通信软件顺利发送,中间是需要有一些通信软件的云计算服务器(也就是邮差)帮助传递消息的工作的,很多线上的服务为了要提供一些功能,必须保存用户的消息。比如当用户在换新手机时,要用手机登录账户能看到之前用旧手机传的消息就必须被保存在通信软件的云计算服务器,如果云计算服务器无法知道消息内容是什么的话,就没办法提供这个服务。

所以为了要让服务器能保存消息,传统上很多服务是使用客户端到服务器端加密( client to server encryption)的方式在进行通信,也就是服务器必须有可以解密消息的钥匙,消息加密后发送到云计算服务器被解密,之后服务器端再加密一次传到信号端。这种云计算服务器可以解密又加密的通信方式就不是点对点加密。

用这种方式传递消息让服务器端可以解密消息看到内容(也就是邮差会看到你传了什么消息),也有能力保存,从一个角度来看这是一种功能(feature),可以让用户轻松的在不同设备访问消息。但站在隐私的角度来看,这就是一个缺点,云计算的服务器变成一个需要被信任的对象跟可能被攻击的中心点,黑客只要利用各种工法取得在云计算服务器的资料,就可以得到用户的对话内容跟其他资料。

随着用户越来越注重隐私,为了要消除这个弱点,点对点加密就成了更受欢迎的一种通信加密方式,利用这种加密方式,只有消息发送方跟接受方可以知道消息真实内容,以技术上来说,就表示只有收发两方拥有可以解密的钥匙,加密跟解密的行为也只有收发两端会进行。

看到这里你应该就能明白为什么很多通信软件在转换设备的时候需要用户手动备份对话记录(比如LINE),这就是因为服务器端并没办法解密你的对话记录也没有保存。基本上这个功能跟隐私性是互斥的,为了要让用户保有隐私就必须舍弃这个功能。

什么是身份认证机制?

点对点的加密机制是怎么让消息在被服务器发送的时候也不会被解密呢?这需要用到密码学上的非对称式加密算法(Asymmetric Encryption)。

上面这个视频解释得蛮清楚的。用一个例子解释,大家可以想象小时候玩的交换日记,为了不被别人偷看,小时候笔者都会去书局买那种上面有锁跟钥匙的日记本,通常这种日记本都会附两把钥匙,笔者就可以把其中一把交给要跟笔者玩交换日记的朋友,这样他收到笔者的日记就可以用那把钥匙打开。

假设没办法当面把钥匙交给朋友而要请朋友帮忙转交的话,就会有钥匙被朋友拿去复制一份的风险。这时候笔者使用了相反的方法,把锁头拿去请朋友交换,在收到朋友的锁头后,就用笔者的锁头锁起来,再请朋友拿给笔者,这样朋友从头到尾都没拿到钥匙也不能解锁了。这样就是一种非对称式加密!

但这样做还有一个漏洞,假设朋友一开始在帮忙交换锁头的时候,自己去买了两个锁头掉包,让笔者跟朋友以为是对方的锁头而用它来锁住笔记本,这样之后朋友在帮忙传日记的时候还是可以打开。

那有什么方法可以知道这个锁头是不是被调包了呢?这就是这里要说的身份认证机制,目前最安全的身份认证方法,就是在通信前当面或是利用其他渠道双方确认这把钥匙是不是属于对方的。这把钥匙通常会在通信软件里面以一个代码显示,在不同通信软件又不同的名称,比如fingerprint、security number等等。在确认钥匙的时候通常会比对这个代码做确认,比如下方是Signal显示的身份代码。

在Signal中显示的身份号码。(Source:Signal)

这个身份代码在是随设备改变的,所以如果换了设备或是重新安装,这个代码都会改变,所以如果用户没有变更设备却改变了代码,就有可能是对方的账号被盗取。

自动通知密钥(代码)变更

你或许会想到,就算是当面先确认钥匙,有人会这么勤劳每次传消息都检查一下钥匙一不一样吗?相信90%以上的人都不会这么勤劳。所以这时候自动通知的功能就很有用了,较安全的通信软件会自动在这个身份变更的时候在对话中通知,当发现这个消息代码长的跟一开始不一样,就马上发出变更的通知,这样可以让安全性多出一层保障。下图是的Signal中自动通知的消息。

(Source:Signal)