發生了什麼
在 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。