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

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

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