Zerologon 問題 - AES-CFB8
我正在閱讀 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 個字節的輸出!