
如何判斷密碼是否具有足夠好的熵以防止在實際時間範圍內進行暴力破解?例如,如果我有以下密碼,如何確定它是否足夠強大以防止暴力破解?
"?e&ye&ga!ruaa!na!e%ta!e%rc#Iod$woH"2245
答案1
有一個可以提供您密碼輸入的估計熵值的網站。對於上面的範例,它建議 ~247 位元。
您可以粗略地猜測需要多長時間才能破解我的密碼有多安全。
這表明計算機需要 1111 億年才能破解範例中的密碼。
更詳細的密碼分析可以參見密碼計。
答案2
你的問題——“它的強度是否足以防止暴力破解?”
真正的答案—“不”
有用的答案——“可能,至少在可預見的未來”
你應該問什麼:
我需要保護此類數據,它對我的公司有要求 x 和 y,以及敏感度 z。這是一個適當的熵水平嗎?
好吧,公平地說,@Gareth 指出的 210 位可能在很長一段時間內都沒有問題,但這可能有點過頭了,而且有不要太過分的好理由如果不需要,請進行加密。
答案3
來自Dropbox 技術博客,這是最好的文章我最近看到的,甚至還展示了其中討論的理論的實現。如果這有任何幫助,請隨時告訴我。
關於安全性要記住的另一件事是此中表達的想法XKCD漫畫。
答案4
這取決於您的密碼的隨機性。
如果您從以下清單中選擇密碼:
"?e&ye&ga!ruaa!na!e%ta!e%rc#Iod$woH"2245
aSBsb3ZlIHlvdSBLaXJzdGVuIFNoZWxieSBHdXllcg==
那你就得到了恰好的1 bit
熵(它要不是第一個密碼,就是第二個)。
但我可以對您的密碼做出一些假設:
"?e&ye&ga!ruaa!na!e%ta!e%rc#Iod$woH"2245 (40 characters)
看起來您使用的字母表為:
- 大寫
A-Z
(26 個字形) - 小寫
a-z
(26 個字形) - 拉丁數字
0-9
(10 個字形) - 有限的標點符號集(假設 101 鍵鍵盤上有 30 個符號)
總共有 92 個字元的字母表。
更遠假設您的所有密碼均為 40 個字符,這將為您提供:
92^40 = 3.56+E78
或者3.5 quinvigintillion可能的密碼。
若要將其轉換為bits
您執行的操作:
ln(92^40) / ln(2) = 260.94 bits
這是假設攻擊者必須暴力破解密碼。
如果我們只想要信息,那麼位數實際上要低得多,因為您實際上使用了更短的字母表:
original: "?e&ye&ga!ruaa!na!e%ta!e%rc#Iod$woH"2245
rearranged: aaaaacdeeeegnoorrtuwyHI2245""?&&!!!!%%#$
alphabet: acdegnortuwyHI245"?&!%#$ (24 characters)
執行相同的計算:
ln(24^40) / ln(2) = 183.4 bits
實際上,那裡的資訊較少,因為我可以看到每次您鍵入 an 時,e
它後面都會跟著一個符號:
e&
e&
e%
e%
所以我們e&
用符號h
和e%
來替換i
:
original: "?hyhga!ruaa!na!ita!irc#Iod$woH"2245 (36 characters)
rearranged: aaaaacdghhiinoorrtuwyIH2245""?!!!!#$
alphabet: acdghinortuwyIH2245"?!#$ (24 characters)
這將資訊內容減少為:
ln(24^36) / ln(2) = 165 bits
我注意到 every!
前面都有一個a
,後面跟著一個字母:
a!r
a!n
a!e
替換a!
為k
:
original: "?hyhgkruaknkitkirc#Iod$woH"2245 (32 characters)
alphabet: acdghiknortuwyIH2245"?#$ (24 characters)
將位數減少到ln(24^32)/ln(2) = 146.7
.
這只會減少編碼所需的位數,正如我們所計算的資訊內容的消息。
這些技巧對攻擊者沒有幫助,因為攻擊者通常不能假設所有密碼都具有這些已知序列。
但是有一些啟發式方法可以被編程到關鍵搜尋演算法中。人們試圖隨機輸入很多相同的內容。例如,我在隨機輸入時經常遇到碰撞:
adfadsfadsf
以及 18,400 個其他谷歌結果。
我最安全的密碼是 57 個字符,其中包含 27 個字符的字母表 ( a-z
, ),位於
266 bits
( ln(27^56) / ln(2) = 266.27
)。
另一方面則是十一字。2^11
英語中有一些常用單字。這給出:
(2^11)^11 = 2.66E36 passphrases => ln((2^11)^11)/ln(2) = 121 bits
遠小於從隨機 57 個字元的密碼中假設的 266 位元。
我可以添加一點如果我選擇:
- 單字之間有空格
- 單字之間沒有空格