Signal 公佈 自動金鑰驗證功能,導入金鑰透明度(Key Transparency)機制,協助使用者確認聯絡人的公開金鑰沒有被意外或惡意替換,降低攻擊者介入加密通訊的風險。新功能補充既有安全號碼(Safety Number)驗證方式,使用者不必再透過當面掃描QR Code或其他可信管道人工比對金鑰。
Signal訊息雖然採用端對端加密,但建立通訊時仍需要取得對方的公開金鑰。使用者註冊Signal後,裝置會產生公開金鑰與私密金鑰,私密金鑰留在裝置,公開金鑰則由Signal的中央目錄保存。傳送訊息前,Signal應用程式會向中央目錄取得收件人的公開金鑰,用來建立加密通訊。
風險出現在公開金鑰遭替換的情況,要是Signal的金鑰目錄遭入侵,或具權限的人員惡意修改資料,攻擊者理論上可能把原本屬於收件人的公開金鑰換成自己的金鑰,使訊息在雙方不知情時經過第三方。Signal表示,這類攻擊難度高且發生機率低,但仍希望降低中央目錄遭竄改後帶來的風險。
自動金鑰驗證的做法,是持續留下電話號碼、使用者名稱與公開金鑰之間的變更紀錄,讓Signal應用程式可以檢查目前取得的金鑰是否與過去紀錄一致。Signal也建立索引加快查詢,不必每次從頭檢查全部歷史資料。Cloudflare與資安公司Trail of Bits擔任獨立稽核方,協助確認Signal向不同使用者提供的是一致版本的紀錄。
相關紀錄中的使用者資料會先以密碼技術隱藏,因此第三方稽核人員看不到明文電話號碼、使用者名稱等資訊。Signal應用程式也會定期檢查使用者自己的公開識別資訊,若要驗證聯絡人,則需從對方的安全號碼頁面啟動自動驗證。
不過,金鑰透明度只能確認帳號識別資訊與公開金鑰的對應紀錄是否一致,不能證明帳號目前實際由誰控制,也無法單獨判斷帳號是否已遭完整接管。目前若雙方只透過Signal使用者名稱聯繫,又沒有對方的電話號碼,也無法使用自動金鑰驗證,仍需使用原有安全號碼進行人工確認。