使用英語單詞會削弱 diceware 密碼嗎?
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 生成的文本)
以下是我們可以玩的一些遊戲:
- 我擲骰子 50 次。
- 我將結果寫為
1
、2
、3
、4
、5
或6
。- 你試著猜猜我寫了什麼。
- 我擲骰子 50 次。
- 我把結果寫成
one
,two
,three
,four
,five
,six
。- 你試著猜猜我寫了什麼。
- 我擲一對骰子,25 次。
- 我將結果寫為
11
,12
, …,16
,21
,22
,23
, …,66
。- 你試著猜猜我寫了什麼。
- 我擲一對骰子,25 次。
- 我將結果寫為
one one
,one two
, …,one six
,two one
,two two
,two three
, …,six six
。- 你試著猜猜我寫了什麼。
- 我擲一組五個骰子,10 次。
- 我把結果寫成
11111
,11112
,11113
, …。- 你試著猜猜我寫了什麼。
- 我擲一組五個骰子,10 次。
- 我把結果寫成
a
,aardvark
,aardwolf
, …。- 你試著猜猜我寫了什麼。
您更願意玩以下哪些遊戲以獲得更好的獲勝機會?
如果我們在第一場比賽中使用以下變體會發生什麼?
- 我擲骰子 50 次。
- 我將結果寫為
1
、2
、3
、4
、5
或6
。- 我把這張紙遞給我的朋友,他用、
11111
by 、by等代替。a``11112``aardvark``11113``aardwolf
- 你試著猜猜我的朋友寫了什麼。
這可能會改變你贏得比賽的機會嗎?你是猜我寫的還是我朋友寫的有關係嗎——猜一個比猜另一個有優勢嗎?