張華
(中國移動(深圳)有限公司,深圳 518000)
隱式驗證碼的設(shè)計與實現(xiàn)
張華
(中國移動(深圳)有限公司,深圳 518000)
隨著互聯(lián)網(wǎng)行業(yè)的蓬勃發(fā)展以及對信息安全重視程度的提高,文本、圖像、聲音等驗證碼已應(yīng)用到我們生活的各個角落。其中,文本驗證碼以其簡潔、不依賴第三方輔助設(shè)備得到最廣泛應(yīng)用。為增加機器識別難度,文本驗證碼設(shè)計越發(fā)趨于復(fù)雜,影響了使用便捷性,導(dǎo)致用戶對其存在褒貶不一。本文在回顧驗證碼發(fā)展及現(xiàn)狀的基礎(chǔ)上,結(jié)合文本驗證碼設(shè)計原理,轉(zhuǎn)換思路,給出一種隱式驗證碼的設(shè)計方法,在確保機器識別難度基礎(chǔ)上,有效降低用戶登錄復(fù)雜性。實踐表明,該方法實用性強,在實際使用中取得了良好效果。
驗證碼;OCR識別;安全
為保障信息安全,減少被暴力破解帶來的信息泄露、金錢損失等風(fēng)險,驗證碼的使用已經(jīng)深入到我們生活的方方面面,新聞網(wǎng)站、證券軟件、聊天論壇,甚至于日常生活中的水電煤氣繳費,使得網(wǎng)絡(luò)賬戶的安全越來越重要。出于被機器識別后嚴重后果的擔(dān)憂,驗證碼有越來越復(fù)雜的趨勢,人眼識別也越來越困難,對日常使用帶來不小影響?;诖朔N情況,本文結(jié)合文本驗證碼設(shè)計原理,轉(zhuǎn)換思路,實現(xiàn)了一種新型驗證碼,采用隱式參數(shù)方式,將人眼識別過程替換為隱式的自動化交互,不需要用戶輸入任何驗證碼信息,在不減少暴力破解難度的同時,有效降低用戶驗證復(fù)雜度。
驗證碼的起源和互聯(lián)網(wǎng)的發(fā)展密切相關(guān),互聯(lián)網(wǎng)早期,應(yīng)用最廣的是免費網(wǎng)絡(luò)郵箱,通過注冊一個郵箱地址,可以方便的進行人與人之間的溝通。但隨著網(wǎng)絡(luò)營銷的興盛,垃圾郵件大量出現(xiàn),給免費郵件運營商帶來不小的困擾,且因為自動注冊計算機程序的存在,為從源頭上封堵垃圾郵件的泛濫帶來非常大的麻煩,如何區(qū)分正常用戶和自動注冊計算機程序迫在眉睫。2002年卡內(nèi)基梅隆大學(xué)的Luis von Ahn、Manuel Blum、Nicholas J.Hopper以及IBM的John Langford提出了驗證碼(CAPTCHA)的概念,驗證碼(CAPTCHA)是一種區(qū)分用戶是計算機還是人的公共全自動程序,在驗證碼測試中,作為服務(wù)器的計算機會自動生成一個問題由用戶來解答,這個問題可以由計算機生成并評判,但是必須只有人類才能解答。由于計算機無法解答驗證碼的問題,所以回答出問題的用戶就可以被認為是人類。驗證碼在網(wǎng)絡(luò)上的大規(guī)模使用起源于 1999~2000年間Yahoo網(wǎng)站的賬號注冊,目前大多數(shù)網(wǎng)站都采用驗證碼機制來加強其安全性,使用場景主要為注冊以及登陸,有效防止暴力破解、刷票、論壇灌水等非正常使用行為。
隨著人們對網(wǎng)絡(luò)安全的日益重視,驗證碼技術(shù)的發(fā)展越來越迅速,從驗證碼的特點看,大致可分為文本、圖像及話音3類。其中,文本驗證碼以其實現(xiàn)簡單,無需輔助設(shè)備等優(yōu)點,是目前使用的主流方式。
第1類是文本驗證碼,示例如圖1所示。主要以動態(tài)或靜態(tài)圖片形式存在,在圖片上看到的信息即為驗證結(jié)果,通常采用圖像變形、添加噪聲等方式增加機器識別難度。依據(jù)內(nèi)容構(gòu)成、表現(xiàn)形式的不同可分為3種:數(shù)字和字母組合、人類語言以及動態(tài)圖片。
圖1 文本驗證碼示例
數(shù)字和字母的組合驗證碼由數(shù)字0~9、字母a~z及其它特殊字符隨機混合構(gòu)成,長度通常在4~6之間,因其簡潔且生成難度小,最為常見;人類語言驗證碼由隨機選擇的一個單詞構(gòu)成;動態(tài)圖片驗證碼,本身為一張動畫圖片,其在變形、噪聲基礎(chǔ)上增加了動態(tài)變換,增加了破解難度,受限于紙質(zhì)媒介的展現(xiàn)形式,本文無法直觀表現(xiàn)。
另外,短信也是文本驗證碼形式之一。通過將驗證信息發(fā)送到用戶手機,再讓用戶人工回填的方式,可以保證安全性,是目前最安全有效的驗證方式之一。但因涉及到第三方產(chǎn)品手機,僅在少量重要場合使用,如密碼找回、銀行卡綁定、費用支付等。
第2類是圖像驗證碼,示例如圖2所示。在圖片上看到的內(nèi)容僅為判斷得到驗證結(jié)果的來源,需要經(jīng)過人類思維判斷后才能得到驗證結(jié)果。依據(jù)內(nèi)容構(gòu)成的不同可分為3種:提問式驗證碼、科學(xué)驗證碼、廣告驗證碼。此種驗證方式近年來有增加趨勢,如火車票預(yù)訂網(wǎng)站12306,但因其涉及到人文、社科等多方面內(nèi)容,目前仍然不是驗證主流。
圖2 圖像驗證碼示例
第3類是語音驗證碼。將驗證信息自動轉(zhuǎn)化為一段錄音,通過3種方式(電腦直接播放、錄音發(fā)送到手機、語音電話直接呼到手機)知會用戶,用戶將錄音中提示的驗證信息進行回填,從而保證安全??紤]到方言差異、用戶接收設(shè)備等問題,此種驗證方式應(yīng)用較少,主要作為短信驗證碼的輔助手段使用。
3.1驗證碼原理
驗證碼實現(xiàn)原理大致如下:選擇一個服務(wù)器(或模塊)用于生成驗證碼圖像及比對用戶輸入驗證信息,用戶按照要求人工識別并輸入驗證信息。以Web網(wǎng)站為例,詳細介紹文本驗證碼的實現(xiàn)原理,原理如圖3所示。
步驟1:用戶發(fā)送請求訪問特定網(wǎng)頁,如登錄請求、未登陸狀態(tài)下訪問安全性較高網(wǎng)頁請求。
步驟2:網(wǎng)站判定用戶需要進行權(quán)限驗證后,在服務(wù)器端動態(tài)生成驗證信息字符串(如2F3A),并將其轉(zhuǎn)換為圖片格式。
步驟3:網(wǎng)站將登陸頁面返回給用戶,其中包含驗證圖片。
步驟4:用戶客戶端展示登錄頁面信息,驗證信息以圖片形式顯示。
步驟5:用戶人為識別驗證信息后,將用戶名、密碼及驗證信息按要求回填到登錄頁面并提交給網(wǎng)站。
圖3 文本驗證碼生成原理示意圖
步驟6:網(wǎng)站接收到用戶提交信息后,將此信息和保存的驗證信息進行比對。
步驟7:如比對通過,即可將登錄成功頁面返回給用戶。
步驟7’:如比對失敗,在登錄頁面上提示失敗原因。
上文中提到的文本驗證碼及圖像驗證碼均采用此原理實現(xiàn),僅在步驟3、4略有差異,但本質(zhì)上沒有太大區(qū)別。
文本驗證碼可有效對真實用戶和機器進行區(qū)分,優(yōu)點明顯。然而 OCR技術(shù)也在不斷發(fā)展中,通過格式轉(zhuǎn)換、去噪、灰度化、二值化、定位并分離字符、字符與模式庫中模式匹配等一系列自動化識別步驟后,文本驗證碼可被識別率較高。出于被識別的擔(dān)憂,文本驗證碼越來越復(fù)雜,機器識別難度提高的同時,用戶識別難度也在同步提高。
3.2隱式驗證碼原理
隱式驗證碼和目前驗證碼在原理上類似,均是采用動態(tài)驗證信息增加機器暴力破解難度,差別在于驗證信息的識別與回填均自動完成,用戶無感知。如圖4所示,隱式驗證碼和當前主流驗證碼的差別主要在如下幾個步驟。
步驟3:網(wǎng)站在生成驗證信息(步驟2)的同時,還在加密庫中隨機篩選出了加密算法,在混淆庫中隨機篩選出混淆算法,然后對加密算法進行混淆。
步驟5:網(wǎng)站在將驗證信息返回給用戶(步驟4)的同時,還將混淆后的加密算法一起返回給了用戶。
步驟7:客戶端展示的登陸頁面上不顯示任何形式的驗證信息,而是僅將驗證信息及加密算法駐留在用戶客戶端,且用戶不可見。
步驟8:本步驟為隱式驗證碼的設(shè)計核心。當用戶提交登錄信息給網(wǎng)站時,自動采用加密算法將驗證信息加密并一起提交,因為加密及自動提交過程和用戶無關(guān),故此用戶無感知。
步驟9:網(wǎng)站收到加密后的驗證信息后,采用對應(yīng)的解密算法進行解密,然后和網(wǎng)站保留的驗證信息進行比對。
步驟10’:當驗證信息比對失敗時,網(wǎng)站下發(fā)新的混淆后的加密算法及驗證信息。
當網(wǎng)站被暴力破解時,機器(或破解者)需要識別混淆后的加密算法及驗證信息,且因為每次用戶提交均會導(dǎo)致算法更新,故此安全性較高。缺點是算法及驗證信息均駐留在用戶客戶端,存在被識別的可能。故此,為增加暴力破解難度,通過擴充加密算法庫、混淆算法庫,及多樣化驗證信息位置的方式,可達到增加破解難度的目的。
圖4 隱式驗證碼生成原理示意圖
本方法在確保暴力破解難度的同時,和用戶無交互,且通用性較強,適用于各種場景,優(yōu)勢明顯;缺點一是對破解者的嘗試性登陸無法識別,即破解者采用正常登陸流程訪問時,該方法無法區(qū)分。二是復(fù)雜程度依賴于加密算法,而生產(chǎn)庫中導(dǎo)入的加密算法一般是有限的。
某科技公司在建設(shè)新一代網(wǎng)站系統(tǒng)時實現(xiàn)了該新型驗證碼,其開發(fā)語言為Java,JS加密庫中已導(dǎo)入了50種左右的加密算法,如位移、HASH等,混淆庫中已導(dǎo)入了10種左右的混淆算法或產(chǎn)品。如下以網(wǎng)站登錄為例,就簡述下登錄流程。
(1)當網(wǎng)站接收到訪問登錄頁面請求后,自動生成驗證信息、混淆過的加密算法,然后返回登錄頁面給用戶。
加密算法均采用JavaScript語言實現(xiàn),以確??稍诳蛻舳藞?zhí)行。因加密算法文件是可見的,采用混淆算法可增加識別難度。
以圖層<DIV>方式保存驗證信息,圖層名稱、位置動態(tài)變化。驗證信息在網(wǎng)站隨機生成。
假設(shè)JS加密算法選擇位移,混淆選擇YUI Compressor產(chǎn)品(免費軟件,但功能相對較弱)。
(2)用戶點擊登錄時,通過JavaScript語言的onClick方法直接調(diào)用加密算法,算法獲取驗證信息并加密后,和賬號、密碼等信息一起提交給網(wǎng)站。
(3)網(wǎng)站解密驗證信息并和網(wǎng)站預(yù)留信息比對,如果一致即表明用戶認證通過。如果比對失敗,推送錯誤提示信息及新的驗證信息、混淆后的加密算法給客戶端。
當前驗證碼發(fā)展趨向復(fù)雜化,人眼識別越來越困難,影響了用戶正常使用。本文提出一種隱式驗證碼的設(shè)計思路,保障暴力破解難度的同時,還不影響用戶使用便捷性。另外,再復(fù)雜的驗證碼也抵擋不住針對性的識別,從2008年Gmail郵箱被破解到2015年12306新款驗證碼被破解已證明了識別能力的強大,故此,復(fù)雜化不是驗證碼的發(fā)展方向,建議通過多種手段結(jié)合方式,在確保用戶良好感知的同時,有效區(qū)分用戶行為和機器破解行為。
Design and implementation of implicit CAPTCHA
ZHANG Hua
(China Mobile (Shenzhen) Co., Ltd., Shenzhen 518000, China)
With the rapid development of the Internet industry and the improvement of the emphasis on the information security, the CAPTCHA such as text, images and sound has been applied to every corner of our lives. Among of these CAPTCHA, text CAPTCHA are becoming most widely used for its simplicity and not relying on third-party ancillary equipment. To increase the diffi culty of identifying for the machine, the design of text CAPTCHA become more complex affecting the ease of use and causing the users dissatisfi ed.This paper reviews the development and research status of the CAPTCHA, based on the design principles of the text CAPTCHA and converting designing ideas,an implicit CAPTCHA is given in this paper ensuring the diffi culty of recognition for the machine and effectively reducing the complexity of the user login. Practice shows that this method is practical and can achieve good results in actual use.
implicit CAPTCHA; OCR identifying; security
TN929.5
A
1008-5599(2016)10-0054-04
2016-07-26