微信協議入門 原理篇

2022-06-10 09:24:07 字數 1307 閱讀 7533

各個模組的功能分別如下:

handshake協議:安全地協商出對稱加密金鑰

alert協議:用於通知對端發生錯誤,希望對端關閉連線

record協議:使用對稱加密金鑰進行安全的通訊

理論上的流程就是:

1、先使用mmtls的handshake協議,協商出加密金鑰

2、業務資料經過protobuf序列化後,再用協商出的加密金鑰進行加密傳送

更加具體的情況先給出:

1、協商出加密金鑰

1-rtt ecdhe、1-rtt psk和0-rtt psk

長連線:1-rtt ecdhe、1-rtt psk

斷連線:1-rtt ecdhe(客戶端沒有psk)、0-rtt psk(客戶端有psk)

具體的握手流程圖

mmtls參考tls1.3,對應的關鍵握手過程

1、客戶端發起協商請求:clienthello

2、伺服器返回協商響應:serverhello

3、伺服器通知協商結束:serverfinish

4、客戶端確認協商結束:clientfinish

2、加密傳送

業務資料,protobuf序列化,壓縮,業務層加密,mmtls層加密

具體的分析過程 

1、ida裡面搜尋client hello

2、進入第乙個字串 client hello,對應的**就能看出整個handshake握手相關步驟

3、進入第二個字串:send client hello fail,對應的是具體的**

這裡給出clienthello的資料結構

歡迎交流交流

倒車雷達原理篇

往後倒一點,再往後,打方向盤,打多了,回一點再倒,好,停!相信一般的車主在停車場泊位時,都會遇到車輛保管員的 熱情招呼 車技純熟的倒 也與人工提示配合默契 車技一般 方向感較差的,就經常使負責指揮的那位人士高度緊張,脾氣急躁的還少不了擠兌車主幾句。可是,並不是所有車主都有幸得到 人工倒車指引,比如說...

iOS知識原理篇

weak策略表明該屬性定義了一種 非擁有關係 nonowning relationship 為這種屬性設定新值時,設定方法既不保留新值,也不釋放舊值。此特質同assign類似 然而在屬性所指的物件遭到摧毀時,屬性值也會清空 nil out runtime對註冊的類,會進行布局,會將 weak 物件放...

MongoDB分片原理篇

mongodb目前3大核心優勢 靈活模式 高可用性 可擴充套件性 通過json文件來實現靈活模式,通過複製集來保證高可用,通過sharded cluster來保證可擴充套件性。何時使用分片技術 儲存容量需求超出單機磁碟容量 活躍的資料集超出單機記憶體容量,導致很多請求都要從磁碟讀取資料,影響效能 寫...