按字母順序排列助記符會失去多少熵?
是的,我知道這是一個可怕的想法,並且不符合 BIP39,但請通過這個“思想實驗”和應用數學練習來滿足我的好奇心。
兩題,一題 12 字,一題 24 字。
假設“完全隨機”的熵開始,是的,最終的校驗和單詞會隨著新的排序而改變,而不是本身包含在字母排序中。
與原始隨機排序相比,片語的重新排序損失了多少熵?
我不需要“展示你的工作”數學,更像是實際上談論目前的暴力破解能力,“你會分別失去 70% 和 40% 的熵”
如果不是太不方便,像 ELI5 這樣的東西,多少超級電腦-年的努力?
TL;DR:12 個字的攻擊速度提高了大約 5 億倍,這並不完全屬於可行的攻擊領域,但它正在接近。對於 24 個字,加速比大約是 0.5 萬億分之一,但仍然遠遠超出了可行攻擊的範圍。
單詞重複與否?
首先我需要問:是否允許單詞在同一個排序片語中出現多次?如果不是,Mike D 的答案是正確的。如果是這樣,那麼問題就變得更加複雜了,至少如果您關心確切的數字的話。
允許重複的困難
一旦允許重複,通過對統一選擇的片語進行排序獲得的分佈就不再統一。例如,排序片語“act act act act act act act act act zoo”可以從 12 個不同的未排序片語(“act … act zoo”、“act … act zoo act”、“act . .. 行動動物園行動”,…)。排序後的片語“mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad mad”只能通過一種方式獲得。因此,如果您從一個隨機未排序的片語開始,然後對其進行排序,“act … act zoo”片語的可能性是“mad … mad”片語的 12 倍。
這種不均勻性對我們的問題產生了微妙而復雜的影響。如果片語是均勻分佈的,有N個可能性,那麼它認為:
- 不同片語的數量是N。
- 採樣片語的熵(以位為單位)為log 2 (N)。
- 攻擊者需要暴力猜測採樣片語的平均嘗試次數為*(N + 1) / 2*。
當片語不統一時(如對具有重複的統一片語進行排序時的情況),(2)和(3)的答案不能再簡單地表示為N的函式。這取決於分佈的不均勻程度。更糟糕的是,您甚至無法從 (2) 或相反的方式計算 (3),因為熵不是衡量某物有多安全的量度,而是衡量它的可壓縮性。這兩者有很強的相關性,但並不完全相同,兩者之間的差異再次取決於確切的分佈。
這就是說這三個問題的答案是不同的,這取決於你對什麼感興趣:
- 有多少個不同的排序片語?
- 對統一的未排序片語進行排序得到的片語有多少熵?
- 攻擊者猜測通過對一個統一的未排序片語進行排序獲得的片語有多難?
1. 有多少個不同的排序片語?
從一組N個元素中抽取的由k個元素組成的不同多重集的數量為。
- 對於k=12和N=2048,即11737947382912650038702322439680或*~2 103.211*。
- 對於k=24和N=2048即54640990776272965318633918350257589558711775320768326400或*~2 185.156*
請注意,當不允許重複時,這些數字僅與相應的數字略有不同(分別為2 103.118和2 184.767)
2. 對統一的未排序片語進行排序得到的片語有多少熵?
分佈的熵是最優壓縮方案平均每個元素需要多少位來編碼來自該分佈的隨機採樣元素的(長)列表。對於具有可能性a 1、a 2、…、a n的離散分佈,其機率分別為p 1、p 2、…、p n,即。通過將這個公式準確地應用於排序片語的機率分佈,你得到:
- 對於 12 個字:~103.196位
- 對於 24 個字:~185.097位
3. 攻擊者猜測一個統一的未排序片語排序得到的片語有多難?
嘗試暴力破解並且知道機率分佈的攻擊者的最佳策略是嘗試從最有可能到最不可能的值。在這種策略下的預期嘗試次數是,假設p i從高到低排序。將此公式應用於此處討論的確切機率分佈,我們得到:
- 對於 12 個字:~(2 103.166 + 1) / 2
- 對於 24 個字:~(2 184.985 + 1) / 2
換句話說,攻擊者猜測這些排序片語分佈所需的平均時間就好像它們是均勻分佈,分別約為 103.166。大約 184.985位的熵(但是,如上一節所示,這並不是排序後的片語分佈所具有的熵)。
概括
下表總結了所有 4 個場景(允許和不允許重複,是否已排序)在所有 3 個指標(可能性數量、熵和攻擊者的預期嘗試次數)下的數字:
() = 請注意,只有重複排序後的行在三列的表達式中具有不同的數字。對於所有其他人,對於某些值v* ,它們完全遵循模式2 v , v, (2 v + 1) / 2,因為它們會導致均勻分佈。