发生了什么
在 Kryfo 里,别人靠你的三个词和你的脸认出你。它们从来证明不了一个人是谁,而且可以被复制。有人可以把你的三个词放进一个邀请链接、QR 码或个人页面,而它们指向的是他自己的密钥。添加了它的人看到的像是和你的聊天,其实是在和另一个人聊。如果那个人还以添加者的名义给你发消息,他就能夹在你们两人之间,读到经过他的内容。
在 0.4.1 及更早版本中问题更严重:复制来的名字还能顶替一个已经存在的聊天。0.4.2 修复了这一部分。
我们没有发现这被用来针对任何人。
谁受影响
使用 0.5.0 或更早版本,并通过链接、用户名、配对码、请求,或不是从对方本人手机上扫描的 QR 码添加过别人的所有人。
不受影响:
- 你当面扫描对方手机上的 QR 码添加的联系人。
- 安全码。它由聊天实际使用的密钥生成,所以一直都能显示出差别。
我们改了什么
在 0.5.1 中:
- 配对码会在两部手机上都显示一个密钥号码,它由聊天将要使用的密钥生成。
- 通过当面扫描以外的任何方式添加的聊天,都会显示一张卡片,提醒你核对安全码。
- 当介绍或群组提到一个你已经有的人、但密钥不同时,Kryfo 会把两者分开。
- 安全码页面会让你核对全部 12 组。
0.5.2 用核对卡片和这不是对方本人按钮取代了“未核对”标记。如果安全码不一致,这个按钮会从你的手机上移除该联系人,并屏蔽它的密钥。
你该怎么做
- 更新到 0.5.2。它现在已经在 kryfo.app 和 GitHub 上,几天内会上架 F-Droid。
- 和重要的联系人当面核对安全码:打开对方的页面,点按验证密钥,核对全部 12 组。
- 如果安全码不一致,点按这不是对方本人。然后用对方当面给你的链接或 QR 码重新添加,并在新的聊天里核对安全码。
接下来
完整的修复会随 0.6 的身份重新设计一起到来,它基于 Signal 的官方库。即使到那时,安全码仍然是真正的核对方式。
更早的修复
0.3.2 和 0.4.1 修复了一个问题:在已解锁的手机上点按通知,可能绕过应用锁打开聊天。
致谢
感谢 Ami(SleepingAmi)和 sooox(sooox-cc),他们发现了这个问题,在自己的手机上做了验证,并私下告诉了我们。
如果你发现问题,请先私下告诉我们:kryfo.app/security。