本文只想引起那些網站的設計者們的注意,同時也給一些對安全感興趣的初學者一些啟示作用
在計算機安全領域中,相信大家對窮舉密碼破解和字典密碼破解這兩個名詞一定耳聞詳熟了,對於一些黑客或准黑客來說,這是最常用的有效獲得別人密碼的方法。
在網絡飛速發展的今天,網速已不在成為網絡訪問的瓶頸,在為人們上網提供更快的訪問速度的同時也給黑客們提供了更廣闊的發展空間,在線破解越來越大地威脅著網絡安全。本文就談談在網絡上,使用附加碼的方法阻擋來自HTML頁面提交的窮舉的方法中的矛與盾。
如果你對網絡有一些了解,在你上網的時候你應當被一些頁面要求填寫附加碼的表單才能正常進入你的帳號。更進一步,如果你對安全有一些了解,你一定知道有專門的破解工具可以在線破解別人BBS帳號或在線郵件賬號密碼的工具,如大名鼎鼎的小榕之朔雪。那麼附加碼與朔雪類工具軟件有什麼聯系呢?可以簡單地說,附加碼可以有效防止朔雪對你的攻擊。
為什麼附加碼又有如此威力呢?我們先簡單分析窮舉的原理。窮舉法攻擊最重要的一個條件是:密碼在攻擊期間內不能變化。它總能在所有字母組合中通過不斷地“試”直到成功的方法找到真正的密碼。所以窮舉法也可以叫排除法,和警察排除犯罪謙疑人差不多。那麼,能不能在身份驗證的時候加入動態的驗證內容,使每一次身份驗證時都輸入不同的驗證碼來防止類似攻擊呢?能!那就是附加碼!附加碼在Web服務器上隨機產生並記下來,再生成文字傳給用戶,用戶照著手動輸入提交,服務器對提交的附加碼與記下來的附加碼對比一下正不正確就完成了驗證。因為每一次產生有附加碼是隨機的,所以朔雪就無能為力了。
但這也不是說有了附加碼就高枕無憂了。那還得看你對附加碼的認識和重視程度如何。
想一想,既然WEB服務器都把附加碼傳給了浏覽器,哪為什麼朔雪就不能把它讀出來自動填上呢?理論上完全可以,只是朔雪沒有那樣做罷了。
哪不是附加碼就沒用了嗎?也不是,下面我們再來看看什麼樣的附加碼是最安全的。
一、 如果返回的附加碼以文本形式返回。這是不管用的一種附加碼。攻擊者簡單提取文本附加碼自動填上就可以了。這種附加碼對安全一點幫助都沒有,反而加大了用戶的輸入負擔。[順便提一句:我看到有些網站的附加碼輸入框是密碼類型的輸入框,輸入顯示*號,想一想,附加碼都顯示出來了,還用密碼類型的輸入框有何用?這是對用戶的一種愚弄!]
二、 以圖片方式返回附加碼。這才算是真正有效的附加碼。因為圖片是以點的方式而不是字符方式呈現給用戶的,朔雪就不能直接讀到附加碼了。這種方法很有效。但世上的事物總是矛與盾的較量。攻擊者還可以用圖片識別技術識別圖片上的字符,把圖片字符還原為文本字符。這是完全可行的。那我們該如何防范呢?加大圖片識別難度!
三、 返回加干擾的圖片附加碼。這才算是真正實用的附加碼。如果我們加干擾就可以有效加大圖片識別難度。有些網站的附加碼是加了干擾點的,有些是變了色的字,等等不一而足。試想一下,如果別人花一秒鐘才能識別出圖片上的附加碼,或者他的識別率不高,那窮舉法不是就變得毫無實際意義了?對。但遺憾的是現實中,附加碼的干擾要不是沒有,要不是干擾強度不夠。單純地加干擾點或變色或變字符的大小等都是不夠的。我作了一個測試小軟件,它可以識別出現有的90%以上的不同形式的附加碼,任何字體,任何字符,任何顏色,任何圖片大小均可100%識別成功!可識別JPG,BMP,GIF三種流行格式圖片,而我只花了兩天功夫就完成了。我試過幾個包括騰訊在內的大型網站,結果令人失望,100%的識別率讓我大跌眼鏡。根據我總結的經驗,干擾這樣加是最有效的:隨機漸變色(包括文字和背景)+所有可打印字符+字符大小隨機變化+位置不固定+象素行或列隨機錯位。這樣的附加碼要想要破解基本上是不可能了。但別把圖片變得連人眼都認不出了。
另外,如果要有效防止在線窮舉破解,采用帳戶鎖定辦法是最最有效的一種方法,即在用戶輸錯密碼指定的次數後,凍結帳戶一段時間,使在線破解失效。