本發(fā)明屬于信息安全技術(shù)領(lǐng)域,涉及一種信息驗證技術(shù)。
背景技術(shù):
隨著移動通信和互聯(lián)網(wǎng)技術(shù)的高速發(fā)展,個人身份的認證在銀行、證券、商務、貿(mào)易、辦公、教育等各個行業(yè)的應用需求越來越多,個人身份認證的安全問題也引起了廣泛的重視。目前在互聯(lián)網(wǎng)領(lǐng)域常用的有通過動態(tài)令牌、U盾、指紋等方式進行認證的技術(shù)。但是,這些技術(shù)一般需要用戶隨身攜帶認證的硬件產(chǎn)品,很不方便。短信驗證相對簡便且用戶體驗好,但每次驗證都需要短信發(fā)送明文驗證碼給用戶,除了驗證成本高,而且有安全風險。
校驗短信的原理是讓用戶感知到此為其某種行為,比如支付行為正在發(fā)生,給盜刷用戶帳號的騙子提高門檻,因為騙子可能拿到了支付密碼,卻未必掌握了用戶的手機。并且用戶收到了莫名其妙的支付短信驗證碼,會對帳號可能被盜有所感知,進而提高了安全性。但是短信驗證碼作為安全的中流砥柱,又有其突出的弱點,即明文發(fā)送,在通信途中被攔截和轉(zhuǎn)發(fā)從而失去了安全性,還有各類采用人工手段欺騙受害者泄漏驗證碼的騙局,針對的都是這個弱點。
除了明文外,短信驗證采用的是單邊驗證的方式,也就是說發(fā)的人能確保接收的人就是這個手機號,收的人卻驗證不了到底是誰發(fā)的短信。這種情況非常容易引起手機木馬的快速傳播,市面上有各種修改顯示號碼的黑客軟件,能發(fā)出顯示成銀行電信等服務號碼的短信,內(nèi)容就是各種官方口氣的通知,誘使客戶去點擊鏈接。用戶點進去后有一個APK下載下來提示安裝,安裝后手機就中了木馬。木馬的傳播是非常迅速的,中了木馬的手機,會悄悄地給通訊錄里面的人發(fā)送釣魚短信,還會智能地按照通訊錄里面的記錄稱呼,給兒子的短信可能就是兒子的小名,給愛人的短信可能就是很少有人知道的愛稱,短信的內(nèi)容大多是什么我最近拍了些照片,點擊鏈接就可以看到這類的。這就大大增強了釣魚短信的可信度,促使更多人中招。中招的手機繼續(xù)向通訊錄發(fā)短信擴散木馬,這樣一傳十,十傳百,木馬迅速就傳播開了。
木馬種植到手機里面之后,將隱藏起來。它會專門監(jiān)視各個支付平臺的短信驗證碼和銀行的扣款通知短信,對短信驗證碼木馬會自動轉(zhuǎn)發(fā)到騙子控制的設(shè)備上,對于銀行扣款的通知短信,木馬悄悄刪掉,從而用戶根本感知不到支付行為的發(fā)生。騙子利用釣魚網(wǎng)站收集過來的客戶信息進行詐騙,驗證中需要支付密碼的,騙子就用木馬轉(zhuǎn)發(fā)來的短信驗證碼填寫就可以了。這樣一來,短信驗證碼在安全上的防護作用就被徹底地破壞了。
雖然近年來出現(xiàn)了語音驗證,但需要每次給用戶撥打電話播報語音驗證碼,用戶需要記住驗證碼,不僅不方便,而且還存在成本高的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種信息驗證方法,以大大提高驗證的可靠性和安全性,同時大幅簡化驗證的流程,降低驗證的成本。
為了達到上述目的,本發(fā)明的解決方案是:
一種信息驗證方法,包括以下步驟:
(1)客戶端向服務器發(fā)送用戶注冊信息,請求驗證用戶身份;
所述服務器用于驗證用戶身份,并在驗證用戶身份成功之后,根據(jù)所述用戶注冊信息,產(chǎn)生對應所述客戶端的密鑰容器文件;
(2)客戶端在從服務器收到表示驗證用戶身份成功的消息之后,從服務器下載所述密鑰容器文件或更新原密鑰容器文件為所述密鑰容器文件,所述密鑰容器文件包含待匹配信息,以及非對稱密鑰的公私密鑰對或者對稱密鑰,所述待匹配信息,以及非對稱密鑰的公私密鑰對或者對稱密鑰與所述密鑰容器文件綁定,以用于認證客戶端;
(3)當客戶端中實際信息與所述待匹配信息匹配成功后,在客戶端的應用業(yè)務需要進行用戶身份真實性認證的時候,客戶端對服務器進行基于非對稱密鑰的雙向認證或者基于對稱密鑰的單向認證。
所述待匹配信息為用戶名和客戶端硬件系統(tǒng)信息;所述密鑰容器文件還包含密鑰核心算法的二進制代碼。
優(yōu)選地,所述密鑰容器文件通過以下方式形成:根據(jù)不同的CPU和編譯器,對編譯好的可執(zhí)行軟件的二進制代碼進行二次變換或者部分信息替換,將密鑰或者算法以二進制的形式與可執(zhí)行軟件的二進制代碼以及二進制數(shù)據(jù)混淆得到。
優(yōu)選地,所述密鑰容器文件的邏輯進行加密后保存在動態(tài)鏈接庫中,對應的加密密鑰由用戶或者后臺管理。
優(yōu)選地,只有指定的進程才可以訪問所述密鑰容器文件。
優(yōu)選地,所述密鑰容器文件在使用過程中,將相關(guān)的信息解密后放在內(nèi)存或者緩存中使用,使用后用垃圾數(shù)據(jù)覆蓋對應的使用區(qū)域,以達到快速和安全使用的要求。
所述步驟(1)中采用語音主叫號碼或者語音主叫號碼截位的方式驗證用戶身份;或者,所述步驟(1)中采用語音播報驗證信息的方式驗證用戶身份;或者,所述步驟(1)中采用短信方式驗證用戶身份。
所述步驟(1)中采用語音主叫號碼或語音主叫號碼截位的方式驗證用戶身份時,所述步驟(1)包括:
(11)客戶端向服務器發(fā)起語音主叫號碼或語音主叫號碼截位驗證請求,提交用戶注冊信息;所述服務器用于根據(jù)所述用戶注冊信息,向客戶端發(fā)送主叫號碼,再由對應的主叫電話撥打所述用戶注冊信息中的電話號碼;
(12)客戶端接收服務器發(fā)來的主叫號碼;如果客戶端是帶公網(wǎng)話音通信功能終端到步驟(13),否則到步驟(14);
(13)客戶端檢測服務器來電,如果在時間Tinterval內(nèi)檢測到來電號碼與所述主叫號碼一致,則截??蛻舳苏疋彛⑺鲋鹘刑柎a發(fā)送給服務器,到步驟(15);如果在時間Tinterval內(nèi)沒有檢測到來電,客戶端向服務器發(fā)起查詢,查詢用戶號碼是否撥通,如果已撥通到步驟(14),如果沒有撥通繼續(xù)在下一個Tinterval時間內(nèi)檢測來電,當總檢測時間大于n×Tinterval時,顯示時間超時驗證失敗;其中,Tinterval和n為設(shè)定值;
(14)客戶端顯示對話框,要求用戶輸入完整的主叫號碼或主叫號碼的部分截位,客戶端將主叫號碼或主叫號碼的部分截位發(fā)送給服務器,到步驟(15);
(15)若客戶端發(fā)給服務器的主叫號碼或主叫號碼的部分截位與服務器發(fā)給客戶端的主叫號碼相符,則客戶端收到服務器發(fā)來的用戶身份驗證成功的消息;如果不相符,則客戶端收到服務器發(fā)來的用戶身份驗證失敗的消息;若客戶端所發(fā)出的主叫來電在一定時間內(nèi)未被服務器收到,則客戶端顯示時間超時驗證失??;所述一定時間為設(shè)定值。
優(yōu)選地,所述電話號碼為手機號碼。
優(yōu)選地,所述步驟(11)中撥打用戶注冊信息中的電話號碼通過公眾電話網(wǎng)絡。
所述步驟(2)中通過互聯(lián)網(wǎng)加密通道下載所述密鑰容器文件或更新密鑰系統(tǒng)的原密鑰容器文件為所述密鑰容器文件。
當客戶端對服務器進行基于非對稱密鑰的雙向認證時,所述步驟(3)包括:
(31)客戶端向服務器發(fā)起上行驗證請求a,生成所述上行驗證請求a的數(shù)字簽名對象發(fā)送給服務器;服務器用于使用自己的私鑰生成所述上行驗證請求a的數(shù)字簽名和下行驗證請求b的數(shù)字簽名對象,回復客戶端;
(32)客戶端使用服務器的公鑰對所述上行驗簽請求a的數(shù)字簽名進行驗簽,通過到步驟(33),不通過到步驟(35);
(33)客戶端根據(jù)自身的私鑰,生成所述下行驗證請求b的數(shù)字簽名發(fā)送給服務器;服務器用于使用客戶端的公鑰對所述下行驗簽請求b的數(shù)字簽名進行驗簽,通過則到步驟(34),不通過到步驟(36);
(34)客戶端從服務器接收表示雙向認證通過的校驗結(jié)果;
(35)客戶端對服務器的身份驗證失?。?/p>
(36)客戶端的身份驗證失敗。
優(yōu)選地,所述數(shù)字簽名對象為一串隨機數(shù);所述數(shù)字簽名包括簽名碼和校驗碼。
一種信息驗證方法,包括以下步驟:
(1)服務器從客戶端接收用戶注冊信息,驗證客戶端的用戶身份;
(2)服務器驗證用戶身份成功后,根據(jù)客戶端的用戶注冊信息,產(chǎn)生對應所述客戶端的密鑰容器文件;
客戶端用于在從服務器收到表示驗證用戶身份成功的消息之后,從服務器下載所述密鑰容器文件或更新原密鑰容器文件為所述密鑰容器文件,并在與所述密鑰容器文件匹配成功后,向服務器發(fā)起基于非對稱密鑰的雙向認證或者基于對稱密鑰的單向認證;所述密鑰容器文件包含待匹配信息,以及非對稱密鑰的公私密鑰對或者對稱密鑰,所述待匹配信息,以及非對稱密鑰的公私密鑰對或者對稱密鑰與所述密鑰容器綁定,以用于認證客戶端;
(3)當客戶端中實際信息與所述待匹配信息匹配成功后,在客戶端的應用業(yè)務需要進行用戶身份真實性認證的時候,服務器對客戶端進行基于非對稱密鑰的雙向認證或者基于對稱密鑰的單向認證。
所述待匹配信息為用戶名和客戶端硬件系統(tǒng)信息;所述密鑰容器文件還包含密鑰核心算法的二進制代碼。
優(yōu)選地,所述密鑰容器文件通過以下方式形成:根據(jù)不同的CPU和編譯器,對編譯好的可執(zhí)行軟件的二進制代碼進行二次變換或者部分信息替換,將密鑰或者算法以二進制的形式與可執(zhí)行軟件的二進制代碼以及二進制數(shù)據(jù)混淆得到。
優(yōu)選地,所述密鑰容器文件的邏輯進行加密后保存在動態(tài)鏈接庫中,對應的加密密鑰由用戶或者后臺管理。
優(yōu)選地,只有指定的進程才可以訪問所述密鑰容器文件。
優(yōu)選地,所述密鑰容器文件在使用過程中,將相關(guān)的信息解密后放在內(nèi)存或者緩存中使用,使用后用垃圾數(shù)據(jù)覆蓋對應的使用區(qū)域,以達到快速和安全使用的要求。
所述步驟(1)中基于語音播報驗證信息的方式驗證客戶端的用戶身份;或者,所述步驟(1)中基于短信方式驗證客戶端的用戶身份;或者,所述步驟(1)中基于語音主叫號碼或者語音主叫號碼截位的方式驗證客戶端的用戶身份,所述步驟(1)包括以下步驟:
(11)服務器接收來自客戶端的語音主叫號碼或語音主叫號碼截位的驗證請求和用戶注冊信息;
(12)服務器先將主叫號碼發(fā)送給客戶端,再由對應的主叫電話撥打用戶注冊信息中的電話號碼;
所述客戶端帶公網(wǎng)話音通信功能時,用于檢測來電,并且:如果在時間Tinterval內(nèi)檢測到來電號碼與所述主叫號碼一致,則截停客戶端振鈴,并將所述主叫號碼發(fā)送給服務器;如果在時間Tinterval內(nèi)沒有檢測到來電,向服務器發(fā)起查詢,查詢用戶號碼是否撥通,如果已撥通,則顯示對話框,要求用戶輸入完整主叫號碼或主叫號碼的部分截位,將所述主叫號碼或主叫號碼的部分截位發(fā)送給服務器;如果沒有撥通繼續(xù)在下一個Tinterval時間內(nèi)檢測來電,當總檢測時間大于n×Tinterval時,則顯示時間超時驗證失??;
其中,Tinterval和n為設(shè)定值;
如果客戶端不是帶公網(wǎng)話音通信功能的終端,則客戶端用于顯示對話框,要求用戶輸入完整的主叫號碼或主叫號碼的部分截位,將所述主叫號碼或主叫號碼的部分截位發(fā)送給服務器;
(13)服務器將客戶端發(fā)來的主叫號碼或主叫號碼的部分截位與實際撥出的主叫號碼比較,如果相符,則回復客戶端,用戶身份驗證成功;如果不相符,則回復客戶端,用戶身份驗證失?。辉谝欢〞r間內(nèi)沒有收到客戶端發(fā)來的主叫來電,則客戶端用于顯示時間超時驗證失??;所述一定時間為設(shè)定值。
優(yōu)選地,所述電話號碼為手機號碼。
優(yōu)選地,所述步驟(12)中通過公眾電話網(wǎng)絡撥打用戶注冊信息中的電話號碼。
當服務器對客戶端進行基于非對稱密鑰的雙向認證時,所述步驟(3)包括:
(31)服務器從客戶端接收上行驗證請求a的數(shù)字簽名對象,使用自己的私鑰生成所述上行驗證請求a的數(shù)字簽名和下行驗證請求b的數(shù)字簽名對象,回復客戶端;
所述客戶端用于用服務器的公鑰對所述上行驗簽請求a的數(shù)字簽名進行驗簽,并且:在通過時,根據(jù)客戶端的私鑰,生成所述下行驗證請求b的數(shù)字簽名發(fā)送給服務器;
在不通過時,表示服務器身份驗證失?。?/p>
(32)服務器在從客戶端收到所述下行驗證請求b的數(shù)字簽名時,用客戶端的公鑰對所述下行驗證請求b的數(shù)字簽名進行驗簽;
如果通過,則向客戶端發(fā)送表示雙向認證通過的校驗結(jié)果;
如果不通過,則向客戶端發(fā)送表示客戶端身份驗證失敗的校驗結(jié)果。
優(yōu)選地,所述數(shù)字簽名對象為一串隨機數(shù);所述數(shù)字簽名包括簽名碼和校驗碼。
由于采用上述方案,本發(fā)明的有益效果是:本發(fā)明信息驗證方法通過僅在注冊階段使用語音或短信驗證,而在客戶端與服務器之間使用基于非對稱密鑰的雙向認證或基于對稱密鑰的單向認證,在大大提高驗證可靠性和安全性的同時,大幅簡化驗證的流程,降低了驗證的成本。其中對密鑰容器文件的使用,進一步大幅提高了驗證的可靠性和安全性以及流程的簡潔性,同樣促進了降低驗證成本。
附圖說明
圖1為本發(fā)明實施例中各個階段的示意圖;
圖2為本發(fā)明實施例中第三階段即基于非對稱密鑰的雙向認證階段的示意圖;
圖3為本發(fā)明實施例的整體流程圖;
圖4為該實施例中語音主叫號碼截位驗證方式的流程圖。
具體實施方式
以下結(jié)合附圖所示實施例對本發(fā)明作進一步的說明。
本發(fā)明提出了一種信息驗證方法,該方法包括以下步驟:
(1)客戶端向服務器發(fā)送用戶注冊信息,請求驗證用戶身份;
上述服務器用于驗證用戶身份,并在驗證用戶身份成功之后,根據(jù)用戶注冊信息,產(chǎn)生對應客戶端的密鑰容器文件。
(2)客戶端在從服務器收到表示驗證用戶身份成功的消息之后,從服務器下載上述密鑰容器文件或更新原密鑰容器文件為上述密鑰容器文件。該密鑰容器文件包含待匹配信息,以及非對稱密鑰的公私密鑰對或者對稱密鑰,上述待匹配信息,以及非對稱密鑰的公私密鑰對或者對稱密鑰與密鑰容器文件綁定,以用于認證客戶端。
(3)當客戶端中實際信息與上述待匹配信息匹配成功后,在客戶端的應用業(yè)務需要進行用戶身份真實性認證的時候,客戶端對服務器進行基于非對稱密鑰的雙向認證或者基于對稱密鑰的單向認證。
圖1所示為該信息驗證方法各個階段的示意圖,上述各步驟對應圖1中各階段。圖2為第三階段為基于非對稱密鑰的雙向認證階段時此階段的示意圖。
本實施例中,上述待匹配信息為用戶名和客戶端硬件系統(tǒng)信息。上述密鑰容器文件還包含密鑰核心算法的二進制代碼。本實施例中,密鑰容器文件通過以下方式形成:根據(jù)不同的CPU和編譯器,對編譯好的可執(zhí)行軟件的二進制代碼進行二次變換或者部分信息替換,將密鑰或者算法以二進制的形式與可執(zhí)行軟件的二進制代碼以及二進制數(shù)據(jù)混淆得到。
該密鑰容器文件的邏輯進行加密后保存在動態(tài)鏈接庫中,對應的加密密鑰由用戶或者后臺管理;此外,只有指定的進程才可以訪問密鑰容器文件。該密鑰容器文件在使用過程中,將相關(guān)的信息解密后放在內(nèi)存或者緩存中使用,使用后用垃圾數(shù)據(jù)覆蓋對應的使用區(qū)域,以達到快速和安全使用的要求。
上述步驟(1)中可采用語音主叫號碼或者語音主叫號碼截位的方式、語音播報驗證信息的方式或短信方式驗證用戶身份。
當采用語音主叫號碼或者語音主叫號碼截位的方式驗證用戶身份時,上述步驟(1)具體包括以下步驟:
(11)客戶端向服務器發(fā)起語音主叫號碼或語音主叫號碼截位方式的驗證請求,提交用戶注冊信息;該服務器用于根據(jù)上述用戶注冊信息,向客戶端發(fā)送主叫號碼,再由對應的主叫電話撥打該用戶注冊信息中的電話號碼。
(12)客戶端接收服務器發(fā)來的主叫號碼;如果客戶端是帶公網(wǎng)話音通信功能終端到步驟(13),否則到步驟(14)。
(13)客戶端檢測服務器來電,如果在時間Tinterval內(nèi)檢測到來電號碼與上述主叫號碼一致,則截??蛻舳苏疋?,并將該主叫號碼發(fā)送給服務器,到步驟(15);如果在時間Tinterval內(nèi)沒有檢測到來電,客戶端向服務器發(fā)起查詢,查詢用戶的電話號碼是否撥通,如果已撥通到步驟(14),如果沒有撥通繼續(xù)在下一個Tinterval時間內(nèi)檢測來電,當總檢測時間大于n×Tinterval時,顯示時間超時認證失?。黄渲?,Tinterval和n為設(shè)定值。
(14)客戶端顯示對話框,要求用戶輸入完整的主叫號碼或主叫號碼的部分截位,客戶端將完整的主叫號碼或主叫號碼的部分截位發(fā)送給服務器,到步驟(15)。
(15)若客戶端發(fā)給服務器的主叫號碼或主叫號碼的部分截位與服務器發(fā)給客戶端的主叫號碼相符,則客戶端收到服務器發(fā)來的用戶身份驗證成功的消息;如果不相符,則客戶端收到服務器發(fā)來的用戶身份驗證失敗的消息;若客戶端所發(fā)出的主叫號碼或主叫號碼的部分截位在一定時間內(nèi)未被服務器收到,則客戶端顯示時間超時驗證失敗;該一定時間為設(shè)定值。
上述用戶注冊信息包括客戶端用戶的電話號碼,如手機號碼;上述步驟(11)中通過公眾電話網(wǎng)絡撥打用戶注冊信息中的電話號碼。
上述步驟(2)中通過互聯(lián)網(wǎng)加密通道下載上述密鑰容器文件或更新密鑰系統(tǒng)的原密鑰容器文件為上述密鑰容器文件。
本實施例中,當基于非對稱密鑰進行雙向認證時,上述步驟(3)具體包括以下步驟:
(31)客戶端向服務器發(fā)起上行驗證請求a,生成該上行驗證請求a的數(shù)字簽名對象發(fā)送給服務器;服務器用于使用自己的私鑰生成該上行驗證請求a的數(shù)字簽名和下行驗證請求b的數(shù)字簽名對象,回復客戶端;
(32)客戶端使用服務器的公鑰對上行驗簽請求a的數(shù)字簽名進行驗簽,通過到步驟(33),不通過到步驟(35);
(33)客戶端根據(jù)自身的私鑰,生成上述下行驗證請求b的數(shù)字簽名發(fā)送給服務器;服務器用于使用客戶端的公鑰對該下行驗簽請求b的數(shù)字簽名進行驗簽,通過則到步驟(34),不通過到步驟(36);
(34)客戶端從服務器收到表示雙向認證通過的校驗結(jié)果;
(35)客戶端對服務器的身份驗證失??;
(36)客戶端的身份驗證失敗。
上述過程中,兩種數(shù)字簽名對象均可以為一串隨機數(shù);兩種數(shù)字簽名均可以包括簽名碼和校驗碼。
本發(fā)明還提出了一種信息驗證方法,包括以下步驟:
(1)服務器從客戶端接收用戶注冊信息,驗證客戶端的用戶身份。
(2)服務器驗證用戶身份成功后,根據(jù)客戶端的用戶注冊信息,產(chǎn)生對應該客戶端的密鑰容器文件。其中,客戶端用于在從服務器收到表示驗證用戶身份成功的消息之后,從服務器下載上述密鑰容器文件或更新原密鑰容器文件為上述密鑰容器文件,并在與上述密鑰容器文件匹配成功后,向服務器發(fā)起基于非對稱密鑰的雙向認證或基于對稱密鑰的單向認證。該密鑰容器文件包含待匹配信息,以及非對稱密鑰的公私密鑰對或者對稱密鑰,所述待匹配信息,以及非對稱密鑰的公私密鑰對或者對稱密鑰與所述密鑰容器綁定,以用于認證客戶端。
(3)當客戶端中實際信息與所述待匹配信息匹配成功后,在客戶端的應用業(yè)務需要進行用戶身份真實性認證的時候,服務器對客戶端進行基于非對稱密鑰的雙向認證或基于對稱密鑰的單向認證。
本實施例中,上述待匹配信息為用戶名和客戶端硬件系統(tǒng)信息;該密鑰容器文件還包含密鑰核心算法的二進制代碼。本實施例中,該密鑰容器文件通過以下方式形成:根據(jù)不同的CPU和編譯器,對編譯好的可執(zhí)行軟件的二進制代碼進行二次變換或者部分信息替換,將密鑰或者算法以二進制的形式與可執(zhí)行軟件的二進制代碼以及二進制數(shù)據(jù)混淆得到。
該密鑰容器文件的邏輯進行加密后保存在動態(tài)鏈接庫中,對應的加密密鑰由用戶或者后臺管理;只有指定的進程才可以訪問密鑰容器。密鑰容器文件在使用過程中,將相關(guān)的信息解密后放在內(nèi)存或者緩存中使用,使用后用垃圾數(shù)據(jù)覆蓋對應的使用區(qū)域,以達到快速和安全使用的要求。
本發(fā)明中,步驟(1)中基于語音主叫號碼或者語音主叫號碼截位的方式、基于語音播報驗證信息的方式或基于短信方式驗證客戶端的用戶身份。
當上述步驟(1)中基于語音主叫號碼或語音主叫號碼截位的方式驗證客戶端的用戶身份,步驟(1)包括以下具體步驟:
(11)服務器接收來自客戶端的語音主叫號碼或語音主叫號碼截位方式的驗證請求和用戶注冊信息。
(12)服務器先將主叫號碼發(fā)送給客戶端,再由對應的主叫電話撥打用戶注冊信息中的電話號碼。
在該客戶端帶公網(wǎng)話音通信功能時,其用于檢測來電,并且:如果在時間Tinterval內(nèi)檢測到來電號碼與上述主叫號碼一致,則截??蛻舳苏疋?,并將該主叫號碼發(fā)送給服務器;如果在時間Tinterval內(nèi)沒有檢測到來電,向服務器發(fā)起查詢,查詢用戶號碼是否撥通,如果已撥通,則顯示對話框,要求用戶輸入完整的主叫號碼或主叫號碼的部分截位,將主叫號碼或主叫號碼的部分截位發(fā)送給服務器;如果沒有撥通則繼續(xù)在下一個Tinterval時間內(nèi)檢測來電,當總檢測時間大于n×Tinterval時,顯示時間超時驗證失敗;其中,Tinterval和n為設(shè)定值。
如果客戶端不是帶公網(wǎng)話音通信功能的終端,則客戶端用于顯示對話框,要求用戶輸入完整的主叫號碼或主叫號碼的部分截位,將該主叫號碼或主叫號碼的部分截位發(fā)送給服務器。
(13)服務器將客戶端發(fā)來的主叫號碼或主叫號碼的部分截位與實際撥出的主叫號碼比較,如果相符,則回復客戶端,用戶身份驗證成功;如果不相符則回復客戶端,用戶身份驗證失??;在一定時間內(nèi)沒有收到客戶端發(fā)來的主叫號碼或主叫號碼的部分截位,則客戶端用于顯示時間超時驗證失?。辉撘欢〞r間為設(shè)定值。
上述用戶注冊信息包括客戶端用戶的電話號碼,如手機號碼;步驟(12)中通過公眾電話網(wǎng)絡撥打用戶注冊信息中的電話號碼。
本實施例中,當基于非對稱密鑰進行雙向認證時,上述步驟(3)具體包括以下步驟:
(31)服務器從客戶端接收上行驗證請求a的數(shù)字簽名對象,使用自己的私鑰生成該上行驗證請求a的數(shù)字簽名和下行驗證請求b的數(shù)字簽名對象,回復客戶端。
該客戶端用于用服務器的公鑰對上述上行驗簽請求a的數(shù)字簽名進行驗簽,并且:在通過時,根據(jù)客戶端的私鑰,生成下行驗證請求b的數(shù)字簽名發(fā)送給服務器;而在不通過時,則顯示服務器身份驗證失敗。
(32)服務器在從客戶端收到下行驗證請求b的數(shù)字簽名時,用客戶端的公鑰對該下行驗證請求b的數(shù)字簽名進行驗簽;如果通過,則向客戶端發(fā)送表示雙向認證通過的校驗結(jié)果;如果不通過,則向客戶端發(fā)送表示客戶端身份驗證失敗的校驗結(jié)果。
上述過程中,數(shù)字簽名對象可以為一串隨機數(shù);數(shù)字簽名可以包括簽名碼和校驗碼。
當在由服務器和客戶端組成的系統(tǒng)中,通過具體的計算機程序來實現(xiàn)上述信息驗證方法時,基于上述信息驗證方法的核心技術(shù)思路,考慮到實際運行中的情況,可以以以下具體的步驟實施,圖3所示為其流程圖:
(1)客戶端自檢,通過客戶端的身份驗證應用程序檢查非對稱密鑰系統(tǒng)的密鑰容器文件,包括:
(11)密鑰容器文件是否存在;
(12)密鑰容器文件內(nèi)容循環(huán)冗余校驗或散列變換校驗是否正確;
(13)讀取客戶端硬件系統(tǒng)信息和密鑰容器文件的系統(tǒng)信息與密鑰容器文件內(nèi)保存的硬件信息和密鑰容器文件的系統(tǒng)信息比較是否匹配;
(14)需要進行身份驗證的用戶名與密鑰容器文件內(nèi)保存的用戶名是否匹配;
檢查(11)的目的是確認客戶端是否下載密鑰容器文件;
檢查(12)的目的是檢驗密鑰容器文件是否損壞或被篡改,如果檢查通過可以確認密鑰容器文件完整可用;
檢查(13)的目的是檢驗密鑰容器文件是否被非法拷貝,如果檢查通過可以確認密鑰容器文件是從合法渠道下載的,而不是非法拷貝復制;
檢查(14)的目的是確認密鑰容器文件內(nèi)是否存在該用戶名。
如果以上檢查(11)-(14)任何一項不通過則到步驟(2);如果(11)-(14)都通過了,則到步驟(5)。
(2)客戶端中沒有密鑰容器文件,或者密鑰容器文件遭到破壞,或者有新的用戶名加入密鑰容器文件,則客戶端向驗證服務器重新發(fā)起:短信、電話語音播報驗或電話號碼截位等驗證方式,驗證用戶身份的真實性,如果驗證失敗到步驟(9),如果驗證通過則:
(21)如果步驟(1)中檢查(11)-(13)任何一項不通過,到步驟(3);
(22)如果步驟(11)中檢查(11)-(13)通過,只有檢查(14)不通過,到步驟(4);
(3)客戶端中沒有密鑰容器文件,或者密鑰容器文件遭到破壞,需要重新申請密鑰容器文件。驗證客戶端將用戶注冊信息和用戶終端硬件信息通過互聯(lián)網(wǎng)加密通道發(fā)送給驗證服務器,驗證服務器記錄用戶注冊信息,并分配非對稱密鑰系統(tǒng)標識和公、私鑰對,生成與用戶注冊名和用戶終端硬件信息綁定的非對稱密鑰系統(tǒng)的密鑰容器文件,發(fā)送給客戶端??蛻舳私邮彰荑€容器文件,并保存于本地存儲系統(tǒng),再向密鑰容器文件內(nèi)加入當前文件存儲的系統(tǒng)信息,用于步驟(1)中的密鑰容器文件檢查,到步驟(9)。
(4)客戶端中有密鑰容器文件,且密鑰容器文件完好,只是需要增加新的用戶名。驗證客戶端將用戶注冊信息通過互聯(lián)網(wǎng)加密通道發(fā)送給驗證服務器,驗證服務器記錄用戶注冊信息??蛻舳藢⑿掠脩糇悦尤朊荑€容器文件,到步驟(9)。
(5)需要進行驗證的客戶端發(fā)起非對稱密鑰上行驗證請求a(從客戶端到服務器),客戶端生成該上行驗證請求a的數(shù)字簽名對象(可以是一串隨機數(shù))發(fā)送給驗證服務器,驗證服務器使用自己的私鑰生成該上行驗證請求a的數(shù)字簽名(簽名碼和校驗碼)和下行驗證請求b(從服務器到客戶端)的數(shù)字簽名對象(可以是一串隨機數(shù)),回復驗證客戶端,驗證客戶端使用驗證服務器公鑰對驗簽請求a的數(shù)字簽名進行驗簽,通過到步驟(6),不通過到步驟(8)。
(6)驗證客戶端收到下行驗證請求b的簽名對象,響應該非對稱密鑰驗證該下行驗證請求b,客戶端使用驗證服務器提供的下行驗證請求b的數(shù)字簽名對象,以及客戶端的私鑰,生成該下行驗證請求b的數(shù)字簽名(簽名碼和校驗碼)發(fā)送給驗證服務器,驗證服務器使用驗證客戶端公鑰對該下行驗簽請求b的數(shù)字簽名進行驗簽,通過到步驟(7),不通過到步驟(9)。
(7)雙向認證通過,將校驗結(jié)果回復驗證客戶端。
(8)驗證服務器身份驗證失敗。
(9)驗證客戶端身份驗證失敗。
在程序運行過程中,步驟(9)之后進入步驟(1),進行新的循環(huán)。步驟(3)和步驟(4)旨在在密鑰容器文件不完好或者雖完好但是需要增加新的用戶名的情況下,為下一次循環(huán)做好準備。
本發(fā)明中的密鑰容器文件綁定的硬件信息可以是MAC地址,手機SIM卡的IMSI號,手機的IMEI號等,密鑰容器文件綁定的文件系統(tǒng)信息可以是文件創(chuàng)建時間戳等。
當采用電話號碼驗證方式,即前述的語音號碼截位的方式時,上述步驟(2)具體包括如下步驟:
(2.1)客戶端驗證軟件向驗證服務器發(fā)起電話號碼截位驗證請求,提交用戶注冊信息。
(2.2)驗證服務器通過公眾電話網(wǎng)絡撥打用戶注冊信息中的電話號碼,并在撥打客戶端號碼前,先把主叫號碼發(fā)送給客戶端驗證軟件,如果客戶端是帶公網(wǎng)話音通信功能終端到步驟(2.3),否則到步驟(2.4)。
(2.3)客戶端驗證軟件檢測來電,如果在時間Tinterval內(nèi)檢測到來電號碼與服務器主叫號碼一致,則將主叫號碼發(fā)送給驗證服務器,到步驟(2.5);如果在時間Tinterval內(nèi)沒有檢測到,客戶端驗證軟件向服務器查詢用戶號碼是否撥通,如果已撥通到步驟(2.4),如果沒有撥通繼續(xù)在下一個Tinterval時間內(nèi)檢測來電,當總檢測時間大于n×Tinterval時,到步驟(2.8);
(2.4)客戶端驗證軟件顯示對話框,要求用戶輸入完整的主叫號碼或主叫號碼的部分截位,客戶端驗證軟件將完整的主叫號碼或主叫號碼的部分截位發(fā)送給服務器,到步驟(2.5);
(2.5)服務器將客戶端驗證軟件發(fā)來的主叫號碼或主叫號碼的部分截位與實際撥出的主叫號碼比較,如果相符,到步驟(2.6);如果不相符到步驟(2.7);在一定時間內(nèi)沒有收到客戶端驗證軟件發(fā)來的主叫號碼或主叫號碼的部分截位到步驟(2.8);該一定時間為設(shè)定值;
(2.6)回復客戶端軟件,用戶身份驗證成功。
(2.7)回復客戶端軟件,用戶身份驗證失敗。
(2.8)時間超時驗證失敗。
圖4所示為上述電話號碼驗證方式,即語音主叫號碼截位的方式的流程圖。
當采用短信驗證碼方式時,上述步驟(2)具體包括如下步驟:
(2.1)客戶端向服務器發(fā)起短信驗證碼驗證請求,提交用戶注冊信息,包括終端號碼。
(2.2)服務器產(chǎn)生驗證碼,通過短信服務器或者短信通道向客戶端發(fā)送短信驗證碼,如果客戶端是帶短信自動識別的終端到步驟(2.3),否則到步驟(2.4)。
(2.3)客戶端檢測短信中的短信驗證碼,如果在時間Tinterval內(nèi)檢測到短信發(fā)送號碼與短信服務器或者短信通道服務器號碼一致,則將獲取的短信驗證碼發(fā)送給服務器,到步驟(2.5);如果在時間Tinterval內(nèi)沒有檢測到,客戶端向服務器查詢用戶號碼對應的短信驗證碼是否發(fā)送,如果已發(fā)送則到步驟(2.4),如果沒有發(fā)送則繼續(xù)在下一個Tinterval時間內(nèi)檢測接收的短信,當總檢測時間大于n×Tinterval時,到步驟(2.8);
(2.4)客戶端顯示對話框,要求用戶輸入完整短信驗證碼或者部分短信驗證碼截位,客戶端驗證軟件將短信驗證碼或者短信驗證碼截位號碼發(fā)送給服務器,到步驟(2.5);
(2.5)服務器將客戶端發(fā)來的短信驗證碼或者短信驗證碼截位號碼與實際發(fā)出的短信驗證碼比較,如果相符,到步驟(2.6);如果不相符到步驟(2.7);在一定時間內(nèi)沒有收到客戶端驗證軟件發(fā)來的短信驗證碼到步驟(2.8);該一定時間為設(shè)定值;
(2.6)回復客戶端軟件,用戶身份驗證成功。
(2.7)回復客戶端軟件,用戶身份驗證失敗。
(2.8)時間超時驗證失敗。
當采用電話語音播報驗證信息的方式時,上述步驟(2)具體包括如下步驟:
(2.1)客戶端向服務器發(fā)起電話語音播報驗證請求,提交用戶注冊信息,包括終端號碼。
(2.2)服務器產(chǎn)生驗證碼,通過語音服務器或者語音服務通道向終端撥打電話,在電話撥打通后,通過語音向用戶播報語音驗證信息,語音驗證信息可以是一段驗證碼。
(2.3)客戶端顯示對話框,要求用戶輸入聽到的完整語音驗證碼或者部分語音驗證碼截位,客戶端驗證軟件將語音驗證碼或者語音驗證碼截位號碼發(fā)送給服務器,到步驟(2.4);
(2.4)服務器將客戶端發(fā)來的語音驗證碼或者語音驗證碼截位號碼與實際播報的語音驗證碼比較,如果相符,到步驟(2.5);如果不相符到步驟(2.6);在一定時間內(nèi)沒有收到客戶端驗證軟件發(fā)來的語音驗證碼到步驟(2.7);所述一定時間為設(shè)定值;
(2.5)回復客戶端,用戶身份驗證成功。
(2.6)回復客戶端,用戶身份驗證失敗。
(2.7)時間超時驗證失敗。
本發(fā)明一種信息驗證方法通過僅在注冊階段使用語音或短信驗證,而在客戶端與服務器之間使用基于非對稱密鑰的雙向認證或基于對稱密鑰的單向認證,在大大提高驗證可靠性和安全性的同時,大幅簡化驗證的流程,降低了驗證的成本。其中對密鑰容器文件的使用,進一步大幅提高了驗證的可靠性和安全性以及流程的簡潔性,同樣促進了降低驗證成本。
上述的對實施例的描述是為便于該技術(shù)領(lǐng)域的普通技術(shù)人員能理解和應用本發(fā)明。熟悉本領(lǐng)域技術(shù)的人員顯然可以容易地對這些實施例做出各種修改,并把在此說明的一般原理應用到其他實施例中而不必經(jīng)過創(chuàng)造性的勞動。因此,本發(fā)明不限于這里的實施例,本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明的揭示,不脫離本發(fā)明范疇所做出的改進和修改都應該在本發(fā)明的保護范圍之內(nèi)。