Encryption

加密軟體如何接受不是 AES 密鑰長度之一的密碼長度?

  • July 27, 2017

AES附帶 128、192 和 256 位的密鑰大小。

但在 Truecrypt 或其他加密軟體中,我們可以使用不同長度的密碼,甚至小於 128 位或大於 256 位。

這怎麼可能?

我想 Truecrypt 使用KDF從您的密碼中派生 128/192/256 位密鑰。這是標準做法。直接使用密碼是不可取的,因為它們通常是低熵(可預測的),而且太短(如您所指出的)。

使用您輸入的實際密碼作為加密密鑰幾乎是一個普遍的壞主意。雖然提到的密碼使用 128-256 位密鑰,並且理想情況下每個字節具有 8 位熵(複雜性/隨機性,鬆散),但使用者可以在鍵盤上鍵入的符號不超過 5 位 - 即使假設字元非常多樣化設置超出典型的字母、數字和頂行符號。正如所指出的,它們甚至可能小於密碼所需的完整大小,因此可能會用空值或其他可預測的東西填充,從而進一步降低熵。

除此之外,我們人類喜歡模式,喜歡字典單詞並且只能記住一些簡單的替換(S-$),最終的關鍵可能不是很強大,因此更容易猜測。

密鑰派生函式(KDF) 將這些相對簡單的密碼片語“拉伸”為所需的位數,甚至將較長的密碼轉換為所需的較短長度 - 考慮到原始密碼可能有多弱,這個較短的派生位序列(密鑰)可以甚至比很長的文本密碼更強大。

此外,由於良好的派生函式會增加一些隨機性(salt),因此每次使用相同的密碼生成新密鑰(加密新事物)時,鍵入相同的密碼會導致非常不同的密鑰,因為使用了新的 salt。使用相同的鹽(或不使用鹽)將產生相同的派生密鑰,這對於實際解密內容顯然是必不可少的。但是,使用相同的派生密鑰加密兩個不同的對象會引入與密鑰重用相關的漏洞,因此有效的加鹽極大地提高了安全性,同時允許重用人類喜歡的相同密碼。

最後,許多實現允許您調整 KDF 工作以創建派生密鑰的難度,以便您可以設置攻擊者破解它的難度,並將其與使用正確密碼片語成功派生所需的時間進行權衡. 對於配備 GPU 或其他基於硬體輔助的裝備精良的攻擊者而言,嵌入式設備上的 10 秒推導可能是毫秒級的任務。

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