Passwords

是否有保證密碼強度的證據?

  • July 16, 2022

是否有任何證據可以保證具有特定功能(例如隨機特殊字元、數字和字母組合、某些長度等)的密碼是安全的?如果有這樣的證明,你能提供它或它的連結嗎?

編輯:我正在尋找正式的證據,支持密碼選擇的理論論據——例如,基於它的正式證據,我可以為政府提出建議——具有批准標準的正式證據。

編輯2:或者使用什麼概念來分析密碼以確定密碼是強密碼還是弱密碼?如果您告訴某人“1234”作為密碼很弱,您使用什麼概念來支持您的主張?

我已經投票結束這個問題。不過既然你都不上學,那我就簡單的解釋一下吧。

在通常意義上,“證明”一詞不適用於密碼強度。

現代密碼學的一個重要部分是猜測某些數據(猜測密碼、猜測私鑰的組成部分等)的低機率。為了保持低**機率,需要高度隨機性,換句話說,需要高

如果密碼的所有字元都是隨機選擇的,並且可能的密碼相對較多,那麼破解該密碼的唯一方法是嘗試所有可能的字元組合。這種方法稱為暴力破解. 顯然,如果攻擊者嘗試所有可能的組合,那麼密碼肯定會被找到。可能的密碼越多,嘗試所有密碼所需的時間就越多。電腦的性能是有限的。這就是為什麼保護策略是擁有如此多的密碼,嘗試所有密碼都需要花費如此多的時間,以至於在對您來說很重要的時間內找不到密碼。例如,如果你有一個 90 位熵的密碼,那麼即使擁有全世界的計算能力,攻擊者也需要數百萬年的時間來嘗試所有可能的組合併找到密碼。同樣,不能保證這一點。可能會在短時間內找到密碼。但發生的機率極低, $ 2^{-90} $ .

你怎麼能達到特定的熵?有很多方法。如果您使用英文小寫和大寫英文字母,使用數字和一些(為簡單起見)2 個其他字元,則您有一組 64 個字元。如果密碼中的每個字元都是隨機選擇的,它會給你 6 位熵。如果您希望獲得 90 位熵,則需要長度為 90 / 6 = 15 的密碼。如果您只使用小寫字母,則每個都給出 4.7 位熵,並且您需要密碼長度為 19 才能獲得相同的 90 位熵。您甚至可以決定只使用數字。每個都提供 3.3 位熵,長度為 27 的僅由數字組成的密碼將再次為您提供相同的 90 位熵。

密碼不必是人類“複雜”或“不可拼寫”。您可以從字典中提取一些 1024 個簡單的單詞。如果隨機選擇,每個這樣的詞都會給你 10 位熵。要獲得 90 位熵,您的密碼應包含該字典中的 9 個單詞。

如果有一天量子電腦足夠強大,那麼破解目前使用的加密和散列算法將需要更少的時間。要為此類算法獲得相同程度的保護,您將需要兩倍長的密碼,例如,如果您只使用小寫字母,而不是密碼長度 19,您將需要密碼長度 38。但是有些方法可以抵抗量子電腦,您可以查找後量子密碼學

安全性有一個重要方面:保護措施應與風險相稱。如果您想保護對帶有您的貓或狗照片的網站的訪問,並且只允許 100 個您認識的人中的 5 個訪問,那麼 3-4 個字母的密碼可能就足夠了。如果您想保護對銀行帳戶的訪問,更長的密碼可能是有意義的。

您還應該考慮密碼使用的目標。我上面所說的主要與您加密文件或一般一些消息並通過不安全的公共渠道傳輸它的情況有關。如果您需要密碼進行身份驗證,那麼除了密碼之外還有多因素身份驗證,即使使用相對較短和簡單的密碼也可以達到所需的安全程度。此外,密碼可能會在某些系統中消失,並可能在未來幾年被無密碼身份驗證方法所取代。

如果您想向政府提出建議,您可能需要檢查政府已經知道和使用的內容。為此,您可能需要從NIST 密碼學網站開始。

這一切都與不可預測性、字元集的大小和密碼的長度有關。

如果您使用加密安全的偽隨機數生成器 ( CSPRNG ) 來生成完整字元集(小寫、大寫、數字、符號)或單詞列表(例如 EFF 的長單詞列表)範圍內的數字,假設您使用密碼/密碼片語將具有高熵選擇足夠數量的字元/單詞(例如~20 個字元或~8 個單詞)。例如,請參閱這篇文章。

可以認為擁有高熵密碼就像擁有高熵加密密鑰。在一定的熵下,暴力破解幾乎或完全不可能,這意味著它是安全的。問題是,如果由人類生成,密碼/密碼片語的熵可能會很低,這意味著密碼通常遠沒有密鑰那麼強。那是因為人類不擅長想出不可預測的密碼,並且想要一些令人難忘的東西,這意味著不那麼長。

在類似 的情況下,1234它的熵很低,因為它只有數字和四個字元長。數字字元集是1234567890,表示 10 個可能的字元。由於密碼只有 4 個字元,這意味著最多 10 $ ^4 $ (10,000) 種可能的蠻力排列。這太可怕了,因為找到正確的密碼根本不需要時間。相比之下,一個 256 位的加密密鑰最多需要 2 $ ^{256} $ 到蠻力,這是 115792089237316195423570985008687907853269984665640564039457584007913129639936 可能的排列(我不能被要求寫逗號)。這是完全不可能執行的,證明了安全性的差異。

此外,絕對1234是在密碼字典中。這也可以加速對某些更長/更複雜密碼的攻擊(例如,用花哨的符號替換像 ’ 這樣的字母)。如果它是普通密碼或洩露密碼,則它很弱,因為它更容易被猜到。p@ssw0rd

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