影音先锋男人资源站_国产婷婷综合丁香亚洲欧洲_白狐视频传媒污软件下载_趁女同学午休揉她的屁股

WhatsApp 加密概述(技術白皮書),whatsapp 免費下載-ESG跨境

WhatsApp 加密概述(技術白皮書),whatsapp 免費下載

來源網(wǎng)絡
來源網(wǎng)絡
2022-07-05
點贊icon 0
查看icon 954

WhatsApp 加密概述(技術白皮書),whatsapp 免費下載WhatsApp 加密概述(技術白皮書)目錄簡介術語客戶端注冊會話初始化設置接收會話設置交換信息傳輸媒體和附件群組消息通話設置狀態(tài)實時位置(待填坑)驗證密匙傳輸安全結論簡介本白皮書提供了WhatsApp端到端加密系統(tǒng)的技術說明。WhatsApp Mes......

WhatsApp 加密概述(技術白皮書),whatsapp 免費下載




WhatsApp 加密概述(技術白皮書)

目錄

簡介

術語

客戶端注冊

會話初始化設置

接收會話設置

交換信息

傳輸媒體和附件

群組消息

通話設置

狀態(tài)

實時位置(待填坑)

驗證密匙

傳輸安全

結論

簡介

本白皮書提供了WhatsApp端到端加密系統(tǒng)的技術說明。

WhatsApp Messenger允許人們自由的交換消息(包括聊天,群聊,圖片,視頻,語音消息和文件),并在發(fā)快遞者和接收者之間使用端對端加密(在2016年3月31之后的版本)。

Signal協(xié)議是由Open Whisper Systems(非盈利軟件開發(fā)團體)設計,是WhatsApp端對端加密的基礎。這種端對端加密協(xié)議旨在防止第三方和WhatsApp對消息或通話進行明文訪問。更重要的是,即使用戶設備的密鑰泄露,也不能解密之前傳輸?shù)南ⅰ?/p>

本文檔概述了Singal協(xié)議在WhatsApp中的應用。

術語

公鑰類型

·身份密鑰對(Identity Key Pair)——一個長期Curve25519密鑰對,安裝時生成。

·已簽名的預共享密鑰(Signed Pre Key)——一個中期Curve25519密鑰對,安裝時生成,由身份密鑰簽名,并定期進行輪換。

·一次性預共享密鑰(OneTime Pre Keys)——一次性使用的Curve25519密鑰對隊列,安裝時生成,不足時補充。

會話密鑰類型

·根密鑰(Root Key)——32字節(jié)的值,用于創(chuàng)建鏈密鑰。

·鏈密鑰(Chain Key)——32字節(jié)的值,用于創(chuàng)建消息密鑰。

·消息密鑰(Message Key)——80個字節(jié)的值,用于加密消息內(nèi)容。32個字節(jié)用于AES256密鑰,32個字節(jié)用于HMACSHA256密鑰,16個字節(jié)用于IV。

客戶端注冊

在注冊時,WhatsApp客戶端將身份公鑰(public Identity Key)、已簽名的預共享公鑰(public Signed Pre Key)和一批一次性預共享公鑰(OneTime Pre Keys)發(fā)快遞給服務器。WhatsApp服務器存儲用戶身份相關的公鑰。WhatsApp服務器無法訪問任何客戶端的私鑰。

會話初始化設置

要與另一個WhatsApp用戶通信,WhatsApp客戶端需要先建立一個加密會話。加密會話一旦被創(chuàng)建,客戶端就不需要再重復創(chuàng)建會話,除非會話失效(例如重新安裝應用或更換設備)。

建立會話:

1.會話發(fā)起人為接收人申請身份公鑰(public Identity Key)、已簽名的預共享公鑰(public Signed Pre Key)和一個一次性預共享密鑰(OneTime Pre Key)。

2.服務器返回所請求的公鑰。一次性預共享密鑰(OneTime Pre Key)僅使用一次,因此請求完成后將從服務器刪除。如果一次性預共享密鑰(OneTime Pre Key)被用完且尚未補充,則返回空。

3.發(fā)起人將接收人的身份密鑰(Identity Key)存為Irecipient,將已簽名的預共享密鑰(Signed Pre Key)存為Srecipient,將一次性預共享密鑰(OneTime Pre Key)存為Orecipient。

4.發(fā)起者生成一個臨時的Curve25519密鑰對——Einitiator

5.發(fā)起者加載自己的身份密鑰(Identity Key)作為Iinitiator

6.發(fā)起者計算主密鑰mastersecret=ECDH(Iinitiator,Srecipient)ECDH(Einitiator,Irecipient)ECDH(Einitiator,Srecipient)ECDH(Einitiator,Orecipient)。如果沒有一次性預共享密鑰(OneTime Pre Key),最終ECDH將被忽略。

7.發(fā)起者使用HKDF算法從mastersecret創(chuàng)建一個根密鑰(Root Key)和鏈密鑰(Chain Keys)。

接收會話設置

在建立長期加密會話后,發(fā)起人可以立即向接收人發(fā)快遞消息,即使接收人處理離線狀態(tài)。在接收方響應之前,發(fā)起方所有的消息都會包含創(chuàng)建會話所需的信息(在消息的header里)。其中包括發(fā)起人的Einitiator和Iinitiator。當接收方收到包含會話設置的消息時:

接收人使用自己的私鑰和消息header里的公鑰來計算相應的主密鑰

接收人刪除發(fā)起人使用的一次性預共享密鑰(OneTime Pre Key)

發(fā)起人使用HKDF算法從主密鑰派生出相應的根密鑰(Root Key)和鏈密鑰(Chain Keys)

交換消息

一旦建立了會話,通過AES256消息密鑰加密(CbC模式)和HMACSHA256驗證來保護客戶端交換消息。

消息密鑰是短暫的且在每次發(fā)快遞消息后都會變化,使得用于加密消息的消息密鑰不能從已發(fā)快遞或已接收后的會話狀態(tài)中重建。

消息密鑰在發(fā)快遞消息時對發(fā)快遞人的鏈密鑰(Chain Key)進行向前的“棘輪(ratchets)”派生而來。此外,每次消息巡回都執(zhí)行一個新的ECDH協(xié)議以創(chuàng)建一個新的鏈密鑰(Chain Key)。通過組合即時“哈希棘輪(hash ratchet)”和巡回“DH棘輪(DH ratchet)”提供前向安全。

通過鏈密鑰(Chain Key)計算消息密鑰(Message Key)

消息發(fā)快遞者每次需要新的消息密鑰時,計算如下:

1.消息密鑰(Message Key)=HMACSHA256(Chain Key,0x01)

2.鏈密鑰(Chain Key)隨后更新為:鏈密鑰(Chain Key)=HMACSHA256(Chain Key,0x02)

這樣形成向前“棘輪(ratchets)”鏈密鑰(Chain Key),這也意味不能使用存儲的消息密鑰推導出當前或過去的鏈密鑰(Chain Key)值。

通過根密鑰(Root Key)計算鏈密鑰(Chain Key)

每一條發(fā)快遞的消息都附帶一個短期的Curve25519公鑰。一旦收到響應,新的鏈密鑰(Chain Key)計算如下:

1.ephemeralsecret=ECDH(Ephemeralsender,Ephemeralrecipient)

2.鏈密鑰(Chain Key),根密鑰(Root Key)=HKDF(Root Key,ephemeralsecret)

一個鏈密鑰只能給一個用戶發(fā)消息,所以消息密鑰不能被重用。由于消息密鑰和鏈密鑰(Chain Keys)的計算方式,消息可能會延遲、亂序或完全丟失而不會有問題。

傳輸媒體和附件

任何類型的大附件(視頻,音頻,圖像或文件)也都是端對端加密的:

1.發(fā)件人(發(fā)消息的WhatsApp用戶)生成一個32字節(jié)的AES256臨時密鑰和一個32字節(jié)HMACSHA256臨時密鑰。

2.發(fā)件人通過AES256密鑰(CBC模式)和隨機IV給附件加密,然后附加使用HMACSHA256密文的MAC。

3.發(fā)件人將加密的附件以上傳到服務器以二進制存儲。

4.發(fā)件人給收件人發(fā)快遞一個包含加密密鑰、HMAC密鑰、加密二進制的SHA256哈希值和指向二進制存儲的指針的加密消息

5.收件人解密消息,從服務器檢索加密的二進制數(shù)據(jù),驗證AES256哈希,驗證MAC并解密為明文。

群組消息

傳統(tǒng)未加密的聊天應用通常對群組消息使用“服務器扇出(serverside fanout)”來發(fā)群組消息。當一個用戶向群組發(fā)消息時,服務器將消息分發(fā)給每一個群組成員。

而“客戶端扇出(clientside fanout)”是客戶端將消息發(fā)給每一個群組成員。

WhatsApp的群組消息基于上面列出的成對加密會話構建,以便高效實現(xiàn)大量群組消息通過服務器扇出(serverside fanout)。這是通過Signal傳輸協(xié)議(Signal Messaging Protocol)的“發(fā)快遞者密鑰(Sender Keys)”來完成的。

WhatsApp群組成員第一次發(fā)消息到群組:

1.發(fā)快遞人生成一個隨機32字節(jié)的鏈密鑰(Chain Key)。

2.發(fā)快遞人生成一個隨機Curve25519簽名密鑰對。

3.發(fā)快遞人將32位鏈密鑰(Chain Key)和簽名密鑰中的公鑰組合成消息發(fā)快遞人密鑰(Sender Key)。

4.發(fā)件人用成對傳輸協(xié)議為每個群組成員單獨加密發(fā)快遞人密鑰(Sender Keys)。

所有后續(xù)發(fā)給該群組的消息:

1.發(fā)快遞人從鏈密鑰(Chain Key)中獲取消息密鑰(Message Key)并更新鏈密鑰(Chain Key)

2.發(fā)快遞人在CbC模式下使用AES256加密消息

3.發(fā)快遞人使用簽名密鑰(Signature Key)簽名密文

4.發(fā)快遞人將單個密文消息發(fā)給服務器,服務器將消息分發(fā)給所有群組成員

消息發(fā)快遞人鏈密鑰(Chain Key)的“哈希棘輪(hash ratchet)”提供向前安全。當群組成員離開時時,所有剩下的群組成員都清除發(fā)快遞人密鑰(Sender Key)并重新生成。

通話設置

WhatsApp語音和視頻通話也是端對端加密。當WhatsApp用戶發(fā)起語音或視頻通話時:

1.發(fā)起人與接收人建立加密會話(如果還沒有建立過)

2.發(fā)起人生成一個隨機32字節(jié)的安全實時傳輸協(xié)議(SRTP)主密鑰(master secret)

3.發(fā)起人向接收人發(fā)快遞一個包含安全實時傳輸協(xié)議(SRTP)主密鑰的加密消息用于發(fā)通話信號

4.如果應答了呼叫,跟著發(fā)起安全實時傳輸協(xié)議(SRTP)呼叫

狀態(tài)

WhatsApp狀態(tài)加密方式和群組消息非常相似。給指定的一組接收人第一次發(fā)狀態(tài)遵循向群組第一次發(fā)消息相同的步驟。類似地,給同一組接收人發(fā)快遞后續(xù)狀態(tài)也遵循發(fā)群組消息相同的步驟。當狀態(tài)發(fā)快遞人更改狀態(tài)隱私設置或從地址簿種刪除號碼來刪除接收人時,狀態(tài)發(fā)快遞人會清除發(fā)快遞人密鑰(Sender Key)并重新生成。

驗證密鑰

WhatsApp用戶還可以驗證與之通信用戶的密鑰,以便他們能夠確認未授權的第三方(或WhatsApp)未發(fā)起中間人攻擊。通過掃描二維碼或通過比較60位數(shù)字來完成。

二維碼包括:

1.版本號

2.雙方的用戶身份

3.雙方完整的32字節(jié)身份公鑰

當用戶掃描對方的二維碼時,將比較這些密鑰以確保二維碼中的身份密鑰與服務器檢索到的相匹配。

通過拼接兩個用戶身份密鑰的30位數(shù)字指紋來計算60位數(shù)字號碼。計算30位數(shù)字指紋步驟:

1.重復SHA512哈希身份公鑰和用戶標識符5200次

2.獲取最后輸出哈希的前30個字節(jié)

3.將30個字節(jié)分成6組每組5字節(jié)的數(shù)據(jù)塊

4.通過解析每組5字節(jié)數(shù)據(jù)塊為bigendian無符號整形并且取模10萬次轉換為5個數(shù)字

5.把六組每組5個數(shù)字連接成30位數(shù)字

傳輸安全

WhatsApp客戶端和服務器之間所有通信都在單獨的加密通道內(nèi)分層。在Windows Phone、iPhone和Android上,這些端對端加密客戶端可以使用噪音管道(Noise Pipes),使用噪聲協(xié)議框架(Noise Protocol Framework)中的Curve25519、AESGCM和SHA256實現(xiàn)長期運行的交互連接。

這為客戶端提供了一些不錯的屬性:

1.極快的輕量級連接設置和恢復

2.加密隱藏元數(shù)據(jù)防止未授權的網(wǎng)絡監(jiān)聽。沒有透露連接用戶身份相關的信息。

3.服務器上不存儲客戶端的安全認證信息。客戶端使用Curve25519密鑰進行身份驗證,因此服務器僅保存客戶端認證公鑰(public authentication key)。如果服務器的用戶數(shù)據(jù)庫被入侵,也不會泄露個人認證憑證。

結論

WhatsApp用戶之間的消息受到端對端加密協(xié)議的保護,因此第三方和WhatsApp都無法獲知消息內(nèi)容,消息只能由接收人解密。所有WhatsApp消息(包括聊天、群聊、圖片、視頻、語音消息和文件)和WhatsApp通話都受到端對端加密的保護。

WhatsApp服務器無法訪問WhatsApp用戶的私鑰,并且WhatsApp用戶可以選擇驗證密鑰以確保其通訊完整。

WhatsApp使用的Signal協(xié)議庫是開源的,代碼:https://github.com/whispersystems/libsignalprotocoljava/

參考

維基百科:端到端加密

Signal協(xié)議中的雙棘輪算法

農(nóng)民伯伯翻譯


文章推薦
阿里云創(chuàng)建公鑰詳細步驟,阿里云服務器ssh生成公鑰
案例分享  通過多接入邊緣計算,最先提出邊緣接入計算概念的組織
TikTok上11位頭部大號大賞,2021年tiktok平臺回顧
Twitter怎么注冊賬號,怎么創(chuàng)建twitter號


特別聲明:以上文章內(nèi)容僅代表作者本人觀點,不代表ESG跨境電商觀點或立場。如有關于作品內(nèi)容、版權或其它問題請于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。

搜索 放大鏡
韓國平臺交流群
加入
韓國平臺交流群
掃碼進群
歐洲多平臺交流群
加入
歐洲多平臺交流群
掃碼進群
美國賣家交流群
加入
美國賣家交流群
掃碼進群
ESG跨境專屬福利分享群
加入
ESG跨境專屬福利分享群
掃碼進群
拉美電商交流群
加入
拉美電商交流群
掃碼進群
亞馬遜跨境增長交流群
加入
亞馬遜跨境增長交流群
掃碼進群
亞馬遜跨境增長交流群
加入
亞馬遜跨境增長交流群
掃碼進群
拉美電商交流群
加入
拉美電商交流群
掃碼進群
ESG獨家招商-PHH GROUP賣家交流群
加入
ESG獨家招商-PHH GROUP賣家交流群
掃碼進群
2025跨境電商營銷日歷
《2024年全球消費趨勢白皮書——美國篇》
《2024TikTok出海達人營銷白皮書》
《Coupang自注冊指南》
《eMAG知識百科》
《TikTok官方運營干貨合集》
《韓國節(jié)日營銷指南》
《開店大全-全球合集》
《TikTok綜合運營手冊》
《TikTok短視頻運營手冊》
通過ESG入駐平臺,您將解鎖
綠色通道,更高的入駐成功率
專業(yè)1v1客戶經(jīng)理服務
運營實操指導
運營提效資源福利
平臺官方專屬優(yōu)惠

立即登記,定期獲得更多資訊

訂閱
聯(lián)系顧問

平臺顧問

平臺顧問 平臺顧問

微信掃一掃
馬上聯(lián)系在線顧問

icon icon

小程序

微信小程序

ESG跨境小程序
手機入駐更便捷

icon icon

返回頂部