朱理奧, 曹天杰
(中國(guó)礦業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 徐州 221116)
隨著網(wǎng)絡(luò)商店、論壇等平臺(tái)的普及,攻擊者可以通過(guò)運(yùn)行腳本進(jìn)行批量注冊(cè),之后通過(guò)操縱這一批虛假用戶來(lái)進(jìn)行諸如惡意差評(píng)、惡意轉(zhuǎn)發(fā)、惡意發(fā)送郵件等行為,既破壞了平臺(tái)用戶的使用體驗(yàn),也給人們生活帶來(lái)不便。同時(shí),由于越來(lái)越多的商家會(huì)在網(wǎng)絡(luò)平臺(tái)進(jìn)行搶購(gòu)促銷,腳本刷票的行為也將為攻擊者帶來(lái)不正當(dāng)?shù)睦?。此?反復(fù)進(jìn)行的暴力窮舉攻擊也會(huì)對(duì)于系統(tǒng)安全產(chǎn)生較大威脅。為了應(yīng)對(duì)這一系列威脅,驗(yàn)證碼的概念被人們所提出。驗(yàn)證碼,全稱為完全自動(dòng)地區(qū)分人類與機(jī)器的公共圖靈測(cè)試(completely automated public turing test to tell computers and humans apart, CAPTCHA)[1],是一種可以有效區(qū)分人類用戶和機(jī)器的測(cè)試。
驗(yàn)證碼對(duì)于用戶身份究竟是人類還是計(jì)算機(jī)程序進(jìn)行區(qū)分,可以迫使意圖進(jìn)行惡意行為的攻擊者放棄計(jì)算機(jī)自動(dòng)化批量操作而進(jìn)行人工手動(dòng)操作,從而加大了攻擊者進(jìn)行大量重復(fù)操作時(shí)的時(shí)間成本,它被視為網(wǎng)絡(luò)系統(tǒng)安全的一個(gè)不可或缺的部分。
目前由于機(jī)器學(xué)習(xí)技術(shù)和圖像處理技術(shù)的不斷進(jìn)步,針對(duì)驗(yàn)證碼的破解與識(shí)別技術(shù)也在不斷加強(qiáng)。原本被認(rèn)為有效的驗(yàn)證碼,如今正在面臨挑戰(zhàn)。因此有必要研究和修改驗(yàn)證碼,以便提高安全性。本文針對(duì)利用特征點(diǎn)匹配來(lái)攻破滑塊式拼圖驗(yàn)證碼的攻擊方法進(jìn)行研究,提出一種能夠抵抗這一攻擊方式的驗(yàn)證碼設(shè)計(jì)方法。
驗(yàn)證碼這一概念最早由文獻(xiàn)[2]提出,主要是針對(duì)當(dāng)時(shí)Yahoo郵箱的垃圾郵件問(wèn)題。之后學(xué)者們進(jìn)行了很多驗(yàn)證碼相關(guān)的研究工作。
最初,驗(yàn)證碼主要是基于文本和基于圖像的驗(yàn)證碼,但是由于機(jī)器學(xué)習(xí)技術(shù)和圖像處理技術(shù)的進(jìn)步,攻破這一類驗(yàn)證碼已不再具有難度,目前已經(jīng)有相當(dāng)數(shù)量的攻擊方法被提出[3-6]。
因此,人們對(duì)于新的驗(yàn)證碼類型進(jìn)行了探索,提出了諸如互動(dòng)式游戲(dynamic cognitive game, DCG)、隱形驗(yàn)證碼[7]、眼動(dòng)驗(yàn)證碼[8]、動(dòng)態(tài)物體識(shí)別驗(yàn)證碼[9]等新的驗(yàn)證碼類型。其中,運(yùn)用最廣泛的,便是DCG驗(yàn)證碼。這是由于相比于其他類型的驗(yàn)證碼,它更為簡(jiǎn)單,用戶在實(shí)際使用過(guò)程中也更為方便,并且與那些依賴用戶生物信息進(jìn)行的驗(yàn)證相比,不需要專門的硬件支持,同時(shí)相比于谷歌推出的noCAPTCHA,一個(gè)通過(guò)利用用戶操作行為進(jìn)行區(qū)分的人機(jī)識(shí)別機(jī)制,不需要收集用戶隱私數(shù)據(jù)。
目前應(yīng)用最為廣泛的一種DCG驗(yàn)證碼,是通過(guò)讓用戶完成一個(gè)拼圖來(lái)進(jìn)行驗(yàn)證的滑塊式拼圖驗(yàn)證碼。這種驗(yàn)證碼會(huì)將圖像中的一部分作為由滑塊控制的拼圖塊,將其位置的原有圖像進(jìn)行暗化處理,得到背景圖片,要求人類用戶能夠察覺(jué)出顏色異常的位置,進(jìn)而明白應(yīng)當(dāng)操作滑塊將拼圖塊移動(dòng)至指定位置。而計(jì)算機(jī)解決察覺(jué)所謂“顏色異?!辈糠值膯?wèn)題比較困難,因此可以進(jìn)行人機(jī)區(qū)分。
對(duì)于這一類驗(yàn)證碼的攻擊,主要是利用驗(yàn)證碼認(rèn)證協(xié)議上的漏洞來(lái)繞過(guò)驗(yàn)證碼,而并非識(shí)別和攻破驗(yàn)證碼本身?;谠搯?wèn)題文獻(xiàn)[10-11]提出了通過(guò)將目標(biāo)網(wǎng)站的驗(yàn)證碼偽裝成正常訪問(wèn)時(shí)所需要的驗(yàn)證碼,轉(zhuǎn)發(fā)給其他普通人類用戶來(lái)完成的攻擊方法;文獻(xiàn)[12]提出了利用驗(yàn)證碼在客戶端驗(yàn)證的特點(diǎn),偽造已經(jīng)通過(guò)的結(jié)果來(lái)避免解答驗(yàn)證碼,并提出了利用驗(yàn)證碼在客戶端生成的特性,獲取未經(jīng)處理的原始背景圖片,從而計(jì)算出目標(biāo)位置,進(jìn)而完成驗(yàn)證;文獻(xiàn)[13]提出了利用驗(yàn)證碼生成時(shí)可能會(huì)使用同一張圖片來(lái)生成多個(gè)不同驗(yàn)證碼的情形,通過(guò)使用同一圖片的不同驗(yàn)證碼來(lái)還原出原始圖片,進(jìn)而獲取目標(biāo)位置。對(duì)于驗(yàn)證碼本身進(jìn)行攻破,即能模擬人類行為解決這一類驗(yàn)證碼的攻擊方法,目前只有文獻(xiàn)[14]中所提出的基于特征點(diǎn)匹配的方法以及暴力窮舉法。
文獻(xiàn)[14]中提出了一種攻破滑塊式拼圖驗(yàn)證碼的方法,具體步驟如下:
(1) 通過(guò)特征點(diǎn)(指圖像中與周圍像素點(diǎn)存在顯著差異的像素點(diǎn))匹配獲取目標(biāo)位置。
(2) 利用機(jī)器學(xué)習(xí)的方法模擬人類移動(dòng)滑塊的鼠標(biāo)軌跡進(jìn)行移動(dòng),完成驗(yàn)證。
在步驟(1)中,通過(guò)利用滑塊式拼圖驗(yàn)證碼在給用戶發(fā)布任務(wù)時(shí),具有將目標(biāo)位置的圖像完整保留,只進(jìn)行暗化處理的特點(diǎn),使用Canny算子獲得拼圖塊的特征點(diǎn)模板和背景圖片的特征點(diǎn)分布之后,進(jìn)行目標(biāo)位置匹配。其中,Canny算子[15]的主要工作流程如下。
(1) 將圖片轉(zhuǎn)化為灰度圖,具體的轉(zhuǎn)化公式如下:
Values=0.299R+0.587G+0.114B,
其中,Values為轉(zhuǎn)化后相應(yīng)像素點(diǎn)的像素值;R、G、B分別為轉(zhuǎn)化前該像素點(diǎn)在紅、綠、藍(lán)3個(gè)通道的值。
(2) 使用如下公式對(duì)圖片進(jìn)行高斯濾波,去除噪聲,即
其中,(x,y)為像素點(diǎn)的坐標(biāo);σ為高斯分布的標(biāo)準(zhǔn)差。
(3) 使用如下2個(gè)公式計(jì)算X和Y方向的偏導(dǎo)數(shù),以便進(jìn)行梯度幅值和方向角的計(jì)算,即
梯度幅度和方向角的計(jì)算公式分別為:
(4) 進(jìn)行非極大值抑制。
(5) 利用滯后閾值法(即一高一低2個(gè)閾值),對(duì)像素點(diǎn)進(jìn)行提取和連接,獲得邊緣。
由此可以看出,Canny算子是進(jìn)行邊緣檢測(cè),即所謂的“特征點(diǎn)”實(shí)質(zhì)上是圖片之中的邊緣中心。
因?yàn)榛瑝K式拼圖驗(yàn)證碼本身保留了目標(biāo)位置的圖像信息,而拼圖塊本身便是目標(biāo)區(qū)域的圖像,所以在提取出邊緣之后,只需要研究每一個(gè)位置的圖像與拼圖塊邊緣的重合程度,即匹配分值(原文定義為模板圖案與目標(biāo)圖案在相同位置上具有的特征點(diǎn)數(shù)量占總特征點(diǎn)數(shù)的比例),便能找到目標(biāo)位置。因此,使滑塊式拼圖驗(yàn)證碼能夠?qū)固卣鼽c(diǎn)匹配的關(guān)鍵,便在于干擾Canny算子的邊緣檢測(cè)。
由于Canny算子本身具有的高魯棒性特點(diǎn),增加干擾像素的效果可能事倍功半。本文將采用刪除特征點(diǎn)的方法,降低目標(biāo)位置與拼圖塊在特征點(diǎn)分布上的重合度,從而避免被尋找到目標(biāo)位置。不過(guò)需要注意的是,為了能讓人類用戶通過(guò)驗(yàn)證,應(yīng)當(dāng)保留一部分圖像信息,以便讓人類用戶能夠定位目標(biāo)位置。
文獻(xiàn)[14]中同樣也提到,因?yàn)榛瑝K式拼圖驗(yàn)證碼只有一個(gè)水平滑塊,即拼圖塊必定與目標(biāo)位置擁有相同的縱坐標(biāo),針對(duì)每一個(gè)可能位置計(jì)算匹配分值是可能并且開(kāi)銷較小的。因此,本文的方法將會(huì)擴(kuò)展目標(biāo)位置的可能性,從一維擴(kuò)展至二維,來(lái)提高遍歷搜索的成本。這一行為理論上也能提高暴力窮舉攻擊的成本。
本方案不將整個(gè)目標(biāo)位置的圖像信息刪除,而僅僅是進(jìn)行部分刪除。具體而言,是對(duì)目標(biāo)位置內(nèi)的像素點(diǎn)選擇一部分更改為同一像素值,使得目標(biāo)位置特征點(diǎn)的匹配分值M滿足:
M≤Maverage,
其中,Maverage為目標(biāo)位置所在行除目標(biāo)位置本身以外的各位置的匹配分值平均值。
因?yàn)槠ヅ浞种当旧肀欢x為匹配的特征點(diǎn)占總特征點(diǎn)的比例,所以僅僅需要至少修改(1-Maverage)N個(gè)特征點(diǎn)即可,其中N為目標(biāo)位置的特征點(diǎn)總數(shù)。
因?yàn)镃anny算子本身會(huì)過(guò)濾非特征點(diǎn),對(duì)于非特征點(diǎn)的改動(dòng)不會(huì)影響Canny算子對(duì)于特征點(diǎn)的提取,所以出于方便考慮,可以將一個(gè)包括至少(1-Maverage)N個(gè)特征點(diǎn)的圓形區(qū)域內(nèi)的所有像素點(diǎn)都更改為同一個(gè)像素值V,即可實(shí)現(xiàn)對(duì)目標(biāo)位置圖像信息的部分刪除。
根據(jù)以上的思路,可以得到如下驗(yàn)證碼生成方案。本方案中用到的參數(shù)如下:m為目標(biāo)位置區(qū)域的長(zhǎng)度;n為目標(biāo)位置區(qū)域的寬度;V為抹除特征點(diǎn)時(shí)所更改到的像素值;D為驗(yàn)證時(shí)的允許誤差;W為最大允許嘗試次數(shù)。這些參數(shù)的具體取值根據(jù)實(shí)際需要確定。
(1) 在一張圖片A中隨機(jī)選擇一個(gè)位置作為目標(biāo)位置L,大小為m×n,將目標(biāo)位置原有圖像復(fù)制下來(lái)保存,作為拼圖塊P。
(2) 將L所在行設(shè)置為感興趣帶Z,利用Canny算子對(duì)P進(jìn)行特征點(diǎn)提取,并且對(duì)Z中除了L以外的位置進(jìn)行特征點(diǎn)匹配,計(jì)算每個(gè)位置的匹配分值Mi,取其平均數(shù)Maverage,即
(3) 對(duì)A的L使用Canny算子進(jìn)行特征點(diǎn)提取,得到Lm,并且統(tǒng)計(jì)其中的特征點(diǎn)總數(shù)N。
(4) 隨機(jī)地選取Lm的特征點(diǎn)中的(1-Maverage)N個(gè),做一個(gè)可以包括所有這些特征點(diǎn)的幾何圓S,將S內(nèi)的所有像素點(diǎn)的像素值設(shè)置為一個(gè)特定值V,得到更改后的圖像B,作為驗(yàn)證碼的背景圖像。
(5) 將背景圖片B和拼圖塊P展示給用戶。B的展示方式與現(xiàn)有的滑塊式拼圖驗(yàn)證碼的背景圖片展示方式相同。為了便于用戶找到P,P的初始位置應(yīng)在B之外,或?qū)ζ溥M(jìn)行用戶界面上的提示與指引。
在步驟(4)中,為獲取S,使用k-means聚類算法對(duì)于選取的要修改的特征點(diǎn)進(jìn)行聚類,求得聚類中心C坐標(biāo)為(xC,yC)。之后以C到距離C最遠(yuǎn)的特征點(diǎn)之間的距離dmax作為半徑r,做如下方程:
(x-xC)2+(y-yC)2=r2,
只要L中的像素點(diǎn)的坐標(biāo)(xi,yi)滿足:
(x-xC)2+(y-yC)2≤r2,
即可判定該像素點(diǎn)在圓之內(nèi)。此處特征點(diǎn)與C之間的距離di定義為:
考慮到實(shí)際應(yīng)用過(guò)程中用戶很難精確地移動(dòng)拼圖塊到選定的位置,因此還需要增加一個(gè)允許誤差D。同時(shí)額外多增加一個(gè)最大允許嘗試次數(shù)W。只有用戶將拼圖塊移動(dòng)到L的D范圍內(nèi)并且嘗試次數(shù)不多于W,才可算通過(guò)驗(yàn)證。
需要注意拼圖塊的起始位置應(yīng)當(dāng)隨機(jī),不局限于與目標(biāo)位置處于同一行。同時(shí)出于易用性考量,取消水平滑動(dòng)條,改為要求用戶操縱鼠標(biāo)拖動(dòng)拼圖塊來(lái)完成驗(yàn)證。
目前已有的滑塊式拼圖驗(yàn)證碼除檢驗(yàn)?zāi)繕?biāo)位置之外,還會(huì)進(jìn)行鼠標(biāo)軌跡的人機(jī)區(qū)分。由于本方案已經(jīng)能夠在理論上保證針對(duì)文獻(xiàn)[14]的攻擊方法以及窮舉攻擊的抵抗性(理由詳見(jiàn)第4節(jié)),這一檢驗(yàn)環(huán)節(jié)可以選擇進(jìn)行保留,以便進(jìn)一步提高安全性。
由于現(xiàn)有的研究均基于一維情形,并且現(xiàn)有數(shù)據(jù)集也針對(duì)的是一維滑塊的驗(yàn)證碼,在進(jìn)行相關(guān)研究時(shí)存在一些困難。一個(gè)思路是將文獻(xiàn)[15]中的特征加權(quán)的樸素貝葉斯模型[16]推廣至二維情形,利用一個(gè)合適的數(shù)據(jù)集進(jìn)行訓(xùn)練之后獲得一個(gè)分類器,用于對(duì)鼠標(biāo)軌跡進(jìn)行分類,劃分為人類軌跡和機(jī)器軌跡兩類。這將在未來(lái)的研究中進(jìn)行,本文暫不展開(kāi)描述。
本文方案可以使用python語(yǔ)言進(jìn)行編寫(xiě),使用Pillow庫(kù)進(jìn)行圖像處理,效果示例如圖1所示,示例取m=n=32,V=0。從圖1可以看出,本文所提出的部分抹除特征點(diǎn)方案使目標(biāo)位置內(nèi)部像素點(diǎn)的像素值不再變化。此時(shí)使用Canny算子將無(wú)法有效識(shí)別出目標(biāo)區(qū)域內(nèi)部的邊緣特征。本文方案由此抹除了目標(biāo)位置內(nèi)部圖像的邊緣特征信息,降低了目標(biāo)位置的匹配分值,但保留了區(qū)域邊緣的特征,防止攻擊者通過(guò)尋找匹配分值最低值的方式來(lái)獲取目標(biāo)位置。
圖1 圖像處理效果
本文方案適用于各種需要驗(yàn)證碼的環(huán)節(jié),諸如用戶注冊(cè)、用戶登錄、論壇用戶留言等等。
以用戶留言為例。服務(wù)器應(yīng)當(dāng)事先保留有大量已經(jīng)生成的驗(yàn)證碼的背景圖片和拼圖塊圖片。當(dāng)用戶編寫(xiě)完留言內(nèi)容后,點(diǎn)擊發(fā)送留言。此時(shí)服務(wù)器接收到用戶的留言請(qǐng)求之后,將隨機(jī)選擇一組背景圖片和拼圖塊發(fā)送給用戶進(jìn)行驗(yàn)證。用戶使用鼠標(biāo)完成驗(yàn)證之后,將拼圖塊在背景圖片上的相對(duì)坐標(biāo)以及用戶的鼠標(biāo)軌跡數(shù)據(jù)傳回服務(wù)器,在服務(wù)器端進(jìn)行驗(yàn)證和分析。通過(guò)驗(yàn)證則允許用戶留言,未能通過(guò)便拒絕用戶的留言請(qǐng)求。
本文方法確保了目標(biāo)位置的匹配分值必定不會(huì)大于所在的一整行的平均值,則有:
M≤Maverage。
若攻擊時(shí)設(shè)置的匹配分值閾值T滿足:
T≥Maverage。
則導(dǎo)致目標(biāo)位置并不包含在所尋找出來(lái)的位置之中。若匹配分值閾值T過(guò)小,則有:
T 這雖然可以搜索到目標(biāo)位置,但是也將會(huì)包括大量非目標(biāo)位置。這將強(qiáng)制要求攻擊者針對(duì)每一個(gè)背景圖片進(jìn)行調(diào)參操作,以便選取效果最好的閾值。在規(guī)定允許最大的嘗試次數(shù)W的情況下,避免了驗(yàn)證碼被攻破。 原本由于滑塊式驗(yàn)證碼的拼圖塊僅僅是進(jìn)行水平方向的滑動(dòng),導(dǎo)致目標(biāo)位置的取值可能性有限。針對(duì)一個(gè)分辨率為M×N的圖片,時(shí)間復(fù)雜度為θ(M)。在本文方案中,由于拼圖塊改為了需要進(jìn)行水平和垂直2個(gè)方向的移動(dòng),從一維變成了二維,因此大大增加了窮舉攻擊的時(shí)間(時(shí)間復(fù)雜度變?yōu)棣?MN))。 因?yàn)槟繕?biāo)位置存在隨機(jī)性以及該方案并未對(duì)所用來(lái)生成驗(yàn)證碼的圖片作任何要求,并且同一張圖可以生成多張驗(yàn)證碼,窮舉驗(yàn)證碼知識(shí)庫(kù)的攻擊,所以只要知識(shí)庫(kù)容量足夠大,也將需要耗費(fèi)大量時(shí)間。 由于最近幾年利用深度學(xué)習(xí)的方法進(jìn)行的驗(yàn)證碼攻擊研究主要應(yīng)用于針對(duì)文本驗(yàn)證碼的識(shí)別[17-19],而并非是本文所研究的滑塊式拼圖驗(yàn)證碼,本文在此僅進(jìn)行理論分析。 深度學(xué)習(xí)的攻擊方法是通過(guò)提取拼圖塊的圖像信息后與背景圖片進(jìn)行匹配,以便找出目標(biāo)區(qū)域,利用的是背景圖片中目標(biāo)區(qū)域的圖象紋理信息被完全保留的特點(diǎn)。 本文方案中目標(biāo)位置的信息并不是完整保留的。要?jiǎng)h除的特征點(diǎn)占比大小與目標(biāo)位置所在行的平均匹配程度有關(guān)。如果目標(biāo)位置所在行里沒(méi)有多個(gè)與目標(biāo)位置相似的紋理,那么目標(biāo)位置所有的特征點(diǎn)都會(huì)被刪除,此時(shí)目標(biāo)位置不會(huì)包含拼圖塊的任何紋理信息,深度學(xué)習(xí)檢測(cè)方法會(huì)難以檢測(cè);如果目標(biāo)位置所在行里包含有多個(gè)與目標(biāo)位置相似的紋理,那么特征點(diǎn)的刪除占比會(huì)減少,但是此時(shí)會(huì)檢測(cè)出多個(gè)位置存在拼圖塊的圖案,無(wú)法具體確定是哪一個(gè)位置。 由于拼圖塊在顯示給用戶時(shí)具有一定透明度,用戶在控制拼圖塊進(jìn)行驗(yàn)證時(shí),可以通過(guò)拼圖塊與目標(biāo)位置未被抹除的部分進(jìn)行線條對(duì)齊,或是觀察移動(dòng)完成后是否存在圖像連接偏差,從而定位目標(biāo)位置,并且由于允許誤差D的存在,允許用戶在完成驗(yàn)證時(shí)存在一定的偏差。 用戶雖然需要在一個(gè)二維平面上移動(dòng)拼圖塊,但是仍然只是沿著斜方向的一條直線進(jìn)行移動(dòng),這不會(huì)增加完成測(cè)試的用時(shí)。同時(shí)該方案并未對(duì)滑塊式驗(yàn)證碼的圖片顯示部分進(jìn)行修改,本質(zhì)上依然只是讓人類用戶完成一個(gè)拼圖游戲,因此理論上依然保存了易用性。 使用python 3.7進(jìn)行編程,圖形界面使用Qt 4.7.0進(jìn)行實(shí)現(xiàn),CPU為i7-8750H,操作系統(tǒng)為Windows10,實(shí)驗(yàn)圖片來(lái)自于顯著性目標(biāo)檢測(cè)數(shù)據(jù)集。 單次的抵抗攻擊實(shí)驗(yàn)步驟如下: (1) 對(duì)于一張圖片,利用本文方法生成新的驗(yàn)證碼。 (2) 使用文獻(xiàn)[14]的方法進(jìn)行攻擊(實(shí)驗(yàn)中直接選取具有最高匹配分值的位置作為攻擊中識(shí)別出來(lái)的目標(biāo)位置),判斷是否準(zhǔn)確獲得了目標(biāo)位置。 (3) 使用窮舉攻擊,記錄為獲取目標(biāo)位置必須經(jīng)過(guò)的窮舉次數(shù)的平均值。 對(duì)每一張圖片進(jìn)行抵抗攻擊實(shí)驗(yàn),計(jì)算文獻(xiàn)[13]的方法和窮舉方法對(duì)于目標(biāo)位置的平均識(shí)別準(zhǔn)確率,并且研究參數(shù)D對(duì)于識(shí)別準(zhǔn)確率的影響。之后由人類進(jìn)行驗(yàn)證碼驗(yàn)證測(cè)試,記錄通過(guò)率以及平均時(shí)間消耗。 由于拼圖塊一般比較小,實(shí)驗(yàn)中選取V=0,m=n=32。 隨著參數(shù)D的變化,特征點(diǎn)匹配攻擊的平均識(shí)別準(zhǔn)確率P、窮舉攻擊的平均嘗試次數(shù)U的變化情況見(jiàn)表1所列,如圖2所示。 表1 D與P、U的關(guān)系 可以看出,本文提出的方法在D≤2時(shí),文獻(xiàn)[14]的識(shí)別算法對(duì)目標(biāo)位置的識(shí)別準(zhǔn)確率不足1%。但是由于D的增大提高了容錯(cuò)率,導(dǎo)致識(shí)別率隨著D的增加而增大。無(wú)論D的取值如何,盡管D的增大同樣也會(huì)減少窮舉攻擊的嘗試次數(shù),窮舉攻擊方法依然都需要大量的嘗試才能找到目標(biāo)位置。 圖2 D與P、U的關(guān)系 因此,本文方案對(duì)于文獻(xiàn)[14]中的識(shí)別算法具有抵抗性,對(duì)于窮舉攻擊也具有抵抗性。 人類實(shí)驗(yàn)中,由2名志愿者進(jìn)行實(shí)驗(yàn),每人進(jìn)行20次驗(yàn)證測(cè)試,實(shí)驗(yàn)結(jié)果見(jiàn)表2所列。表2中,Pass為通過(guò)率;t為通過(guò)測(cè)試的平均用時(shí)。D與Pass、t的關(guān)系如圖3所示。 表2 人類實(shí)驗(yàn)結(jié)果 顯然,人類測(cè)試通過(guò)率隨著D的增大而增大,并且在D=3時(shí)達(dá)到100%,這是由于D增大提高了驗(yàn)證的容錯(cuò)率引起的。人類測(cè)試的平均用時(shí)則隨著D的增大而減小,這是由于D的增大提高了容錯(cuò)率,使得用戶在將拼圖塊拖拽至目標(biāo)位置后的反復(fù)對(duì)齊的用時(shí)減少了。 一般現(xiàn)有的滑塊式拼圖驗(yàn)證碼的人類完成時(shí)間在1~3 s之間,因此可以得出本文方法并未犧牲用戶的易用性。 綜上所述,本文方案在沒(méi)有犧牲用戶易用性的前提下,具有對(duì)特征點(diǎn)匹配攻擊的抵抗性。允許誤差D在提高用戶驗(yàn)證效率的同時(shí),也會(huì)帶來(lái)對(duì)于特征匹配攻擊的抵抗性的下降。這在實(shí)際使用時(shí)應(yīng)當(dāng)根據(jù)實(shí)際需要進(jìn)行權(quán)衡取舍。 圖3 D與Pass、t的關(guān)系 本文針對(duì)文獻(xiàn)[14]中所提及的利用特征點(diǎn)匹配來(lái)繞過(guò)驗(yàn)證碼的方法進(jìn)行了分析,并針對(duì)性地提出了一個(gè)刪除目標(biāo)位置部分特征點(diǎn)的驗(yàn)證碼生成方案,使所生成的驗(yàn)證碼具有對(duì)于此類攻擊的抵抗性。本文同時(shí)對(duì)滑塊式驗(yàn)證碼進(jìn)行了用戶操縱上的改進(jìn),取消了原有的滑動(dòng)條,將拼圖塊作為滑塊,并且擴(kuò)大了拼圖塊的坐標(biāo)位移維度,以便抵抗窮舉攻擊。攻擊實(shí)驗(yàn)和人類測(cè)試實(shí)驗(yàn)證明,本文的方案在保證用戶易用性的情況下,對(duì)于基于特征點(diǎn)匹配的攻擊方法具有抵抗能力。 本文方法僅僅針對(duì)目標(biāo)位置的選取和處理進(jìn)行了改進(jìn)。在實(shí)際應(yīng)用中,可以進(jìn)一步利用鼠標(biāo)軌跡的時(shí)空特征區(qū)分機(jī)器與人,以便達(dá)到更高的安全性。此外,本文未能針對(duì)利用深度學(xué)習(xí)的攻擊方法進(jìn)行分析,這都將在未來(lái)的研究中進(jìn)行探討。4.2 針對(duì)窮舉攻擊
4.3 針對(duì)深度學(xué)習(xí)方法攻擊
5 易用性分析
6 實(shí) 驗(yàn)
7 結(jié) 論