本公開涉及信息安全領(lǐng)域,更具體地,涉及一種用于生成驗(yàn)證碼的客戶端和方法、用于驗(yàn)證用戶身份的服務(wù)端和方法以及身份驗(yàn)證系統(tǒng)。
背景技術(shù):
訪問控制是所有計(jì)算機(jī)系統(tǒng)都需要涉及的機(jī)制,無論是客戶端/服務(wù)器系統(tǒng)、客戶端/瀏覽器系統(tǒng),還是云系統(tǒng),從最簡(jiǎn)單的用戶名/密碼,到廣泛使用的認(rèn)證碼/驗(yàn)證碼(captcha),以及現(xiàn)在廣泛使用的短信驗(yàn)證碼和基于硬件的ukey(usbkey)等,其中,短信驗(yàn)證碼和ukey都需要外部設(shè)備的支持。
多因素認(rèn)證(multi-factorauthentication,mfa)是一種簡(jiǎn)單有效的賬號(hào)安全最佳實(shí)踐方法,它能夠在用戶名和密碼之外再增加一層或多層安全保護(hù)。從密碼學(xué)理論上說,用于身份認(rèn)證主要有三方面要素:一是需要用戶記憶的身份認(rèn)證內(nèi)容,例如密碼或身份證號(hào)碼等;二是用戶擁有認(rèn)證硬件,例如ukey、智能卡(以下簡(jiǎn)稱ic卡)、磁卡等;三是用戶本身擁有的唯一特征,例如指紋、瞳孔、聲音等。單獨(dú)來看,每個(gè)要素獨(dú)立存在時(shí),都有其脆弱性,而把多種要素結(jié)合起來,實(shí)現(xiàn)多重要素認(rèn)證,可以有效提高系統(tǒng)訪問控制的安全性,就是多因素認(rèn)證。
驗(yàn)證碼是目前廣泛應(yīng)用于多因素認(rèn)證的一種方式。目前廣泛使用的驗(yàn)證方式有兩種,一種是服務(wù)端和客戶端同步生成驗(yàn)證信息;另一種是服務(wù)端生成驗(yàn)證碼,傳遞到用戶設(shè)備。
對(duì)于第一種方式,例如,通過ukey產(chǎn)生隨機(jī)電子令牌(token),這種方式一般是服務(wù)端和ukey擁有同步的隨機(jī)數(shù)發(fā)生器,周期性地產(chǎn)生隨機(jī)變化的電子令牌。然而,這種方式需要為所有用戶配發(fā)ukey,并且后臺(tái)也要維護(hù)一個(gè)針對(duì)所有用戶的龐大隨機(jī)數(shù)同步系統(tǒng),因而成本較高。對(duì)于第二種方式,例如,手機(jī)驗(yàn)證碼方式,則是服務(wù)端生成驗(yàn)證碼,發(fā)送給手機(jī)用戶,用戶再按提示輸入該驗(yàn)證碼。但是,隨著智能手機(jī)的普及,手機(jī)系統(tǒng)的漏洞也在增長(zhǎng),各類木馬的存在,導(dǎo)致手機(jī)驗(yàn)證碼的安全性出現(xiàn) 問題。無論哪種驗(yàn)證方式,要么服務(wù)端和客戶端同步獲得驗(yàn)證碼,要么服務(wù)端生成驗(yàn)證碼后再發(fā)送給用戶,而用戶自身并不是先于服務(wù)端主動(dòng)生成驗(yàn)證碼,然后由服務(wù)端在特定條件下進(jìn)行驗(yàn)證,也就是說,用戶無法主動(dòng)掌控驗(yàn)證信息。
技術(shù)實(shí)現(xiàn)要素:
在下文中給出了關(guān)于本公開的簡(jiǎn)要概述,以便提供關(guān)于本公開的某些方面的基本理解。但是,應(yīng)當(dāng)理解,這個(gè)概述并不是關(guān)于本公開的窮舉性概述。它并不是意圖用來確定本公開的關(guān)鍵性部分或重要部分,也不是意圖用來限定本公開的范圍。其目的僅僅是以簡(jiǎn)化的形式給出關(guān)于本公開的某些概念,以此作為稍后給出的更詳細(xì)描述的前序。
鑒于以上問題,本公開的目的是提供一種用于生成驗(yàn)證碼的客戶端和方法、用于驗(yàn)證用戶身份的服務(wù)端和方法以及用于身份驗(yàn)證系統(tǒng),其通過借助于公共數(shù)據(jù)平臺(tái),由用戶端主導(dǎo)驗(yàn)證碼的生成來提高驗(yàn)證安全性。
根據(jù)本公開的一方面,提供了一種用于生成驗(yàn)證碼的客戶端,該客戶端包括:事務(wù)發(fā)起單元,被配置成響應(yīng)于關(guān)于用戶的預(yù)定身份驗(yàn)證事件而發(fā)起數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的第一賬戶與第二賬戶之間的隨機(jī)事務(wù)(transaction),以使得該隨機(jī)事務(wù)記錄在數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi);驗(yàn)證碼生成單元,被配置成至少基于關(guān)于隨機(jī)事務(wù)的信息,生成用于用戶的身份驗(yàn)證的驗(yàn)證碼;以及發(fā)送單元,被配置成將所生成的驗(yàn)證碼發(fā)送給服務(wù)端,以由服務(wù)端根據(jù)數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的隨機(jī)事務(wù)的記錄和驗(yàn)證碼對(duì)用戶的身份進(jìn)行驗(yàn)證,其中,數(shù)據(jù)平臺(tái)系統(tǒng)是去中心化的分布式數(shù)據(jù)庫(kù),并且其中的記錄是不可更改和刪除的。
根據(jù)本公開的優(yōu)選實(shí)施例,數(shù)據(jù)平臺(tái)系統(tǒng)是基于區(qū)塊鏈(blockchain)的數(shù)據(jù)平臺(tái)。
根據(jù)本公開的另一優(yōu)選實(shí)施例,隨機(jī)事務(wù)包括以下中的至少一個(gè):轉(zhuǎn)賬、合約生成和資產(chǎn)轉(zhuǎn)移。
根據(jù)本公開的另一優(yōu)選實(shí)施例,驗(yàn)證碼生成單元還基于數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的歷史事務(wù)記錄來生成驗(yàn)證碼。
根據(jù)本公開的另一優(yōu)選實(shí)施例,第一賬戶和第二賬戶屬于同一所有者或者屬于不同所有者。
根據(jù)本公開的另一優(yōu)選實(shí)施例,第一賬戶和第二賬戶是實(shí)時(shí)創(chuàng)建的或者是預(yù)先設(shè)置的。
根據(jù)本公開的另一優(yōu)選實(shí)施例,驗(yàn)證碼生成單元進(jìn)一步被配置成利用預(yù)定生成算法來生成驗(yàn)證碼,預(yù)定生成算法包括以下中的至少一個(gè):哈希hash算法、消息認(rèn)證碼mac算法、哈希消息認(rèn)證碼hmac算法、基于分組密碼的消息認(rèn)證碼cbc-mac算法、隨機(jī)數(shù)生成算法、公鑰加密算法和對(duì)稱密鑰加密算法。
根據(jù)本公開的另一優(yōu)選實(shí)施例,該客戶端還包括:簽名單元,被配置成利用客戶端私鑰對(duì)驗(yàn)證碼進(jìn)行簽名,其中,發(fā)送單元將簽名后的驗(yàn)證碼發(fā)送給服務(wù)端。
根據(jù)本公開的另一方面,還提供了一種用于驗(yàn)證用戶身份的服務(wù)端,該服務(wù)端包括:接收單元,被配置成接收客戶端生成的用于用戶的身份驗(yàn)證的驗(yàn)證碼,其中,驗(yàn)證碼是客戶端至少基于關(guān)于數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的第一賬戶與第二賬戶之間的隨機(jī)事務(wù)的信息而生成的,該隨機(jī)事務(wù)是客戶端響應(yīng)于關(guān)于用戶的預(yù)定身份驗(yàn)證事件而發(fā)起的;檢索單元,被配置成在數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)檢索隨機(jī)事務(wù)的記錄;以及驗(yàn)證單元,被配置成根據(jù)隨機(jī)事務(wù)的記錄,驗(yàn)證驗(yàn)證碼的有效性,以驗(yàn)證用戶的身份,其中,數(shù)據(jù)平臺(tái)系統(tǒng)是去中心化的分布式數(shù)據(jù)庫(kù),并且其中的記錄是不可更改和刪除的。
根據(jù)本公開的另一方面,還提供了一種身份驗(yàn)證系統(tǒng),該系統(tǒng)包括:客戶端,被配置成:響應(yīng)于關(guān)于用戶的預(yù)定身份驗(yàn)證事件而發(fā)起數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的第一賬戶與第二賬戶之間的隨機(jī)事務(wù),以使得該隨機(jī)事務(wù)記錄在數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi),至少基于關(guān)于隨機(jī)事務(wù)的信息,生成用于用戶的身份驗(yàn)證的驗(yàn)證碼,以及將所生成的驗(yàn)證碼發(fā)送給服務(wù)端;數(shù)據(jù)平臺(tái)系統(tǒng),數(shù)據(jù)平臺(tái)系統(tǒng)是去中心化的分布式數(shù)據(jù)庫(kù),并且其中的記錄是不可更改和刪除的;以及服務(wù)端,被配置成:接收驗(yàn)證碼,在數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)檢索隨機(jī)事務(wù)的記錄,以及根據(jù)隨機(jī)事務(wù)的記錄,驗(yàn)證驗(yàn)證碼的有效性,以驗(yàn)證用戶的身份。
根據(jù)本公開的另一方面,還提供了一種用于生成驗(yàn)證碼的方法,該方法包括:響應(yīng)于關(guān)于用戶的預(yù)定身份驗(yàn)證事件而發(fā)起數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的第一賬戶與第二賬戶之間的隨機(jī)事務(wù),以使得該隨機(jī)事務(wù)記錄在數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi);至少基于關(guān)于隨機(jī)事務(wù)的信息,生成用于用戶的身份驗(yàn)證的驗(yàn)證碼;以及將所生成的驗(yàn)證碼發(fā)送給服務(wù)端,以由服務(wù)端根據(jù)數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的隨機(jī)事務(wù)的記錄和驗(yàn)證碼對(duì)用戶的身份進(jìn)行驗(yàn)證,其中,數(shù)據(jù)平臺(tái)系統(tǒng)是 去中心化的分布式數(shù)據(jù)庫(kù),并且其中的記錄是不可更改和刪除的。
根據(jù)本公開的另一方面,還提供了一種用于驗(yàn)證用戶身份的方法,該方法包括:接收客戶端生成的用于用戶的身份驗(yàn)證的驗(yàn)證碼,其中,驗(yàn)證碼是客戶端至少基于關(guān)于數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的第一賬戶與第二賬戶之間的隨機(jī)事務(wù)的信息而生成的,該隨機(jī)事務(wù)是客戶端響應(yīng)于關(guān)于用戶的預(yù)定身份驗(yàn)證事件而發(fā)起的;在數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)檢索隨機(jī)事務(wù)的記錄;以及根據(jù)隨機(jī)事務(wù)的記錄,驗(yàn)證驗(yàn)證碼的有效性,以驗(yàn)證用戶的身份,其中,數(shù)據(jù)平臺(tái)系統(tǒng)是去中心化的分布式數(shù)據(jù)庫(kù),并且其中的記錄是不可更改和刪除的。
根據(jù)本公開的其他方面,還提供了用于實(shí)現(xiàn)上述根據(jù)本公開的方法的計(jì)算機(jī)程序代碼和計(jì)算機(jī)程序產(chǎn)品以及其上記錄有該用于實(shí)現(xiàn)上述根據(jù)本公開的方法的計(jì)算機(jī)程序代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
根據(jù)本公開的實(shí)施例,通過利用例如基于區(qū)塊鏈的數(shù)據(jù)平臺(tái)系統(tǒng),由用戶端主導(dǎo)驗(yàn)證碼的生成,即,由用戶端響應(yīng)于關(guān)于用戶的身份驗(yàn)證事件(例如,登錄特定應(yīng)用服務(wù)、網(wǎng)絡(luò)支付交易等)發(fā)起隨機(jī)事務(wù)并且至少基于該隨機(jī)事務(wù)來生成驗(yàn)證碼,并且由服務(wù)端根據(jù)數(shù)據(jù)平臺(tái)系統(tǒng)的事務(wù)記錄對(duì)驗(yàn)證碼的有效性和真實(shí)性進(jìn)行驗(yàn)證,可以大大提高信息安全性。
在下面的說明書部分中給出本公開實(shí)施例的其他方面,其中,詳細(xì)說明用于充分地公開本公開實(shí)施例的優(yōu)選實(shí)施例,而不對(duì)其施加限定。
附圖說明
本公開可以通過參考下文中結(jié)合附圖所給出的詳細(xì)描述而得到更好的理解,其中在所有附圖中使用了相同或相似的附圖標(biāo)記來表示相同或者相似的部件。所述附圖連同下面的詳細(xì)說明一起包含在本說明書中并形成說明書的一部分,用來進(jìn)一步舉例說明本公開的優(yōu)選實(shí)施例和解釋本公開的原理和優(yōu)點(diǎn)。其中:
圖1是示出根據(jù)本公開的實(shí)施例的身份驗(yàn)證系統(tǒng)的模型的示意圖;
圖2是示出根據(jù)本公開的實(shí)施例的用于生成驗(yàn)證碼的客戶端的功能配置示例的框圖;
圖3是示出根據(jù)本公開的實(shí)施例的用于驗(yàn)證用戶身份的服務(wù)端的功能配置示例的框圖;
圖4是示出根據(jù)本公開的實(shí)施例的用于驗(yàn)證用戶身份的交互過程的流程圖;
圖5是示出根據(jù)本公開的實(shí)施例的身份驗(yàn)證系統(tǒng)在現(xiàn)有比特幣區(qū)塊鏈系統(tǒng)上的應(yīng)用示意圖;
圖6是示出根據(jù)本公開的實(shí)施例的身份驗(yàn)證系統(tǒng)在現(xiàn)有智能合約區(qū)塊鏈系統(tǒng)上的應(yīng)用示意圖;
圖7示出根據(jù)本公開的實(shí)施例的用于生成驗(yàn)證碼的方法的過程示例的流程圖;
圖8出根據(jù)本公開的實(shí)施例的用于驗(yàn)證用戶身份的方法的過程示例的流程圖;
圖9是示出根據(jù)本公開的實(shí)施例的技術(shù)在應(yīng)用服務(wù)環(huán)境中的登錄身份認(rèn)證應(yīng)用的示例的示意圖;
圖10是示出根據(jù)本發(fā)明的驗(yàn)證系統(tǒng)的一種可能的應(yīng)用界面的示意圖;
圖11是示出根據(jù)本公開的實(shí)施例的技術(shù)在應(yīng)用服務(wù)環(huán)境中的登錄身份認(rèn)證應(yīng)用的另一示例的示意圖;以及
圖12出作為本公開的實(shí)施例中可采用的信息處理設(shè)備的個(gè)人計(jì)算機(jī)的示例結(jié)構(gòu)的框圖。
具體實(shí)施方式
在下文中將結(jié)合附圖對(duì)本公開的示范性實(shí)施例進(jìn)行描述。為了清楚和簡(jiǎn)明起見,在說明書中并未描述實(shí)際實(shí)施方式的所有特征。然而,應(yīng)該了解,在開發(fā)任何這種實(shí)際實(shí)施例的過程中必須做出很多特定于實(shí)施方式的決定,以便實(shí)現(xiàn)開發(fā)人員的具體目標(biāo),例如,符合與系統(tǒng)及業(yè)務(wù)相關(guān)的那些限制條件,并且這些限制條件可能會(huì)隨著實(shí)施方式的不同而有所改變。此外,還應(yīng)該了解,雖然開發(fā)工作有可能是非常復(fù)雜和費(fèi)時(shí)的,但對(duì)得益于本公開內(nèi)容的本領(lǐng)域技術(shù)人員來說,這種開發(fā)工作僅僅是例行的任務(wù)。
在此,還需要說明的一點(diǎn)是,為了避免因不必要的細(xì)節(jié)而模糊了本公開,在附圖中僅僅示出了與根據(jù)本公開的方案密切相關(guān)的設(shè)備結(jié)構(gòu)和/或處理步驟,而省略了與本公開關(guān)系不大的其他細(xì)節(jié)。
接下來,將參照?qǐng)D1至圖12描述本公開的實(shí)施例。
首先,將參照?qǐng)D1描述根據(jù)本公開的實(shí)施例的身份驗(yàn)證系統(tǒng)的模型。圖1是示出根據(jù)本公開的實(shí)施例的身份驗(yàn)證系統(tǒng)的模型的示意圖。
如圖1所示,根據(jù)該實(shí)施例的系統(tǒng)10可包括數(shù)據(jù)平臺(tái)系統(tǒng)100、客戶端200和服務(wù)端300。客戶端200用于生成驗(yàn)證用戶身份所需的驗(yàn)證碼,并且服務(wù)端300用于驗(yàn)證客戶端200所生成的驗(yàn)證碼的有效性以驗(yàn)證用戶身份。在下文中,將分別參照?qǐng)D2和圖3詳細(xì)描述客戶端200和服務(wù)端300的具體功能配置示例。
數(shù)據(jù)平臺(tái)系統(tǒng)200是去中心化的分布式數(shù)據(jù)庫(kù),并且其中的記錄是不可更改和刪除的。優(yōu)選地,該數(shù)據(jù)平臺(tái)系統(tǒng)可以是基于區(qū)塊鏈(blockchain)的數(shù)據(jù)平臺(tái)。
區(qū)塊鏈?zhǔn)侵竿ㄟ^去中心化和去信任的方式,由參與節(jié)點(diǎn)集體維護(hù)的一個(gè)可靠的分布式數(shù)據(jù)庫(kù)系統(tǒng),它的特點(diǎn)是不可更改,不可偽造。區(qū)塊鏈?zhǔn)翘摂M貨幣-比特幣(bitcoin)金融系統(tǒng)中的重要概念。然而,隨著區(qū)塊鏈技術(shù)的發(fā)展,它也不僅僅只是應(yīng)用在虛擬貨幣的支付領(lǐng)域。如果說區(qū)塊鏈技術(shù)1.0是為虛擬貨幣而生,則區(qū)塊鏈技術(shù)2.0的核心特性(即,信用信任)成為目前的重要應(yīng)用方向,被建議做區(qū)塊鏈合約、公證等。而區(qū)塊鏈技術(shù)3.0則被定位為金融應(yīng)用以外的應(yīng)用領(lǐng)域,如政府、健康、科學(xué)、文化和藝術(shù)等領(lǐng)域。
區(qū)塊鏈技術(shù)主要讓參與系統(tǒng)中的眾多節(jié)點(diǎn),通過使用密碼學(xué)方法產(chǎn)生一串?dāng)?shù)據(jù)區(qū)塊(block),每個(gè)數(shù)據(jù)區(qū)塊中包含了一定時(shí)間內(nèi)的系統(tǒng)全部信息交流數(shù)據(jù),并且生成數(shù)據(jù)指紋用于驗(yàn)證其信息的有效性并鏈接(chain)下一個(gè)數(shù)據(jù)區(qū)塊。目前的區(qū)塊鏈技術(shù)可分為3類應(yīng)用:公有鏈(permissionlessblockchain)、私有鏈(permissionedblockchain)或者兩者結(jié)合應(yīng)用。公有鏈例如為比特幣使用的區(qū)塊鏈,任何人都可以下載,運(yùn)行客戶端,參與系統(tǒng)的運(yùn)行和維護(hù),寫入新的數(shù)據(jù)區(qū)塊(即,挖礦)。私有鏈?zhǔn)侵钙鋵懭霗?quán)限(即挖礦,寫入一個(gè)新的數(shù)據(jù)區(qū)塊)僅限于特定組織的區(qū)塊鏈。二者的混合應(yīng)用是指共識(shí)過程受預(yù)選節(jié)點(diǎn)控制的區(qū)塊鏈。本質(zhì)上講,無論是公有鏈還是私有鏈,其實(shí)現(xiàn)技術(shù)都是一樣的,即:去中心化且寓于分布式結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)、傳輸和證明的方法,用數(shù)據(jù)區(qū)塊取代了目前互聯(lián)網(wǎng)對(duì)中心服務(wù)器的依賴,使得所有數(shù)據(jù)變更或者交易項(xiàng)目都記錄在一個(gè)云系統(tǒng)之上,理論上實(shí)現(xiàn)了數(shù)據(jù)傳輸中對(duì)數(shù)據(jù)的自我證明。
無論私有鏈還是公有鏈,首先都是基于區(qū)塊鏈去實(shí)現(xiàn)一個(gè)數(shù)據(jù)記錄系統(tǒng)(數(shù)據(jù)庫(kù)),即靠不斷的寫入新的數(shù)據(jù)區(qū)塊,把數(shù)據(jù)記錄串起來;都需要一個(gè)共識(shí)機(jī)制來讓所有的節(jié)點(diǎn)信任這個(gè)新的數(shù)據(jù)區(qū)塊(例如,比特幣的共識(shí)機(jī)制是靠挖礦來實(shí)現(xiàn)的);參與寫入新數(shù)據(jù)區(qū)塊的節(jié)點(diǎn)都可以保留一份完整的記錄副本。私有鏈和公有鏈的區(qū)別應(yīng)該在于應(yīng)用層面,即哪些節(jié)點(diǎn)可以參與到區(qū)塊鏈的運(yùn)行維護(hù)(例如挖礦),公有鏈?zhǔn)侨駞⑴c,私有鏈可以指定參與節(jié)點(diǎn)或設(shè)置門檻。另一個(gè)區(qū)別在于,公有鏈?zhǔn)悄涿模欢接墟溡驗(yàn)閷?duì)于參與節(jié)點(diǎn)有選擇性,所以不能是匿名的,例如銀行應(yīng)用,只有銀行自己的客戶可以參與到某個(gè)銀行的基于區(qū)塊鏈的應(yīng)用服務(wù)中,成為其中的一個(gè)節(jié)點(diǎn)。
可以理解,本發(fā)明的數(shù)據(jù)平臺(tái)系統(tǒng)并不限于使用公有鏈或私有鏈或者二者的結(jié)合,而是可根據(jù)具體的應(yīng)用場(chǎng)景而選擇適當(dāng)?shù)膮^(qū)塊鏈系統(tǒng)。例如,對(duì)于銀行應(yīng)用,可以選擇私有鏈(或稱之為許可鏈),由于私有鏈與公有鏈相比,可以引入身份管理,從而避免由完全匿名性所帶來的各種隱患以及用戶管理上的不方便。而對(duì)于其他無特殊要求的應(yīng)用,也可直接采用現(xiàn)有的公有鏈(例如,比特幣的區(qū)塊鏈系統(tǒng)),從而免去了開發(fā)和維護(hù)成本,具有較強(qiáng)的適用性;或者對(duì)于一些應(yīng)用場(chǎng)合,也可選擇公有鏈和私有鏈的組合以獲得身份可管理性與開發(fā)和維護(hù)成本之間的折中。
這里,應(yīng)指出,雖然私有鏈(或稱之為許可鏈)受到許可權(quán)的限制,但仍然是去中心化的,也沒有單一的權(quán)威。無論私有鏈還是公有鏈,它們都是基于區(qū)塊鏈技術(shù)的、都是去中心化的、以數(shù)據(jù)區(qū)塊(block)為基本數(shù)據(jù)集的、需要依靠共識(shí)機(jī)制完成事務(wù)記錄的數(shù)據(jù)庫(kù)系統(tǒng)。
此外,應(yīng)指出,盡管這里描述了本公開的數(shù)據(jù)平臺(tái)系統(tǒng)是基于區(qū)塊鏈的數(shù)據(jù)平臺(tái)的示例,但是本公開并不限于此,而是可采用任何現(xiàn)有的或未來可能出現(xiàn)的數(shù)據(jù)平臺(tái),只要保證該數(shù)據(jù)平臺(tái)是去中心化的分布式數(shù)據(jù)庫(kù)并且其中的數(shù)據(jù)記錄是不可更改和刪除的即可。
在本公開的以下描述中,將以基于區(qū)塊鏈的數(shù)據(jù)平臺(tái)為例來具體描述本公開的技術(shù),但是應(yīng)理解,本公開的技術(shù)也可以類似地?cái)U(kuò)展應(yīng)用于其他數(shù)據(jù)平臺(tái)系統(tǒng)。
接下來,將參照?qǐng)D2描述根據(jù)本公開的實(shí)施例的用于生成驗(yàn)證碼的客戶端的功能配置示例。圖2是示出根據(jù)本公開的實(shí)施例的用于生成驗(yàn)證碼的客戶端的功能配置示例的框圖。
如圖2所示,根據(jù)該實(shí)施例的客戶端200可包括事務(wù)發(fā)起單元202、驗(yàn)證碼生成單元204和發(fā)送單元206。應(yīng)指出,這里所描述的事務(wù)發(fā)起單元202、驗(yàn)證碼生成單元204和發(fā)送單元206可以是分立的物理實(shí)體或邏輯實(shí)體,或者也可由同一個(gè)物理實(shí)體(例如,處理器(例如,中央處理單元(cpu)或數(shù)字信號(hào)處理器(dsp)等)或?qū)S眉呻娐?asic)等)來實(shí)現(xiàn)。下面將分別詳細(xì)描述各個(gè)單元的功能配置示例。
事務(wù)發(fā)起單元202可被配置成響應(yīng)于關(guān)于用戶的預(yù)定身份驗(yàn)證事件而發(fā)起數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的第一賬戶與第二賬戶之間的隨機(jī)事務(wù),以使得該隨機(jī)事務(wù)記錄在數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)。
具體地,例如,當(dāng)用戶需要登錄特定應(yīng)用服務(wù)時(shí),除了常用的用戶名和密碼之外,還需要輸入驗(yàn)證碼作為一個(gè)因素參與到多因素身份認(rèn)證中,以進(jìn)一步提高安全性。區(qū)別于現(xiàn)有技術(shù)中由服務(wù)端和客戶端同時(shí)生成驗(yàn)證碼或者由服務(wù)端生成驗(yàn)證碼并發(fā)送給用戶,在本公開的技術(shù)中,由用戶利用客戶端200先于服務(wù)端而主導(dǎo)驗(yàn)證碼的生成。例如,在數(shù)據(jù)平臺(tái)系統(tǒng)是基于比特幣區(qū)塊鏈的數(shù)據(jù)平臺(tái)的情況下,當(dāng)需要驗(yàn)證用戶身份時(shí),客戶端200的事務(wù)發(fā)起單元202可發(fā)起數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的第一比特幣賬戶與第二比特幣賬戶之間的轉(zhuǎn)賬交易,由于此次交易是用戶發(fā)起的并且交易金額也是隨機(jī)的,也就是說,沒有人可以預(yù)測(cè)此次隨機(jī)交易的額度和時(shí)間,因此也無法利用關(guān)于此次交易的信息來偽造驗(yàn)證碼。例如,圖5示出了根據(jù)本公開的技術(shù)在現(xiàn)有比特幣區(qū)塊鏈系統(tǒng)上的應(yīng)用示意圖。替選地,在數(shù)據(jù)平臺(tái)系統(tǒng)是基于智能合約區(qū)塊鏈的數(shù)據(jù)平臺(tái)的情況下,當(dāng)需要驗(yàn)證用戶身份時(shí),客戶端200的事務(wù)發(fā)起單元202可發(fā)起數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的合約甲方與合約乙方之間的一次隨機(jī)事務(wù)(即,新合約生成),同樣地,由于該新合約的相關(guān)信息對(duì)于除用戶之外的其他方是未知的,因此也無法利用該合約相關(guān)信息來偽造驗(yàn)證碼。例如,圖6示出了根據(jù)本公開的技術(shù)在現(xiàn)有智能合約區(qū)塊鏈系統(tǒng)上的應(yīng)用示意圖。稍后將分別參照?qǐng)D5和圖6描述這兩種情況下的應(yīng)用示例。再者,例如,在數(shù)據(jù)平臺(tái)系統(tǒng)是基于數(shù)字資產(chǎn)管理區(qū)塊鏈的數(shù)據(jù)平臺(tái)的情況下,此時(shí)的隨機(jī)事務(wù)對(duì)應(yīng)于第一賬戶與第二賬戶之間的一次資產(chǎn)轉(zhuǎn)移,其原理與前兩種情況基本上類似,在此不再贅述。
應(yīng)理解,盡管這里描述了轉(zhuǎn)賬交易、智能合約生成和資產(chǎn)轉(zhuǎn)移作為第一賬戶與第二賬戶之間的隨機(jī)事務(wù)的示例,但是本公開并不限于此,而是根據(jù)所應(yīng)用的區(qū)塊鏈系統(tǒng)(例如,基于眾籌、法律文件驗(yàn)證、貨幣清算結(jié)算等的區(qū)塊鏈系統(tǒng)),隨機(jī)事務(wù)可相應(yīng)地對(duì)應(yīng)于這些數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的相 應(yīng)事務(wù),本公開對(duì)此不作具體限制。
這里的第一賬戶和第二賬戶可以是同一所有者所持有的賬戶,如2個(gè)賬戶均歸用戶所有,均歸應(yīng)用服務(wù)提供商所有,或者均歸第三方驗(yàn)證服務(wù)提供者所有;或者也可以是不同的所有者持有的賬戶,例如,第一賬戶為用戶所持有的賬戶,而第二賬戶為應(yīng)用服務(wù)提供商指定的賬戶或者第三方驗(yàn)證服務(wù)者提供的賬戶。本質(zhì)上而言,只要是客戶端200可操作的任意兩個(gè)賬戶間的一次事務(wù),該事務(wù)的相關(guān)數(shù)據(jù)即可用于生成一個(gè)隨機(jī)驗(yàn)證碼,而驗(yàn)證碼的生成過程和賬戶的歸屬?zèng)]有必然聯(lián)系。但是,從現(xiàn)實(shí)業(yè)務(wù)應(yīng)用的角度以及安全性的角度考慮,一般而言,用戶只能操作自己的賬戶或者服務(wù)商指定的預(yù)置在客戶端200中的賬戶。
第一賬戶和第二賬戶可以是在每次需要生成驗(yàn)證碼時(shí)實(shí)時(shí)創(chuàng)建的或者可以是預(yù)先設(shè)置的。
具體地,對(duì)于實(shí)時(shí)創(chuàng)建賬戶的情況,在每次需要生成驗(yàn)證碼時(shí),可以通過基于區(qū)塊鏈的數(shù)據(jù)平臺(tái)系統(tǒng)創(chuàng)建2個(gè)賬戶并把賬戶地址導(dǎo)入客戶端200中,或者可以通過客戶端200調(diào)用基于區(qū)塊鏈的數(shù)據(jù)平臺(tái)系統(tǒng)創(chuàng)建2個(gè)賬戶。通過這種方式,可以使得驗(yàn)證服務(wù)端還可以根據(jù)用戶設(shè)定的參與操作的賬戶來屏蔽其他惡意偽造身份的操作,有利于進(jìn)一步提高安全性。
另一方面,對(duì)于預(yù)先設(shè)置賬戶的情況,可以由應(yīng)用服務(wù)提供商或第三方驗(yàn)證管理服務(wù)提供商(這兩個(gè)服務(wù)提供商也可以是同一個(gè))在客戶端200中預(yù)裝導(dǎo)入2個(gè)隨機(jī)的賬戶。通過這種方式,可以做到用戶透明,即,在生成驗(yàn)證碼時(shí),用戶并不知道在生成驗(yàn)證碼的過程中涉及到了后臺(tái)的兩個(gè)賬戶之間的一次事務(wù)。
第一賬戶和第二賬戶可以分別記作a1和a2,無論是從a1至a2的事務(wù),還是a2至a1的事務(wù)均可以用來觸發(fā)驗(yàn)證碼的生成。替選地,還可以由應(yīng)用服務(wù)提供商或者第三方驗(yàn)證服務(wù)提供商在客戶端200中指定第二賬戶a2,由用戶自由指定一個(gè)自己的賬戶作為第一賬戶a1,從而每次生成驗(yàn)證碼時(shí),可以由從a1至a2的事務(wù)來觸發(fā)驗(yàn)證碼的生成。
然后,客戶端200可以通過例如廣播方式來廣播關(guān)于此次隨機(jī)事務(wù)的信息,以使得該隨機(jī)事務(wù)記錄在數(shù)據(jù)平臺(tái)系統(tǒng)中。由于區(qū)塊鏈系統(tǒng)的不可抵賴性,該隨機(jī)事務(wù)一旦記錄在數(shù)據(jù)平臺(tái)系統(tǒng)中,就不可被移除和更改。
驗(yàn)證碼生成單元204可被配置成至少基于關(guān)于隨機(jī)事務(wù)的信息,生成用于用戶的身份驗(yàn)證的驗(yàn)證碼。
如上所述,由于由用戶所發(fā)起的第一賬戶與第二賬戶之間的隨機(jī)事務(wù)是最新發(fā)生的,其內(nèi)容信息完全是隨機(jī)的并且無法預(yù)先獲知并截取,因此如果利用基于該隨機(jī)事務(wù)的信息來生成驗(yàn)證碼,可以避免現(xiàn)有技術(shù)中驗(yàn)證碼被偽造、截取等風(fēng)險(xiǎn),進(jìn)一步提高驗(yàn)證碼的安全性。優(yōu)選地,除了關(guān)于該隨機(jī)事務(wù)的信息之外,驗(yàn)證碼生成單元204還可基于該數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的歷史事務(wù)記錄來生成驗(yàn)證碼。可以理解,在基于區(qū)塊鏈的數(shù)據(jù)平臺(tái)系統(tǒng)中,任何賬戶的任何事務(wù)均會(huì)被記錄在該數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi),因而驗(yàn)證碼生成單元204可以從該數(shù)據(jù)平臺(tái)系統(tǒng)獲取已知賬戶(例如,可以是第一賬戶或第二賬戶,或者也可以是除這兩個(gè)賬戶之外的其他已知賬戶)的歷史事務(wù)信息用于生成驗(yàn)證碼。此外,驗(yàn)證碼生成單元204還可基于其他輔助信息(諸如時(shí)間戳、用戶名、密碼等)來生成驗(yàn)證碼,本公開對(duì)此不作限制,只要保證用于生成驗(yàn)證碼的“種子”至少包括當(dāng)前發(fā)起的隨機(jī)事務(wù)的相關(guān)信息即可。
用于生成驗(yàn)證碼的算法可包括以下算法中的至少一個(gè):哈希(hash)算法、消息認(rèn)證碼(mac)算法、哈希消息認(rèn)證碼(hmac)算法、基于分組密碼的消息認(rèn)證碼(cbc-mac)算法、隨機(jī)數(shù)生成算法、公鑰加密算法和對(duì)稱密鑰加密算法,但是并不限于這些算法,而是可利用本領(lǐng)域公知的任何加密算法。如何利用這些現(xiàn)有算法、根據(jù)關(guān)于隨機(jī)事務(wù)的信息來生成驗(yàn)證碼的具體過程與現(xiàn)有技術(shù)中基本上相同,在此不再詳細(xì)描述。區(qū)別僅在于,在現(xiàn)有技術(shù)中,通常將所生成的驗(yàn)證碼和用于生成驗(yàn)證碼的“種子”(至少包括關(guān)于隨機(jī)事務(wù)的信息)一起發(fā)送給驗(yàn)證方,而在本公開中,僅將所生成的驗(yàn)證碼發(fā)送給驗(yàn)證方,對(duì)于“種子”,則是在數(shù)據(jù)平臺(tái)系統(tǒng)確認(rèn)了用戶所發(fā)起的隨機(jī)事務(wù)以將其記錄在數(shù)據(jù)平臺(tái)系統(tǒng)之后,由驗(yàn)證方自己在數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)檢索獲得。稍后將在關(guān)于服務(wù)端的實(shí)施例中具體描述該區(qū)別。
發(fā)送單元206可被配置成將所生成的驗(yàn)證碼發(fā)送給服務(wù)端300,以由服務(wù)端300根據(jù)數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的隨機(jī)事務(wù)的記錄和驗(yàn)證碼對(duì)用戶的身份進(jìn)行驗(yàn)證。
接下來,將參照?qǐng)D3描述根據(jù)本公開的實(shí)施例的用于驗(yàn)證用戶身份的服務(wù)端的功能配置示例。
如圖3所示,根據(jù)該實(shí)施例的服務(wù)端300可包括接收單元302、檢索單元304和驗(yàn)證單元306。應(yīng)理解,這里所描述的接收單元302、檢索單元304和驗(yàn)證單元306可以是分立的物理實(shí)體或邏輯實(shí)體,或者也可由同 一個(gè)物理實(shí)體(例如,處理器(例如,中央處理單元(cpu)或數(shù)字信號(hào)處理器(dsp)等)或?qū)S眉呻娐?asic)等)來實(shí)現(xiàn)。下面將分別詳細(xì)描述各個(gè)單元的功能配置示例。
接收單元302可被配置成接收客戶端200生成的用于用戶的身份驗(yàn)證的驗(yàn)證碼。
檢索單元304可被配置成在數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)檢索用戶的客戶端200所發(fā)起的隨機(jī)事務(wù)的記錄。即,如上所述,在客戶端在數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的第一賬戶與第二賬戶之間發(fā)起了一次隨機(jī)事務(wù)以用于生成驗(yàn)證碼時(shí),客戶端可以在該數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)廣播此次事務(wù),隨后數(shù)據(jù)平臺(tái)系統(tǒng)會(huì)在確認(rèn)此次隨機(jī)事務(wù)之后將其記錄下來(即,打包成一個(gè)數(shù)據(jù)區(qū)塊并加入?yún)^(qū)塊鏈中),從而服務(wù)端300的檢索單元304可以根據(jù)該次隨機(jī)事務(wù)的標(biāo)識(shí)在數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)找到此次隨機(jī)事務(wù)的相關(guān)信息,以用于驗(yàn)證所接收到的驗(yàn)證碼的有效性。應(yīng)指出,從客戶端發(fā)起隨機(jī)事務(wù)到服務(wù)端可以驗(yàn)證客戶端上傳的驗(yàn)證碼之間可能存在一定的時(shí)間差,這個(gè)時(shí)間差由數(shù)據(jù)平臺(tái)系統(tǒng)的數(shù)據(jù)區(qū)塊(block)的生成速度決定。因此,如上所述,對(duì)于一些對(duì)于實(shí)時(shí)性要求較高的應(yīng)用,也可以采用基于私有鏈的數(shù)據(jù)平臺(tái)系統(tǒng),這是由于其數(shù)據(jù)區(qū)塊的生成速度相對(duì)較快。
此外,應(yīng)指出,在數(shù)據(jù)平臺(tái)系統(tǒng)100記錄了此次隨機(jī)事務(wù)之后,服務(wù)端300的檢索單元304可以以預(yù)定時(shí)間間隔(例如,該間隔取決于該數(shù)據(jù)平臺(tái)系統(tǒng)的數(shù)據(jù)區(qū)塊生成速度)進(jìn)行檢索,或者替選地,數(shù)據(jù)平臺(tái)系統(tǒng)100也可以通過廣播或者專門的通知機(jī)制來通知服務(wù)端記錄已完成,從而檢索單元304可以在接收到該通知之后,根據(jù)來自客戶端200的隨機(jī)事務(wù)標(biāo)識(shí)信息在數(shù)據(jù)平臺(tái)系統(tǒng)100內(nèi)檢索隨機(jī)事務(wù)的記錄。
驗(yàn)證單元306可被配置成根據(jù)所檢索到的隨機(jī)事務(wù)的記錄,驗(yàn)證所接收到的驗(yàn)證碼的有效性,以驗(yàn)證用戶的身份。驗(yàn)證單元306所采用的用于驗(yàn)證碼的驗(yàn)證算法可以與客戶端200的驗(yàn)證碼生成單元204用于生成驗(yàn)證碼的生成算法相同。即,假設(shè)所生成的驗(yàn)證碼為vc,驗(yàn)證單元306可以根據(jù)所檢索到的隨機(jī)事務(wù)的記錄,使用同樣的驗(yàn)證碼生成算法來計(jì)算一個(gè)驗(yàn)證碼vc’,如果vc’==vc,則驗(yàn)證通過。
如上所述,在驗(yàn)證單元306利用上述的現(xiàn)有加密算法來驗(yàn)證所接收到的驗(yàn)證碼的有效性時(shí),具體的生成驗(yàn)證碼的過程與現(xiàn)有技術(shù)中基本上相同,區(qū)別僅在于,用于生成驗(yàn)證碼的“種子”并不是從客戶端接收到的,而是服務(wù)端從數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)檢索到的。也就是說,在數(shù)據(jù)平臺(tái)系統(tǒng)確認(rèn)最 新的隨機(jī)事務(wù)并將其記錄下來之前,服務(wù)端是無法驗(yàn)證驗(yàn)證碼的有效性和真實(shí)性的。如上所述,由于數(shù)據(jù)平臺(tái)系統(tǒng)是一個(gè)去中心化的分布式數(shù)據(jù)庫(kù),其中的記錄是不可更改和刪除的,也就是說,數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的記錄是不可篡改的和可信賴的隨機(jī)事務(wù)相關(guān)的“種子”信息是通過數(shù)據(jù)平臺(tái)系統(tǒng)進(jìn)行生成和記錄,避免了從客戶端向服務(wù)端傳送“種子”的風(fēng)險(xiǎn),從而進(jìn)一步提高了系統(tǒng)安全性。另外,服務(wù)端只對(duì)數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)已記錄的“種子”進(jìn)行驗(yàn)證碼的確認(rèn),也就是說數(shù)據(jù)平臺(tái)系統(tǒng)相當(dāng)于是服務(wù)端前面的一級(jí)緩存,如果想對(duì)服務(wù)端進(jìn)行針對(duì)驗(yàn)證碼的拒絕服務(wù)攻擊(dos),則攻擊者需要讓驗(yàn)證碼/“種子”的數(shù)量遠(yuǎn)超過服務(wù)端的處理能力。所以,基于該數(shù)據(jù)平臺(tái)系統(tǒng),可以進(jìn)一步提整個(gè)應(yīng)用系統(tǒng)的安全性。
為了便于理解根據(jù)本發(fā)明的驗(yàn)證系統(tǒng)的工作流程,下面將參照?qǐng)D4所示的流程圖來描述根據(jù)本發(fā)明的驗(yàn)證系統(tǒng)的工作流程。圖4是示出根據(jù)本公開的實(shí)施例的用于驗(yàn)證用戶身份的交互過程的流程圖。
如圖4所示,首先,在步驟s410中,客戶端200響應(yīng)于預(yù)定身份驗(yàn)證事件(例如,用戶登錄某應(yīng)用服務(wù))而發(fā)起數(shù)據(jù)平臺(tái)系統(tǒng)100內(nèi)的兩個(gè)賬戶間的隨機(jī)事務(wù),以使得該隨機(jī)事務(wù)記錄在數(shù)據(jù)平臺(tái)系統(tǒng)100內(nèi)。然后,在步驟s420中,客戶端200基于關(guān)于該隨機(jī)事務(wù)的信息而生成驗(yàn)證碼,并且在步驟s430中,客戶端200將所生成的驗(yàn)證碼和該隨機(jī)事務(wù)的標(biāo)識(shí)信息發(fā)送到服務(wù)端300。接下來,在步驟s440中,數(shù)據(jù)平臺(tái)系統(tǒng)100確認(rèn)該隨機(jī)事務(wù)并將其作為一個(gè)數(shù)據(jù)區(qū)塊加入到區(qū)塊鏈中。在步驟s450中,服務(wù)端300等待數(shù)據(jù)平臺(tái)系統(tǒng)100確認(rèn)該次隨機(jī)事務(wù),該等待可以是等待預(yù)定的時(shí)間或者也可以是等待來自數(shù)據(jù)平臺(tái)系統(tǒng)100的確認(rèn)通知。在數(shù)據(jù)平臺(tái)系統(tǒng)100確認(rèn)該次隨機(jī)事務(wù)之后,即,在該次隨機(jī)事務(wù)被記錄在數(shù)據(jù)平臺(tái)系統(tǒng)100內(nèi)之后,在步驟s460中,服務(wù)端300才可以利用所接收到的標(biāo)識(shí)信息在數(shù)據(jù)平臺(tái)系統(tǒng)100內(nèi)檢索該隨機(jī)事務(wù),以基于隨機(jī)事務(wù)的記錄驗(yàn)證所接收的驗(yàn)證碼的有效性和真實(shí)性,并且在步驟s470中,服務(wù)端300將驗(yàn)證結(jié)果返回到客戶端200,從而驗(yàn)證通過的用戶可以成功登錄應(yīng)用服務(wù),否則被拒絕登錄。
應(yīng)理解,參照?qǐng)D4所給出的流程僅是示例而非限制,并且本領(lǐng)域技術(shù)人員可以根據(jù)本公開的原理對(duì)該示例流程進(jìn)行修改。例如,在客戶端200還需要基于歷史事務(wù)記錄生成驗(yàn)證碼的情況下,客戶端200還需要從數(shù)據(jù)平臺(tái)系統(tǒng)100獲取相應(yīng)的歷史事務(wù)記錄信息。此外,圖4所示的各個(gè)步驟的順序僅是為了便于描述而給出的,實(shí)際的執(zhí)行過程并不限于該順序,而 是可以根據(jù)實(shí)際情況適當(dāng)?shù)匦薷摹?/p>
然而,應(yīng)指出,因?yàn)閰^(qū)塊鏈原則上是透明的,即所有節(jié)點(diǎn)都可以訪問的,因此,在本發(fā)明的執(zhí)行中,一般地,需要保證先生成驗(yàn)證碼發(fā)送給服務(wù)端,再把對(duì)應(yīng)的隨機(jī)事務(wù)記錄到區(qū)塊鏈。這樣,即使有惡意第三方得到“種子”信息(即,隨機(jī)事務(wù))用來偽造一個(gè)驗(yàn)證碼,也要排在待驗(yàn)證的驗(yàn)證碼隊(duì)列的后面,而驗(yàn)證服務(wù)端只會(huì)優(yōu)先處理排在隊(duì)列前面的等待驗(yàn)證的驗(yàn)證碼,從而可以降低驗(yàn)證碼被偽造的風(fēng)險(xiǎn),提高系統(tǒng)安全性。當(dāng)然,從以區(qū)塊鏈技術(shù)為支撐的數(shù)據(jù)平臺(tái)系統(tǒng)的角度,想要偽造一個(gè)用于生成驗(yàn)證碼的隨機(jī)事務(wù)是非常困難的。每一個(gè)被記錄在數(shù)據(jù)平臺(tái)系統(tǒng)的隨機(jī)事務(wù)都是基于兩個(gè)賬戶(地址)之間的活動(dòng),而服務(wù)端驗(yàn)證時(shí)也需要根據(jù)賬戶(地址)信息檢索該記錄。所以,惡意第三方想要偽造驗(yàn)證碼的話,還要偽造對(duì)應(yīng)的兩個(gè)賬戶(地址)之間的隨機(jī)事務(wù)活動(dòng),這在理論上是不可行的。
此外,還應(yīng)指出,在通常情況下,本發(fā)明之所以強(qiáng)調(diào)需要先把生成的驗(yàn)證碼發(fā)送給服務(wù)端再把對(duì)應(yīng)的隨機(jī)事務(wù)記錄到數(shù)據(jù)平臺(tái)系統(tǒng),是擔(dān)心惡意第三方得到用戶的驗(yàn)證碼,同時(shí)在別的服務(wù)界面搶先登錄,從而可能產(chǎn)生驗(yàn)證沖突。例如,如果惡意第三方竊取了用戶的用戶名(id)、密碼(pwd)等,那么他可以監(jiān)控等待用戶的操作,例如,當(dāng)發(fā)現(xiàn)用戶在中國(guó)銀行登錄并生成驗(yàn)證碼時(shí),惡意第三方立刻利用所竊取的該用戶的id和pwd以及通過得到驗(yàn)證碼種子(即,用戶發(fā)起的隨機(jī)事務(wù))而獲取的驗(yàn)證碼在農(nóng)業(yè)銀行登錄。此時(shí),如果服務(wù)端不是優(yōu)先處理該用戶的中國(guó)銀行登錄驗(yàn)證碼的話,會(huì)出現(xiàn)沖突。當(dāng)然,實(shí)際中,因?yàn)閰^(qū)塊鏈數(shù)據(jù)平臺(tái)本身具有賬戶信息,這個(gè)信息也可以被利用,例如在生成的交易或者智能合約中,標(biāo)明了該交易或智能合約用于發(fā)起和中國(guó)銀行有關(guān)的業(yè)務(wù)等等,這些信息本身可用于生成驗(yàn)證碼,同時(shí)被服務(wù)端用來驗(yàn)證服務(wù)源,以進(jìn)一步提高安全性。
然而,在實(shí)際應(yīng)用中,作為替選示例,還可能存在以下情況:如果只是用隨機(jī)事務(wù)的特定信息(例如,交易金額)作為生成驗(yàn)證碼的種子,那么與數(shù)據(jù)平臺(tái)系統(tǒng)相關(guān)的其他信息都不必提前生成,也就是說,可以等驗(yàn)證碼生成之后再發(fā)起隨機(jī)事務(wù)。換言之,如果種子信息不涉及數(shù)據(jù)平臺(tái)信息的話,就可以先完成驗(yàn)證碼發(fā)送,再發(fā)起隨機(jī)事務(wù)。然而,應(yīng)理解,在該情況下,由于驗(yàn)證碼的生成與驗(yàn)證過程與數(shù)據(jù)平臺(tái)系統(tǒng)的關(guān)聯(lián)度較弱,從而在一定程度上會(huì)降低系統(tǒng)安全性。
接下來,為了更系統(tǒng)地理解本發(fā)明的驗(yàn)證系統(tǒng)的工作原理,將參照?qǐng)D5和圖6,描述在根據(jù)本發(fā)明的技術(shù)分別應(yīng)用于比特幣區(qū)塊鏈系統(tǒng)和智能合約區(qū)塊鏈系統(tǒng)的情況下的示例。圖5是示出根據(jù)本公開的實(shí)施例的身份驗(yàn)證系統(tǒng)在現(xiàn)有比特幣區(qū)塊鏈系統(tǒng)上的應(yīng)用示意圖。
如圖5所示,當(dāng)需要進(jìn)行用戶身份驗(yàn)證時(shí),首先,客戶端發(fā)起比特幣賬戶a1與比特幣賬戶a2之間的一次隨機(jī)轉(zhuǎn)賬交易,轉(zhuǎn)賬金額是隨機(jī)的,該交易最終將被記錄在基于比特幣區(qū)塊鏈的數(shù)據(jù)平臺(tái)系統(tǒng)中。此次交易記作ta。
然后,客戶端基于此次交易信息生成一個(gè)驗(yàn)證碼:vc=verificationcodegen(ta),其中,vc表示驗(yàn)證碼,verificationcodegen()表示用于生成驗(yàn)證碼的函數(shù)。優(yōu)選地,客戶端也可以同時(shí)基于當(dāng)前新交易和數(shù)據(jù)平臺(tái)系統(tǒng)中已知賬戶的歷史交易記錄來生成驗(yàn)證碼,例如,使用賬戶a1的歷史記錄,記作a1history,為了便于記錄,可以從第一條記錄起,采用哈希鏈的方式記錄保存最新的歷史記錄,例如hash(a1history),其中hash()表示哈希函數(shù),從而驗(yàn)證碼可以如下生成:vc=verificationcodegen(ta||hash(a1history))。應(yīng)理解,該歷史信息當(dāng)然也不限于從第一條記錄開始的信息,而是也可以是指定時(shí)間的交易信息。
接下來,客戶端可以向服務(wù)端返回所生成的驗(yàn)證碼vc和ta標(biāo)識(shí)信息,這些信息最終和用戶名、密碼等身份信息一并提交給服務(wù)端以進(jìn)行用戶身份驗(yàn)證,并且客戶端還在數(shù)據(jù)平臺(tái)系統(tǒng)的服務(wù)網(wǎng)絡(luò)內(nèi)廣播ta,以使其記錄在數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)。
在此次交易ta被記錄在數(shù)據(jù)平臺(tái)系統(tǒng)之后,服務(wù)端可以根據(jù)ta標(biāo)識(shí)在數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)找到交易ta,依據(jù)數(shù)據(jù)平臺(tái)系統(tǒng)中的記錄,驗(yàn)證所接收到的驗(yàn)證碼vc的有效性:result=verify(vc,ta),其中,result表示驗(yàn)證結(jié)果,并且verify()表示驗(yàn)證函數(shù)。如上所述,服務(wù)端可以使用同樣的驗(yàn)證碼生成算法來計(jì)算一個(gè)驗(yàn)證碼vc’=verificationcodegen(ta),如果vc’==vc,則驗(yàn)證通過,從而通過驗(yàn)證的用戶可以成功登陸應(yīng)用服務(wù)。
應(yīng)指出,在基于比特幣區(qū)塊鏈的應(yīng)用中,由于涉及資金的交易,因此在驗(yàn)證服務(wù)是無償?shù)那闆r下,應(yīng)保證用戶的資金無損失,而在有償服務(wù)的情況下,也應(yīng)在扣除了相應(yīng)的服務(wù)費(fèi)用之后將剩余資金返回到用戶的賬戶中。具體地,如果參與驗(yàn)證碼生成的兩個(gè)賬戶均是用戶自己的賬戶,則由于是屬于同一用戶的賬戶間交易,因此用戶無財(cái)務(wù)損失;相反,如果參與 驗(yàn)證碼生成的一個(gè)賬戶是用戶的賬戶,而另一賬戶是應(yīng)用服務(wù)提供商或第三方驗(yàn)證服務(wù)提供商的賬戶,則在無償服務(wù)的情況下,在驗(yàn)證通過后,應(yīng)該發(fā)起這筆隨機(jī)轉(zhuǎn)賬交易的逆向轉(zhuǎn)賬交易以將資金還原到初識(shí)狀態(tài),也就是說,可以讓用戶不察覺賬戶內(nèi)容變化的情況下完成一次驗(yàn)證碼的生成;而在有償服務(wù)的情況下,驗(yàn)證服務(wù)提供商也可以在扣除服務(wù)費(fèi)后把剩余金額轉(zhuǎn)回原始賬戶。
即,優(yōu)選地,服務(wù)端300還可包括逆向事務(wù)發(fā)起單元,用于在驗(yàn)證單元306完成了驗(yàn)證碼的驗(yàn)證之后,發(fā)起關(guān)于客戶端發(fā)起的隨機(jī)事務(wù)的逆向事務(wù)。
圖6是示出根據(jù)本公開的實(shí)施例的身份驗(yàn)證系統(tǒng)在現(xiàn)有智能合約區(qū)塊鏈系統(tǒng)上的應(yīng)用示意圖。
在具體描述本發(fā)明的應(yīng)用之前,將簡(jiǎn)要介紹智能合約的相關(guān)背景。智能合約被認(rèn)為是區(qū)塊鏈2.0的代表性應(yīng)用,其是由事件驅(qū)動(dòng)的、具有狀態(tài)的、運(yùn)行在一個(gè)復(fù)制的分享的賬本之上的、且能夠保管賬本上資產(chǎn)的程序,其又不僅僅只是一個(gè)計(jì)算機(jī)程序而是同時(shí)也是參與者。它對(duì)接收到的信息進(jìn)行回應(yīng),它可以接收和儲(chǔ)存價(jià)值,也可以向外發(fā)送信息和價(jià)值。這個(gè)程序就像一個(gè)可以被信任的人,可以臨時(shí)保管資產(chǎn),總是按照事先的規(guī)則執(zhí)行操作。
目前業(yè)內(nèi)有2家與智能合約平臺(tái)有關(guān)的創(chuàng)業(yè)公司:ethereum(以太坊)和rootstock。rootstock是一個(gè)開源的點(diǎn)對(duì)點(diǎn)智能合約平臺(tái),利用現(xiàn)有的區(qū)塊鏈技術(shù)(比特幣平臺(tái))而沒有開發(fā)屬于自己的區(qū)塊鏈,而以太坊(ethereum)是獨(dú)立的開源數(shù)字貨幣和區(qū)塊鏈平臺(tái),它為開發(fā)者提供在區(qū)塊鏈上搭建和發(fā)布應(yīng)用的平臺(tái)。
簡(jiǎn)單來說,從密碼學(xué)和金融科技(fintech)來講,目前業(yè)界提到的智能合約就是在區(qū)塊鏈基礎(chǔ)上的延伸,從簡(jiǎn)單轉(zhuǎn)賬到資產(chǎn)轉(zhuǎn)移以及其他事務(wù)。這些資產(chǎn)歸屬、資產(chǎn)狀態(tài)的變化被區(qū)塊鏈上的智能合約協(xié)議(軟件)相約束。也可以簡(jiǎn)單地認(rèn)為,這些區(qū)塊鏈上發(fā)生的事務(wù)會(huì)被網(wǎng)絡(luò)賦予合約,即被系統(tǒng)認(rèn)可和生效,而不需要第三方裁決機(jī)構(gòu),畢竟區(qū)塊鏈就是為了實(shí)現(xiàn)去中心化,就像基于區(qū)塊鏈的比特幣不需要銀行就能完成貨幣發(fā)行和交易一樣。fintech領(lǐng)域的智能合約則是對(duì)于合約雙方透明并嚴(yán)格按照合約約定執(zhí)行的計(jì)算機(jī)程序。所以,創(chuàng)建一個(gè)新的智能合約就是在區(qū)塊鏈上生成一段程序,這個(gè)程序用于執(zhí)行雙方的約定。
當(dāng)然,應(yīng)理解,盡管以上從fintech領(lǐng)域描述了智能合約,但是智能合約并不限于應(yīng)用于金融領(lǐng)域,而是同樣可適用于任何需要限定合約雙方按照合約內(nèi)容執(zhí)行操作的領(lǐng)域。
在智能合約應(yīng)用中,區(qū)塊鏈會(huì)依據(jù)區(qū)塊鏈網(wǎng)絡(luò)上的信息對(duì)合約進(jìn)行驗(yàn)證,因?yàn)閰^(qū)塊鏈的信息不可逆,同時(shí)會(huì)自動(dòng)記錄時(shí)間,所以合約的安全性、可信賴性得到保證。
圖6所示的應(yīng)用示例與圖5所示的應(yīng)用示例基本上相同,區(qū)別僅在于,在基于智能合約區(qū)塊鏈的數(shù)據(jù)平臺(tái)系統(tǒng)的情況下,賬戶間的事務(wù)并非是轉(zhuǎn)賬而是新合約生成。
具體地,如圖6所示,首先,客戶端發(fā)起一次隨機(jī)事務(wù),即,新生成一個(gè)智能合約,然后基于該智能合約而生成驗(yàn)證碼(vc),并發(fā)送給服務(wù)端。
然后,客戶端在數(shù)據(jù)平臺(tái)系統(tǒng)中廣播新智能合約相關(guān)信息,數(shù)據(jù)平臺(tái)系統(tǒng)在下一個(gè)數(shù)據(jù)區(qū)塊中記錄該信息并附加時(shí)間戳。該記錄是不能修改和抵賴的。
接下來,服務(wù)端從已記錄的數(shù)據(jù)區(qū)塊中檢索與接收到的vc相對(duì)應(yīng)的智能合約的記錄信息,依據(jù)該記錄驗(yàn)證vc的真實(shí)性。
同樣地,如上所述,在驗(yàn)證完成之后,根據(jù)實(shí)際需要,服務(wù)端也可以發(fā)起一次逆向事務(wù)以執(zhí)行逆向合約生成,此時(shí)的逆向事務(wù)也是生成一段智能合約程序,只不過執(zhí)行的內(nèi)容可以是與之前的隨機(jī)事務(wù)的合約內(nèi)容反向的操作。其余未描述的細(xì)節(jié)與圖5所示的示例相同,在此不再重復(fù)。
應(yīng)指出,盡管在圖6所示的示例中,合約甲方和合約乙方均在客戶端內(nèi),但這僅表示由客戶端發(fā)起雙方之間的一次事務(wù)而并不代表甲方和乙方的歸屬,也就是說,與上述第一賬戶和第二賬戶相同,甲方和乙方可以歸屬同一用戶或不同用戶。
除了參照?qǐng)D5和圖6描述的示例之外,根據(jù)本公開的技術(shù)還可以應(yīng)用于諸如基于數(shù)字資產(chǎn)管理區(qū)塊鏈、法律文件認(rèn)證區(qū)塊鏈等的數(shù)據(jù)平臺(tái)系統(tǒng),其具體實(shí)施方式與以上參照?qǐng)D5和圖6描述的示例類似,在此不再一一詳細(xì)描述。
這里,應(yīng)指出,在本公開的基于區(qū)塊鏈的驗(yàn)證碼系統(tǒng)中,前提是基于區(qū)塊鏈的數(shù)據(jù)平臺(tái)系統(tǒng)的每個(gè)數(shù)據(jù)區(qū)塊的驗(yàn)證服務(wù)的速度(或稱之為新區(qū)塊的生成速度)不會(huì)影響應(yīng)用服務(wù)對(duì)于驗(yàn)證碼的需求和驗(yàn)證速度,這是由 于只有被數(shù)據(jù)平臺(tái)系統(tǒng)記錄的事務(wù)信息才可以用來驗(yàn)證客戶端生成的驗(yàn)證碼,而區(qū)塊鏈的數(shù)據(jù)區(qū)塊是定期更新的,也就是說,服務(wù)端只需要在一個(gè)數(shù)據(jù)區(qū)塊更新周期內(nèi)處理與之前的數(shù)據(jù)區(qū)塊中的事務(wù)記錄相關(guān)的驗(yàn)證碼檢驗(yàn)即可,沒有記入數(shù)據(jù)區(qū)塊的事務(wù)涉及的驗(yàn)證碼將暫不被處理。換言之,只要服務(wù)端的業(yè)務(wù)流量處理速度比數(shù)據(jù)平臺(tái)系統(tǒng)的數(shù)據(jù)塊的更新速度快,就不會(huì)出現(xiàn)拒絕服務(wù),從這個(gè)角度來看,本發(fā)明的基于區(qū)塊鏈的驗(yàn)證碼系統(tǒng)可以在一定程度上抵抗拒絕服務(wù)(dos)/分布式拒絕服務(wù)(ddos)攻擊。
此外,還可以理解,基于一次事務(wù)而生成的驗(yàn)證碼可以作為登錄時(shí)的多因素身份認(rèn)證的一個(gè)因素來使用,因此在每次登錄時(shí)都需要一個(gè)新的驗(yàn)證碼以保證身份驗(yàn)證系統(tǒng)的安全性。這樣,對(duì)于這種一次性使用的驗(yàn)證碼,客戶端和服務(wù)端在完成驗(yàn)證流程后均不需要保存該驗(yàn)證碼,除非該驗(yàn)證碼需要作為一個(gè)輸入?yún)?shù)用于生成后續(xù)的新的驗(yàn)證碼,這時(shí)可以臨時(shí)保存該驗(yàn)證碼,直至新的驗(yàn)證碼生成后,就可以清除之前的驗(yàn)證碼。因此,可以看出,與現(xiàn)有的驗(yàn)證碼機(jī)制相比,不需要大型的后臺(tái)數(shù)據(jù)維護(hù)系統(tǒng),從而可以大大降低系統(tǒng)成本。
另一方面,基于一次事務(wù)生成的驗(yàn)證碼也可以作為周期性的動(dòng)態(tài)驗(yàn)證碼使用,例如,每天生成一次,或者每小時(shí)生成一次等。在有效期內(nèi),在應(yīng)用層服務(wù)中,多次使用同一個(gè)驗(yàn)證碼,例如,動(dòng)態(tài)的信用卡驗(yàn)證碼(cvv),稍后將詳細(xì)描述該應(yīng)用示例。在該情況下,可以通過根據(jù)事務(wù)記錄并附加其他信息,生成在指定期限內(nèi)有效的動(dòng)態(tài)驗(yàn)證碼。如果下次使用時(shí)提示該驗(yàn)證碼已過期,則客戶端可以隨時(shí)再生成一個(gè)新的動(dòng)態(tài)驗(yàn)證碼。
應(yīng)指出,以上描述的客戶端和服務(wù)端的功能配置僅為示例而非限制,并且本領(lǐng)域技術(shù)人員還可以根據(jù)本公開的原理而對(duì)上述功能配置進(jìn)行修改,例如,對(duì)上述各個(gè)功能單元進(jìn)行組合、子組合、變更等,或者添加另外的功能單元(例如,顯示單元、存儲(chǔ)單元等)。
具體地,作為示例,在驗(yàn)證碼如果是利用mac、cbc-mac、hmac或者公鑰密碼算法生成的情況下,生成的驗(yàn)證碼本身就具有認(rèn)證/鑒別(authentication)特性,即,只有客戶端和服務(wù)端擁有對(duì)應(yīng)的密鑰來生成或驗(yàn)證驗(yàn)證碼。而如果是用哈希算法或者隨機(jī)數(shù)生成算法等不具有認(rèn)證/鑒別特性的簡(jiǎn)單方法生成的驗(yàn)證碼,為了抵抗中間人偽造攻擊,還可以基于公鑰或身份密鑰的簽名來提升系統(tǒng)的安全性。具體地,例如,可以為每 個(gè)客戶端分配一對(duì)公鑰(pk)和私鑰(sk),從而客戶端200可以包括另外的簽名單元,用于利用客戶端私鑰對(duì)所生成的驗(yàn)證碼進(jìn)行簽名,然后發(fā)送單元可以將驗(yàn)證碼和簽名一起發(fā)送給服務(wù)端,從而服務(wù)端可以利用數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的事務(wù)記錄來驗(yàn)證驗(yàn)證碼,并且利用客戶端公鑰對(duì)簽名進(jìn)行驗(yàn)證以證實(shí)該驗(yàn)證碼確實(shí)來自客戶端200而不是偽造的。也就是說,對(duì)于安全性要求較高的應(yīng)用環(huán)境,還可以附加簽名機(jī)制來驗(yàn)證驗(yàn)證碼發(fā)送方的身份,以提升系統(tǒng)安全性。
與上述裝置實(shí)施例相對(duì)應(yīng)的,本發(fā)明還提供了以下方法實(shí)施例。
圖7是示出根據(jù)本公開的實(shí)施例的用于生成驗(yàn)證碼的方法的過程示例的流程圖。該方法例如可以通過在諸如智能手機(jī)、平板電腦、個(gè)人數(shù)字助理(pda)等的客戶端上執(zhí)行相應(yīng)的驗(yàn)證碼生成程序來執(zhí)行。
如圖7所示,首先,在步驟s701中,響應(yīng)于關(guān)于用戶的預(yù)定身份驗(yàn)證事件而發(fā)起數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的第一賬戶與第二賬戶之間的隨機(jī)事務(wù),以使得該隨機(jī)事務(wù)記錄在數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)。該數(shù)據(jù)平臺(tái)系統(tǒng)是去中心化的分布式數(shù)據(jù)庫(kù),并且其中的記錄是不可更改和刪除的,例如,優(yōu)選地,可以是基于區(qū)塊鏈的數(shù)據(jù)平臺(tái)。優(yōu)選地,隨機(jī)事務(wù)包括以下中的至少一個(gè):轉(zhuǎn)賬、合約生成和資產(chǎn)轉(zhuǎn)移。第一賬戶和第二賬戶可以屬于同一所有者或不同所有者,并且可以是實(shí)時(shí)創(chuàng)建的或預(yù)先設(shè)置的。
接下來,在步驟s702中,至少基于關(guān)于隨機(jī)事務(wù)的信息,生成用于用戶的身份驗(yàn)證的驗(yàn)證碼。優(yōu)選地,還可基于數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的歷史事務(wù)記錄來生成驗(yàn)證碼。
然后,在步驟s703中,將所生成的驗(yàn)證碼發(fā)送給服務(wù)端,以由服務(wù)端根據(jù)數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的隨機(jī)事務(wù)的記錄和驗(yàn)證碼對(duì)用戶的身份進(jìn)行驗(yàn)證。
優(yōu)選地,在圖7所示的方法中,還可包括用于利用客戶端私鑰對(duì)所生成的驗(yàn)證碼進(jìn)行簽名的步驟,并且在步驟s703中將簽名后的驗(yàn)證碼發(fā)送給服務(wù)端。
應(yīng)理解,這里描述的方法實(shí)施例是與以上參照?qǐng)D2描述的客戶端的實(shí)施例相對(duì)應(yīng)的,因此,在此未詳細(xì)描述的內(nèi)容可參見以上相應(yīng)位置的描述,在此不再重復(fù)。
圖8是示出根據(jù)本公開的實(shí)施例的用于驗(yàn)證用戶身份的方法的過程示例的流程圖。該方法例如可通過在服務(wù)器上執(zhí)行用于驗(yàn)證用戶身份的程 序來執(zhí)行。
如圖8所示,首先,在步驟s801中,接收客戶端生成的用于用戶的身份驗(yàn)證的驗(yàn)證碼,該驗(yàn)證碼是客戶端至少基于關(guān)于數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的第一賬戶與第二賬戶之間的隨機(jī)事務(wù)的信息而生成的,該隨機(jī)事務(wù)是客戶端響應(yīng)于關(guān)于用戶的預(yù)定身份驗(yàn)證事件而發(fā)起的。
接下來,在步驟s802中,在數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)檢索隨機(jī)事務(wù)的記錄。
然后,在步驟s803中,根據(jù)隨機(jī)事務(wù)的記錄,驗(yàn)證驗(yàn)證碼的有效性,以驗(yàn)證用戶的身份。
優(yōu)選地,該方法還可包括用于在驗(yàn)證之后發(fā)起與隨機(jī)事務(wù)對(duì)應(yīng)的逆向事務(wù)的步驟。
此外,優(yōu)選地,該方法還可包括用于利用客戶端公鑰對(duì)來自客戶端的簽名后的驗(yàn)證碼進(jìn)行驗(yàn)證的步驟。
應(yīng)理解,這里描述的方法實(shí)施例是與以上參照?qǐng)D3描述的服務(wù)端的實(shí)施例相對(duì)應(yīng)的,因此,在此未詳細(xì)描述的內(nèi)容可參見以上相應(yīng)位置的描述,在此不再重復(fù)。
此外,應(yīng)理解,根據(jù)本公開的實(shí)施例的存儲(chǔ)介質(zhì)和程序產(chǎn)品中的機(jī)器可執(zhí)行的指令還可以被執(zhí)行以上描述的用于生成驗(yàn)證碼和驗(yàn)證用戶身份的方法,因此在此未詳細(xì)描述的部分可參考先前相應(yīng)位置的描述,在此不再重復(fù)進(jìn)行描述。
相應(yīng)地,用于承載上述存儲(chǔ)有機(jī)器可執(zhí)行的指令代碼的程序產(chǎn)品的存儲(chǔ)介質(zhì)也包括在本發(fā)明的公開中。所述存儲(chǔ)介質(zhì)包括但不限于軟盤、光盤、磁光盤、存儲(chǔ)卡、存儲(chǔ)棒等等。
根據(jù)上述本公開的實(shí)施例,本發(fā)明至少可以實(shí)現(xiàn)以下技術(shù)效果之一:
1、有效的身份驗(yàn)證方式:通過基于區(qū)塊鏈的驗(yàn)證碼來驗(yàn)證用戶身份,因?yàn)閰⑴c生成驗(yàn)證碼的區(qū)塊鏈賬戶要么是屬于用戶的,要么是專屬于用戶的客戶端的,就像用戶的手機(jī)sim卡一樣,在通常情況下,不考慮惡意攻擊的時(shí)候,我們可以認(rèn)為所生成的驗(yàn)證碼可以作為用戶的身份信息參與到多因素認(rèn)證應(yīng)用中。
2、驗(yàn)證碼由客戶啟動(dòng)生成,具有隨機(jī)性,因?yàn)闆]有人可以預(yù)測(cè)某次隨機(jī)事務(wù)的具體內(nèi)容和時(shí)間,因此,可以有效地抵抗驗(yàn)證碼被偽造、截取等風(fēng)險(xiǎn)。
3、驗(yàn)證碼的驗(yàn)證要依據(jù)區(qū)塊鏈中的數(shù)據(jù),區(qū)塊鏈?zhǔn)窃诔掷m(xù)延長(zhǎng),而且新區(qū)塊一旦加入到區(qū)塊鏈中,就不會(huì)再被移走,數(shù)據(jù)一旦被寫入就不能修改或刪除。也就是說,數(shù)據(jù)平臺(tái)系統(tǒng)內(nèi)的記錄是高度安全和可信賴的,從而也避免了現(xiàn)有技術(shù)中用于驗(yàn)證驗(yàn)證碼的數(shù)據(jù)被惡意第三方獲取來偽造驗(yàn)證碼的風(fēng)險(xiǎn),進(jìn)一步提高了安全性。
4、驗(yàn)證碼的產(chǎn)生與新的事務(wù)有關(guān),而事務(wù)的過程安全則可依靠基于區(qū)塊鏈的數(shù)據(jù)平臺(tái)本身的技術(shù)來保障。基于區(qū)塊鏈的數(shù)據(jù)平臺(tái)使用密碼學(xué)的設(shè)計(jì)來確保事務(wù)的各個(gè)環(huán)節(jié)安全性,即,除非用戶的賬戶信息已經(jīng)泄露,否則沒有人可以偽造該用戶的事務(wù)。
5、抵抗dos/ddos攻擊:只有被基于區(qū)塊鏈的數(shù)據(jù)平臺(tái)記錄的事務(wù)信息可以被用來檢驗(yàn)客戶端生成的驗(yàn)證碼,而區(qū)塊鏈的數(shù)據(jù)區(qū)塊是定期更新的,也就是說,只要驗(yàn)證服務(wù)端的業(yè)務(wù)流量處理速度比基于區(qū)塊鏈的數(shù)據(jù)平臺(tái)的數(shù)據(jù)區(qū)塊的更新速度快,就不會(huì)出現(xiàn)拒絕服務(wù)。進(jìn)一步地,如果生成驗(yàn)證碼用的2個(gè)賬戶是歸屬用戶的,那么也可以把系統(tǒng)設(shè)計(jì)成需要用戶觸發(fā)驗(yàn)證碼生成,例如用戶完成某項(xiàng)計(jì)算或選項(xiàng)操作,然后啟動(dòng)驗(yàn)證碼生成。通過多種手段結(jié)合,盡量避免dos/ddos攻擊。
可以看出,由于根據(jù)公開的驗(yàn)證系統(tǒng)(包括驗(yàn)證碼的生成和驗(yàn)證)大大提高了數(shù)據(jù)安全性,因此其可以廣泛應(yīng)用于各種領(lǐng)域中,包括但不限于金融、醫(yī)療、文化、政府、工業(yè)控制等領(lǐng)域,也就是說,只要涉及需要訪問控制的任何領(lǐng)域均可應(yīng)用本發(fā)明的技術(shù)。
應(yīng)指出,在本公開的以下描述中,“客戶端”可以被實(shí)現(xiàn)為物理實(shí)體裝置或者也可以被實(shí)現(xiàn)為在實(shí)際的客戶端裝置(例如,個(gè)人計(jì)算機(jī)、智能手機(jī)、平板電腦、pda等智能終端)上運(yùn)行的程序,同樣地,“服務(wù)端”可以被實(shí)現(xiàn)為物理實(shí)體裝置或者也可以被實(shí)現(xiàn)為在實(shí)際的服務(wù)器裝置上運(yùn)行的程序。具體地,當(dāng)“客戶端”被實(shí)現(xiàn)為程序時(shí),其可以是在電腦或其他智能終端上的獨(dú)立軟件工具或服務(wù),例如exe、jar、dex、apk等,也可以是軟件開發(fā)工具包,例如sdk(softwaredevelopmentkit)、jdk(javadevelopmentkit)等,或者也可以是函數(shù)庫(kù),例如dll、lib等,通過提供應(yīng)用程序接口讓第三方軟件進(jìn)行集成和二次開發(fā)。同樣,當(dāng)“服務(wù)端”被實(shí)現(xiàn)為程序時(shí),其可以是獨(dú)立的軟件工具或服務(wù),或者是開發(fā)工具包用以集成到應(yīng)用服務(wù)系統(tǒng)中。這樣,在用戶登錄特定應(yīng)用服務(wù)需要進(jìn)行身份驗(yàn)證時(shí),可以調(diào)用相應(yīng)的客戶端程序來生成驗(yàn)證碼,將所生成的驗(yàn)證碼提交給服務(wù)端程序以進(jìn)行驗(yàn)證。
接下來,將參照?qǐng)D9至圖11描述根據(jù)本公開的實(shí)施例的技術(shù)在應(yīng)用服務(wù)環(huán)境中的登錄身份認(rèn)證應(yīng)用的示例。圖9是示出根據(jù)本公開的實(shí)施例的技術(shù)在應(yīng)用服務(wù)環(huán)境中的登錄身份認(rèn)證應(yīng)用的示例的示意圖。
如圖9所示,應(yīng)用服務(wù)appui是用戶在使用應(yīng)用服務(wù)時(shí)的用戶登錄界面,一種可能的應(yīng)用界面實(shí)現(xiàn)如圖10所示。在圖9所示的示例中,提供應(yīng)用服務(wù)的服務(wù)器和提供驗(yàn)證服務(wù)的服務(wù)器是獨(dú)立的實(shí)體。具體地,在用戶登錄應(yīng)用服務(wù)時(shí),可調(diào)用客戶端200來生成驗(yàn)證碼。然后,客戶端200發(fā)起一次隨機(jī)事務(wù),生成驗(yàn)證碼,廣播該事務(wù)以使其記錄在數(shù)據(jù)平臺(tái)系統(tǒng)100內(nèi),并且將所生成的驗(yàn)證碼和事務(wù)標(biāo)識(shí)信息發(fā)送給服務(wù)端300。在數(shù)據(jù)平臺(tái)系統(tǒng)100確認(rèn)了該次隨機(jī)事務(wù)之后,服務(wù)端300驗(yàn)證所接收的驗(yàn)證碼的有效性,并且將驗(yàn)證結(jié)果發(fā)送給應(yīng)用服務(wù)器。應(yīng)用服務(wù)器對(duì)其他用戶登錄信息(諸如用戶名和密碼)進(jìn)行驗(yàn)證,并且將驗(yàn)證碼的驗(yàn)證結(jié)果和其他用戶登錄信息的驗(yàn)證結(jié)果返回給應(yīng)用服務(wù)appui,如果所有驗(yàn)證結(jié)果均表示驗(yàn)證通過,則用戶可以成功登錄應(yīng)用服務(wù),反之,如果任一驗(yàn)證結(jié)果表示驗(yàn)證失敗,則用戶無法登錄應(yīng)用服務(wù)。
應(yīng)理解,上述由客戶端200生成驗(yàn)證碼并且由服務(wù)端300驗(yàn)證驗(yàn)證碼的過程可以是在后臺(tái)執(zhí)行的,對(duì)于用戶完全透明的。例如,如圖10所示,當(dāng)需要生成驗(yàn)證碼時(shí),用戶可點(diǎn)擊界面中的按鈕“點(diǎn)擊獲取驗(yàn)證碼”,從而通過在后臺(tái)執(zhí)行本發(fā)明的驗(yàn)證碼生成過程,所生成的驗(yàn)證碼顯示在“區(qū)塊鏈驗(yàn)證碼”后的輸入框內(nèi)。然后,用戶點(diǎn)擊按鈕“登錄”,則通過在后臺(tái)執(zhí)行本發(fā)明的驗(yàn)證碼驗(yàn)證過程來驗(yàn)證所生成的驗(yàn)證碼的真實(shí)性,驗(yàn)證通過,則用戶可登錄應(yīng)用服務(wù),否則可彈出警告消息例如“驗(yàn)證碼錯(cuò)誤”而拒絕用戶登錄服務(wù)??梢钥闯觯唧w的驗(yàn)證碼生成和驗(yàn)證過程對(duì)于用戶來說是完全透明的,不需要用戶的參與,從而不會(huì)增加操作復(fù)雜性。
圖11是示出根據(jù)本公開的實(shí)施例的技術(shù)在網(wǎng)絡(luò)應(yīng)用服務(wù)環(huán)境中的登錄身份認(rèn)證應(yīng)用的另一示例的示意圖。
如圖11所示,圖11所示的應(yīng)用示例與圖9所示的示例基本上相同,區(qū)別僅在于,應(yīng)用服務(wù)器和驗(yàn)證服務(wù)端是同一實(shí)體,從而可以由應(yīng)用服務(wù)器完成驗(yàn)證碼和其他登錄信息的驗(yàn)證。其他具體過程可參見圖9的示例的描述,在此不再贅述。
下面,將作為示例具體描述根據(jù)本公開的技術(shù)在信用卡驗(yàn)證碼服務(wù)中的應(yīng)用。
隨著網(wǎng)絡(luò)支付交易量的日益增大,信用卡驗(yàn)證碼(cardverificationcode(cvc)或cardverificationvalue(cvv))的安全也日益受到銀行和客戶的重視。因?yàn)樵擈?yàn)證碼是印在信用卡背面的附加碼,一般是3位數(shù)字,所以只要是卡被除用戶以外的人看到,均可能被記住。為了解決cvv的安全問題,提出了動(dòng)態(tài)cvv技術(shù)。例如,dynamicsinc公司為mastercard的客戶提拱的動(dòng)態(tài)驗(yàn)證碼的解決方案,該動(dòng)態(tài)驗(yàn)證碼基于卡上的led或顯示器來顯示,每次交易時(shí)會(huì)有一個(gè)隨機(jī)的驗(yàn)證碼供用戶使用,當(dāng)然這個(gè)解決方案是基于可顯示的卡設(shè)計(jì)的,而目前的帶顯示的銀行卡一般使用3位的電子紙(e-paper)或lcd;gemalto公司推出的動(dòng)態(tài)cvv方案,其使用每20分鐘變化一次的動(dòng)態(tài)驗(yàn)證碼取代之前使用的靜態(tài)3位信用卡驗(yàn)證碼,該動(dòng)態(tài)cvv碼可以在用戶的手機(jī)實(shí)現(xiàn)也可以在有顯示模塊的卡上使用;以及tenderarmor公司推出的cvvplus產(chǎn)品,該動(dòng)態(tài)cvv由服務(wù)商生成,每天更新并通過手機(jī)或電子郵件推送給持卡者,或者持卡者也可以隨時(shí)申請(qǐng)新的cvvplus碼等??梢钥闯?,現(xiàn)有的動(dòng)態(tài)cvv解決方案要么是基于服務(wù)端生成,定時(shí)或不定時(shí)下傳給用戶端,要么是基于客戶端和服務(wù)器同步產(chǎn)生隨機(jī)數(shù)的模式而實(shí)現(xiàn)的,即客戶端(手機(jī)或卡)和服務(wù)端(銀行或第三方)各有一個(gè)同步的隨機(jī)數(shù)發(fā)生器,保障雙方在同一時(shí)段獲得同樣的驗(yàn)證碼。無論前者還是后者,服務(wù)器都要維護(hù)一個(gè)龐大的、針對(duì)所有用戶的cvv生成系統(tǒng)。
相比之下,如上所述,在基于本發(fā)明實(shí)現(xiàn)的動(dòng)態(tài)cvv的應(yīng)用中,既不需要提供帶顯示的銀行卡,也不需要在后臺(tái)維護(hù)龐大的cvv生成系統(tǒng),而是可以根據(jù)用戶的需要而由用戶主動(dòng)發(fā)起動(dòng)態(tài)cvv的生成,從而可以隨時(shí)為用戶提供動(dòng)態(tài)cvv或者提供在一定時(shí)間內(nèi)有效的動(dòng)態(tài)cvv,這樣,在提高安全性的同時(shí)還大大降低了系統(tǒng)成本。下面將結(jié)合本發(fā)明的技術(shù),簡(jiǎn)要描述基于本發(fā)明的動(dòng)態(tài)cvv實(shí)現(xiàn)方案。
在基于本發(fā)明中實(shí)現(xiàn)的動(dòng)態(tài)的信用卡驗(yàn)證碼應(yīng)用中,客戶端可以是基于手機(jī)的應(yīng)用程序、電腦平臺(tái)的應(yīng)用服務(wù)程序或者其他形式的智能終端上的應(yīng)用服務(wù)程序,而服務(wù)端則包括在銀行服務(wù)系統(tǒng)中。此外,應(yīng)指出,在本應(yīng)用示例中,數(shù)據(jù)平臺(tái)系統(tǒng)所基于的區(qū)塊鏈可以是公有鏈,或者也可以是銀行的私有鏈,或者也可以是二者的結(jié)合。
假設(shè)用戶在網(wǎng)銀交易中被要求輸入動(dòng)態(tài)cvv,此時(shí)用戶可以啟動(dòng)客戶端程序,完成2個(gè)設(shè)定賬戶間的隨機(jī)事務(wù),該隨機(jī)事務(wù)最終將被記錄在數(shù)據(jù)平臺(tái)系統(tǒng)中。
然后,客戶端基于此次事務(wù)相關(guān)的信息生成一個(gè)3位的驗(yàn)證碼,該驗(yàn)證碼作為此次網(wǎng)銀支付的動(dòng)態(tài)cvv由用戶通過網(wǎng)銀系統(tǒng)提交給銀行系統(tǒng)。在生成cvv時(shí),除了此次事務(wù)相關(guān)信息之外,其他用戶相關(guān)信息也可參與到cvv的生成,例如:歷史事務(wù)記錄、用戶賬戶地址(例如,區(qū)塊鏈系統(tǒng)的walletaddress)、用戶信用卡相關(guān)的信息等等。
接下來,客戶端程序在數(shù)據(jù)平臺(tái)系統(tǒng)中廣播該次事務(wù),該事務(wù)在下一個(gè)周期中被記錄在數(shù)據(jù)平臺(tái)系統(tǒng)中。在該事務(wù)被記錄在數(shù)據(jù)平臺(tái)系統(tǒng)中之后,銀行系統(tǒng)可通過查詢數(shù)據(jù)平臺(tái)系統(tǒng)中的相關(guān)記錄,驗(yàn)證該cvv的有效性,若驗(yàn)證通過,則可認(rèn)為商家已取得用戶授權(quán),從而完成此次支付交易。
應(yīng)理解,盡管這里以動(dòng)態(tài)cvv為例描述了本發(fā)明的應(yīng)用示例,但是本公開并不限于此,而是可類似地應(yīng)用于任何需要安全身份認(rèn)證的領(lǐng)域。
另外,還應(yīng)該指出的是,上述系列處理和裝置也可以通過軟件和/或固件實(shí)現(xiàn)。在通過軟件和/或固件實(shí)現(xiàn)的情況下,從存儲(chǔ)介質(zhì)或網(wǎng)絡(luò)向具有專用硬件結(jié)構(gòu)的計(jì)算機(jī),例如圖12所示的通用個(gè)人計(jì)算機(jī)1200安裝構(gòu)成該軟件的程序,該計(jì)算機(jī)在安裝有各種程序時(shí),能夠執(zhí)行各種功能等等。
在圖12中,中央處理單元(cpu)1201根據(jù)只讀存儲(chǔ)器(rom)1202中存儲(chǔ)的程序或從存儲(chǔ)部分1208加載到隨機(jī)存取存儲(chǔ)器(ram)1203的程序執(zhí)行各種處理。在ram1203中,也根據(jù)需要存儲(chǔ)當(dāng)cpu1201執(zhí)行各種處理等等時(shí)所需的數(shù)據(jù)。
cpu1201、rom1202和ram1203經(jīng)由總線1204彼此連接。輸入/輸出接口1205也連接到總線1204。
下述部件連接到輸入/輸出接口1205:輸入部分1206,包括鍵盤、鼠標(biāo)等等;輸出部分1207,包括顯示器,比如陰極射線管(crt)、液晶顯示器(lcd)等等,和揚(yáng)聲器等等;存儲(chǔ)部分1208,包括硬盤等等;和通信部分1209,包括網(wǎng)絡(luò)接口卡比如lan卡、調(diào)制解調(diào)器等等。通信部分1209經(jīng)由網(wǎng)絡(luò)比如因特網(wǎng)執(zhí)行通信處理。
根據(jù)需要,驅(qū)動(dòng)器1210也連接到輸入/輸出接口1205??刹鹦督橘|(zhì)1211比如磁盤、光盤、磁光盤、半導(dǎo)體存儲(chǔ)器等等根據(jù)需要被安裝在驅(qū)動(dòng)器1210上,使得從中讀出的計(jì)算機(jī)程序根據(jù)需要被安裝到存儲(chǔ)部分1208中。
在通過軟件實(shí)現(xiàn)上述系列處理的情況下,從網(wǎng)絡(luò)比如因特網(wǎng)或存儲(chǔ)介 質(zhì)比如可拆卸介質(zhì)1211安裝構(gòu)成軟件的程序。
本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,這種存儲(chǔ)介質(zhì)不局限于圖12所示的其中存儲(chǔ)有程序、與設(shè)備相分離地分發(fā)以向用戶提供程序的可拆卸介質(zhì)1211。可拆卸介質(zhì)1211的例子包含磁盤(包含軟盤(注冊(cè)商標(biāo)))、光盤(包含光盤只讀存儲(chǔ)器(cd-rom)和數(shù)字通用盤(dvd))、磁光盤(包含迷你盤(md)(注冊(cè)商標(biāo)))和半導(dǎo)體存儲(chǔ)器。或者,存儲(chǔ)介質(zhì)可以是rom1202、存儲(chǔ)部分1208中包含的硬盤等等,其中存有程序,并且與包含它們的設(shè)備一起被分發(fā)給用戶。
還需要指出的是,執(zhí)行上述系列處理的步驟可以自然地根據(jù)說明的順序按時(shí)間順序執(zhí)行,但是并不需要一定根據(jù)時(shí)間順序執(zhí)行。某些步驟可以并行或彼此獨(dú)立地執(zhí)行。
例如,在以上實(shí)施例中包括在一個(gè)單元中的多個(gè)功能可以由分開的裝置來實(shí)現(xiàn)。替選地,在以上實(shí)施例中由多個(gè)單元實(shí)現(xiàn)的多個(gè)功能可分別由分開的裝置來實(shí)現(xiàn)。另外,以上功能之一可由多個(gè)單元來實(shí)現(xiàn)。無需說,這樣的配置包括在本公開的技術(shù)范圍內(nèi)。
在該說明書中,流程圖中所描述的步驟不僅包括以所述順序按時(shí)間序列執(zhí)行的處理,而且包括并行地或單獨(dú)地而不是必須按時(shí)間序列執(zhí)行的處理。此外,甚至在按時(shí)間序列處理的步驟中,無需說,也可以適當(dāng)?shù)馗淖冊(cè)擁樞颉?/p>
雖然已經(jīng)詳細(xì)說明了本公開及其優(yōu)點(diǎn),但是應(yīng)當(dāng)理解在不脫離由所附的權(quán)利要求所限定的本公開的精神和范圍的情況下可以進(jìn)行各種改變、替代和變換。而且,本公開實(shí)施例的術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。