Elliptic-Curves

公鑰認證加密:crypto_box

  • February 22, 2022

我一直在閱讀crypto_box加密並有一個問題。在算法的細節中,它使用了 Key exchange: X25519。但是,我不明白他們為什麼需要使用密鑰交換算法。

所以我的問題是他們在哪里以及為什麼需要密鑰交換算法?

密鑰交換算法在哪裡?

crypto_box很簡單,crypto_box_curve25519xsalsa20poly1305它有兩個部分;

第 1 部分:獨立於數據包的預計算;

  • 聚會 $ A $ 有 32 字節的密鑰 $ sk_A $ 和公鑰 $ pk_A $ 在哪裡 $ pk_A = [sk_A]G $
  • 聚會 $ B $ 有 32 字節的密鑰 $ sk_B $ 和公鑰 $ pk_B $ 在哪裡 $ pk_B = [sk_B]G $ 和 $ G $ 是 X25519 的基點。

這裡 $ [a]G $ 是標量乘法,表示加法 $ G $ 對自己 $ a $ 次。

  • 聚會 $ A $ 用途 $ sk_A $ 和 $ pk_B $ 使用 X25519 派生密鑰;

$$ k = Hash(x([sk_A]pk_B)) $$注意 $ pk_B $ 是曲線上的一個點,X25519 僅使用 $ x $ ECDH 點的座標(用 $ x(\cdot) $ .

如您所見,一次 $ A $ 可以得到公鑰 $ B $ 鑰匙 $ k $ 可以立即建構,類似 $ B $ , 也。這是橢圓曲線 Diffie-Hellman 密鑰交換 (ECDH)。

第 2 部分:每包計算

  • $ A $ 選擇 24 字節隨機數 $ n $ (必須是唯一的)並且在與 $ B $ . 24 字節的 nonce 可以安全地隨機生成。
  • $ A $ 展開密鑰 $ k $ 將隨機數放入密鑰流中xsalsa20
  • 消息使用保留第一個 32 字節的流(僅 x-or)加密。
  • 前 32 字節用於驗證加密消息Poly1305

為什麼他們需要密鑰交換算法

如果他們沒有密鑰交換機制,那麼他們需要一種對稱密鑰分發機制 ,這是在發明公鑰加密之前對稱加密的負擔。

公鑰需要驗證。有時它們被用作 TOF​​U(對首次使用的信任),然後通過 Signal 等一些機制進行驗證。在一些更安全的通信中,首先驗證公鑰。

有關更多詳細資訊,請閱讀

引用自:https://crypto.stackexchange.com/questions/98769