我妈妈有一部 Android 手机,在 16:30 左右掉进水里几秒钟。她设法拆开手机并将其关闭。我们都共享一个端到端加密的组(所有参与者都有新的 WhatsApp 版本)。同一天,21:00 左右,她的手机没电了,我给这个群发了一条消息。第二天,她把手机带到维修店,他们换了一些零件,手机又恢复了生机。拿到手机后,我注意到它已恢复出厂设置,所有应用程序都消失了,新的 Android 版本,没有自定义,没有文件,没有 Wi-Fi 密码,完全空白。所以我开始为她重新安装 WhatsApp,输入她的号码,希望看到她的旧群组,但没有消息。令我惊讶的是,在恢复出厂设置之前,她收到了所有消息,包括我自己的消息。
我想我知道公钥-私钥是如何工作的,并且据我所知,她在手机死机时解密发送给群组的消息所必需的私钥在重置后丢失了,因为消息存储在WhatsApp 服务器是用她的旧公钥加密的,还有一个现在无与伦比的私钥。那么应用程序是如何收到这些消息的呢?
我有几个理论:
她的手机没有恢复出厂设置,或者私钥以某种方式幸存下来。我认为这不太可能,因为我不得不再次安装该应用程序,并且手机上的所有迹象都已完成清除。重要的是要注意,我不知道维修店的人对电话做了什么,她无法向我解释。
我的手机在看到她的手机重新上线后,收到了她的新公钥,并再次向她发送了新加密的消息。我没有启用警告联系人密钥更改的设置,所以我不知道这是否可能发生。对我来说,我的手机会立即信任新的公钥,这看起来很奇怪。但是这个理论得到了加强,因为我注意到消息是按照从最快的设备到最慢的顺序排列的。这是一个集体家庭,我有最快的设备,我姐姐在中间,我爸爸最慢。消息按此顺序排列,从不交换。
有问题的消息以未读消息的形式到达,带有到达时的时间戳,而不是发送时的时间戳。因此,我无法判断个别聊天是否也收到了来自死区的消息。我只能从这个特定的组来判断,因为我知道它从一开始就是端到端加密的。