Passwords

使用英語單詞會削弱 diceware 密碼嗎?

  • June 14, 2019

Diceware 密碼片語由從 7776 個單詞的數據庫中選擇的一組單詞構成,使用五次擲骰子來選擇每個單詞。論據是片語中的每個單詞增加了大約 12.92 位的熵,因為 $ \log_2(7776)≈12.92 $ . 正如 Diceware 的創建者 Arnold Reinhold解釋的那樣,熵來自數據庫的大小,而不是元素的表示方式。因此,原則上,一個 7 字密碼片語是否由 Diceware 數據庫中的 7 個英文單詞形成並不重要,原始的 7 個五擲骰子(實際上是 7 個五位基六數字,每個數字加 1) ,或從 7776 個漢字的數據庫中選出的 7 個漢字。每個都有大約 90 位的熵。

然而,使用英語單詞代替基本的擲骰子數字是否會降低密碼片語的熵。標準 Diceware 數據庫中的單詞平均長度為 4.2 個字元。這意味著 7 個單詞的密碼片語的平均長度約為 30 個字元。據說由於語言的冗餘,英文文本中的字母每個字母的熵約為 1.3 位。這意味著,作為英文文本分析,密碼片語只有 38 位的熵。可以說 Diceware 密碼不是典型的英文文本,但大概可以進行類似的分析以確定從 Diceware 數據庫中提取的文本的冗餘,但是,如果我的論點是正確的,

萊因霍爾德本人對此進行了掩飾。他

但是,您可能會問,Diceware 主要由英文單片語成。這種冗餘根本不會影響它嗎?嗯,確實如此。我們上面討論的七個單詞 Diceware 密碼平均長度約為 30 個字母(如果算上單詞之間的空格,則為 36 個)。如果這些字母是隨機選擇的,每個字母你會得到 4.7 位的強度。這將比 Diceware 聲稱的 7 字密碼片語的 90 位要多得多。不同之處在於工作中英語的冗餘。但是英文冗餘並不影響每個 Diceware 單詞有 12.9 位隨機性的計算,這完全取決於 Diceware 列表中有多少不同的單詞。你可以依靠這個數字。

英語的冗餘不會影響 Diceware 密碼片語的熵,只要您可以依賴每個字母具有 4.7 位熵,或者實際上至少 3 位。但我看不出有什麼保證是這種情況。

請注意,攻擊者能否利用 diceware 密碼中字母的不均勻分佈來改進暴力搜尋?因為這個問題引發了該問題中未考慮的不同論點。潛在的問題是相似的,但提出的問題是不同的。

我不認為查看 diceware 片語很有幫助。

相反,這樣看;有 $ 7776^7 \approx 2^{90.47} $ 可能的 7 個單詞 diceware 片語,並且 diceware 將統一選擇其中一種可能性。

這意味著選擇一個特定片語的機率最多為 $ 2^{-90.47} $ . 或者,換句話說,如果有人猜測隨機的 diceware 片語,他會做出預期的 $ 2^{90.47}/2 = 2^{89.47} $ 在擊中正確的之前平均猜測。

然而,使用英語單詞代替基本的擲骰子數字是否會降低密碼片語的熵。

不; diceware throw 數字和有效的 diceware 片語之間存在一對一的映射;可以使用該片語,並將其映射回生成它的 throws。而且,一對一的映射永遠不會影響熵。

它的作用是“每個字元的熵”測量;因為 diceware 片語(通常)很長,所以“每個字元的熵”測量值有點低。但是,我們並不真正關心“每個字元的熵”,而是關心整個密碼給我們的安全性。

請記住,“密碼的熵”有點誤導。如果我們談論熵,我們需要談論選擇密碼的過程。在 diceware 中,我們有一個非常不同的過程,如果有人正在編寫一些英文文本(因此可能對人類生成的英文文本有效的熵估計不適用於 diceware 生成的文本)

以下是我們可以玩的一些遊戲:

    1. 我擲骰子 50 次。
    2. 我將結果寫為123456
    3. 你試著猜猜我寫了什麼。
    1. 我擲骰子 50 次。
    2. 我把結果寫成one, two, three, four, five, six
    3. 你試著猜猜我寫了什麼。
    1. 我擲一骰子,25 次。
    2. 我將結果寫為11, 12, …, 16, 21, 22, 23, …, 66
    3. 你試著猜猜我寫了什麼。
    1. 我擲一骰子,25 次。
    2. 我將結果寫為one one, one two, …, one six, two one, two two, two three, …, six six
    3. 你試著猜猜我寫了什麼。
    1. 我擲一組五個骰子,10 次。
    2. 我把結果寫成11111, 11112, 11113, …。
    3. 你試著猜猜我寫了什麼。
    1. 我擲一組五個骰子,10 次。
    2. 我把結果寫成a, aardvark, aardwolf, …。
    3. 你試著猜猜我寫了什麼。

您更願意玩以下哪些遊戲以獲得更好的獲勝機會?

如果我們在第一場比賽中使用以下變體會發生什麼?

    1. 我擲骰子 50 次。
    2. 我將結果寫為123456
    3. 我把這張紙遞給我的朋友,他用、11111by 、by等代替。a``11112``aardvark``11113``aardwolf
    4. 你試著猜猜我的朋友寫了什麼。

這可能會改變你贏得比賽的機會嗎?你是猜我寫的還是朋友寫的有關係嗎——猜一個比猜另一個有優勢嗎?

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