Encryption

Zerologon 問題 - AES-CFB8

  • November 16, 2020

我正在閱讀 secura 的 zerologon 白皮書,名為:

通過破壞 Netlogon 加密來破壞未經身份驗證的域控制器。

我試圖理解 zerologon 攻擊。問題出在使用全零 IV 的 KDF 函式(AES-CF8)上,我嘗試使用選擇的塊模式來遵循 AES 實現,我的主要問題是,用於 AES 加密的秘密是電腦密碼雜湊或伺服器隨機數?

我的猜測是它是伺服器隨機數,否則 AES 的輸出總是相等的。此外,如果我是正確的,這解釋了應該需要 256 次嘗試的原因,因為我們在一個字節(第一個)的 256 個選項中有 1 個可能性。這是對的嗎?

此外,該文件有一個圖形顯示了僅 8 個字節的 AES 操作的輸出,但是文件狀態

基本的 AES 分組密碼操作採用 16 個字節的輸入並將其置換為等大小的輸出。

協議只傳輸最後 8 個?或者轉移一切,他只是為了說明?

我猜你指的是這個白皮書,所以我會在我的回答中提到它。

首先,我認為您誤解了部分協議(如圖 1 所示):KDF 不是 AES-CFB8。KDF 是一個密鑰派生函式:在這種特殊情況下,它基本上充當雜湊函式,將輸入轉換為類似隨機的字節流

我們假設客戶端和伺服器共享一個秘密密碼(或者更具體的秘密密碼雜湊)。一開始,雙方互相發送一個隨機挑戰,並使用挑戰共享密鑰來派生會話密鑰,使用 KDF。由於我們假設伺服器是誠實的,它的挑戰將是隨機的,使得會話密鑰在每個會話中都會改變(因此 256 次嘗試)。

AES-CFB8 僅在他們使用會話密鑰加密彼此質詢之後才涉及(以表明他們成功派生了會話密鑰,證明他們知道共享秘密)。

因此,這兩個挑戰(隨機數)連同密碼都被提供給 KDF,它為您提供會話密鑰。然後 AES-CFB8 用於加密您收到的挑戰,使用此 sesson 密鑰。


考慮到 8 字節長的密文,白皮書是正確的。實際上,原始 AES 處理 16 字節塊並輸出 16 字節塊。但是,CFB8 模式一次加密一個字節,首​​先加密 IV(16 個字節,黃色)並將結果的最後一個字節(綠色)與明文的第一個字節(藍色)進行異或運算,然後重新開始移位它從一個字節加密的塊(參見圖 2)。基本上,您將對一個塊執行原始 AES 加密(因此您有 16 個字節的輸入-輸出),但您丟棄了 15 個字節的輸出(是的,這是一種緩慢的加密方式)。

這意味著 CFB8 可以處理任意大小的明文 $ \ell $ ,沒有填充任何東西,並產生一個密文 $ \ell $ 字節。在這裡,挑戰是 8 個字節長,因此是 8 個字節的輸出!

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