Passwords

對於每個來自主控的派生密碼,洩露了多少位熵?

  • February 6, 2018

給定一個具有大量熵的主密碼(類似於比特幣高畫質錢包種子詞,130 位或更多熵)每個洩露的生成密碼失去了多少位熵?

讓我們以使用我編寫hello stack exchange good to see you的工具進行 256k 次迭代的 PBKDF2 和 SHA512 生成的主密碼和一些密碼為例

foo.com   mr7i?O5til?2
bar.com   PYOT1-AOhX.D
baz.com   rk!Vxf8G_HgO

鑑於攻擊者擁有這些生成的密碼,他們猜出原始主密碼有多容易?如果他們有 2/3、1/3,有多少,以及與 0/3 相比如何?

謝謝!

從資訊論的角度來看,並且具有理想的密碼散列函式,具有 $ k=68 $ 派生密碼的每個字元的可能性,每個這樣的字元洩漏大約 $ \log_2(k)\approx6.1 $ 位,但前提是它仍然顯著低於主密碼中的熵。這是大約的洩漏 $ 73 $ 每個派生密碼的位。和 $ 130 $ 主密碼中的熵位,熵洩漏將是 $ 73 $ 一個派生密碼的位,略低於 $ 130 $ 多一點。

範例密碼hello stack exchange good to see you是有意義的英文文本,大小寫一致,間距適當,沒有數字或標點符號,包含 30 個非空格字元。它是否代表具有 130 位熵的密碼是值得懷疑的;我估計 40 到 90 位,如果在一個派生密碼之後幾乎沒有熵剩餘,我也不會感到驚訝;或/並且如果該密碼對於說英語的人來說是迄今為止最簡單的(因此很可能)匹配單個域/派生密碼對。

然而,假設 PBKDF2-HMAC-SHA512 是完整的(就目前而言),完整的熵洩漏不足以像真正的對手那樣為計算綁定的對手找到主密碼(或另一個站點的派生密碼)。熵計算僅用於判斷需要多少衍生密碼才能進行攻擊(這裡,兩個很可能就足夠了,一個可能就足夠了)。最好的攻擊仍然是嘗試所有可能的主密碼,從最可能到最不可能,針對一個派生的密碼雜湊(這將淘汰大多數候選主密碼),然後在成功的情況下選擇性地進行第二次。

有了足夠多的派生密碼,預期的攻擊難度主要取決於主密碼中的熵,以及 PBKDF2 的參數化(不為人知): $ 2^n $ 迭代將主密碼中的熵拉伸了大約 $ n $ 額外的位。


從資訊論的角度來看,如果主密碼是在有限集中以機率選擇的 $ p_i $ 對於每個主密碼和 $ 1=\sum p_i $ ,它最初有熵 $ H=\sum(p_i\log_2(1/p_i)) $ . 當已知站點(或該站點的符號)的派生密碼被知道時,這使得某些主密碼不可能,某些機率 $ p_i $ 變為零(並從總和中刪除),其他的增加到 $ p’_i $ 成比例,所以 $ 1=\sum p’_i $ 仍然成立。熵洩漏是初始熵和剩餘熵之間的差異。

換句話說,熵洩漏是

$$ \sum_\text{all MPs}p_i\left(\log_2{1\over p_i}\right)\ -\ \sum_\text{remaining MPs}\left({p_i\over\displaystyle\sum_\text{remaining MPs}p_i}\log_2{\displaystyle\sum_\text{remaining MPs}p_i\over p_i}\right) $$ 當只剩下一個主密碼時,只剩下剩下的總和,熵洩漏就是主密碼。

如果所有主密碼的可能性相同,則熵洩漏是最初可能的主密碼數量與剩餘可能的主密碼數量之比的以 2 為底的對數。當僅保留一個主密碼時,熵洩漏是所有最初可能的主密碼數量的以 2 為底的對數。

假設推導函式是偽隨機函式,知道其輸出之一(或其符號)將排除密碼,而不管其初始機率如何。每個輸出符號大約均勻分佈在 $ k $ ,可以證明熵洩漏為 $ s $ 預計顯示符號幾乎 $ s\log_2(k) $ 如果這遠小於初始熵;並且預計幾乎是初始密碼中的所有熵,如果 $ s\log_2(k) $ 大得多。

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