我知道不讓無數次密碼嘗試背後的原因-暴力破解不是 meatspace的弱點,而是計算機安全性的問題-但是它們從何而來呢?
在實施易於激活的鎖定策略時,是否拒絕服務是一個問題?
在鎖定一個能夠平衡實際賬戶的帳戶之前,是否有任何艱辛的研究表明可以選擇最佳數量或範圍?具有可用性的安全威脅?
仔細考慮一下,我認為在當今通常使用的密碼複雜性方面,在3次嘗試和20次嘗試之間沒有可測量的安全性差異。
(我知道這會降低主觀性,但是我正在尋找基於度量的意見)
我知道不讓無數次密碼嘗試背後的原因-暴力破解不是 meatspace的弱點,而是計算機安全性的問題-但是它們從何而來呢?
在實施易於激活的鎖定策略時,是否拒絕服務是一個問題?
在鎖定一個能夠平衡實際賬戶的帳戶之前,是否有任何艱辛的研究表明可以選擇最佳數量或範圍?具有可用性的安全威脅?
仔細考慮一下,我認為在當今通常使用的密碼複雜性方面,在3次嘗試和20次嘗試之間沒有可測量的安全性差異。
(我知道這會降低主觀性,但是我正在尋找基於度量的意見)
最近,在奧蘭治縣舉行的OWASP AppSec 2010會議上,來自AT&T的Bill Cheswick詳細討論了這個問題。
簡而言之,研究不足。
長期以來,以下是他對減輕帳戶鎖定的一些想法:
任何符合 PCI數據安全標準 的網站都必須遵守
這就是為什麼很多接受信用卡的網站都實行嚴酷的鎖定政策的原因,即使他們的設計人員可能不一定同意他們實施的方法。
編輯:請注意,這些要求僅適用於“非消費用戶”系統,因此它們不會影響接受卡的客戶站點。
我的經驗是,鎖定機制正在逐漸普及(至少對於Web應用程序而言)。您無需在一系列嘗試失敗後鎖定帳戶,而是開始要求其他信息以成功進行身份驗證。
如果它來自棒球的“三擊”規則,而不是技術性的規則,將不會感到驚訝。
一個理由(無論如何都是字母數字密碼)是
通常,一次失敗的嘗試是錯誤鍵入或CAPS開/關問題。因此,您嘗試登錄並被拒絕(1),然後再輸入一次,因為您認為鍵入錯誤(2),然後意識到CAPS密鑰已打開,因此您進行了第三次嘗試。
Doesn通常在輸入數字代碼的情況下,從網絡上解鎖手機並非真正有效。
更好的建議是連續兩次失敗的登錄嘗試之間的延遲會越來越大。首先,您允許即時重試,然後是1秒,2、4、8個……您正快速地等待兩次嘗試之間的一分鐘,這足以表示任何暴力攻擊。
我同意OP。如果您考慮鎖定可以保護您的利益,那麼3次或20次嘗試(或100次嘗試)之間沒有區別。使用這些鎖定所能獲得的結果,除了懲罰健忘的用戶外,還可以防止暴力攻擊您還可以使用它來觸發正在進行攻擊的警告,但這不是主要目的(如果是,則意味著您故意對用戶進行DoS僅僅是為了使您自己的監視工作更容易。這不是一個很好的做法)。
如果某人擁有您的密碼數據庫,並且可以離線破解它,那麼他們可以進行無限制的嘗試。您的20個猜測限制在那裡並不足夠。
如果有人嘗試進行在線暴力破解,您所需要的只是一個可以承受“足夠長的時間”的密碼:足夠長的時間讓IRT響應,或者足夠長的時間讓攻擊者放棄。
Conficker密碼數據庫略低於200個密碼IIRC,並且其中充滿了地球上一些最愚蠢的密碼。現在,假設您的密碼不在此列表中。如果您允許20次密碼嘗試(例如每15分鐘15次)而不進行鎖定,則攻擊者僅兩個多小時就可以通過該列表。
事實上,即使您將猜測列表縮小到由有關該用戶的相關信息製成的密碼,例如kidsname02,birthday99等,您最終仍將至少獲得幾十個密碼,從而將字典攻擊的時間延長到一個小時或更長時間。在幾分鐘之內觸發警報,而不是少數錯誤的密碼。
因此,如果您可以讓用戶遠離最基本的密碼陷阱,那麼您可以欣然接受許多錯誤的密碼嘗試。
我個人在15點畫了一條線。這完全是任意的,並且基本上是一件實際的事情:我發現任何真正的用戶在此之前就已經放棄了。通常,如果嘗試的次數很多,則可能是一個進程或會話掛著舊憑據。如果不是這種情況,那麼我們可以談談尋找攻擊的機會。
這是一個愚蠢的任意規則,帶有一種奇怪的DDOS攻擊風險。可以說Marv討厭網站X,而網站X的嘗試鎖定策略次數為Y。 Marv通過讓腳本使用偽造的密碼自動嘗試隨機輸入Y次,可能會引起嚴重後果。即使密碼有效,Marv也可能不會在意並忽略它。這將有效地鎖定網站X的許多用戶,並引起很多用戶的沮喪,如果您需要重新設置密碼來獲得銀行的資金,上帝可以幫助他們。我很驚訝沒有人嘗試過這個。
我相信我對此辯論遲到了,但我希望在此處添加一些有用的內容。
帳戶鎖定策略(連續無效嘗試的次數通常在個位數範圍內)對於大多數組織而言,並不是專門針對自動蠻力攻擊而設計的。
它更多地是為了防止人類攻擊者(尤其是已經知道一部分密碼的個人)對密碼的猜測。攻擊者可以通過猜測個人用於選擇密碼的方式,通過
當然,不利的一面是,閾值較低,勢必會拒絕服務,並帶來相關的業務成本。 Microsoft發布的帳戶鎖定最佳做法白皮書,建議值為10。它還說明瞭如何使用Windows帳戶鎖定策略中的參數來估計成功攻擊的可能性:
例如,假設管理員使用LockoutDuration註冊表值0鎖定帳戶時,管理員重置密碼。將LockoutDuration註冊表值設置為0並將LockoutThreshold註冊表值設置為20,則惡意用戶有20個猜測可以使用該密碼。如果鎖定持續時間為30分鐘,則惡意用戶每30分鐘針對該密碼進行20次猜測,直到更改為止。與惡意用戶可用的猜測總數相比,這是非常顯著的差異。
相比之下,如果管理員將最長密碼使用期限設置為42天,則第一個惡意用戶只有20個猜測使用第二個惡意用戶進行40320次猜測(20次嘗試進行永久鎖定,然後乘以每天48次鎖定), 在用戶更改密碼之前乘以42天)。使用默認密碼設置,大約有10 ^ 12個可能的密碼。這意味著惡意用戶猜密碼的機率約為.000004(%)。通過優化的猜測方案,該百分比很可能會更大。考慮過的。因此,可以安全地假設某些組織沒有努力計算其帳戶鎖定策略的貨幣影響,以及在保留其提供的安全性利益的同時放鬆其政策的相關利益。
這有兩個方面;正如您所提到的,第一是防止暴力攻擊。
為此,實際上可以進行任意多次嘗試-3、5、20、2000 ...使用適當的密碼策略(長度+複雜度+ ...)提供足夠大的密鑰空間,任何節流(每小時X次嘗試)將確保蠻力逼迫整個空間需要數十年的時間。 (算一算)。
即使-並且這應該是必需的-鎖定只是暫時的,並且在短時間後會自動解鎖。
因此,嘗試鎖定前的次數是任意的。
但是,這裡還有另一個更微妙的非數學問題在起作用:
對於單個用戶而言,反复輸入錯誤根本沒有意義。密碼連續輸入2000次。
也就是說,如果您任意選擇2000,那麼您在 long 之前就知道該用戶不是合法用戶。因此,這實際上歸結為有意義的業務,以及以業務為中心的風險分析權衡。
我認為,從歷史上看,這種權衡更傾向於風險方面-由於密碼更短,更簡單,所以3或10的差異更大。此外,人們的密碼更少,因此更容易記住...而且,用戶通常在技術上更加精明。
如今,考慮到業務影響,三個確實沒有意義。這實際上是一個問題,對於您的應用有意義,什麼類型的用戶,他們登錄的頻率等等。我通常建議找出可能失敗的合法嘗試次數,然後將其加倍。
(正如@realworldcoder所提到的,PCI任意選擇了六個,如果您受制於PCI,則此處沒有太多決定。否則,請選擇一個對您。)
關於建議增加時間“鎖定”以延遲連續的失敗嘗試並從而防止暴力破解的建議,請記住這僅適用於有針對性的用戶攻擊。
如果攻擊者只在乎關於進入系統,他們可以執行廣度優先攻擊(在循環使用下一個密碼之前,請循環所有已知/猜測的用戶名)。補充說,如果做得好,它可能來自分佈式機器網絡,很容易看到延遲系統也不起作用。
正如其他人所提到的,正確監控失敗嘗試是的,儘早發現攻擊是至關重要的。
是的,嘗試3次是相當隨意的,並且會帶來DoS風險。我真的希望人們不再使用面向公眾的系統……請!
另一種解決方案:2因子識別。 RSA令牌。如果只有我們有辦法親自擁有一個帶有“ id number”的RSA令牌。然後,我們可以在任何系統上註冊該“ id號”,然後將需要令牌中的當前值以及密碼進行登錄。
但這對於實現和解決其他問題信任...
公眾公司(在證券交易所出售股票)受《薩班斯-奧克斯利法案》(Sarbanes-Oxley Act)監管,並每年接受幾次審核,以確保合規性。關鍵軟件應用程序必須符合某些安全功能,其中之一就是在密碼嘗試失敗後鎖定帳戶。
這些應用程序的大多數工作是與已經啟用了功能的公司Active Directory集成。
這是非常好的讀物,涵蓋了我認為您要尋找的內容。他們採用三擊,十擊和無限擊的策略從大學生那裡獲取數據,以建議我們將這一數字從三增加到十(因為登錄成功率大約是三倍)。
在這裡回到主觀觀點...
為什麼大多數地方都採用三擊政策?隨著時間的流逝,這肯定只是一種啟發。三次嘗試或多或少是管理員和用戶的中間立場,因為三種機會已足夠。
密碼背後的想法是,您應該知道它。您真的不需要一次以上的嘗試。我知道犯錯了,但是在戰爭中……您實際上只有一次機會證明自己是盟友,對嗎?
他們必須隨機選擇3個。這是極低的。也許他們過去曾遇到安全問題,所以選擇了較低的鎖定數量,而不是正確解決或解決問題。
我更喜歡以增加時間增量鎖定用戶的方法。不過,我不會將其從用戶名中刪除,而是使用此人的IP地址,因為該人可能正在嘗試多個用戶名。我將鎖定時間設置為(無效登錄嘗試次數)^ 2秒,一旦用戶達到5次無效嘗試。如果用戶在相對較少的嘗試時間內不知道自己的密碼,則在該站點提供密碼恢復工具的情況下,他們通常會使用密碼恢復工具。如果這是一次真正的黑客嘗試,它將使黑客感到沮喪,最終他們將放棄。殭屍程序會嘗試很多次,幾乎幾乎永遠不會被允許登錄...例如,如果他們嘗試了1000個密碼(無論如何實際上都要花很長時間),他們必須等待11 1/2天才能嘗試第1001個密碼。您可以通過將乘數提高到^ 3來輕鬆地提高威懾能力。對於有效的人類用戶,上述任何內容都可能會變得過高。
不久前,我實現了一個遵循以下基本規則的登錄安全方案:
對我來說,這足以防止暴力攻擊;最終用戶最多會感到不便,並且不會創建任何其他支持工作。