暴力密碼破解器 ocl-Hashcat-plus 支持每秒猜測最多 80 億個密碼,意味著什麼?
是否低於 55 位的密碼不再安全。哪些安全系統會遭受風險,如何應對防範?
http://www.instapaper.com/text?u=http://solidot.org.feedsportal.com/c/33236/f/556826/s/307dd450/sc/28/l/0L0Ssolidot0Borg0Cstory0Dsid0F36214/story01.htm
科學家:我們在特定條件下,通過靜脈注射藥物使小白鼠尾部的某種癌細胞活性下降了5%。
媒體:科學家攻克癌症了!人類的希望!
Hashcat:我們改進了密碼破解工具,支持的最大密碼長度由15位升為55位。
媒體:噢!55位以下的密碼都不安全了!我們的賬號馬上就會被盜走了!
網路安全是個值得重視的問題,但需要擔心的不是一個工具破解多少位密碼,更不是拿一些斷章取義、聳人聽聞的消息來嚇人。
先澄清一下問題中最唬人的「每秒80億個密碼」,不是某些人想像中的每秒破解掉80億個賬戶的密碼,也不是每秒跑到網站上去試80億次你的密碼——你受得了網站還受不了呢。實際情況一般是這樣的:破解者從某些渠道搞到了一大批用戶名和hash後的密碼,然後打算破解出原始密碼,這樣就能直接拿來登錄網站了。
hash也叫哈希函數或散列函數,就是把你的原始密碼拆散組合計算後變成一大串亂碼,肉眼絕對看不出來原來是什麼內容,常用的hash演算法有md5、sha1、sha256等。
假如你的密碼是「123456」,那麼它md5的結果就是「e10adc3949ba59abbe56e057f20f883e」。
而且只要原文稍有變動,md5結果就會徹底變化。
比如「123455」的md5結果是「00c66aaf5f2c3f49946f15c1ad2ea0d3」,跟上面的沒有半個字相同。
網站的資料庫里不會存放你的「123456」,只會存這堆字元,就算被人把整個資料庫拖走,也沒法直接拿你的用戶名和密碼登錄網站,必須要進行破解。
而且所有的hash都有個特點,就是無法反推出原文。道理很簡單,比如md5的長度是固定的32位,所以它的數量是有限的,而原文要多長有多長,數量是無限的,從個位數到幾十G的大文件都能hash成32位的字元串。有限個對上無限個,總會有重複,所以理論上hash無法真正破解,因為一段密文對應了無數原文。但反過來想,只要找到這無數原文中的任何一個,就等於找到原始密碼了。
假設我得到了某段md5密文,經過數百上千億次嘗試後終於試出某個字串,它的md5結果也是這段密文,這種「破解」方法的學名叫碰撞(collision)。而碰撞出來的字串此時等同於原始密碼。
上面說的「每秒80億」,其實就是oclHashcat-plus用暴力破解時計算hash的最高速度,它用的是顯卡GPU不是CPU,因為現在顯卡的性能比CPU強多了。
看上去快得嚇人,實際沒那麼厲害,要知道8位大小寫英文加數字的密碼一共有多少種?
(26+26+10)的8次方,2183401億。每秒80億次的話,7.5小時才能試完一個。
密碼長度加一位,時間至少增長62倍。如果密碼里還有各種字元,那時間就更長了。
想想55位的密碼要多久才能破?還沒算到百萬分之一,想登錄的網站都倒閉了。
不過且慢,儘管暴力破解要費很長時間,這並不代表你的賬戶密碼從此安全了,黑客也沒那麼蠢,只會傻乎乎地一個個硬算密碼,人家有的是方法:
- 字典:絕大部分普通用戶的密碼簡單得令人髮指,純數字、生日、名字、單詞、拼音……把這些東西排列組合在一起,做成一個密碼字典,計算量比直接暴力破解少了幾個數量級。某人拿到了100萬個hash,假如純暴力破解要一年,那用字典可能兩小時就破解出了80萬個,剩下的可以整理出來再去用別的方法破,反正手頭已有的80萬個賬號密碼想幹啥幹啥。
- 彩虹表:畢竟不是什麼密碼都能放到字典里,稍微複雜的就不行了,最終還是得靠暴力。有人想出了提升效率的方法,就是空間換時間,不用你一個個當場hash,而是提前算好,存到一張巨大的表裡,破解時只查不計算,速度有了極大飛躍。使用彩虹表進行破解,普通PC也能達到每秒1000億次以上的驚人速度。
而且許多網站為了增加安全性,不會簡單地做一次md5就保存到資料庫。比如md5後再md5一次;或者在原始密碼前後補上一串字元,增加密碼長度後再hash,學名叫加鹽(salt);這些演算法的結果都可以加入彩虹表中。網上公開了數百G的彩虹表供下載,花一星期下載它比自己花幾個月算出來可合適多了。最完善的彩虹表差不多能破解出目前網上99.9%的密碼。 - 高性能電腦和集群:前面說的每秒80億次是一塊頂級顯卡的速度,但最新版oclHashcat-plus已經支持最多128個顯卡核心。這張圖是Hashcat團隊的電腦,計算核心是8塊HD7970顯卡,總價上萬美元:
- 上面說的都是黑客一方拖走別人資料庫後進行的破解,要知道,拖庫本來就是通過漏洞和入侵才能進行的。如果伺服器安全做得好,黑客很難拿到用戶數據;但如果網站方自己不上心,後門漏洞一大堆,四五流的黑客都能在裡面逛大街,那你的賬號密碼基本上就難保貞操了。
甚至有更愚蠢的事件:比如前兩年CSDN論壇900多萬用戶數據泄露,密碼居然是明文存儲、連一次hash都沒做——這件事實在顛覆我的世界觀,要知道它可是個程序員網站——遇到這種事,只好自認倒霉,去別的網站改掉同一個密碼吧。
它的速度有多快?反正我嘗試用自家電腦運行oclHashcat-plus暴力破解一個8位的、字母數字元號混合的密碼預計需要29天,而這台只需要不到12小時。
但它再強也只是單台電腦,頂級黑客擁有的集群計算資源包括肉雞等等,輔以前面講到和沒講到的各種演算法,破解幾千萬甚至上億的密碼並不難想像。另一個問題如何分析《中國黑客傳說:遊走在黑暗中的精靈》文章內容的真實性?中提到頂級黑客手中有十幾億條賬號密碼、用雲計算破解hash,雖然我不認識人家,但這些技術的可行性當然是確鑿無疑的。
一開始覺得問題中的消息太斷章取義,本想簡單解釋解釋,說明它沒這麼可怕。結果越寫感覺越會讓不明真相的群眾更擔心「黑客好像隨手就把我的密碼拿走了救命啊啊啊啊」。這個……還是總結一下吧:
所謂「密碼破解器支持每秒80億個最多55位的密碼」並沒有驚天動地的大意義,雖然它能使現在最高配置的個人電腦達到十幾年前超級計算機的破解效率,但尚未從量變引發質變。而且更重要的是怎麼侵入資料庫得到hash過的密碼,這個的技術含量和危害程度才高,至於弄出來之後怎麼破就是另一個問題了。
對普通網民來說,頂級黑客的能力確實驚人,但做什麼事都要考慮代價,正如美國的核彈頭不會瞄準隔壁老王家窗戶,能入侵整個阿里巴巴的黑客也不會花大精力去偷你支付寶里的幾百塊錢。與其擔心存放在網站的數據被大盜弄走,不如平日加強自己的安全知識,避免那些水平不高但行為惡劣的小賊,比如植入木馬、上傳私人數據、偷微博賬號發垃圾消息……
自己不是搞安全的,只能講點粗淺入門知識,如有錯誤請見諒並指正。
對了最後再說一點,如果不是專業黑客,那oclHashcat-plus的最大作用之一可能是破解鄰居的wifi密碼……它絕對比某些一鍵式破解工具快,缺點是你得自己抓wpa握手包。
不要慌張,沒有那篇文章說的那麼可怕。如同@蘇莉安 所說,這個是針對Hash過後的口令進行暴力搜索、字典搜索等方法進行攻擊的,對於網站或者其他系統而言,存儲後的口令只要不泄露就不會遭遇這個工具的攻擊。也就是說,網站被脫褲了才會讓你的口令泄露。
另外還想說一下,某些沒有節操的媒體從業人員就喜歡斷章取義、誇大事實,按照現在的慣例,造謠是要關小黑屋的哦!!!
這個工具的下載地址文章已經給出了,請猛擊這裡然後一拉到底,看看傳說中的Performance(性能)小節,這節中的表格展示了這款工具對於不同密碼演算法破解的性能,其中對於NTLM(Windows NT LAN Manager)演算法的效率最高,約8Gc/s,也就是文中所稱的80億次每秒,最高達10Gc/s,也就是100億次每秒。
但是這個NTLM是Windows在區域網中的一種身份認證協議使用的,我們通常在網站中不會使用這樣的演算法,常用的幾種演算法的破解速度中,MD5最高70億次每秒,SHA-1最高20億次每秒,SHA-2 512最高2億次每秒,Apache中用來記錄口令的md5crypt演算法因為使用了MD5迭代了1000次,所以速率低於MD5速率的千分之一,僅有400萬次每秒,而為了保存口令而生的bcrypt演算法,更是慘絕人寰的只有不到4000次每秒。見下表:
上圖說明了,8位的弱口令還能搞搞,13位的就難了啊。對於字典攻擊,我們認為能夠比純爆破提升速度一百萬倍,那麼對於13位小寫字母加數字的口令,破解時間還是比較可觀的,但是如果是13位大小寫加數字,那麼就不太理想了,對於MD5這樣容易破解的演算法也需要9個月。如果是用大小寫字母、數字和字母,那麼基本可以認為不可能在有限時間內爆出來。
所以結合上述數據,我們有這樣的結論。該工具對於口令破解僅限於取得系統保存的口令Hash的情況下才可以使用,不能任意攻擊現有系統。對於採取較強安全策略的情況,包括口令處理演算法和口令構建方法,基本無法在短期內破解,至少是年數量級,所以對於非軍事、政府、機要、商業等重要用途的情況下,不太可能會使用該工具動用昂貴的設備、消耗大量的時間進行攻擊。
構建安全級別較高的口令,作為用戶我們應當:- 長度在8位以上,最好在13位以上;
- 數字、大小寫字母、特殊符號等字元種類應當儘可能的使用多種;
- 避免使用字典中有的單詞(包括漢語拼音),或者使用數字和特殊符號穿插在單詞中。
作為網站的設計和開發人員,我們應當:
- 使用安全等級較高的Hash演算法處理口令;
- 避免使用Hash演算法直接處理口令,即保存Hash(pwd),應當加入salt;
- 使用Hash演算法對結果進行多次迭代。
值得說的是,知乎保存口令所使用的演算法(見《知乎是如何保存用戶密碼的?》)是使用Bcrypt的,也就是即使在前兩天刺總@大風 發起的「大家一起黑知乎玩」的活動中,知乎被脫褲了,大家的口令也都基本上很安全,不太可能被爆出來。 不過有爆料知乎可能保存明文口令,看在登錄時候明文傳輸不加密的份上,大家自求多福吧。
最後,@蘇莉安 的回答最後提到了,可以破解鄰居的Wi-Fi密碼玩,可是8位就要破500年啊!!!我還是等齊天大聖出來吧!!!!
這個軟體是個本地破解器,其最大的優勢在於,可以使用本地GPU的能力加速運算,從而達到號稱的每秒80億的速度。
拿它套用在線的密碼破解、討論驗證碼的問題是錯誤的。在線情況下,我們輸入密碼,是在頁面上點擊提交後,由伺服器負責進行運算和比較。顯而易見,此時暴力破解的速度瓶頸在於網路的傳輸速度,而非計算速度。
不過,從這種對比中我們可以看出,一個網站每秒鐘會接受來自不同用戶的大量計算請求並返回結果,大型網站通常需要伺服器級別的主機才能承受;而通過這個軟體,在普通的電腦上就能夠追趕該計算能力,這就是該軟體的驚人之處。
來刷新一下三觀。
市場上買個3000塊錢的n卡,15億/s沒問題,關鍵是一個主板他支持了多個顯卡,挺牛。
80億隻是單台,多台集群跑知道什麼概念嗎?
拿遍歷算密碼的演算法滾粗……有錢置辦這些設備的還不研究密碼生成規則的?
先給結論:完全不是這樣的,每秒80億次和55位以下的密碼安不安全完全沒有關係。
不要聽風就是雨啊,要相信密碼學好嘛=。=
這個新聞的標題的槽點之多,已經到了不知從何說起的地步,一點一點來。
先給暴力破解這條思路潑一盆冷水。其實密碼學演算法從設計之初,最喜歡面對的攻擊方式就是暴力破解。所有的暴力破解,面對的都是密碼學演算法的「指數陷阱」,即,密鑰每增加一位,窮舉的時間複雜度將提高一倍(在某些演算法中並不嚴格為一倍,但指數倍遞增是沒有問題的)。有人可能會拿摩爾定律說事兒:組成CPU的晶體管數量,或者說CPU的計算速度,隨著時間的推移呈指數倍提高。可是不要忘了,儲存器的晶體管數量,也就是儲存空間,也是指數倍提高的呀。
所以在這個角度上來講,破解速度提高了1000倍又如何,密鑰長度提高10bit就搞定了;
破解速度提高了100w次又如何,密鑰長度提高20bit就搞定了;
破解速度提高了10億倍又如何,密鑰長度提高30bit就搞定了。
所以,想要提高窮舉速度來破解密碼學演算法,思路從一開始就走偏了。
再回來批判一下這個標題中的「55位以下的密碼」,正如 @蘇莉安蘇大大所說,所有的密鑰,在用戶輸入之後,都會使用hash演算法,將密鑰映射為固定長度的字元串(通常是256bit)然後再傳輸到伺服器上。這個映射是單向的,以此來保證不能用數學方法從hash值反推回密鑰。所以即便是使用工具抓到網路傳輸的hash_key,也無法還原出用戶的密鑰。能破解55位以下的密鑰有什麼用嘛,我們早就用256bit的了。(此處再吐槽一下各種明文密碼被脫庫的網站,不用hash(key + salt)了再傳輸密鑰,不是蠢就是壞。)
有關hash的知識見到底什麼是hash? - 知乎用戶的回答
目前對hash演算法最好的攻擊方式是彩虹表,彩虹表的相關知識見什麼是彩虹表? - 網路安全
彩虹表的演算法本身很粗暴,無非就是把常用的字元串提前hash好,然後存儲到資料庫中,在破解的過程中反向搜索hash值對應的字元串,但是其中蘊含的思想卻很精妙。
彩虹表使用了離線計算,省略了hash計算的開銷,這保證了窮舉過程中的計算開銷足夠低;彩虹表使用了map/tree,來對抗指數陷阱。通常彩虹表的底層存儲方式為trie tree或者hashmap,搜索的時間複雜度可以達到O(lgn)的級別,如果對應到字元長度,可以以O(n)的時間複雜度搜索整個字元串的bit值。彩虹表把空間換時間的思路使用到了極限。
應對彩虹表的方式有很多,比如客戶端加鹽/多次hash,也就是說,在hash之前,先在用戶的密碼上添加上事先確定的雜亂字元,或者將hash演算法連續使用若干次,這樣的話,密鑰空間就膨脹了很多倍,彩虹表也很難記錄所有的hash值,這樣即便是用戶的密鑰較為簡單,抓包破解的開銷也會增大很多。
如果想要預防伺服器端脫庫的話,伺服器端也可以加鹽+hash,這樣就更難追蹤原始的密碼,大大增加了破解的開銷。
第三,即便是可以快速並行窮舉密鑰,但是對目標伺服器而言,也很難承受80億/s這個量級的攻擊。如果說破解是嘗試撬開別人家的門鎖的話,如此頻繁的訪問也等於拿鎚子咣咣敲別人的門,先不說伺服器是不是癱瘓掉,這麼驚動了被攻擊者,真的算是...破解嗎。
所以一般對於站點的攻擊,要麼從協議層試試有沒有漏洞,要麼試試有沒有其他的跨站漏洞,或者偽造一個身份侵入到系統中去,很少是從密碼學層面上正面硬剛的。有關方法 @雲舒@餘弦 等各位大大的回答已經講得很透徹了,我就不班門弄斧了。
但值得一提的是,量子計算機對於部分密碼學演算法,如基於大整數分解問題的RSA,和基於橢圓曲線的ElGamal,有很好(O(n)級別)的破解能力。但是不用太擔心,密碼學家們知道可以創造新的密碼學演算法之後,別提多開心啦,早早的就發(guan)表(shui)了很多應對量子計算的演算法,例如基於格(lattice)的演算法體系。
你看,這麼一分析,這個新聞是不是就沒有那麼嚇人了。以標準鍵盤上可輸入的 95 種字元為例:
&>&>&> 95 ** 55 / 8000000000. / 60 / 60 / 24 / 365
2.3599439967628095e+91
經過這麼多秒就可以破解 55 位的密碼了!
&>&>&> 95 ** 10 / 8000000000. / 60 / 60 / 24 / 365
237.32279745306116
嗯,大多數人活不了這麼多年,你的密碼有 10 位么?
你們忽略了一點特別重要的信息!密碼長度!
我密碼長度可能是1 ,可能是99,就密碼長度的可能性就理論就能億萬種~(媽蛋密碼你都說55位了,)
所以這種破解方式基本沒什麼戲
首先反對下得票第一的@安岩 的答案。
首先解釋一個概念——hash,即將一個字元串經過一定的計算成為一段隨機字元串,並且這個過程不能反向進行。
大部分的網站都是通過將密碼進行一次hash,放入資料庫中保存。在登錄的時候將你輸入的密碼hash和資料庫中的進行對比,如果相同則認為是同一個密碼,驗證成功,否則驗證失敗。
然後這個軟體是幹嘛的呢?假設現在我通過各種奇葩手段,知道了@汪進祥 在知乎的資料庫中的hash值是5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 ,在以前來說,除了使用彩虹表,我無法知道你的明文密碼是什麼。現在我可以通過這個軟體直接逐個嘗試可能的密碼,算出這個hash對應的明文。
網站登錄普遍都有驗證碼,破解速度再快又有什麼用?
就算是對拖庫後的數據破解,有sha256和加鹽的保護,也沒那麼容易拿到明文密碼.
密碼破解領域的運算速度很重要,但目前來看並不是最重要的。 如果是在線猜密碼,你要突破驗證碼的限制,要突破管理員後台的監測以免讓他發現你在不停的猜密碼,然後還受到網速、被攻擊系統計算能力等物理限制。因此,你即使配備了一台銀河計算機,每秒鐘的實際猜測速度應該也不會超過1000次。 更快的方式是離線猜密碼。即把網站的密碼庫(通常是一個龐大的數據包)下載到自己的本地計算機上,然後用你提到的暴力密碼破解器去破解。由於是本地運算,計算能力、網速都不是問題,每秒鐘達到80億次是有可能的。&
但是,這種方法的核心麻煩在於——你如何繞過網站的重重限制,侵入到它的系統核心中去,把最不可能偷到的龐大的密碼庫文件下載到自己的電腦上。在很多時候,能夠下載這個密碼庫文件,本身就意味著你已經幾乎掌握了系統的最高許可權,如果是這樣的話你又何苦下載下載暴力破解呢?
或者說得更直接一點,就好像你偷偷潛入了一座防守嚴密的城池,偷到了城裡面的戶口本,然後帶回家來仔細分析看看這裡面的弱點在哪裡。但是如果你已經能夠順利潛入、盜得機密文件的話,你自然已經很清楚城池的弱點在哪裡了,戶口簿又有什麼用呢?
所以計算能力提高到80億次,當然會有用,但在實際中恐怕幫不上太大的忙。
樓上幾位答主都說到了進行網站嘗試的不可能性.但是一般黑客是這樣做的:
先通過技術手段攻入一個二流網站,然後進行拖庫.整個資料庫拖到本地後,進行本地的密碼破解.這時候每秒80億次計算還是很給力的,加上彩虹表,密碼被破解出來的幾率還是很大的.
破解出的密碼將對應的用戶名一同存儲下來
然後在去各大網站搜索跟此用戶名差不多的用戶賬號進行嘗試登陸.
畢竟很多人各大社交網站都用的是同一個用戶昵稱,然後相同的密碼進行登錄.所以安全措施就是,每個網站使用不同的密碼且密碼要包含大小寫字母長度大於13位(長度一般網站都會有最短校驗規則).
樓上回答都好認真,話說DES 56位密鑰1997年就告別secure了,雖然平均搜索空間只要48位
直接輸錯三次鎖定用戶了
時隔多年回來划水
哪有那麼誇張的啊……首先他們用的什麼電腦測試的啊!!我手裡的破電腦一秒算int加法都不到一億次……(完全模擬CCF老爺機)
而且啦而且啦~
這說的是猜hash吧……可惜hash定長……拿128位MD5舉例子……1位數字有10種,2位數字密碼有100種,弄到100位數字密碼難道就有10^100的安全性了?不!只有2^128!so~你真的用特別特別特別長的密碼也沒有什麼用啊~
如果說的是網站密碼的話……一秒80億?excuse me?這是試密碼還是DDOS啊……我在本機跑nginx容載量都到不了這麼大就一地server error了……再說處理隊列也裝不下啊啊啊啊……
而且網站的話……我只能說要是加密的資料庫能被人活生生拖走的話……好像也不是那麼容易吧……(某些二三流網站除外)(不是說規模,很多規模一流的網站安全意識也二三流)
大部分人根本不在乎好不好。。生日名字手機號。。
看了一下相關介紹,應該就是hash破解而且對GPU,多GPU支持較好。但是對那些對你的密碼感興趣的人來說,沒人會傻到通過網站登錄去嘗試破解,有驗證碼,有登錄次數限制,有帶寬限制等等。
自從比特幣火起來後,顯卡破解有被ASIC淘汰的跡象,蝴蝶、阿瓦隆、烤貓之類的礦機如果能夠用在暴力破解上面,80億小意思。當然,有點良知的網站用戶密碼都會加鹽,一般用sha256+salt,如果要對抗ASIC只能換演算法,如scrypt之類的加密演算法,GPU和ASIC都會很吃力。安全總是相對的。少報幻想的好。
每秒80億次。。。問題是被破解的程序和網站 允許你每秒實驗80億此密碼么?
這個東西現實意義不大!
最起碼光靠這個破解不了你的淘寶密碼 、qq密碼,因為網站都是有登錄限制的。
題主說安全系統需要防範,也多慮了,銀行卡密碼只有6位,還都是數字,如果暴力破解很容易,但是你只能輸入三次,三次能輸入對6位數概率也太小了!
現在的安全都不僅僅是密碼問題了,更多的是與密碼相關的限制,如淘寶支付寶數字證書,手機寶令,這些和個人極其相關的東西來限制,沒有這些東西光能破解也是徒勞!
這個東西更多的明計算機計算速度越來越快!
推薦閱讀: