Des

Sweet32:單個 8 字節塊會話 ID 可以被此漏洞利用嗎?

  • August 28, 2016

我目前正在開發一種身份驗證方案。身份驗證方案將使用 64 位加密來加密其會話 ID。

以下是身份驗證系統的工作方式:

對於每個會話,將連接一個 32 位靜態會話 ID(每個使用者一個,每次登錄隨機)和一個 32 位每個請求會話 ID(一個用於網站上的每個連結,隨機每個新請求)。這將使用 DES 或 3DES 加密 n 輪,每輪使用不同的密鑰。另外,我會隨機化,所以有時將靜態 ID 放在首位,有時將每個請求的 ID 放在首位。

這些會話 ID 也將儲存在伺服器端的數據庫中。

我需要加密會話而不是僅僅隨機化整個會話 ID 並逐字發送的原因是因為我希望能夠使與靜態會話 ID 相關的所有按請求會話無效(如果有任何嘗試)送出因某種原因過期或無效的會話。

例如,即使會話因為過期而從數據庫中刪除,我也想找到仍然在相關數據庫中的每個會話(具有相同的靜態會話 ID),並且如果有任何嘗試送出,也能夠刪除它們過期的會話 ID。

現在你想知道,為什麼會話 ID 這麼短。這是因為其中一些會話 ID 將用作手動輸入的一次性密碼。使用十六進制,這將導致輸入 16 個字元,並且具有更長的塊當然會導致使用者輸入繁瑣。

現在的問題是:這個方案會被 sweet32 攻擊嗎?我從 sweet32 論文中了解到的,依賴於沒有任何 CBC 的單個塊的密碼或其他東西是安全的,對嗎?

還是我對 Sweet32 漏洞的誤解?

我從 sweet32 論文中了解到的,依賴於沒有任何 CBC 的單個塊的密碼或其他東西是安全的,對嗎?

是 Sweet32 適用於 CBC 模式下塊大小為 64 位的密碼。這個想法是收集足夠的密文來找到一個碰撞(由於生日問題將在 $ 2^{32} $ 塊),換句話說,兩個相等的密文塊。

我們可以將這些塊寫為 $ E_k(C_{i-1} \oplus P_i), E_k(C_{j-1} \oplus P_j) $ ,就像在 CBC 模式中一樣,我們加密明文塊和前一個密文塊的 XOR。我們注意到,由於塊是相等的,它必須保持 $ C_{i-1} \oplus P_i = C_{j-1} \oplus P_j $ . 我們知道密文是什麼,如果我們把等式寫成 $ C_{i-1} \oplus C_{j-1} = P_i \oplus P_j $ 我們知道左邊,恢復明文塊就相當於解決了兩次填充

請注意,除了僅在 CBC 模式下處理 64 位密碼外,此攻擊還需要大量數據。我認為在論文中,研究人員在發現碰撞之前觀察了數百 GB 的密文。考慮到所需的數據量(我懷疑您有數百 GB 的會話 ID),並且您沒有使用 CBC 模式這一事實,您沒有風險。

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