Keys

Poly1305 中的密鑰“r”的作用是什麼?

  • January 3, 2021

Poly1305-AES 使用兩個每個連接的密鑰 $ k $ (對於 AES)和 $ r $ (用於 Poly1305 的壓縮功能)和要執行的每個消息的 nonce n。我已經閱讀了關於實現的原始論文,我想我理解它的作用,但不知道它是如何工作的。特別是,如果 MAC 的安全性由 $ AES_k(n) $ , 為什麼必須[Math Processing Error] $ r $ 保密?

換句話說:什麼是安全屬性 $ Poly1305_r(m) $ 本身,在添加之前 $ AES_k(n) $ ?

$ Poly1305_{{r,s}}(m) $ 是一次性身份驗證器 - 它可用於使用任何給定密鑰僅對單個消息進行身份驗證 $ (r,s) $ 在不違反安全保證的情況下(違反是立即的 - 根據nacl 文件,只需要兩個具有相同密鑰的經過身份驗證的消息即可創建偽造品)。

此函式有兩個 128 位密鑰值(通常組合成一個 256 位密鑰):

  • $ r $ 是多項式評估的基礎(以特定格式,清除了一些位)
  • $ s $ 是在多項式評估結果末尾添加的鍵值

這兩個值都是密鑰的一部分——規範要求密鑰(包括 $ r $ ) 是不可預測的,並且集合的大小 $ R $ 從中[Math Processing Error] $ r $ 被抽樣確實會影響安全證明,所以我認為暴露[Math Processing Error] $ r $ 會在一定程度上損害安全保障。鑑於[Math Processing Error] $ 2^{106} $ 受限於該安全性,我會將其密鑰的所有部分視為機密。

[Math Processing Error] $ Poly1305{-}AES_{(r,k,n)}(m) $ 延伸 $ Poly1305 $ 進入通用 MAC 功能 - 即它可用於使用單個密鑰對許多消息進行身份驗證 $ (r,k) $ 只要隨機數 $ n $ 不重複。

擴展是通過更換 $ s $ 一次性驗證器中的值,其結果為 $ AES_k(n) $ ,它為每個唯一的 nonce 產生一個不可預測的值。

這 $ AES $ 部分計算可以用另一個安全密碼代替——例如nacl庫使用 $ xsalsa20 $ 加密隨機數,但其他分組密碼(如 Serpent/Twofish 等)也可以正常工作。

$ Poly1305_{k,r}(N,M) $ 是基於Carter-Wegman 隨機數的 MAC,其安全性關鍵取決於隨機數的唯一性[Math Processing Error] $ N $ 對於每條消息[Math Processing Error] $ M $ . 它被定義為

$$ Poly1305_{k,r}(N,M) = f(M,r) + AES_k(N), $$ 在哪裡 $ f(M,r) $ 是多項式[Math Processing Error] $ r $ 從二進製表示派生的係數 $ M $ , 和 $ AES_k(N) $ 是nonce的加密[Math Processing Error] $ N $ 關鍵[Math Processing Error] $ k $ . 功能 $ f(M,r) $ 單獨沒有提供任何安全保障。給定 $ f(M_1,r) $ 和 $ f(M_2,r) $ 對於兩個不同的 $ M_1,M_2 $ , 很容易恢復[Math Processing Error] $ r $ 並生成偽造品。這更容易,如果[Math Processing Error] $ r $ 是已知的。

因此,它是 nonce 的唯一性[Math Processing Error] $ N $ (以及因此它的密文)隨機化 MAC 值並使其不可預測。的重要性[Math Processing Error] $ f $ 來自它的速度,它比 AES 的速度要大,而 AES 的呼叫與消息及其長度無關。

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