Encryption
Whatsapp 如何辨識轉發的附件
有時 Whatsapp 顯示附件經常被轉發。
如果消息是端到端加密的,他們怎麼知道呢?即使使用混合加密,我也會用我的密鑰加密並將附件儲存在伺服器上。
那麼他們是否對客戶端中的附件進行雜湊處理並儲存雜湊?所以他們會知道我轉發了哪些附件以及何時轉發?
附件處理如下(來源為WhatsApp的白皮書);
附件第一次發送
- 發送者生成一個 32 字節的隨機 AES-256 密鑰, $ k_1 $ ,以及另一個隨機的 32 字節密鑰 $ k_2 $ 為了 $ \operatorname{HMAC-SHA256} $
- 加密附件 $ a $ 用這把鑰匙 $ c_a = \operatorname{AES-CBC-256}(k_1,a) $ 並附加的 MAC $ c_a = \operatorname{HMAC-SHA256}(k_2) $ 給它。
- 發件人將其上傳到 blob 儲存中的伺服器。
- 發件人加密 $ k_1,k_2 $ ,以及加密 blob 的 SHA256 雜湊值和 blob 到接收者的 URL。
- 接收者解密消息,接收加密的 blob,驗證它的 SHA256,驗證 MAC 然後解密它。
這是一種媒體記憶體技術。
附件已轉發
接收者想要轉發消息;
- 加密 URL 和密鑰 $ k_1,k_2 $ ,以及從發件人接收並轉發給其他人的附件的 SHA256 雜湊值。
Whatsapp 如何辨識轉發的附件
只需將“轉發”標籤添加到包含 $ k_1,k_2 $ , 和附件的 SHA25。即使轉發也有一個計數器來限制扇出,而 WhatsApp 對此一無所知。
那麼他們是否對客戶端中的附件進行雜湊處理並儲存雜湊?所以他們會知道我轉發了哪些附件以及何時轉發?
不是因為它,它們不是消息的內部,但是,儲存在 WhatsApp 伺服器中的 blob 包含足夠的資訊來執行流量分析,如果他們想執行的話。
- 儲存此資訊;誰上傳了 blob;上傳 blob 時。
- 儲存想要訪問此 blob 的人員和時間。
現在,攻擊者可以製作圖表了。
這是流量分析不會暴露消息,但是,如果其中一個接收者被破壞,則傳播的附件可以提供有關其他人的資訊。