Public-Key

密鑰交換與密鑰封裝

  • July 31, 2021

據我了解,密鑰交換協議的步驟是

  1. 愛麗絲和鮑勃各自使用他們的公鑰和私鑰加密某些東西並將結果發送給對方
  2. 愛麗絲和鮑勃各自用他們的私鑰和對方發送的結果做一些機制
  3. 他們應該就這個秘密達​​成一致。

關鍵封裝是

  1. Alice 生成一個密鑰和公鑰,並將公鑰發送給 Bob。
  2. Bob 生成他自己的密鑰並使用 Alice 的公鑰對其進行加密。他將結果發送給 Alice。
  3. Alice 使用她的私鑰解密結果,最終得到 Bob 的密鑰。

這是正確的嗎?如果不是,有人可以澄清我誤解或遺漏了哪些部分嗎?

查看 NIST PQC KEM 送出的已知答案測試,當提供種子時,每個算法都會返回密鑰、公鑰、密文和共享密鑰。

Bob 發送給 Alice 的共享秘密是 Bob 的私鑰和密文嗎?如果不是,該術語是如何工作的?種子如何保證正確的公鑰/私鑰生成?

密鑰交換:我將以 ECC 為例。Alice 和 Bob 生成臨時密鑰對並用他們的靜態私鑰簽署他們的臨時公鑰,然後將他們簽名的臨時公鑰發送給彼此。

雙方都接收到其他簽名的臨時公鑰,並使用儲存在 aCA或 a 中的其他靜態公鑰對其進行驗證PKI。現在他們將自己的臨時私鑰與對方的臨時公鑰結合起來,使用EC Point Multiplication(對於這個例子)。現在他們都有一個共享的秘密,因為兩個乘法給出了相同的結果。

然後通過快速散列執行到SHA2/3對稱加密的正確長度。例如AES-256,通過共享密鑰SHA(3)-256獲取正確長度的密鑰。

密鑰封裝:我將在RSA KEM此範例中使用 。Bob 知道 Alice 的公鑰 $ (e,n) $ . 他創建了對稱密鑰 $ M $ 從 a CSPRNG,在哪裡 $ 0<m<n $ , 並將其轉換為具有KDFie 對稱密鑰的對稱密鑰 $ M=KDF(m) $ . 密文$$ C = m^e (mod \ n) $$這是從 Bob 傳輸給 Alice,她可以通過計算解密它$$ P = m^d (mod \ n) $$愛麗絲現在有 $ k $ , 並導出對稱密鑰 $ M $ 和 $ M = KDF(m) $

旁注:我看到您標記了後量子密碼學,因此您可以將 NTRU 用於 KEM;執行 Shor 算法的足夠強大的量子電腦可以破解 ECC 和 RSA。然而,NTRU KEM 的工作方式與 RSA KEM 不同。我不熟悉 ECC 密鑰交換的量子安全版本,但我確信存在一個。

當您說“Bob 生成他自己的密鑰並使用 Alice 的公鑰對其進行加密。他將結果發送給 Alice”時,密鑰封裝存在問題。

這是加密而不是封裝。在密鑰封裝算法中,Bob 共享的密鑰是作為“封裝”算法的輸出生成的,該算法僅在 Alice 公鑰上執行。這工作如下:

封裝算法的輸入為 Alice 公鑰,Bob 側封裝算法生成的輸出為密文 c 和密鑰 k。現在,Bob 將向 Alice 發送密文 c,Alice 將使用其私鑰對其進行解封裝以恢復密鑰 k。

為了更清楚地了解概念,請參閱peikert 的 KEM和Vikram在後量子密碼學中使用基於格的密碼學的更清晰的版本。)。

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