Encryption
密鑰交換和公鑰加密方案之間的關係
最近我們看到很多關於後量子密鑰建立(密鑰封裝機製或密鑰交換)的論文,主要是由於 NIST 對 PQ 協議的標準化呼叫。但是,大多數工作例如:Kyber、NTRU-prime、NTRU-KEM 專注於密鑰封裝而不是密鑰交換。現在我的問題如下:
- KEM 是單邊協議,而密鑰交換是雙邊協議。即密鑰由客戶端選擇,伺服器通過解密獲得密鑰。直覺的雙邊協議(FRODO 和 NewHope)看起來比單邊(KEM)協議更好。由於雙方都參與選擇密鑰。那麼為什麼更關注KEM呢?
- 考慮這種情況,如果我們假設密鑰交換在雙方都建立了一個隨機密鑰,那麼客戶端可以使用該密鑰獲取一個隨機字元串 XOR 並將 XOR 後的值發送到伺服器。由於伺服器具有相同的密鑰,伺服器可以輕鬆檢索客戶端的隨機字元串。因此,密鑰交換可以作為 PKE(作為 DH 的 ElGamal)工作,隨後作為 KEM 工作。該方案將是 CPA 安全的,因為假設已建立的密鑰是隨機的。因此,Key-exchange can 比 KEM 更靈活。這是對的嗎?
- 我知道目前的密鑰交換方案比 KEM 具有非常高的失敗機率。並且,因此可以通過眾所周知的黑盒轉換將它們轉換為 CCA 安全方案,以實現密鑰的可重用性。但是,如果我們能夠提出與 KEM 具有相似失敗機率的密鑰交換方案,並且能夠將它們轉換為 CCA 安全方案,那麼我們是否應該更喜歡密鑰交換方案而不是 KEM?
我感謝您的幫助。
首先,一些定義。
- 公鑰加密方案(PKE) 是一種具有公鑰和私鑰的方案,我們可以使用公鑰加密消息並使用私鑰解密。
- 密鑰封裝方法(KEM)是一種具有公鑰和私鑰的方案,我們可以使用公鑰創建包含隨機選擇的對稱密鑰的密文(封裝)。我們可以使用私鑰解密密文。
- 密鑰交換協議(KEX) 是一種允許 Alice 和 Bob 就共享對稱密鑰達成一致的協議。雙步 KEX 是一種協議,其中 Alice向Bob 發送一條消息,Bob 向 Alice 回復一條消息,之後他們都擁有相同的對稱密鑰。
接下來,一些上下文。
- 任何具有足夠大明文空間的 PKE 都可以輕鬆轉換為 KEM。
- 通過添加一些對稱加密,任何 KEM 都可以變成 PKE。(這通常稱為混合加密。)
- 任何 CPA 安全的 KEM 都可以變成被動安全的 KEX。(Alice 執行 KEX 密鑰生成並將公鑰發送給 Bob。Bob 創建包含隨機選擇的對稱密鑰的密文並將其發送回 Alice。Alice 解密密文並獲得對稱密鑰。)
- 一些被動安全的兩步 KEX 可以變成 CPA 安全的 KEM。(導致 Alice 的消息的過程是密鑰生成。公鑰是 Alice 的消息。Alice 發送消息後的狀態是私鑰。導致 Bob 的消息和共享對稱密鑰的過程(響應 Alice 的消息,即即,公鑰)是密鑰封裝,鮑勃的消息是公鑰。)
- 被動安全的兩步 KEX 可以使用數字簽名變成主動安全的三步 KEX。(Bob 簽署了兩條消息並將簽名作為他的消息的一部分發送。Alice 簽署所有內容並將簽名作為第三條消息發送。)
換句話說,這些概念是緊密相關的。(上面有很多細節和簡化,但從道德上講,它應該是大致正確的。)
現在到您的實際問題(這有點不清楚,但讓我們嘗試回答)。
- 與 RSA-OAEP 等傳統 PKE 相比,設計 KEM 並證明其安全通常更容易。同樣,與傳統的密鑰交換方案相比,設計 KEM 並證明其安全通常更容易。然後我們可以把KEM變成一個使用混合加密的PKE,我們可以把它變成一個有標準轉換定理的KEX。這就是為什麼 KEM 是設計和研究的有吸引力的對象。
- 您的草圖似乎與上述兩步 KEX => KEM 論點基本相似。但是,這並不意味著 KEX 更容易設計和分析(從頭開始)。經驗表明並非如此。
- PKE、KEM 和 KEX 的傳統定義不允許程序在通常情況下失敗。對於傳統方案,這一直很容易保證。對於較新的方案,情況似乎並非如此。通常,事情可能會出錯(解密失敗)。這使分析變得更加困難,但並非不可能(正如 NTRU 向我們展示的那樣)。儘管如此,我認為解密失敗的存在並沒有改變這樣一個事實,即 KEM 設計和分析似乎比 KEX 設計和分析更容易。