由 Google Allo、WhatsApp、Facebook Messenger 和 Signal 等使用的Signal 协议的一个关键部分是公钥基础设施。设置会话需要公钥。据我所知,它没有指定验证密钥的方法。即,当 Alice 与 Bob 建立会话时,她如何确定自己收到的是他的公钥而不是其他人的?
其次,假设上述问题有一个令人满意的答案,我们可以检查电线上发生了什么吗?即,Alice(可以访问她的私钥)可以检查网络上的协议,提取 Bob 的公钥并手动验证它(指纹,打电话给 Bob 并让他比较)吗?
我猜这可能因实现而异。首先,我在WhatsApp 加密概述白皮书中没有看到答案。那么这是如何实现的呢?
在更广泛的背景下,真正的问题当然是:我们需要在多大程度上信任实现,即服务提供者?老实说,我很奇怪这些服务是端到端加密的。在我看来(不是协议专家!)服务提供商很容易窃听,如果他们愿意的话。他们可能不想或不打算这样做,但对于谁来说隐私足够重要,它仍然是一种责任。