密鑰派生函式是否總是在結果密鑰中生成均勻分佈的位?
我是密碼學的學生。在我們的學習課程中,我們進入了 AES-128 算法。給出的所有範例都使用了初始密鑰 k,128 位,我們僅簡要介紹了 PBKDF2 的密鑰推導。我們將密鑰視為一系列固定長度的位,並討論了安全性等。
如果 128 位密鑰是從一個將密碼作為輸入的函式生成的,那麼 0 和 1 在生成的密鑰 k 上的分佈是否總是隨機的?
假設我有一個來自洩露網站的“真實”密碼字典(例如 1M 的良好樣本大小),並將這些密碼通過 PBKDF2 函式並記錄密鑰 k1、k2 到 kn(其中 n=1,000, 0000)。
如果我要繪製設置或不設置位 0 到 127 的頻率的直方圖,如果鍵與隨機鍵無法區分,我預計會設置偶數位。如果你願意,想像一下,球從一個矩陣中落下並落在 128 個插槽中的 1 個。
我的問題是,是這樣嗎?是否有可能看到偏差(即,生成的密鑰是否集中在位頻譜的一個區域中,可能是某種曲線?
我提出這個問題的理由是,生成的密鑰將捆綁到特定的生成密鑰類型,它會縮小攻擊 AES-128 加密的密鑰空間。
因此,是否說 AES-128 僅與用於形成密鑰的密碼推導功能一樣好?如果生成的鍵很差,鍵空間會變窄嗎?
對於這樣一個簡單的統計測試,它將是均勻隨機的。問題是您將具有特定狀態的位的機率視為彼此獨立。您需要查看給定其他位設置的某些位的條件機率分佈。
映射的函式的輸出和輸入位的整個聯合分佈 $ {0,1}^a \to {0,1}^b $ 需要按順序 $ 2^{a+b} $ 要儲存的記憶體。顯然,即使是通過固定轉換將 32 位映射到另一個 32 位的小函式(即,不包括任何定義特定排列的關鍵位),也無法儲存和採樣它。
函式的完整條件分佈完全決定了它的輸出。它可以看作是馬爾可夫模型中的轉移機率矩陣。正因為如此,分佈將編碼函式的任何偏差,例如產生某些位模式的偏好(有機率)。
是和不是。你的一般心態沒有錯。由於密鑰(對於固定的迭代次數)僅取決於密碼,因此受到密碼的限制。特別是,它們具有低熵,其中一些比其他更可能,它們很容易在字典中找到,等等。
然而,PBKDF2 的目標是處理密碼的弱種子並創建一個可以饋送到密碼原語的密鑰。為了防止預先計算,可以將鹽值添加到密碼中。鑑於函式的性質,您將得到兩個結果:蠻力是低效的(假設鹽是公開的)和密鑰的熵很高(這意味著您不能聲稱某些密鑰比其他密鑰更有可能) .