攻擊者能否利用 diceware 密碼中字母的不均勻分佈來改進暴力搜尋?
我在某些地方使用了一些 diceware 密碼片語,但我有一個問題找不到答案。
假設我擲骰子得到 $ N $ 總共有的話 $ M $ 字母,並且我不會在單詞之間放置空格。
希望暴力破解我的秘密的攻擊者可能不得不嘗試 $ 7776^N $ 多次將其破解為 diceware 密碼或 $ 26^M $ 將其破解為“普通”密碼(假設我只得到帶字母的單詞)。
但是試圖破解它作為普通密碼的攻擊者可以假設它是由英文單片語成的,然後他們就會知道某些字母和字母組合更常見。
所以我的 $ M $ 字母不會具有隨機選擇的字母的熵,而是一些較低的熵。
我的問題是,什麼 $ M $ 我是否需要組成與 $ N $ 字?
但是試圖破解它作為普通密碼的攻擊者可以假設它是由英文單片語成的,然後他們就會知道某些字母和字母組合更常見。
他們可以嘗試這個,但他們會很愚蠢,因為這樣會少很多 $ N $ -word diceware 密碼比 $ M $ - 與一個長度相同的英文字母組成的字母串 $ N $ -word diceware 密碼!
假設您使用十字的 diceware 密碼。有 $ 7776^{10} \approx 8 \times 10^{38} \approx 2^{129.2} $ 這樣的密碼。這已經是一個比任何對手都可以找到一根針的更大的大海撈針了。(如果密碼在沒有鹽的情況下進行散列,那麼一個非常強大的對手可能能夠在這麼大的大海撈針中找到許多針中的一根,但你可以選擇 $ N = 20 $ 相反,該服務應該對他們的密碼雜湊進行加鹽。)
序列上的任何分佈 $ M $ 涵蓋比這些更多可能性的獨立英文字母 $ 7776^{10} $ diceware 密碼是一個更大的大海撈針。
一個聰明的對手,他知道你的方法的所有細節,只是不知道你通過那個方法選擇的密碼,不會給自己一個更大的干草堆來搜尋。一個愚蠢的對手給自己一個更大的干草堆來搜尋只會浪費更多時間搜尋!
例如,分佈在 $ M $ 遵循英語中常見字母頻率的獨立英文字母會給像 aoqothropaaeeaetphtticawglesttgeectoyheldshnfznecr 這樣的序列提供相對較高的機率,它有很多 e’s 和 t’s 和 a’s 但沒有很多 z’s、x’s、q’s等。 然而,這不是一個可能的 diceware 密碼,即使它的長度與十個單詞的 diceware 密碼相同,每個單詞有五個字母。並且它會降低woozydizzybuzzyfuzzyjazzymezzoexxonpizzapyrexvixen 的可能性,它(帶有適當的單詞列表)是一個可能的 diceware 密碼。
讓我們看一個簡化的例子。 我們將使用包含五個單詞的字典
cat
: 、car
、act
、art
和rat
。我們將從字典中隨機均勻地挑選一個單詞,這樣每個單詞的機率為 1/5,熵剛好超過兩位。這本詞典中的語料庫的字母頻率
a
為5/c
15、3/r
15、3 /15、4/t
15,在此分佈下,每個字母位置在兩位熵下。有 $ 4^3 = 64 $ 這個字母表中可能的三個字母單詞,其中絕大多數,59,不在我們的字典中。
- 試圖從字典中猜測我們的密碼的對手有 $ 1/5 = 20% $ 機會,在一次試驗中就做好了。
這是最聰明、最有效的對手。 2. 試圖從字母頻率獨立猜測我們的密碼的對手有 $ \frac{1}{5}\cdot\frac{19}{225} = 19/1125 \approx 1.7% $ 在一次試驗中獲得正確的機會。
為什麼?三字母密碼的分佈是該模型中字母機率的乘積。 如果對手以這種方式在我們的字典中猜到一個單詞,那麼它有 1/5 的機會是正確的密碼,但只有一個 $ 19/225 \approx 8.5% $ 對手用這些字母機率猜到的詞有可能在我們的字典中。有機率 $ 206/225 \approx 91.5% $ ,對手將猜測您永遠不會選擇的密碼:他們浪費大部分時間在更大的大海撈針中尋找錯誤的樹。
正如您所描述的,這是利用每個字母熵的對手。即使他們按機率排序而不是隨機選擇,他們也會先嘗試
aaa
, 然後aac
, 然後aat
,aca
等等, 將時間浪費在不可能的密碼上*。*即使字典中的每個單詞碰巧在這個順序中排在第一位,這個對手也沒有比對手 (1) 更好的機會。 3. 一個對手試圖從字母中猜測我們的密碼,忽略頻率,有一個 $ 1/64 \approx 1.5% $ 在一次試驗中獲得正確的機會。為什麼?在這個分佈下,每個字母獨立的機率為 1/4,所以每個三個字母的詞都有相等的機率 $ (1/4)^3 = 1/64 $ ,包括我們選擇的那個。有機率 $ 59/64 \approx 92% $ ,對手將猜測您永遠不會選擇的密碼。他們也在一個更大的干草堆中翻找,但他們這樣做的效率甚至低於對手 (2)。
這個對手只是嘗試所有組合而不考慮字母頻率。正如你所看到的,這個對手在工作上比對手(2)稍差,所以字母頻率的知識有點幫助,但他們在工作上都比對手(1)差得多。
您添加的每個單詞,如果獨立繪製,都會乘以這些機率:從同一個字典中獨立選擇第二個單詞,對手 (1) 現在有了 $ (1/25)^2 = 1/25 = 4% $ 成功的機會,對手(2)現在有 $ (19/1125)^2 = 361/1265625 \approx .029% $ 成功的機會,對手(3)現在有 $ (1/64)^2 = 1/4096 \approx .024% $ 成功的機會。 如果您使字典足夠大並且單詞序列足夠長以擊敗聰明的對手(1),那麼您也擊敗了愚蠢的對手(2)和(3)。
我的問題是,什麼 $ M $ 我是否需要組成與 $ N $ 字?
不要擔心 $ M $ . 挑選 $ N = 10 $ 對於 diceware,一切就緒。