2009-10-18 55 views
3

感謝您的關注。所有真誠有用的答案被投票。字典攻擊下的密碼是否薄弱

我使用密碼強度計來讓用戶知道他們選擇的密碼有多強。但是這個密碼檢查器顯然並沒有涵蓋字典攻擊密碼的弱點。我該如何檢查,這是否值得?

此外,我的常規密碼檢查器最初在瀏覽器中運行javascript(無需傳輸)。如果我想檢查字典攻擊弱點,我不得不將它傳送給腳本。我的理解是我不應該明確地傳達它。

有人可以幫助我整理了這一點。如何檢查字典攻擊下的密碼不弱,在傳輸到我的腳本之前如何對其進行加密?

額外的信息:

爲什麼我覺得我需要在另外的字典攻擊檢查的常規密碼米?正如你們中有些人所指出的那樣,用戶可以選擇像P @ ssword或Yellow12這樣的密碼。但是我遇到的大多數密碼強度檢查器都會把它當作一個很好的密碼。至少我使用的是Yet Another Password Meter,它確實(我確實認爲它是更好的密碼檢查工具之一)。如果有人知道更強的密碼檢查程序,請提及它,但前提是您確實知道根據經驗確定它更強大;)

但我的問題確實是:如何對密碼進行字典檢查?我在某處讀過它是針對散列做的,但我在哪裏搜索?一旦我找到如何去做,我會決定是否值得。

感謝大家迄今誰的幫助了:)

+0

感謝您使用另一個密碼錶。我正在考慮添加一本基礎字典,但我想保持它的快速和易於下載。隨意獲取代碼並修改它。如果你有一個好的和快速的解決方案,我會很樂意包括這一點。 – ReneS 2011-02-23 02:01:13

回答

3

我比其他人更早來到這個問題,我很驚訝,沒有人指出字典檢查可能不是詳盡無遺。至少沒有人用這麼多話說過。

我覺得你需要一個大字典,其中每個條目都被散列並與散列密碼相比較。這將允許你說你的字典中的用戶選擇的密碼是而不是,但你如何確定它是完成

顯然,你不能確定。你是否包含外來詞?技術詞彙?

密碼破解者能訪問更好的字典嗎?

我認爲所有你能做的就是建議用戶如何創建一個好的密碼—向他們展示了幾個例子—但希望這是他們的選擇。

並做SSL的事情。

+0

好點。也許需要很多處理才能完成字典檢查。我現在正在重新考慮它。 – Chris 2009-10-18 09:59:57

6

意見要有所不同,有些人會說,檢查字典中的單詞是非常重要的。我不同意,而是傾向於要求不同的字母,數字和特殊字符的情況,如!@#$%^ & *()_- = +。顯然,密碼應區分大小寫。

字典攻擊是不太可能用數字和特殊字符的情況下才能成功。假設有1000個通用密碼。現在增加一個必需的大寫字母和特殊字符讓我們假設用戶是「懶惰的」,他們選擇製作第一個字母大寫字母並在末尾添加一個特殊字符。這個1000字的字典現在超過了30,000。

而且應該有帳戶鎖定到位,以避免字典攻擊。根據您的應用程序,可能會限制IP地址嘗試登錄的頻率。

仍有可能出現一種情況,以避免一些很常見的密碼運行腳本時。我會例如不允許單詞密碼p @ ssword或任何密碼的變體。

編輯:一個captcha,儘管大多數人(包括我)的討厭也可能適當,以及幾個失敗登錄後,以避免蠻力登錄嘗試。

+1

是的,但是p @ ssword示例違反了套管的典型混合,數字和符號的要求,並且如果您不允許連續重複字符,那通常足夠用於密碼。如果不是那麼你可能需要生物識別或雙因素認證。 :) – BobbyShaftoe 2009-10-18 06:26:59

+1

正確,我應該在我的例子中說P @ ssword。我猜想我正在做的事情是沿着變化的方向@到a和0到0,並且不允許密碼忽略字符大小寫。 我同意,要求混合字母,數字和特殊字符就足夠了。我可能不應該提到它:) – Nate 2009-10-18 06:30:25

+0

你提出了p @ ssword的例子。這正是我認爲我需要字典攻擊保護的原因。大多數密碼強度檢查器(甚至是好的檢查器)都會像P @ ssword或Yellow12那樣評價。 – Chris 2009-10-18 06:32:20

3

如果你正在使用適當的複雜性要求(長度,套管,數字,符號的混合,並且可能禁止連續重複字符),那麼我認爲這並不值得。如果你遇到了這種情況,那麼密碼認證可能無法滿足你的情況。

3

SSL

如果您的網站以任何方式或任何頁面請求的敏感的個人信息,包括密碼,那麼你應該能夠和整個現場執行SSL。這將確保所有密碼以加密形式從瀏覽器傳輸到服務器,並且沒有人可以嗅探網絡上的密碼或修改傳輸中的頁面(並更改表單回髮網址)。

密碼儀表

你應該在瀏覽器中運行完全密碼米。您應該接受用戶輸入的任何和所有密碼(最小長度爲6個字符),但可以從瀏覽器中隨時向用戶提示是否輸入了弱密碼或強密碼。

+0

我也會澄清一下,複雜性檢查應該在服務器端完成,因爲javascript和其他瀏覽器腳本語言可以被繞過。所以你絕對需要將SSL發送到服務器。密碼錶是一個很好的擁有。 – 2009-10-18 08:03:19

+0

我的觀點是你不應該做一個複雜性檢查。相反,你應該允許弱密碼。您應該簡單地使用JavaScript通知用戶密碼較弱(但用戶可以使用它)。唯一的服務器端檢查應該是最小長度/最大長度檢查(並且最小和最大長度都應該很大:4或40)。 – yfeldblum 2009-10-18 13:27:14

+1

但是你可能有要求只允許複雜的密碼。如果這是你的業務邏輯的一部分,那麼你當然應該檢查服務器端。不過,我同意,如果你處於這個階段,你應該使用SSL。 – BobbyShaftoe 2009-10-18 19:32:26

3

另外一點 - 如果您控制站點,您可以通過限制用戶可以嘗試用戶/傳遞的次數來停止字典攻擊。

這是偉大的,你希望你的用戶有更好的密碼,你應該繼續朝着這個方向,但在字典/強力攻擊一個更好的解決方案將是一個指數退避解決失敗的登錄嘗試。沒有真正的用戶會嘗試在10秒內用所有不同的密碼登錄1000次。

+0

正是我的想法 – 2009-10-19 09:40:16

+0

+1我怎麼錯過這一個。 – Chris 2009-10-20 06:07:07