字元編碼會改變熵嗎?
這是我一直想知道的一個問題。
從技術上講,我相信這兩個字元串具有相同的熵:
fkfnajkfkg%gsddg£5ER£%££££ 0110011001101011011001100110111001100001011010100110101101100110011010110110011100100101011001110111001101100100011001000110011111000010101000110011010101000101010100101100001010100011001001011100001010100011110000101010001111000010101000111100001010100011
兩個256位…
我的問題是,字元編碼會影響熵嗎?
如果隨機生成,ASCII 和二進製字元串是否都具有與密碼相同的熵?
如果 256 位可以作為 AES 密鑰,那麼它也可以作為密碼,對嗎?
我想一個類似的問題是散列“弱”密碼是否會比“強”密碼提供更低的熵字元串,請考慮一下:
Blake2B(password) = 7c863950ac93c93692995e4732ce1e1466ad74a775352ffbaaf2a4a4ce9b549d0b414a1f3150452be6c7c72c694a7cb46f76452917298d33e67611f0a42addb8 Blake2B(fkfnajkfkg%gsddg£5ER£%££££) = 03e7415fa598e9062cfd9e3cd269ca618b38b3543501e197b6c095b8749d782234e82779a2e4b489fd9c3b002734763ee3b867835e1a2232a37bf89ef8606d09
是,
7c863950ac93c93692995e4732ce1e1466ad74a775352ffbaaf2a4a4ce9b549d0b414a1f3150452be6c7c72c694a7cb46f76452917298d33e67611f0a42addb8
和
03e7415fa598e9062cfd9e3cd269ca618b38b3543501e197b6c095b8749d782234e82779a2e4b489fd9c3b002734763ee3b867835e1a2232a37bf89ef8606d09
相同的熵?
如果我沒有告訴你第一個是密碼的雜湊值,第二個是fkfnajkfkg%gsddg£5ER£%££££的雜湊值,它會改變你的看法嗎?
我還認為強制使用 256 位密碼和 256 個 ASCII 1 或 0(超過 256 位)之間存在差異。
從技術上講,我相信這兩個字元串具有相同的熵:
我們無法通過查看它來判斷字元串中有多少熵,因為它取決於它是如何生成的,以及這些值是否無法通過其他方式預測。例如,您剛剛在此站點上發布了這些字元串,因此它們在用作鍵時不會(幾乎)不包含熵。
您的字元串僅代表一個位字元串,可能具有相同的大小 - 正如您所假設的那樣,取決於實際編碼(我不知道第一個字元串使用的編碼,我只能假設第二個字元串的二進制數字)。這些位可能包含熵。
我的問題是,字元編碼會影響熵嗎?
不,它不是因為字元編碼只是位的表示,而不是位的實際值。熵存在於位的值中。
如果隨機生成,ASCII 和二進製字元串是否都具有與密碼相同的熵?
是的,假設字母表不大於預期。
如果 256 位可以作為 AES 密鑰,那麼它也可以作為密碼,對嗎?
不,因為普通人無法記住這麼大的字元串。不過,您可以將它們儲存在密碼管理器中,然後 256 位的熵就足夠了,如果不是矯枉過正的話。通常,我們不需要超過 128 位的密碼大小或密鑰——只要量子電腦還沒有成熟。
我想一個類似的問題是散列“弱”密碼是否會比“強”密碼提供更低的熵字元串,請考慮一下:
不,現在輸入字元串的位值包含更少的熵,所以這根本沒有可比性。熵沒有被密碼散列算法擴展,因此較早的散列包含的熵少於後者的散列。
如果我沒有告訴你第一個是密碼的雜湊值,第二個是 fkfnajkfkg%gsddg£5ER£%££££ 的雜湊值,它會改變你的看法嗎?
不,因為字典攻擊幾乎會立即找到第一個雜湊值。
我還認為強制使用 256 位密碼和 256 個 ASCII 1 或 0(超過 256 位)之間存在差異。
那要看。讓我們假設所有的安全性都在密碼或密鑰中。在這種情況下,我們使用 Kerckhoffs 原則,並假設我們知道密碼是如何編碼的。在這種情況下,沒有區別。
當然,現實世界的攻擊者可能不會那樣工作。您可以將密碼用於通用商店,攻擊者可能不會嘗試您的特定編碼。
大多數人在記住 256 個 1 和 0 方面都非常糟糕。輸入如此長的字元串也可能存在其他技術困難(螢幕空間、記住您在字元串中的位置、竊取剪貼板內容等)。