本發(fā)明涉及一種驗(yàn)證碼領(lǐng)域,特別是涉及一種三維模型驗(yàn)證碼的實(shí)現(xiàn)方法及其裝置。
背景技術(shù):
驗(yàn)證碼作為一種人機(jī)自動區(qū)分技術(shù),已成為互聯(lián)網(wǎng)領(lǐng)域應(yīng)用最廣泛的安全技術(shù)之一。通過驗(yàn)證碼可規(guī)避或降低一般的安全風(fēng)險(xiǎn),如批量注冊、自動發(fā)貼、暴力破解、惡意刷單、短信轟炸等?,F(xiàn)有的驗(yàn)證碼大致可分為三類:
(1)圖片驗(yàn)證碼,圖片驗(yàn)證碼根據(jù)圖片內(nèi)容可分為字符型圖片驗(yàn)證碼和非字符型圖片驗(yàn)證碼。字符型圖片驗(yàn)證碼是一種最為常見的驗(yàn)證碼,它以隨機(jī)符號作為圖片內(nèi)容。該種驗(yàn)證碼優(yōu)點(diǎn)是簡單直觀,實(shí)施難度低。但是隨著圖像識別技術(shù)與人工智能技術(shù)的發(fā)展,字符型圖片驗(yàn)證碼破解率越來越高。如中國專利CN104283682A所公開的,即使通過添加干擾元素的方式加大破解難度,但依然難以兼顧安全性與用戶體驗(yàn),因此字符型圖片驗(yàn)證碼正在逐漸被其他驗(yàn)證碼所替代。非字符型圖片驗(yàn)證碼一般選取已有圖片作為驗(yàn)證碼內(nèi)容,因其圖片內(nèi)容各異,所以很難用圖像識別技術(shù)進(jìn)行破解。但非字符型圖片驗(yàn)證碼也存在一些缺陷,比如選取圖片時(shí)需要借助人工篩選和處理,成本較高;圖片數(shù)量有限,容易通過窮舉遍歷的方式進(jìn)行破解,雖然可通過不斷更新圖片庫的方式增強(qiáng)安全性,但同時(shí)也會增加人工成本。
(2)語音驗(yàn)證碼,語音驗(yàn)證碼基本原理與字符型圖片驗(yàn)證碼相似,只是將信息的載體由圖片替換成了語音,同樣可通過語音識別技術(shù)或窮舉法進(jìn)行破解。
(3)行為驗(yàn)證碼,行為驗(yàn)證碼是一種新型的驗(yàn)證碼,根據(jù)復(fù)雜程度可分為簡單行為驗(yàn)證碼和復(fù)雜行為驗(yàn)證碼。簡單行為驗(yàn)證碼主要通過點(diǎn)擊和拖動方式完成驗(yàn)證,比如通過采集滑動滾動條或點(diǎn)選復(fù)選框時(shí)鼠標(biāo)軌跡信息完成驗(yàn)證。簡單行為驗(yàn)證碼很容易通過程序模擬方式破解,所以安全性一般。復(fù)雜行為驗(yàn)證碼通過用戶網(wǎng)站訪問時(shí)大量行為特征分析進(jìn)行驗(yàn)證,雖然安全性較好,但因其需要根據(jù)系統(tǒng)自身業(yè)務(wù)特點(diǎn)建立完備的驗(yàn)證模型,實(shí)施復(fù)雜度較高。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是提供一種實(shí)施簡單,能夠在提高驗(yàn)證碼的抗破解能力的同時(shí)又能保證用戶體驗(yàn)、并且不增加人工成本的三維模型驗(yàn)證碼的實(shí)現(xiàn)方法和裝置。
本發(fā)明解決上述技術(shù)問題所采用的技術(shù)方案為:一種三維模型驗(yàn)證碼的實(shí)現(xiàn)方法,其特征在于:包括以下步驟:
1)從模型庫中隨機(jī)選取一個(gè)三維模型作為原始模型,并且生成兩組隨機(jī)變換量,即一組初始變換量和一組目標(biāo)變換量;
2)將目標(biāo)變換量應(yīng)用于原始模型形成目標(biāo)模型,并將目標(biāo)模型渲染成目標(biāo)圖片;
3)將初始變換量應(yīng)用于原始模型形成操作模型,并且客戶端在兩個(gè)區(qū)域內(nèi)進(jìn)行展示,其中一個(gè)區(qū)域展示供客戶操作的操作模型,另一個(gè)區(qū)域展示目標(biāo)圖片;
4)用戶通過交互操作改變操作模型的屬性,使得操作模型的狀態(tài)與目標(biāo)圖片一致,并且同時(shí)初始變換量通過交互操作生成最終變換量;
5)將最終變換量與目標(biāo)變換量進(jìn)行比較,如果兩者的差異在預(yù)定的目標(biāo)差異閾值內(nèi),則返回驗(yàn)證通過,否則返回驗(yàn)證不通過。
為了便于旋轉(zhuǎn)操作,所述模型庫中包括多種不同樣式的三維模型,在上述步驟1)前,還包括對模型庫中的三維模型進(jìn)行預(yù)處理的步驟,該步驟為將模型庫中的所有三維模型中心分別平移至世界坐標(biāo)原點(diǎn)并且保存回模型庫。
優(yōu)選地,所述一組初始變換量和一組目標(biāo)變換量均包含至少一種變換量,每一組所含的變換量的個(gè)數(shù)相同并且對應(yīng),所述變換量為旋轉(zhuǎn)變換量、縮放變換量、平移變換量、材質(zhì)變換量或顏色變換量。
為了通過滑動條便于用戶操作,所述步驟1)中生成兩組隨機(jī)變換量的步驟包括以下步驟:1.1)生成一組初始變換量和一組初始目標(biāo)變換量;1.2)生成隨機(jī)數(shù);1.3)根據(jù)初始變換量、初始目標(biāo)變換量和隨機(jī)數(shù)生成目標(biāo)變換量。
為了防止操作模型與目標(biāo)圖片過于類似,上述步驟1)中生成初始變換量和目標(biāo)變換量后,判斷兩者之間的差異是否在預(yù)定的初始差異閾值內(nèi),如果是則重新生成。
為了防止操作模型與目標(biāo)圖片過于類似,上述步驟1.1)中,還需要判斷生成的初始變換量和初始目標(biāo)變換量之間的差異是否在預(yù)定的中間差異閾值內(nèi),如果是則重新生成。
實(shí)現(xiàn)上述三維模型驗(yàn)證碼的實(shí)現(xiàn)方法的裝置,包括變換量生成模塊,用于生成一組初始變換量和一組目標(biāo)變換量;
渲染模塊,用于將目標(biāo)變換量應(yīng)用于原始模型并且形成目標(biāo)模型,并且渲染形成目標(biāo)圖片;
渲染交互模塊,將初始變換量應(yīng)用于原始模型形成操作模型,并且將操作模型和目標(biāo)圖片顯示在客戶端,實(shí)現(xiàn)人機(jī)交互功能并且計(jì)算用戶操作所產(chǎn)生的最終變換量;
變換量比對模塊,用于比較最終變換量與目標(biāo)變換量的差異,如果差異在預(yù)定的目標(biāo)差異閾值內(nèi),則返回驗(yàn)證通過,否則返回驗(yàn)證不通過。
優(yōu)選地,還包括用于存儲三維模型的模型庫,以及用于對模型庫中的所有三維模型進(jìn)行預(yù)處理步驟的模型初始化模塊。
優(yōu)選地,所述變換量生成模塊還包括用于產(chǎn)生隨機(jī)數(shù)的隨機(jī)數(shù)生成模塊,和用于生成目標(biāo)變換量的變換量插值模塊。
為了防止客戶端能夠截獲目標(biāo)變換量信息而破解驗(yàn)證碼,所述變換量生成模塊、渲染模塊和變換量比對模塊位于服務(wù)端,渲染交互模塊位于客戶端。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于利用人類相比計(jì)算機(jī)在三維空間感知方面的優(yōu)勢,實(shí)現(xiàn)人與計(jì)算機(jī)的自動快速區(qū)分,規(guī)避或極大降低計(jì)算機(jī)通過圖像識別技術(shù)與人工智能技術(shù)進(jìn)行驗(yàn)證碼破解的可能性;利用隨機(jī)變換量生成不同的模型初始狀態(tài)和目標(biāo)狀態(tài)圖片,實(shí)現(xiàn)驗(yàn)證碼的自動生成與更新,規(guī)避或極大降低計(jì)算機(jī)通過窮舉遍歷方法進(jìn)行破解的可能性,進(jìn)而有效降低人工篩選的處理成本;并且還可以通過滑動操作而不是鍵盤操作完成驗(yàn)證碼輸入,降低用戶誤操作的可能性,提升交互效率和用戶體驗(yàn)。
附圖說明
圖1為本發(fā)明第一實(shí)施例的三維模型驗(yàn)證碼實(shí)現(xiàn)方法的流程示意圖。
圖2a、2b為本發(fā)明第一實(shí)施例的三維模型驗(yàn)證碼實(shí)現(xiàn)方法在客戶端顯示區(qū)域中的顯示示意圖,其中圖2a為初始頁面示意圖、圖2b為通過滑動操作旋轉(zhuǎn)操作模型至正確位置的示意圖。
圖3為本發(fā)明第一實(shí)施例的三維模型驗(yàn)證碼實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖。
圖4為本發(fā)明第二實(shí)施例的三維模型驗(yàn)證碼實(shí)現(xiàn)方法的流程示意圖。
圖5a、5b為本發(fā)明第二實(shí)施的三維模型驗(yàn)證碼實(shí)現(xiàn)方法在客戶端顯示區(qū)域中顯示示意圖,其中圖5a為初始頁面示意圖,圖5b為通過移動滑動條旋轉(zhuǎn)操作模型至正確位置的示意圖。
圖6為本發(fā)明第二實(shí)施例的三維模型驗(yàn)證碼實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖。
圖7為本發(fā)明第三實(shí)施例的三維模型驗(yàn)證碼實(shí)現(xiàn)方法的流程示意圖。
具體實(shí)施方式
以下結(jié)合附圖實(shí)施例對本發(fā)明作進(jìn)一步詳細(xì)描述。
如圖1、2a、2b、3所示,為本發(fā)明第一實(shí)施例的三維模型驗(yàn)證碼的實(shí)現(xiàn)方法的流程圖以及顯示示意圖和裝置的結(jié)構(gòu)示意圖。
該實(shí)施例中的三維模型驗(yàn)證碼的實(shí)現(xiàn)方法,需要預(yù)先形成一個(gè)模型庫,用于存儲多個(gè)不同樣式的三維模型,該三維模型驗(yàn)證碼的實(shí)現(xiàn)方法包括以下步驟:
步驟101,對模型庫中的所有三維模型進(jìn)行預(yù)處理,將三維模型中心平移至世界坐標(biāo)原點(diǎn),以便用戶操作旋轉(zhuǎn)時(shí)圍繞模型中心旋轉(zhuǎn),將平移后的三維模型保存至模型庫。
步驟102,服務(wù)端在收到客戶端驗(yàn)證碼請求后,從模型庫中隨機(jī)選取一個(gè)三維模型作為原始模型,并生成兩組不同的隨機(jī)初始變換量和目標(biāo)變換量,本實(shí)施例為旋轉(zhuǎn)變換量Q1和Q2,其中Q1為初始旋轉(zhuǎn)變換量,Q2為目標(biāo)旋轉(zhuǎn)變換量。旋轉(zhuǎn)變換量可通過3階正交矩陣、單位四元數(shù)或歐拉角等方式表示,本實(shí)施例采用單位四元數(shù)的表示方式,即Q1和Q2分別為初始旋轉(zhuǎn)四元數(shù)和目標(biāo)旋轉(zhuǎn)四元數(shù)。為避免隨機(jī)的初始變換量和目標(biāo)變換量相似,生成的Q1和Q2應(yīng)滿足以下條件,否則重新生成:
FAbs(Dot(Q1,Q2)-1.0)>ε1;
其中ε1為預(yù)定義的初始旋轉(zhuǎn)變換量Q1與目標(biāo)旋轉(zhuǎn)變換量Q2之間的初始差異閾值,取值范圍為(0,1)。初始差異閾值ε1可根據(jù)實(shí)際需要設(shè)定,數(shù)值越大則初始狀態(tài)與目標(biāo)狀態(tài)差異越顯著,用戶操作難度也越高,本實(shí)施例中設(shè)置為0.1。FAbs為絕對值函數(shù),Dot為四元數(shù)的點(diǎn)積函數(shù)。本領(lǐng)域技術(shù)人員可以了解到,該初始變換量和目標(biāo)變換量中所述的變換量是改變?nèi)S模型的某種屬性的變量,可以改變?nèi)S模型的朝向、大小、位置、材質(zhì)、顏色等等各種屬性;相應(yīng)地,該變換量可以為旋轉(zhuǎn)變換量、縮放變換量、平移變換量、材質(zhì)變換量或顏色變換量等等,或者也可以是其他變換量。
步驟103,服務(wù)端將目標(biāo)旋轉(zhuǎn)變換量Q2應(yīng)用于原始模型生成目標(biāo)模型,并將其渲染成目標(biāo)圖片,渲染時(shí)應(yīng)合理設(shè)置視錐體(Frustum)與視口(Viewport),保證整個(gè)目標(biāo)模型在圖片區(qū)域內(nèi)并位于圖片中心,目標(biāo)圖片大小設(shè)定為150px*100px,其中px表示像素。
步驟104,服務(wù)端將初始旋轉(zhuǎn)變換量Q1,原始模型與目標(biāo)圖片發(fā)送至客戶端,客戶端接受數(shù)據(jù)后在兩個(gè)區(qū)域內(nèi)進(jìn)行展示,其中一個(gè)區(qū)域采用三維渲染技術(shù)展示應(yīng)用了初始旋轉(zhuǎn)變換量Q1后的原始模型,即操作模型,另一個(gè)區(qū)域展示目標(biāo)圖片,參見圖2a。
步驟105,用戶通過鼠標(biāo)或手指的滑動旋轉(zhuǎn)操作模型,即在一個(gè)區(qū)域中操作該操作模型,使得該區(qū)域中的操作模型的狀態(tài)與目標(biāo)圖片中展示的目標(biāo)模型的狀態(tài)相同,該操作過程中將初始旋轉(zhuǎn)變換量Q1變換為最終旋轉(zhuǎn)變換量Q3。
旋轉(zhuǎn)采用常用的軌跡球(Track Ball)方法實(shí)現(xiàn),即先將屏幕上滑動產(chǎn)生的二維坐標(biāo)映射到球體表面生成三維坐標(biāo),設(shè)某一段滑動起始點(diǎn)的三維坐標(biāo)為P1,終止點(diǎn)的三維坐標(biāo)P2,坐標(biāo)原點(diǎn)為P0,向量V1=P1-P0,向量V2=P2-P0,則滑動產(chǎn)生的旋轉(zhuǎn)變換量Qt為:
Qt=([sin(θ/2)*(Norm(Cross(V1,V2)),cos(θ/2)]);
其中θ表示V1于V2之間的夾角,Cross為向量的叉積函數(shù),Norm為向量的單位化函數(shù)。在渲染時(shí)應(yīng)用Qt即可實(shí)現(xiàn)實(shí)時(shí)旋轉(zhuǎn)。
用戶是連續(xù)的滑動操作會產(chǎn)生多個(gè)Qt,而四元數(shù)乘法的含義為旋轉(zhuǎn)的合并,即Qt2*Qt1的結(jié)果表示先應(yīng)用旋轉(zhuǎn)Qt1,再應(yīng)用旋轉(zhuǎn)Qt2,因此最終客戶端的最終旋轉(zhuǎn)變換量為Q3=Qtn*Qtn-1…Qt2*Qt1*Q1,其中*為四元數(shù)乘法符號,tn表示第n次完成的旋轉(zhuǎn)操作。Qtn為每一次旋轉(zhuǎn)操作所產(chǎn)生的中間旋轉(zhuǎn)變換量,n為操作的次數(shù),為自然數(shù)。
用戶通過旋轉(zhuǎn)操作使得操作模型朝向與目標(biāo)圖片基本一致,參見圖2b。操作完成后,客戶端將最終旋轉(zhuǎn)變換量Q3發(fā)送至服務(wù)端。
步驟106,服務(wù)端收到客戶端的反饋數(shù)據(jù)后,判斷最終旋轉(zhuǎn)變換量Q3與目標(biāo)旋轉(zhuǎn)變換量Q2之間的誤差是否在預(yù)定義的目標(biāo)差異閾值內(nèi),即計(jì)算以下公式是否成立:
FAbs(Dot(Q2,Q3)-1.0)<ε2;
其中ε2為預(yù)定義的最終旋轉(zhuǎn)變換量與目標(biāo)旋轉(zhuǎn)變換量的目標(biāo)差異閾值,取值范圍為(0,1)。目標(biāo)差異閾值ε2可根據(jù)實(shí)際需要設(shè)定,數(shù)值越小則最終朝向與目標(biāo)朝向差異越小,驗(yàn)證通過難度也越高,本實(shí)施例中設(shè)置為0.1。FAbs為絕對值函數(shù),Dot為四元數(shù)的點(diǎn)積函數(shù)。如果公式成立則返回驗(yàn)證通過,否則返回驗(yàn)證不通過。
圖3為本發(fā)明第一實(shí)施例提供的三維模型驗(yàn)證碼實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖,該實(shí)施例的驗(yàn)證碼實(shí)現(xiàn)裝置包括:
模型初始化模塊301,對模型庫中的所有三維模型進(jìn)行預(yù)處理,將三維模型中心平移至世界坐標(biāo)原點(diǎn),以便用戶操作旋轉(zhuǎn)時(shí)圍繞模型中心旋轉(zhuǎn),將平移后的模型保存至模型庫。
變換量生成模塊302,用于生成改變?nèi)S模型狀態(tài)的隨機(jī)變換量,包括初始變換量和目標(biāo)變換量,該實(shí)施例中為改變?nèi)S模型朝向的隨機(jī)旋轉(zhuǎn)變換量,包括初始旋轉(zhuǎn)變換量Q1和目標(biāo)旋轉(zhuǎn)變換量Q2,旋轉(zhuǎn)變換量通過單位四元數(shù)表示。
渲染模塊303,用于將目標(biāo)變換量應(yīng)用于原始模型生成目標(biāo)模型,并且目標(biāo)模型渲染形成目標(biāo)圖片,該實(shí)施例中即將目標(biāo)旋轉(zhuǎn)變換量Q2應(yīng)用于原始模型形成目標(biāo)模型,并渲染成目標(biāo)圖片。
渲染交互模塊304,用于將接收到的應(yīng)用了初始變換量的原始模型即操作模型和目標(biāo)圖片顯示在客戶端,然后利用各種方法實(shí)現(xiàn)人機(jī)交互功能并且計(jì)算用戶操作所產(chǎn)生的最終變換量,將其發(fā)回服務(wù)端,例如該實(shí)施例中采用軌跡球方法實(shí)現(xiàn)旋轉(zhuǎn)交互功能。累積記錄用戶鼠標(biāo)或手指滑動所產(chǎn)生變換量,生成最終旋轉(zhuǎn)變換量Q3,將其發(fā)送至服務(wù)端。
變換量比對模塊305,用于比較客戶端發(fā)送的最終變換量與隨機(jī)生成的目標(biāo)變換量的差異,如果相近,則返回驗(yàn)證通過,否則返回驗(yàn)證不通過。該實(shí)施例中,是比較最終旋轉(zhuǎn)變換量Q3與目標(biāo)旋轉(zhuǎn)變換量Q2的差異。
上述模型初始化模塊301、變換量生成模塊302、渲染模塊303和變換量比對模塊305位于服務(wù)端,渲染交互模塊304位于客戶端,當(dāng)然,本領(lǐng)域技術(shù)人員也可以了解到,變換量生成模塊302、渲染模塊303和變換量比對模塊305優(yōu)選地位于服務(wù)端,僅僅只有渲染交互模塊在客戶端,可以防止客戶端能夠攔截到目標(biāo)變換量的信息以用于破解。
上述渲染模塊303、變換量比對模塊305也可以位于客戶端,可以在服務(wù)端生成變換量然后傳送給客戶端,再客戶端生成目標(biāo)圖片和操作模型,并且將最終變換量與目標(biāo)變換量比較的結(jié)果返回給服務(wù)端即可?;蛘咦儞Q量生成模塊也可以位于客戶端,或者也可以根據(jù)需要省略服務(wù)端,即該裝置的模塊所處的位置可以任意設(shè)置。只是上述各種實(shí)施方式中,要防止客戶端通過獲取目標(biāo)變換量破解驗(yàn)證碼,就需要附加加密程序。
圖4為本發(fā)明第二實(shí)例的三維模型驗(yàn)證碼實(shí)現(xiàn)方法的流程圖,該實(shí)施例也需要預(yù)先形成一個(gè)模型庫,用于存儲多個(gè)不同樣式的三維模型。該實(shí)施例的實(shí)現(xiàn)方法包括如下步驟:
步驟401,對模型庫中的所有三維模型進(jìn)行預(yù)處理,將三維模型中心平移至世界坐標(biāo)原點(diǎn),以便用戶操作旋轉(zhuǎn)時(shí)圍繞模型中心旋轉(zhuǎn),將平移后的三維模型保存至模型庫。
步驟402,服務(wù)端在收到客戶端驗(yàn)證碼請求后,從模型庫中隨機(jī)選取一個(gè)三維模型作為原始模型,并生成兩個(gè)不同的隨機(jī)初始旋轉(zhuǎn)變換量Q1和Q1’,其中Q1為初始旋轉(zhuǎn)變換量,Q1’為初始目標(biāo)旋轉(zhuǎn)變換量。該初始旋轉(zhuǎn)變換量Q1和初始目標(biāo)旋轉(zhuǎn)變換量Q1’通過單位四元數(shù)表示。為避免兩個(gè)隨機(jī)變換量相似,生成的Q1和Q1’應(yīng)滿足以下條件,否則重新生成:
FAbs(Dot(Q1,Q1’)-1.0)>ε3;
其中ε3為預(yù)定義的初始旋轉(zhuǎn)變換量與初始目標(biāo)旋轉(zhuǎn)變換量的中間差異閾值,取值范圍為(0,1)。ε3可根據(jù)實(shí)際需要設(shè)定,數(shù)值越大則初始狀態(tài)與初始目標(biāo)狀態(tài)差異越顯著,用戶操作難度也越高,本實(shí)施例中設(shè)置為0.1。FAbs為絕對值函數(shù),Dot為四元數(shù)的點(diǎn)積函數(shù)。
步驟403,生成一個(gè)隨機(jī)數(shù)t,取值范圍為(0,1),計(jì)算目標(biāo)旋轉(zhuǎn)變換量Q2=Slerp(Q1,Q1’,t),其中Slerp為兩四元數(shù)球面插值函數(shù),返回值為單位四元數(shù)。
步驟404,渲染模塊將目標(biāo)旋轉(zhuǎn)變換量Q2應(yīng)用于原始模型生成目標(biāo)模型,并將該目標(biāo)模型渲染成目標(biāo)圖片,渲染時(shí)應(yīng)合理設(shè)置視錐體與視口,保證整個(gè)模型在圖片區(qū)域內(nèi)并位于圖片中心,目標(biāo)圖片大小設(shè)定為150px*100px,其中px表示像素。
步驟405,服務(wù)端將原始模型、初始旋轉(zhuǎn)變換量Q1、初始目標(biāo)旋轉(zhuǎn)變換量Q1’、以及目標(biāo)圖片發(fā)送至客戶端,客戶端接受數(shù)據(jù)后在兩區(qū)域內(nèi)進(jìn)行展示,其中一個(gè)區(qū)域采用三維渲染技術(shù)展示應(yīng)用了初始旋轉(zhuǎn)變換量Q1的模型,即操作模型,另一區(qū)域展示目標(biāo)圖片,參見圖5a。
步驟406,客戶端用戶通過鼠標(biāo)或手指移動滑動條,設(shè)滑動條長度為200px,其中px表示像素,對應(yīng)的數(shù)值范圍為[0.0,1.0],即每移動一個(gè)像素,數(shù)值增減0.005,則移動滑動條產(chǎn)生的最終旋轉(zhuǎn)變換量為:
Q3=Slerp(Q1,Q1’,s),其中s為用戶移動滑動條產(chǎn)生的對應(yīng)數(shù)值,Slerp為兩四元數(shù)球面插值函數(shù)??蛻舳藢⒆罱K旋轉(zhuǎn)變換量Q3應(yīng)用于操作模型渲染,實(shí)現(xiàn)操作模型旋轉(zhuǎn),即隨著滑動條的移動,操作模型在三維空間中進(jìn)行旋轉(zhuǎn)。
用戶通過移動滑動條操作使得三維模型朝向與目標(biāo)圖片所示基本一致,參見圖5b。操作完成后客戶端將最終旋轉(zhuǎn)變換量Q3發(fā)送至服務(wù)端。
步驟407服務(wù)端收到客戶端的反饋數(shù)據(jù)后,計(jì)算以下公式是否成立:
FAbs(Dot(Q2,Q3)-1.0)<ε2;
其中ε2為預(yù)定義的最終旋轉(zhuǎn)變換量與目標(biāo)旋轉(zhuǎn)變換量的目標(biāo)差異閾值,取值范圍為(0,1)。ε2可根據(jù)實(shí)際需要設(shè)定,數(shù)值越小則最終朝向與目標(biāo)朝向差異越小,驗(yàn)證通過難度也越高,本實(shí)施例中設(shè)置為0.1。FAbs為絕對值函數(shù),Dot為四元數(shù)的點(diǎn)積函數(shù)。如果公式成立則返回驗(yàn)證通過,否則返回驗(yàn)證不通過。
該實(shí)施例與第一實(shí)施例不同的是,采用滑動條方式進(jìn)行旋轉(zhuǎn)的操作,因此需要中間產(chǎn)生隨機(jī)值t來進(jìn)行控制。因此,說明該變換量的表示方式可以有多種,可用不同的算法來表示和判斷。
圖6為本發(fā)明第二實(shí)施例提供的三維模型驗(yàn)證碼實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖。該實(shí)施例的驗(yàn)證碼實(shí)現(xiàn)裝置包括:
模型初始化模塊601,對所有模型庫中的三維模型進(jìn)行預(yù)處理,將三維模型平移至世界坐標(biāo)原點(diǎn),以便用戶操作旋轉(zhuǎn)時(shí)圍繞模型中心旋轉(zhuǎn),將平移后的模型保存至模型庫。
變換量生成模塊602,用于生成改變朝向的隨機(jī)旋轉(zhuǎn)變換量,旋轉(zhuǎn)變換量通過單位四元數(shù)表示。該實(shí)施例中用于產(chǎn)生初始旋轉(zhuǎn)變換量Q1,初始目標(biāo)旋轉(zhuǎn)變換量Q1’。
該變換量生成模塊602中還包括隨機(jī)數(shù)生成模塊6021和變換量插值模塊6022,該隨機(jī)數(shù)生成模塊6021用于生成(0,1)范圍內(nèi)的隨機(jī)數(shù)t;變換量插值模塊6022,用于計(jì)算兩個(gè)旋轉(zhuǎn)變換量的球面插值,生成目標(biāo)旋轉(zhuǎn)變換量Q2。
渲染模塊603,用于將目標(biāo)變換量應(yīng)用于三維模型生成目標(biāo)模型,并將目標(biāo)模型渲染成目標(biāo)圖片。該實(shí)施例中,將目標(biāo)旋轉(zhuǎn)變換量Q2應(yīng)用于三維模型形成目標(biāo)模型,并將目標(biāo)模型渲染成目標(biāo)圖片。
渲染交互模塊604,用于將接收到的初始變換量應(yīng)用于原始模型形成操作模型,并將操作模型和目標(biāo)圖片顯示在客戶端,并利用移動滑動條產(chǎn)生的數(shù)值和接收到的兩旋轉(zhuǎn)變換量插值生成新的旋轉(zhuǎn)變換量,實(shí)現(xiàn)模型的旋轉(zhuǎn)。將操作完成時(shí)的最終旋轉(zhuǎn)變換量發(fā)送至服務(wù)端,即最終旋轉(zhuǎn)變換量Q3發(fā)送至服務(wù)端。
變換量比對模塊605,用于比較客戶端發(fā)送的最終變換量與隨機(jī)生成的目標(biāo)變換量的差異,如果相近,則返回驗(yàn)證通過,否則返回驗(yàn)證不通過。該實(shí)施例中,即判斷最終旋轉(zhuǎn)變換量Q3與目標(biāo)旋轉(zhuǎn)變換量Q2的差異。
上述模型初始化模塊601、變換量生成模塊602、渲染模塊603和變換量對比模塊605可以位于服務(wù)端,渲染交互模塊604可以位于客戶端,這樣可以防止客戶端獲取到目標(biāo)變換量的信息,以防止批量破解驗(yàn)證碼。
該渲染模塊603和變換量對比模塊605也可以位于客戶端,如果渲染模塊603位于客戶端,該實(shí)施例中的步驟中,服務(wù)端只要將生成的隨機(jī)變換量Q1和Q1’以及原始模型發(fā)送至客戶端供客戶端使用即可,在客戶端生成目標(biāo)圖片以及操作模型并且進(jìn)行最終變換量與目標(biāo)變換量的比較,最終返回結(jié)果給服務(wù)端即可。本領(lǐng)域技術(shù)人員可以根據(jù)需要做出相應(yīng)的調(diào)整,并且,變換量生成模塊602也可以位于客戶端。只是上述各種實(shí)施方式中,要防止客戶端通過獲取目標(biāo)變換量破解驗(yàn)證碼,就需要附加加密程序。
圖7為本發(fā)明第三實(shí)施例的三維模型驗(yàn)證碼的實(shí)現(xiàn)方法的流程示意圖,同樣與第一、第二實(shí)施例一樣,該方法也需要先生成模型庫,用于存儲不同樣式的三維模型,具體還包括以下步驟:
步驟701,對模型庫中的所有模型進(jìn)行預(yù)處理,將三維模型中心平移至世界坐標(biāo)原點(diǎn),以便用戶操作旋轉(zhuǎn)時(shí)圍繞模型中心旋轉(zhuǎn),將平移后的模型保存至模型庫。
步驟702,服務(wù)端在收到客戶端驗(yàn)證碼請求后,從模型庫中隨機(jī)選取一個(gè)三維模型作為原始模型,并生成兩組不同的隨機(jī)變換量,分別是一組初始變換量和一組目標(biāo)變換量,該一組初始變換量包括為初始旋轉(zhuǎn)變換量Q1和初始縮放變換量S1。另一組目標(biāo)變換量包括初始目標(biāo)旋轉(zhuǎn)變換量Q1’和初始目標(biāo)縮放變換量S1’,初始旋轉(zhuǎn)變換量Q1和初始目標(biāo)旋轉(zhuǎn)變換量Q1’通過單位四元數(shù)表示,初始縮放變換量S1和初始目標(biāo)縮放變換量S1’以實(shí)數(shù)方式表示。
為避免兩組隨機(jī)變化量相似,生成的初始旋轉(zhuǎn)變換量Q1和初始目標(biāo)旋轉(zhuǎn)變換量Q1’、初始縮放變換量S1和初始目標(biāo)縮放變換量S1’應(yīng)滿足以下條件,否則重新生成相應(yīng)的變化量:
FAbs(Dot(Q1,Q1’)-1.0)>ε3,且S1/S1’>λ1或S1’/S1>λ1;
其中ε3為預(yù)定義的初始旋轉(zhuǎn)變換量與初始目標(biāo)旋轉(zhuǎn)變換量的中間旋轉(zhuǎn)差異閾值,取值范圍為(0,1)。ε3可根據(jù)實(shí)際需要設(shè)定,數(shù)值越大則初始狀態(tài)與初始目標(biāo)狀態(tài)差異越顯著,用戶操作難度也越高,本實(shí)施例中設(shè)置為0.1。FAbs為絕對值函數(shù),Dot為四元數(shù)的點(diǎn)積函數(shù)。λ1為預(yù)定義的初始縮放變換量與初始目標(biāo)縮放變換量的中間縮放差異閾值,λ1可根據(jù)實(shí)際需要設(shè)定,數(shù)值越大則初始狀態(tài)與初始目標(biāo)狀態(tài)差異越顯著,用戶操作難度也越高,本實(shí)施例中設(shè)置為1.1,同時(shí)為避免縮放過大或過小影響用戶識別,S1與S1’的取值范圍可設(shè)為(0.5,2.0)。
步驟703,生成隨機(jī)數(shù)t,取值范圍為(0.0,1.0),計(jì)算目標(biāo)旋轉(zhuǎn)變換量Q2=Slerp(Q1,Q1’,t),其中Slerp為兩四元數(shù)球面插值函數(shù),返回值為單位四元數(shù)。
生成隨機(jī)數(shù)r,取值范圍為(0.0,1.0),計(jì)算目標(biāo)縮放變換量S2=Lerp(S1,S1’,r),其中Lerp為兩個(gè)數(shù)的線性插值函數(shù),返回值為插值后的數(shù)值。
步驟704,渲染模塊將目標(biāo)旋轉(zhuǎn)變換量Q2和目標(biāo)縮放變換量S2,應(yīng)用于原始模型形成目標(biāo)模型,并將其渲染成目標(biāo)圖片,渲染時(shí)應(yīng)合理設(shè)置視錐體與視口,保證整個(gè)模型在圖片區(qū)域內(nèi)并位于圖片中心,同時(shí)保證目標(biāo)圖片大小與客戶端的模型展示區(qū)域大小一致,以便用戶參照目標(biāo)圖片縮放模型。
步驟705,服務(wù)端將原始模型,初始旋轉(zhuǎn)變換量Q1和初始目標(biāo)旋轉(zhuǎn)變換量Q1’,初始縮放變換量S1和初始目標(biāo)縮放變換量S1’,目標(biāo)圖片發(fā)送至客戶端,客戶端接受數(shù)據(jù)后在兩區(qū)域內(nèi)進(jìn)行展示,其中一個(gè)區(qū)域采用三維渲染技術(shù)展示應(yīng)用了初始旋轉(zhuǎn)變換量Q1和初始縮放變換量S1的操作模型,另一區(qū)域展示目標(biāo)圖片,兩個(gè)區(qū)域展示大小保持一致。
步驟706,在客戶端添加兩條滑動條,分別用于控制初始旋轉(zhuǎn)變換量和初始縮放變換量。用戶通過鼠標(biāo)或手指移動滑動條,設(shè)滑動條長度為200px,其中px表示像素,對應(yīng)的數(shù)值范圍為[0.0,1.0],即每移動一個(gè)像素,數(shù)值增減0.005,則移動滑動條產(chǎn)生的最終旋轉(zhuǎn)變換量Q3和最終縮放變換量S3分別為:
Q3=Slerp(Q1,Q1’,s),其中s為用戶移動一條滑動條產(chǎn)生的相對于旋轉(zhuǎn)的對應(yīng)數(shù)值,Slerp為兩四元數(shù)球面插值函數(shù)??蛻舳藢3應(yīng)用于操作模型渲染,實(shí)現(xiàn)操作模型旋轉(zhuǎn),即隨著一條滑動條的移動,模型在三維空間中進(jìn)行旋轉(zhuǎn)。
S3=Lerp(S1,S1’,p),其中p為用戶移動另一條滑動條產(chǎn)生的相對于縮放的對應(yīng)數(shù)值,Lerp為兩個(gè)實(shí)數(shù)的線性插值函數(shù)??蛻舳藢3應(yīng)用操作于模型渲染,實(shí)現(xiàn)操作模型縮放,即隨著另一條滑動條的移動,模型在三維空間中進(jìn)行縮放。
用戶通過移動滑動條操作使得操作模型朝向、大小與目標(biāo)圖片所示基本一致。操作完成后客戶端將最終旋轉(zhuǎn)變換量Q3和最終縮放變換量S3發(fā)送至服務(wù)端。
步驟707服務(wù)端收到客戶端的反饋數(shù)據(jù)后,計(jì)算以下公式是否成立:
FAbs(Dot(Q2,Q3)-1.0)<ε2,且S2/S3>λ2或S3/S2>λ2。
其中ε2為預(yù)定義的最終旋轉(zhuǎn)變換量與目標(biāo)旋轉(zhuǎn)變換量的目標(biāo)旋轉(zhuǎn)差異閾值,取值范圍為(0,1)。ε2可根據(jù)實(shí)際需要設(shè)定,數(shù)值越小則最終朝向與目標(biāo)朝向差異越小,驗(yàn)證通過難度也越高,本實(shí)施例中設(shè)置為0.1。λ2為預(yù)定義的最終縮放變換量與目標(biāo)縮放變換量的目標(biāo)縮放差異閾值。λ2可根據(jù)實(shí)際需要設(shè)定,數(shù)值越小則最終大小與目標(biāo)大小差異越小,驗(yàn)證通過難度也越高,本實(shí)施例中設(shè)置為1.05。FAbs為絕對值函數(shù),Dot為四元數(shù)的點(diǎn)積函數(shù)。如果公式成立則返回驗(yàn)證通過,否則返回驗(yàn)證不通過。
該實(shí)施例中,一組初始變換量和一組初始目標(biāo)變換量均包括旋轉(zhuǎn)變換量和縮放變換量,即每一組變換量包括兩種變換量并且個(gè)數(shù)和種類相互對應(yīng),并且隨機(jī)數(shù)也為一組,隨機(jī)數(shù)的個(gè)數(shù)也與每組變換量的個(gè)數(shù)相對應(yīng),因此,生成的目標(biāo)變換量也為一組,個(gè)數(shù)和種類也都與初始變換量、初始目標(biāo)變換量相互對應(yīng)。
該三維模型驗(yàn)證碼的實(shí)現(xiàn)方法及其裝置,利用人類相比計(jì)算機(jī)在三維空間感知方面的優(yōu)勢,實(shí)現(xiàn)人與計(jì)算機(jī)的自動快速區(qū)分,規(guī)避或極大降低計(jì)算機(jī)通過圖像識別技術(shù)與人工智能技術(shù)進(jìn)行驗(yàn)證碼破解的可能性;利用隨機(jī)變換量生成不同的模型初始狀態(tài)和目標(biāo)狀態(tài)圖片,實(shí)現(xiàn)驗(yàn)證碼的自動生成與更新,規(guī)避或極大降低計(jì)算機(jī)通過窮舉遍歷方法進(jìn)行破解的可能性,進(jìn)而有效降低人工篩選的處理成本;并且還可以通過滑動操作而不是鍵盤操作完成驗(yàn)證碼輸入,降低用戶誤操作的可能性,提升交互效率和用戶體驗(yàn)。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的較佳實(shí)施例,其描述較為具體和詳細(xì),但并不能因此而理解為對本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對于本領(lǐng)域的技術(shù)人員來說,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改,等同替換,改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。