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

WhatsApp 加密概述(技術(shù)白皮書),whatsapp 免費(fèi)下載

來源網(wǎng)絡(luò)
來源網(wǎng)絡(luò)
2022-07-05
點(diǎn)贊icon 0
查看icon 896

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

WhatsApp 加密概述(技術(shù)白皮書),whatsapp 免費(fèi)下載




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

目錄

簡介

術(shù)語

客戶端注冊(cè)

會(huì)話初始化設(shè)置

接收會(huì)話設(shè)置

交換信息

傳輸媒體和附件

群組消息

通話設(shè)置

狀態(tài)

實(shí)時(shí)位置(待填坑)

驗(yàn)證密匙

傳輸安全

結(jié)論

簡介

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

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

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

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

術(shù)語

公鑰類型

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

·已簽名的預(yù)共享密鑰(Signed Pre Key)——一個(gè)中期Curve25519密鑰對(duì),安裝時(shí)生成,由身份密鑰簽名,并定期進(jìn)行輪換。

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

會(huì)話密鑰類型

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

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

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

客戶端注冊(cè)

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

會(huì)話初始化設(shè)置

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

建立會(huì)話:

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

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

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

4.發(fā)起者生成一個(gè)臨時(shí)的Curve25519密鑰對(duì)——Einitiator

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

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

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

接收會(huì)話設(shè)置

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

接收人使用自己的私鑰和消息header里的公鑰來計(jì)算相應(yīng)的主密鑰

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

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

交換消息

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

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

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

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

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

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

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

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

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

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

1.ephemeralsecret=ECDH(Ephemeralsender,Ephemeralrecipient)

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

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

傳輸媒體和附件

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

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

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

3.發(fā)件人將加密的附件以上傳到服務(wù)器以二進(jìn)制存儲(chǔ)。

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

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

群組消息

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

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

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

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

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

2.發(fā)快遞人生成一個(gè)隨機(jī)Curve25519簽名密鑰對(duì)。

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

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

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

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

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

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

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

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

通話設(shè)置

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

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

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

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

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

狀態(tài)

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

驗(yàn)證密鑰

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

二維碼包括:

1.版本號(hào)

2.雙方的用戶身份

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

當(dāng)用戶掃描對(duì)方的二維碼時(shí),將比較這些密鑰以確保二維碼中的身份密鑰與服務(wù)器檢索到的相匹配。

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

1.重復(fù)SHA512哈希身份公鑰和用戶標(biāo)識(shí)符5200次

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

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

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

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

傳輸安全

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

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

1.極快的輕量級(jí)連接設(shè)置和恢復(fù)

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

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

結(jié)論

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

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

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

參考

維基百科:端到端加密

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

農(nóng)民伯伯翻譯


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


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

搜索 放大鏡
韓國平臺(tái)交流群
加入
韓國平臺(tái)交流群
掃碼進(jìn)群
歐洲多平臺(tái)交流群
加入
歐洲多平臺(tái)交流群
掃碼進(jìn)群
美國賣家交流群
加入
美國賣家交流群
掃碼進(jìn)群
ESG跨境專屬福利分享群
加入
ESG跨境專屬福利分享群
掃碼進(jìn)群
拉美電商交流群
加入
拉美電商交流群
掃碼進(jìn)群
亞馬遜跨境增長交流群
加入
亞馬遜跨境增長交流群
掃碼進(jìn)群
亞馬遜跨境增長交流群
加入
亞馬遜跨境增長交流群
掃碼進(jìn)群
拉美電商交流群
加入
拉美電商交流群
掃碼進(jìn)群
ESG獨(dú)家招商-PHH GROUP賣家交流群
加入
ESG獨(dú)家招商-PHH GROUP賣家交流群
掃碼進(jìn)群
《TikTok官方運(yùn)營干貨合集》
《TikTok綜合運(yùn)營手冊(cè)》
《TikTok短視頻運(yùn)營手冊(cè)》
《TikTok直播運(yùn)營手冊(cè)》
《TikTok全球趨勢(shì)報(bào)告》
《韓國節(jié)日營銷指南》
《開店大全-全球合集》
《開店大全-主流平臺(tái)篇》
《開店大全-東南亞篇》
《CD平臺(tái)自注冊(cè)指南》
通過ESG入駐平臺(tái),您將解鎖
綠色通道,更高的入駐成功率
專業(yè)1v1客戶經(jīng)理服務(wù)
運(yùn)營實(shí)操指導(dǎo)
運(yùn)營提效資源福利
平臺(tái)官方專屬優(yōu)惠

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

訂閱
聯(lián)系顧問

平臺(tái)顧問

平臺(tái)顧問 平臺(tái)顧問

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

icon icon

小程序

微信小程序

ESG跨境小程序
手機(jī)入駐更便捷

icon icon

返回頂部

【免費(fèi)領(lǐng)取】全球跨境電商運(yùn)營干貨 關(guān)閉
進(jìn)行中
進(jìn)行中
【活動(dòng)報(bào)名】2024年歐洲多藍(lán)海平臺(tái)招商沙龍
官方親臨,拆解phh group/eMAG/worten三個(gè)平臺(tái)商機(jī)
立即報(bào)名
進(jìn)行中
進(jìn)行中
TikTok運(yùn)營必備干貨包
包含8個(gè)TikTok最新運(yùn)營指南(市場趨勢(shì)、運(yùn)營手冊(cè)、節(jié)日攻略等),官方出品,專業(yè)全面!
免費(fèi)領(lǐng)取
進(jìn)行中
進(jìn)行中
韓國電商節(jié)日營銷指南
10+韓國電商重要營銷節(jié)點(diǎn)詳細(xì)解讀;2024各節(jié)日熱度選品助力引爆訂單增長;8大節(jié)日營銷技巧輕松撬動(dòng)大促流量密碼。
免費(fèi)領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——全球合集
涵括全球100+個(gè)電商平臺(tái)的核心信息,包括平臺(tái)精煉簡介、競爭優(yōu)勢(shì)、熱銷品類、入駐要求以及入駐須知等關(guān)鍵內(nèi)容。
立即領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——主流平臺(tái)篇
火爆全球的跨境電商平臺(tái)合集,平臺(tái)優(yōu)勢(shì)、開店選品、入駐條件盡在掌握
立即領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——拉美篇
涵蓋9大熱門拉美電商平臺(tái),成熟的市場是跨境賣家的熱門選擇!
立即領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——日韓篇
涵蓋10+日韓電商平臺(tái),入駐條件一看就懂,優(yōu)勢(shì)熱銷品應(yīng)有盡有
立即領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——?dú)W洲篇
涵蓋20+歐洲電商平臺(tái),詳細(xì)解讀優(yōu)勢(shì)、入駐條件、熱銷品等
立即領(lǐng)取