測量密碼熵並拒絕低熵密碼會更聰明嗎?
這將允許使用整個字符集的短密碼以及僅使用部分字符集的長密碼通過
以上方案是否可能,或者實現細節是否阻止了類似的事情?
任何站點或程序是否已包含此類密碼要求?
測量密碼熵並拒絕低熵密碼會更聰明嗎?
這將允許使用整個字符集的短密碼以及僅使用部分字符集的長密碼通過
以上方案是否可能,或者實現細節是否阻止了類似的事情?
任何站點或程序是否已包含此類密碼要求?
在著名的XKCD地帶之後,有一些項目開始處理這種熵檢查。其中之一是Dropbox員工製作的 ZXCVBN密碼檢查器。
它可能是同類中最完善的密碼檢查器。它檢查模式,單詞等,從而相應地增加(或減去)熵值。 在他們的博客上詳細解釋了。
這是一個好主意,實際上,這是衡量密碼強度的唯一正確方法。
但是您如何衡量密碼的熵呢?
熵是生成過程的一個方面,而不是輸出的一個方面。
例如,對於 Tr0ub4dor&3
這樣的度量的輸出是什麼?通過基於給定密碼的任何可能的熵的合理度量,這將相當不錯-超過70位的熵。或者,也許考慮到假定的密碼生成過程,我可能很聰明地意識到它實際上只限於28位,因為每個字符都不是隨機選擇的,而是首先選擇一個完整的單詞。但實際上,我應該完全廢棄整個想法,因為我顯然只是直接從漫畫中復制了它。
如果密碼是正確的馬蹄鐵釘書釘
(在特定人群中最流行的密碼之一),則會出現相同的問題。
是的,密碼要求應該基於密碼的熵,但是事後您不能將此要求應用於給定的密碼。
(順便說一句,正如我在關於該主題的另一個答案中提到的那樣(從另一個方向),實現一個密碼/密碼短語自動執行的系統可能是一個好主意-為給定的熵級別生成並提供給用戶,而不是要求用戶提供滿足我們要求的密碼。當然,這是一個好的密碼管理器將在客戶端上執行的操作……)
選擇靜態密碼策略的原因主要有兩個:可用性和證明可接受有效性的研究機構。我的大部分答案來自關於高級密碼強度測試儀Telepathwords的出色研究論文。
首先,總結一些用於備份當前密碼策略的研究:
密碼組成規則至少可以追溯到1979年,當時Morris和Thompson報告了用戶在其Unix系統上使用密碼的可預測性。他們提出,密碼長於四個字符,或純字母密碼長於五個字符,將“確實非常安全” [19] [但是] Bonneau在2012年(即33年後)分析了近7,000萬個密碼,以測量六個字符的最低要求與沒有要求 [2]相比的影響。他發現安全幾乎沒有區別……
這包括Komanduri等人的工作。 [13]和Kelleyet等。 [12],他使用類似的研究設計對密碼組成規則進行了比較分析。這些先前的研究發現,密碼長度要求的增加通常會導致可使用性更高的密碼,這些密碼也很難通過其猜測算法[ 13 12]識別為弱密碼。最近,Shay等人研究了要求更長密碼的密碼組成策略,發現最佳性能來自混合最少12個字符和三個字符集的要求 [25]。
可用性是為什麼不更頻繁使用諸如密碼熵之類的更複雜標準的重要原因:
在研究密碼的分佈政策,弗洛倫西奧(Florencio)和赫利(Herley)發現,在檢查的75個網站中,可用性要求在安全性方面起著至少相同的作用 [8]。 ...
Ur等。還研究了密碼強度計對 密碼創建。他們發現,當用戶感到沮喪並且對電錶失去信心時,出現了更弱的密碼。 [28]...
儘管[Dropbox's] zxcvbn與僅依靠成分規則的方法相比,其強度估算的可信度有很大的提高, 實際上,如果用戶被告知添加字符會增加密碼強度,而看到添加某些字符會降低分數,則其可感知的信譽可能會受到損害。例如,當鍵入iatemylunch時,添加最終字符後,強度估計值將從第二高的分數(3)降低到最差的分數(1)。即使用戶認為zxcvbn的強度估算值可信,他們也不大可能了解基本的熵估算機制,因此不確定如何提高其分數。 [30]
最後,為了完整起見,我們必須意識到在此示例中定義熵非常困難(但絕非不可能)。關於密碼破解者的猜測算法或字典的複雜程度,我們可以做出許多不同的假設,所有這些假設都會導致對密碼熵的答案不同,例如“ Tr0ub4dor&3”或“正確的電池釘”。。最複雜的密碼熵措施是基於數百萬個密碼的字典和高級密碼模式的研究而來的,這種複雜程度對於許多管理員(和黑客)而言都難以實現。
熵是根據您創建密碼的方式計算的。 要計算熵,您不需要知道密碼,而是需要知道密碼的創建方式。擁有密碼並不能幫助您計算熵,只能讓您對熵進行非常差的估計。
示例:
如果我們的密碼“ Password123”是從3個最常用的密碼列表中選擇的,該密碼包含字母,數字,大寫和小寫字母,並且長度超過10個字符,因此Password123的熵值低得離譜。
完美的隨機生成器選擇了相同的密碼“ Password123”,該密碼生成了11位數字的密碼,每個數字都從5000個可能的Unicode代碼點中進行選擇,Password123的熵非常高。
換句話說:您正在做某事,但是“熵”是錯誤的詞-“熵”已經具有不同的含義。您正在尋找的是密碼的“強度”。密碼的強度很難正確衡量,甚至更難以溝通。只要攻擊方法改變,強度也會改變,這一事實也無濟於事。
您無法測量密碼熵,只能測量其上限。因此,任何密碼強度估計器都是有缺陷的。
使用密碼估計器或令人討厭的規則具有相同的效果,即使用戶嘗試滿足要求,同時使密碼盡可能容易記住。因此,要求越難,他們將越難嘗試建立易於記憶的密碼。例如,使用諸如Pa $$ word1或passwordpasswordpassword之類的密碼。問題在於,容易記住的密碼也是容易猜到的密碼。
當您提供的服務是可選的時,您還可能冒著過高的要求疏遠用戶並失去客戶的風險。
p>
但是,您可以強制使用10個字符的下限,因為所有少於10個字符的密碼都是弱密碼,並且要求不太難滿足。您還可以給他們建議,以建立安全的密碼。但是,我不建議遵循他們的做法。並不是因為別人這麼做,這樣做是一個好主意。
如何測量密碼的“熵”?
這是不可能的。
像“ hresda”這樣的密碼可能具有“低熵”,因為它是從小寫字母中選擇的,但是如果它是從一組包含大寫/小寫字母,數字和符號,結果恰好發生,僅包含小寫字母,然後具有較高的熵。諸如“ A63ba!”的密碼如果它是專門為[大寫] [數字] [數字] [小寫] [小寫] [符號]而不是隨機選擇的,則可能比“ hresda”具有更低的熵。
是的,有些程序可以測量密碼的熵以確定密碼是否足夠好。一旦這樣的程序是 Wabol Talk。該功能是使用程序主模塊中的 estimate_quality
方法實現的。最終,該方法將在其上方的方法中使用( 錯誤
)來驗證用於生成密鑰和初始化向量的密碼字段。這種估計的質量極低,因為它不會根據密碼的使用頻率來判斷密碼,但是它證明了查找密碼中存在多少熵的最簡單方法之一。
關於國際環境的說明。如果為面向全世界的網站創建了密碼(這種情況並不罕見),則用戶可能不會說英語作為母語,而是可能選擇瑞典語作為xkcd密碼創建方法的基礎。
“ paraplyost”(繖形奶酪)在知道瑞典語字典的熵檢查器中的排名可能會比不知道該字典的排名低。如果攻擊者知道用戶是瑞典人(不是最常見的情況,但是可能會發生),則他可能能夠比熵檢查器知道的更容易破解用戶密碼,除非熵檢查器中加載了數百(或數千)個
。
這樣做的一個很好的副作用是,如果您說的語言不是世界上最常見的一種,您可以在匿名用戶上輸入更安全的密碼國際網站。 :)
是否有任何站點或程序已經包含了這樣的密碼要求?
幾個網站都這樣做了。例如,轉到 https://www.dropbox.com/login並嘗試使用密碼進行註冊,該密碼是8個字符或更多的普通詞典單詞(例如 dictionary
>)。您會看到力量計顯示出最低分。現在嘗試隨機調整字母(例如 ioictnadry
)並使用它-您會看到強度計不斷上升。
此方法的明顯缺點是,您需要使用登錄表單將常用密碼的詞典上載到每個客戶端。最近,這種情況還可以,但是5或10年前完全不可接受。
我的印像是,大多數破解都使用現有的單詞&密碼列表。還有一些變化,例如加數字或重複單詞。
因此,如果密碼出現在列表中,密碼也很弱,但是可能會顯示出很強的(生成過程)熵計算值。 “列表”上的含義是:如果解密者的列表中不包含您的密碼,則儘管有熵計算,但它的強度很高。因此,幾乎不可能事先檢查(未知)列表。不過,嘗試大約6千5百萬個字不會造成傷害,請參閱 Stanford的SUNet ID密碼。 65M數量很多,但此列表包含將近25億個密碼: MySQL密碼
高熵PW生成過程和檢查熵的工具都應輔之以拒絕步驟使用列表和模式。即使是那些高熵的過程也可以生成容易猜到的密碼,例如 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa (見下文)和 password1 。
阿什利·麥迪遜(Ashley Madison)的哈希表如何破解他們發表的長密碼短語。只是一個通用的答案,但在分析了已發布的答案之後,我發現這些長短語中的大多數是通用表達式或哈希標籤,請參見一些破解的AM短語的來源
唯一作為列表來源的例外是密碼,其密碼格式如下:大寫字母,然後是小寫字母,後跟數字。 Internet上可以找到命中%的常見模式。這些確實確實可以很容易地事先檢查。
-編輯調整後的25億;添加了“ aaaaaaa”部分;改寫拒絕
一個字:政策
在過去的十年左右的時間裡,信息安全的主要變化是朝著合規性,控制和政策發展。從本質上講,我們今天要做的就是基於C級承諾和公司策略構建ISMS(信息安全管理系統)。
當您編寫密碼策略時,您並不會技術水平。您正在編寫員工需要閱讀,理解並可能簽署的文檔。您正在編寫管理層必須接受和支持的文檔。最後,當您考慮如何實際實施密碼策略時,在幾乎所有組織中,您都無權發明自己的規則。
。您將運行Active Directory之類的東西,並且您的實現必須與之配合使用,或者與IDM系統或舊式堆棧或其他任何東西一起使用。變得半傻,因為這是我們實際上能做到的最好的事情。