Elliptic-Curves
X3DH 密鑰協商協議中的加密符號
有人可以解釋X3DH 密鑰協議協議第 2.2 節中的以下段落嗎?請嘗試解釋整個段落。
第 1 段:我想了解 DH 功能是如何工作的?如何使用公鑰計算共享密鑰?
DH(PK1, PK2) 表示一個字節序列,它是橢圓曲線 Diffie-Hellman 函式的共享秘密輸出,涉及由公鑰 PK1 和 PK2 表示的密鑰對。Elliptic Curve Diffie-Hellman 函式將是 [ 1 ] 中的 X25519 或 X448 函式,具體取決於曲線參數。
第二段:第一點 $ F $ 是用來辨識曲線的類型吧?這裡的秘鑰材料是什麼?HKDF資訊有什麼用?
KDF(KM) 表示來自 HKDF 算法 [ 3 ] 的 32 字節輸出,輸入為:
HKDF輸入密鑰材料= F || KM,其中 KM 是包含密鑰材料的輸入字節序列,如果曲線是 X25519,則 F 是包含 32 個 0xFF 字節的字節序列,如果曲線是 X448,則包含 57 個 0xFF 字節。F 用於與 XEdDSA [ 2 ] 進行密碼域分離。
HKDF salt = 長度等於散列輸出長度的零填充字節序列。
HKDF info = 2.1 節中的 info 參數。
- 這 $ DH(PK_1, PK_2) $ 函式是做通常的橢圓曲線 Diffie-Hellman 算法。所涉及的密鑰在這裡是隱含的;當然,如果沒有它們,您將無法計算共享密鑰!請注意,它們省略了在 $ Sig(PK,M) $ 功能,即使它也需要密鑰。
- 是的 $ F $ 值用於域分離。輸入密鑰材料是來自 ECDH 功能的共享密鑰。HKDF 的部分要點是使輸出密鑰材料具有適當的偽隨機性以供加密使用,而 ECDH 共享密鑰需要這種轉換。最後,HKDF 資訊允許您生成具有相同密鑰材料的多個密鑰;有關更多資訊,請參見此處的評論。