KEM 共享密鑰可以直接用作對稱密鑰嗎?
例如,Classic-McEliece 和 Kyber KEM 都生成 32 字節的共享密鑰。多麼方便,因為這正是我需要 AES-256 密鑰的大小!
這樣做安全嗎?我的問題可以形式化為這些(我相信)關於 KEM 定義的等效問題(我最感興趣的是 NIST 第 3 輪 PQC KEM,但更一般的答案也可以)
- 做一個 $ X $ -bit KEM 共享密鑰包含 $ X $ 熵位?
- KEM 共享密鑰的位是否保證為 IID?
- KEM 共享密鑰可以直接用作對稱密鑰嗎?
背景來解釋我是如何得出這個問題的;實際上不是問題的一部分。
我期待答案是“不,你需要通過 KDF 執行 SS”,但我正在尋找支持這一點的引用。這與@poncho 給出的關於 ECDH 的答案一致,DH 也是如此,但也許這些不是正式的 KEM?:
您提到的算法使用安全散列函式來派生這個方便的 32 字節共享密鑰,但並非所有KEM 都會這樣做。因此,您的三個一般問題的答案都是“這取決於實際算法”。通常,他們使用 KDF。
例如,Kyber KEM 送出使用 SHAKE-256:
作為第 2 輪的修改,我們決定使用 SHAKE-256而不是 SHA3-256 導出最終密鑰。這對於需要超過 256 位密鑰的協議來說是一個優勢。他們可以向 Kyber 傳遞一個額外的密鑰長度參數並獲得所需長度的密鑰,而不是首先從 Kyber 請求 256 位密鑰然後對其進行擴展。NIST API 不支持此功能,因此在我們的實現中,我們在 api.h 中將密鑰長度設置為 32 字節的固定長度。
McEliece送出使用相同的雜湊函式:
3.1 參數設置kem/mceliece348864
KEM 與 $ m = 12 $ , $ n = 3488 $ , $ t = 64 $ , $ \ell = 256 $ .
場多項式 $ f(z) = z^{12} + z^3 + 1 $ .
散列函式:SHAKE256,輸出 32 字節。
該參數集在本次送出中提出並實施。