陳欣余
(浙江省杭州第二中學(xué) 浙江 杭州 310052)
為了防止人為利用計(jì)算機(jī)進(jìn)行大批量注冊(cè),大批量的散布商業(yè)廣告,惡意評(píng)論,利用枚舉嘗試出用戶(hù)密碼,侵犯用戶(hù)隱私,人們用驗(yàn)證碼技術(shù)嘗試避免這些不良行為。目前已經(jīng)廣泛運(yùn)用的有傳統(tǒng)型驗(yàn)證碼、點(diǎn)選型驗(yàn)證碼、滑動(dòng)型驗(yàn)證碼等。這些驗(yàn)證方式雖然都能有效的區(qū)分人機(jī)操作,但是正常情況下的用戶(hù)每次登錄都需要進(jìn)行驗(yàn)證,比較的繁瑣。因此本文主要設(shè)計(jì)了一種智能驗(yàn)證碼,運(yùn)用瀏覽器指紋,提取用戶(hù)使用的瀏覽器特征,使白名單中的正常用戶(hù)避免驗(yàn)證,只對(duì)黑名單用戶(hù)進(jìn)行強(qiáng)有力的驗(yàn)證,有效的判別正常與異常用戶(hù),優(yōu)化了人機(jī)識(shí)別的機(jī)制,使用戶(hù)操作更便捷。
驗(yàn)證碼就是將一串隨機(jī)產(chǎn)生的數(shù)字或符號(hào),每次刷新頁(yè)面的時(shí)候產(chǎn)生不同的序列,之后生成一幅圖片,圖片里加上一些干擾元素,由用戶(hù)肉眼識(shí)別其中的驗(yàn)證碼信息,然后輸入表單提交網(wǎng)站驗(yàn)證,驗(yàn)證成功后才能使用某項(xiàng)功能。驗(yàn)證碼通常用在用戶(hù)登錄或留言的網(wǎng)頁(yè)界面中,當(dāng)用戶(hù)在瀏覽器端輸入驗(yàn)證碼之后,將用戶(hù)名、密碼和驗(yàn)證碼等信息提交到服務(wù)器,服務(wù)器端獲取用戶(hù)提交的數(shù)據(jù)之后,判斷用戶(hù)提交的驗(yàn)證碼字符與服務(wù)器端保存的字符是否相同。如果相同,則通過(guò)對(duì)用戶(hù)提交信息的驗(yàn)證,否則將提示沒(méi)有通過(guò)驗(yàn)證的提示信息。
驗(yàn)證碼的出現(xiàn)主要是為了進(jìn)行人的行為與計(jì)算機(jī)行為的自動(dòng)識(shí)別,用于用戶(hù)的身份識(shí)別并防止計(jì)算機(jī)對(duì)網(wǎng)站與應(yīng)用的自動(dòng)攻擊。以下列舉了幾種攻擊行為以及運(yùn)用計(jì)算機(jī)設(shè)計(jì)惡意程序操作的后果。
(1)現(xiàn)實(shí)中的注冊(cè)和登錄環(huán)節(jié)中,存在一些惡意的程序,會(huì)實(shí)現(xiàn)自動(dòng),大批量的注冊(cè),搶占賬號(hào),有可能會(huì)導(dǎo)致連續(xù)相同信息的發(fā)表,對(duì)程序惡意攻擊。
(2)同樣存在惡意程序?qū)μ囟ㄙ~號(hào)不斷進(jìn)行密碼嘗試,惡意程序可以通過(guò)窮舉法在所有的字母組合中不斷的嘗試來(lái)破解用戶(hù)的密碼。但是,如果在用戶(hù)登錄的時(shí)候加上驗(yàn)證碼技術(shù),使得每一次身份驗(yàn)證都有動(dòng)態(tài)的信息在改變,由于驗(yàn)證碼每次產(chǎn)生的字符串都是隨機(jī)的,所以簡(jiǎn)單粗暴的攻擊工具就無(wú)能為力了。
隨著安全技術(shù)的發(fā)展,驗(yàn)證碼已有各種各樣的形式,大體上分為以下三種類(lèi)型,分別是傳統(tǒng)驗(yàn)證碼、點(diǎn)選型驗(yàn)證碼以及滑動(dòng)型驗(yàn)證碼。
1.3.1 傳統(tǒng)驗(yàn)證碼
登錄系統(tǒng)會(huì)隨機(jī)產(chǎn)生一串?dāng)?shù)字或符號(hào),每次刷新頁(yè)面的時(shí)候產(chǎn)生不同的序列,之后生成一幅圖片。再將字符變色,旋轉(zhuǎn),扭曲。這種區(qū)分人機(jī)操作的方式的優(yōu)點(diǎn)是對(duì)于程序設(shè)計(jì)來(lái)說(shuō)較方便,但對(duì)于一部分用戶(hù)來(lái)說(shuō),有時(shí)圖片的變形很難快速辨認(rèn),這給用戶(hù)造成了不便。
1.3.2 點(diǎn)選型驗(yàn)證碼
系統(tǒng)將隨機(jī)給出一組圖片,要求用戶(hù)按照指令有順序地點(diǎn)擊其中的一張或多張圖片,這種驗(yàn)證方式很新穎,所以它的優(yōu)點(diǎn)在于實(shí)現(xiàn)了更好的人機(jī)交互,但缺點(diǎn)也很明顯,用戶(hù)完成指令所花費(fèi)的時(shí)間較長(zhǎng),同時(shí)它也沒(méi)有考慮到特殊人群是否能讀懂并完成指令。
1.3.3 滑動(dòng)型驗(yàn)證碼
滑動(dòng)型驗(yàn)證碼的操作步驟比點(diǎn)選型簡(jiǎn)單,它要求用戶(hù)移動(dòng)滑塊將拼圖滑動(dòng)到正確的位置使其拼成一塊完整的圖。這種滑動(dòng)滑塊的方法也是計(jì)算機(jī)不容易實(shí)現(xiàn)的。但在實(shí)際體驗(yàn)的過(guò)程中雖然是人為操作,但也有滑動(dòng)位置錯(cuò)位等系統(tǒng)識(shí)別的失誤,使得用戶(hù)要反復(fù)操作,費(fèi)時(shí)費(fèi)力。
瀏覽器指紋是一種身份追蹤技術(shù),當(dāng)用戶(hù)通過(guò)瀏覽器來(lái)訪(fǎng)問(wèn)某一網(wǎng)站時(shí),便會(huì)記錄瀏覽器的許多種特征,大量的這些特征就可以標(biāo)識(shí)一個(gè)用戶(hù),其唯一性就像指紋一樣。瀏覽器指紋就是通過(guò)瀏覽器各種屬性的綜合,能夠提取到足夠有價(jià)值的信息,通過(guò)將提取的屬性進(jìn)行字符串拼接,然后通過(guò)哈希計(jì)算將這個(gè)字符串轉(zhuǎn)化成128位十六進(jìn)制的字符序列。這個(gè)128位的字符序列就作為用戶(hù)的唯一標(biāo)識(shí)。
瀏覽器有眾多的屬性,可以生成瀏覽器指紋,瀏覽器指紋特性通常包含字體、插件、用戶(hù)代理、cookies是否開(kāi)啟、時(shí)區(qū)等,各種特征的提取方式不盡相同,瀏覽器發(fā)送請(qǐng)求時(shí),會(huì)在HTTP請(qǐng)求頭中包含一些信息,包含用戶(hù)代理一級(jí)可接收的數(shù)據(jù)的類(lèi)型,服務(wù)器可以從HTTP請(qǐng)求頭中獲取User Agent和HTTP_Accept,cookies的設(shè)置信息、所屬時(shí)區(qū)、插件信息以及語(yǔ)言等可以通過(guò)javascript直接調(diào)取瀏覽器相關(guān)方法獲取,系統(tǒng)安裝的字體列表可以通過(guò) fl ash結(jié)合JavaScript的方法獲取。

以上提到的傳統(tǒng)型,點(diǎn)選型和滑動(dòng)型驗(yàn)證碼是目前最普遍的的驗(yàn)證方式,這些驗(yàn)證方式的設(shè)計(jì)原理很簡(jiǎn)單,但最重要的一項(xiàng)不足之處在于,這些驗(yàn)證方式的用戶(hù)體驗(yàn)較差。基本上所有應(yīng)用軟件上的登錄步驟中都有驗(yàn)證這一環(huán)節(jié),對(duì)于用戶(hù)來(lái)說(shuō)操作次數(shù)太多,不簡(jiǎn)便。而智能驗(yàn)證碼是為了解決以上的問(wèn)題設(shè)想出來(lái)的優(yōu)化用戶(hù)體驗(yàn)與人機(jī)交互的機(jī)制。簡(jiǎn)單的概括,它設(shè)定的規(guī)則能避免對(duì)正常用戶(hù)的驗(yàn)證,對(duì)普通用戶(hù)進(jìn)行普通驗(yàn)證,只對(duì)異常用戶(hù)進(jìn)行更強(qiáng)有力的認(rèn)證,優(yōu)化了用戶(hù)體驗(yàn)。

圖1 系統(tǒng)設(shè)計(jì)流程
系統(tǒng)設(shè)計(jì)的步驟如下:系統(tǒng)將設(shè)立一個(gè)白名單與黑名單,將判斷出來(lái)是穩(wěn)定用戶(hù)的信息存入白名單中,將異常用戶(hù)的信息存入黑名單。用戶(hù)在登錄時(shí),會(huì)通過(guò)腳本獲取用戶(hù)的瀏覽器指紋信息,之后將獲取到的信息傳入到服務(wù)器中。首先判斷該用戶(hù)是否在白名單中,如果在則不顯示驗(yàn)證碼即可直接登錄。如果不在,則程序繼續(xù)判斷是否在黑名單中。如果在黑名單中,則加強(qiáng)驗(yàn)證,如果不在,則繼續(xù)判斷是否在數(shù)據(jù)庫(kù)中。如果判斷出該用戶(hù)還未出現(xiàn)在數(shù)據(jù)庫(kù)中,那么該用戶(hù)是新用戶(hù),下一步操作是儲(chǔ)存新用戶(hù)信息,并顯示驗(yàn)證碼。如果判斷出該用戶(hù)已經(jīng)在數(shù)據(jù)庫(kù)中,則繼續(xù)顯示驗(yàn)證碼,并存儲(chǔ)此次登錄的信息,以便確定是把該用戶(hù)移入白名單中,或放在普通數(shù)據(jù)庫(kù)中,還是存入黑名單中。白名單以及黑名單設(shè)立的標(biāo)準(zhǔn)就是:若用戶(hù)此次登陸正常,則正常值加 1。若此次登錄異常則異常值加 1。系統(tǒng)會(huì)記錄總的登錄次數(shù)。經(jīng)過(guò)一段時(shí)間,若正常值占總登錄次數(shù)的比例達(dá)到100%,則將該用戶(hù)移入白名單。若異常值占比達(dá)到30%(這個(gè)比例可以在后續(xù)優(yōu)化過(guò)程更改)則移入黑名單中。若兩者都不是,則仍將該用戶(hù)信息存在數(shù)據(jù)庫(kù)中。這樣的設(shè)計(jì)也實(shí)現(xiàn)了白名單中的用戶(hù)數(shù)量從零到有。同理若白名單中的用戶(hù)出現(xiàn)異常,其存儲(chǔ)的異常值占比達(dá)到了設(shè)定的閾值也會(huì)被移出白名單。簡(jiǎn)單的說(shuō),智能驗(yàn)證碼設(shè)計(jì)的原理是完全信任白名單中的用戶(hù),不對(duì)這些正常用戶(hù)進(jìn)行人機(jī)操作的辨別,只對(duì)異常用戶(hù)進(jìn)行人機(jī)識(shí)別,簡(jiǎn)便了正常用戶(hù)的操作。
本文在第一部分介紹了什么是驗(yàn)證碼以及驗(yàn)證碼的發(fā)展,第二部分提及驗(yàn)證碼運(yùn)用到的相關(guān)技術(shù)即瀏覽器指紋,第三部分將介紹新的驗(yàn)證方式--智能驗(yàn)證碼的設(shè)計(jì),包括其原理以及運(yùn)行的流程示意圖,智能驗(yàn)證碼避免了正常用戶(hù)的驗(yàn)證操作,大幅度提升了用戶(hù)體驗(yàn)。由于信息安全問(wèn)題受到越來(lái)越多人的關(guān)注,驗(yàn)證碼技術(shù)應(yīng)運(yùn)而生,本文所設(shè)計(jì)的智能驗(yàn)證碼技術(shù)通過(guò)瀏覽器指紋對(duì)正常用戶(hù)跳過(guò)驗(yàn)證環(huán)節(jié),對(duì)惡意用戶(hù)實(shí)行下一步更強(qiáng)的認(rèn)證,對(duì)普通用戶(hù)實(shí)行簡(jiǎn)單認(rèn)證。這樣的操作提升用戶(hù)體驗(yàn)。然而本文提出的基于瀏覽器指紋的智能驗(yàn)證碼的設(shè)計(jì)也有一些不足的地方,比如本系統(tǒng)在判斷用戶(hù)是在白名單中還是黑名單中的時(shí)候,判定維度較單一,容易出現(xiàn)誤判的效果,需要在未來(lái)的實(shí)踐中完善。