Key-Exchange
如何處理多個密鑰協議
如果我將使用兩個不同的密鑰協議,例如 SIDH 和 ECDH,我將如何處理這兩個派生密鑰?
XOR 或 SHA-256 這兩個鍵之間有什麼不同嗎?(會降低安全級別嗎?)
還是有另一種安全的方法?
1.異或
key = SIDH ⊕ ECDH
2. SHA-256
key = SHA-256(SIDH, ECDH)
如果您正在執行 ECDH 密鑰協議 $ [a]B = [b]A = [ab]G $ ,您應該對 ECDH 共享密鑰進行散列以派生密鑰 $ k = H([ab]G) $ 無論如何,而不是使用 $ [ab]G $ 直接,出於各種原因。不僅如此,您還應該對密鑰協議的記錄進行雜湊處理,給出 $ k = H([ab]G, A, B, \mathit{etc.}) $ . 這裡 $ H $ 可能是 SHA-256 或 HKDF-SHA256 或 BLAKE2b,輸入是唯一編碼的,因此兩個轉錄本不會發生衝突。
本質上,任何花哨的數學魔術都可以就花哨的數學結構中的一個元素達成一致,因此它也適用於 SIDH。你是否這樣做並不重要 $ H(\mathit{ecdh}, \mathit{sidh}, \mathit{transcript}) $ 或者 $ H\bigl(2, H(0, \mathit{ecdh}, \mathit{transcript}), H(1, \mathit{sidh}, \mathit{transcript})\bigr) $ , 在哪裡 $ \mathit{ecdh} $ 和 $ \mathit{sidh} $ 是你從 ECDH 和 SIDH 法術中召喚出來的數學元素。重要的主要是您對雜湊的所有輸入進行唯一編碼,並根據其在協議中的用途唯一地標記每個雜湊輸入(此處使用固定寬度數字 0、1、2 完成,但可以使案例如長度來完成- 分隔的字元串)。