本申請實施例涉及身份識別技術領域,尤其涉及基于區(qū)塊鏈的信息驗證方法及裝置。
背景技術:
隨著信息化時代的到來,越來越多的信息需要通過互聯(lián)網(wǎng)進行傳播。為了對互聯(lián)網(wǎng)中傳播的大量信息進行驗證,數(shù)字簽名技術便應運而生了。數(shù)字簽名也稱為數(shù)字簽字、電子簽章或電子簽名,它是信息安全的核心技術之一,主要用于在網(wǎng)絡活動中替代傳統(tǒng)生活中的手寫簽名與傳統(tǒng)印章。利用數(shù)字簽名技術能夠較好地實現(xiàn)信息驗證功能。但是,由于數(shù)字簽名很容易被精確復制,因此,當用數(shù)字簽名替代私密數(shù)據(jù)的書面簽名時,簽名副本的肆意傳播很容易導致私密數(shù)據(jù)的泄露,對數(shù)據(jù)安全造成威脅。而且,數(shù)字簽名一旦被惡意偽造,則會對簽名者帶來不可估量的損失。
為了進一步提高數(shù)字簽名的安全性,現(xiàn)有技術中提出了一種利用區(qū)塊鏈來記錄信息及其簽名的方式。在該種方式中,信息發(fā)布者對信息進行數(shù)字簽名后,將信息及其簽名存儲到區(qū)塊鏈中,從而利用區(qū)塊鏈不易篡改、安全性高的優(yōu)勢來提升信息存儲的安全性。
但是,發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn),現(xiàn)有技術中的方式至少存在下述問題:由于區(qū)塊鏈具有公開化的特點,因此,所有接入?yún)^(qū)塊鏈的網(wǎng)絡節(jié)點都能夠訪問到信息發(fā)布者發(fā)布的信息及其簽名,因此,無法保障私密數(shù)據(jù)的安全性,例如,一旦公開在區(qū)塊鏈中的信息及其簽名被惡意偽造,則會給信息發(fā)布者帶來巨大損失。由此可見,目前亟需一種能夠兼顧信息的安全性與私密性的信息驗證方式。
技術實現(xiàn)要素:
鑒于上述問題,提出了本申請實施例以便提供一種解決上述問題的基于區(qū)塊鏈的信息驗證方法及裝置。
依據(jù)本申請實施例的一個方面,提供了一種基于區(qū)塊鏈的信息驗證方法,包括:根據(jù)待驗證信息生成對應的有效簽名信息,將有效簽名信息存儲到區(qū)塊鏈中;根據(jù)待驗證信息生成對應的無效簽名信息,將無效簽名信息存儲到區(qū)塊鏈中;接收驗證節(jié)點根據(jù)區(qū)塊鏈中存儲的有效簽名信息或無效簽名信息生成的驗證請求消息;對驗證請求消息進行驗證,根據(jù)驗證結果向驗證節(jié)點返回信息有效消息或信息無效消息。
依據(jù)本申請實施例的另一個方面,提供了一種基于區(qū)塊鏈的信息驗證裝置,包括:有效簽名模塊,用于根據(jù)待驗證信息生成對應的有效簽名信息,將有效簽名信息存儲到區(qū)塊鏈中;無效簽名模塊,用于根據(jù)待驗證信息生成對應的無效簽名信息,將無效簽名信息存儲到區(qū)塊鏈中;消息接收模塊,用于接收驗證節(jié)點根據(jù)區(qū)塊鏈中存儲的有效簽名信息或無效簽名信息生成的驗證請求消息;消息驗證模塊,用于對驗證請求消息進行驗證,根據(jù)驗證結果向驗證節(jié)點返回信息有效消息或信息無效消息。
在本申請實施例提供的一種基于區(qū)塊鏈的信息驗證方法及裝置中,能夠針對待驗證信息分別生成有效簽名信息以及無效簽名信息,從而將有效簽名信息和無效簽名信息摻雜存儲到區(qū)塊鏈中。由此一來,一方面,能夠達到迷惑用戶的目的,從而有效保護數(shù)據(jù)的私密性;另一方面,本申請實施例中的待驗證信息通過區(qū)塊鏈進行存儲,能夠有效利用區(qū)塊鏈不易篡改、安全性高的優(yōu)勢,并且,區(qū)塊鏈中的信息需要經(jīng)過簽名者的驗證方可辨認真?zhèn)?,從而進一步提升了信息驗證時的安全性。由此可見,本申請實施例中的信息驗證方式能夠兼顧信息的安全性與私密性。
上述說明僅是本申請實施例技術方案的概述,為了能夠更清楚了解本申請實施例的技術手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本申請實施例的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本申請的具體實施方式。
附圖說明
一個或多個實施例通過與之對應的附圖中的圖片進行示例性說明,這些示例性說明并不構成對實施例的限定,附圖中具有相同參考數(shù)字標號的元件表示為類似的元件,除非有特別申明,附圖中的圖不構成比例限制。
圖1是本申請實施例一提供的一種基于區(qū)塊鏈的信息驗證方法的流程圖;
圖2是本申請實施例二提供的一種基于區(qū)塊鏈的信息驗證方法的流程圖;
圖3是本申請實施例三提供的一種基于區(qū)塊鏈的信息驗證裝置的結構示意圖;
圖4是本申請實施例四提供的一種基于區(qū)塊鏈的信息驗證裝置的結構示意圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領域的技術人員。
實施例一
圖1是本申請實施例一提供的一種基于區(qū)塊鏈的信息驗證方法的流程圖。如圖1所示,該方法包括:
步驟S110:根據(jù)待驗證信息生成對應的有效簽名信息,將有效簽名信息存儲到區(qū)塊鏈中。
其中,根據(jù)待驗證信息生成有效簽名信息的方式可以靈活設定,例如,本領域技術人員可以靈活采用各種數(shù)字簽名算法對真實的待驗證信息進行簽名,從而生成與真實的待驗證信息對應的有效簽名信息。具體地,可以采用不可否認簽名算法進行簽名。由于不可否認簽名算法必須簽名者參與方可驗證真?zhèn)危虼?,能夠顯著提升信息安全性。
另外,將有效簽名信息存儲到區(qū)塊鏈時,也可以靈活采用各種方式存儲,例如,可以由區(qū)塊鏈中的打包節(jié)點負責將有效簽名信息打包存儲到區(qū)塊鏈中;也可以將有效簽名信息廣播到區(qū)塊鏈網(wǎng)絡中,通過廣播方式進行存儲。
步驟S120:根據(jù)待驗證信息生成對應的無效簽名信息,將無效簽名信息存儲到區(qū)塊鏈中。
其中,根據(jù)待驗證信息生成無效簽名信息的方式也可以靈活設定,例如,在一種實現(xiàn)方式中,可以利用隨機算法生成一個隨機數(shù),并將該隨機數(shù)作為無效簽名信息。又如,在另一種實現(xiàn)方式中,還可以利用各種數(shù)字簽名算法對偽造的待驗證信息進行簽名,從而生成與偽造的待驗證信息對應的無效簽名信息。另外,將無效簽名信息存儲到區(qū)塊鏈時,也可以靈活采用各種方式存儲,例如,可以由區(qū)塊鏈中的打包節(jié)點負責將無效簽名信息打包存儲到區(qū)塊鏈中;也可以將有效簽名信息廣播到區(qū)塊鏈網(wǎng)絡中,通過廣播方式進行存儲。
總之,本實施例中并不限定有效簽名信息和無效簽名信息的具體生成方式,只要能夠?qū)崿F(xiàn)真假信息摻雜存儲,從而迷惑攻擊者的目的即可。
步驟S130:接收驗證節(jié)點根據(jù)區(qū)塊鏈中存儲的有效簽名信息或無效簽名信息生成的驗證請求消息。
其中,驗證節(jié)點可以是接入到區(qū)塊鏈中的任意網(wǎng)絡節(jié)點,例如,可以是完全節(jié)點,也可以是不完全節(jié)點,總之,只要是能夠獲取到區(qū)塊鏈中的存儲信息的網(wǎng)絡節(jié)點均可以作為驗證節(jié)點。
當驗證節(jié)點獲取到區(qū)塊鏈中存儲的有效簽名信息或無效簽名信息后,根據(jù)有效簽名信息或無效簽名信息生成驗證請求消息,該驗證請求消息可以通過各種方式生成,只要能夠?qū)崿F(xiàn)驗證信息真?zhèn)蔚哪康募纯伞@?,可以通過預設的算法對有效簽名信息或無效簽名信息進行運算,將運算結果包含在上述的驗證請求消息中。
步驟S140:對驗證請求消息進行驗證,根據(jù)驗證結果向驗證節(jié)點返回信息有效消息或信息無效消息。
具體地,對驗證請求消息進行驗證的具體實現(xiàn)方式可由本領域技術人員靈活設定,例如,當驗證請求消息中包含通過預設的算法對有效簽名信息或無效簽名信息進行運算后得到的運算結果時,可以對該運算結果進行逆運算,以確定驗證請求消息對應的原始簽名信息,從而驗證原始簽名信息為有效簽名信息或無效簽名信息,進而返回相應的消息。
其中,信息有效消息或信息無效消息中可以直接包含驗證結果,以便驗證節(jié)點能夠直接地、快速地根據(jù)信息有效消息或信息無效消息確定信息真?zhèn)?;也可以僅包含利用約定算法產(chǎn)生的反饋結果,以便驗證節(jié)點通過對該反饋結果進行處理后根據(jù)處理結果確認信息真?zhèn)危瑥亩M一步提升驗證過程的安全性。
由此可見,在本申請實施例提供的一種基于區(qū)塊鏈的信息驗證方法中,能夠針對待驗證信息分別生成有效簽名信息以及無效簽名信息,從而將有效簽名信息和無效簽名信息摻雜存儲到區(qū)塊鏈中。由此一來,一方面,能夠達到迷惑用戶的目的,從而有效保護數(shù)據(jù)的私密性;另一方面,本申請實施例中的待驗證信息通過區(qū)塊鏈進行存儲,能夠有效利用區(qū)塊鏈不易篡改、安全性高的優(yōu)勢,并且,區(qū)塊鏈中的信息需要經(jīng)過簽名者的驗證方可辨認真?zhèn)?,從而進一步提升了信息驗證時的安全性。由此可見,本申請實施例中的信息驗證方式能夠兼顧信息的安全性與私密性。
實施例二
圖2是本申請實施例二提供的一種基于區(qū)塊鏈的信息驗證方法的流程圖。如圖2所示,該方法包括:
步驟S210:簽名節(jié)點根據(jù)待驗證信息生成對應的有效簽名信息,將有效簽名信息存儲到區(qū)塊鏈中。
其中,簽名節(jié)點是區(qū)塊鏈中的一個網(wǎng)絡節(jié)點,通常為信息發(fā)布方。在本實施例中,簽名節(jié)點根據(jù)待驗證信息生成有效簽名信息時,通過不可否認簽名算法對待驗證信息進行簽名,相應地,有效簽名信息中包含待驗證信息的信息內(nèi)容、待驗證信息的不可否認簽名、以及簽名公鑰。當然,除單獨采用不可否認簽名算法外,還可以采用不可否認簽名算法與其他簽名算法(例如盲簽名)相結合的方式實現(xiàn),從而更好地確保簽名信息的安全性。
將有效簽名信息存儲到區(qū)塊鏈時,首先生成區(qū)塊鏈中的一筆交易,然后將有效簽名信息寫入該筆交易中(例如,可以寫入該筆交易的OP_RETURN部分),最后將該筆交易廣播到區(qū)塊鏈中,以便區(qū)塊鏈中的各個網(wǎng)絡節(jié)點均能獲取到該筆交易中包含的信息。
步驟S220:簽名節(jié)點根據(jù)待驗證信息生成對應的無效簽名信息,將無效簽名信息存儲到區(qū)塊鏈中。
為了防止真實信息的泄露,在本實施例中,簽名節(jié)點進一步根據(jù)待驗證信息生成對應的無效簽名信息,以達到迷惑攻擊者的目的。具體實現(xiàn)時,無效簽名信息中可以包含待驗證信息的信息內(nèi)容、待驗證信息的偽簽名、以及簽名公鑰。其中,無效簽名信息中包含的待驗證信息的信息內(nèi)容可以是與真實信息內(nèi)容對應的相似信息內(nèi)容,即:信息內(nèi)容本身并非真實有效的,但是與真實信息內(nèi)容非常相似。另外,無效簽名信息中包含的偽簽名可以通過各類方式實現(xiàn),只要能夠區(qū)別于真簽名即可,例如,可以通過隨機簽名實現(xiàn),即:通過隨機算法生成一個隨機數(shù),將該隨機數(shù)作為待驗證信息的偽簽名。
另外,將無效簽名信息存儲到區(qū)塊鏈時,首先生成區(qū)塊鏈中的另一筆交易,然后將無效簽名信息寫入該筆交易中(例如,可以寫入該筆交易的OP_RETURN部分),最后將該筆交易廣播到區(qū)塊鏈中,以便區(qū)塊鏈中的各個網(wǎng)絡節(jié)點均能獲取到該筆交易中包含的信息。
步驟S230:驗證節(jié)點獲取區(qū)塊鏈中存儲的有效簽名信息或無效簽名信息。
其中,驗證節(jié)點可以是接入到區(qū)塊鏈中的任意網(wǎng)絡節(jié)點,例如,可以是完全節(jié)點,也可以是不完全節(jié)點。驗證節(jié)點可以通過獲取區(qū)塊鏈中的交易記錄的方式獲取到有效簽名信息或無效簽名信息。為了便于描述,下文將有效簽名信息和無效簽名信息統(tǒng)稱為待驗證簽名信息。
步驟S240:驗證節(jié)點根據(jù)待驗證簽名信息生成并發(fā)送驗證請求消息。
具體地,由于驗證節(jié)點本身無法判斷獲取到的待驗證簽名信息是否有效,因此,需要通過與簽名節(jié)點交互的方式進行確認。在本實施例中,驗證請求消息通過下述方式生成:首先,驗證節(jié)點分析待驗證簽名信息的信息內(nèi)容,獲取其中包含的待驗證信息的信息內(nèi)容、待驗證信息的簽名(該簽名既可能是真簽名也可能是偽簽名)、以及簽名公鑰。然后,通過隨機算法生成并保存一個隨機數(shù),利用待驗證信息的信息內(nèi)容、待驗證信息的簽名、簽名公鑰以及隨機數(shù)作為參數(shù)進行預設計算,將計算結果作為驗證信息數(shù)據(jù),將驗證信息數(shù)據(jù)包含在驗證請求消息中發(fā)送給簽名節(jié)點。
步驟S250:簽名節(jié)點接收驗證節(jié)點發(fā)送的驗證請求消息,根據(jù)驗證請求消息中包含的驗證節(jié)點的身份信息判斷驗證節(jié)點是否為合法節(jié)點。
可選地,為了防止區(qū)塊鏈中的大量無關節(jié)點惡意發(fā)送驗證請求消息,以耗費簽名節(jié)點的系統(tǒng)資源,并防止簽名信息的泄露,在本實施例中,簽名節(jié)點預先設置并存儲了合法節(jié)點的身份信息,合法節(jié)點可以是與簽名節(jié)點存在業(yè)務往來或其他關聯(lián)的網(wǎng)絡節(jié)點。相應地,在上一步驟中,驗證節(jié)點發(fā)送的驗證請求消息中進一步包含驗證節(jié)點的身份信息,在本步驟中,簽名節(jié)點首先根據(jù)身份信息判斷發(fā)送驗證請求消息的網(wǎng)絡節(jié)點是否為合法節(jié)點,若判斷結果為否,則執(zhí)行步驟S260;若判斷結果為是,則執(zhí)行步驟S270。
步驟S260:向驗證節(jié)點返回驗證失敗消息。
具體地,當驗證節(jié)點并非合法節(jié)點時,簽名節(jié)點拒絕為該驗證節(jié)點驗證,從而向其返回驗證失敗消息,該方法結束。
步驟S270:簽名節(jié)點對驗證請求消息進行驗證,并根據(jù)驗證結果向驗證節(jié)點返回信息有效消息或信息無效消息。
具體地,簽名節(jié)點獲取上述驗證請求消息中包含的驗證信息數(shù)據(jù),根據(jù)該驗證信息數(shù)據(jù)生成相應的驗證結果。例如,簽名節(jié)點首先獲取驗證信息數(shù)據(jù)中包含的數(shù)據(jù)內(nèi)容(如上文提到的待驗證信息的信息內(nèi)容、待驗證信息的簽名、簽名公鑰),然后,將該數(shù)據(jù)內(nèi)容以及信息內(nèi)容、簽名和公鑰等信息作為參數(shù)進行預設的計算后得到驗證結果。相應地,返回的信息有效消息或信息無效消息中包含該驗證結果,以供驗證節(jié)點根據(jù)該驗證結果以及上述步驟S240中保存的隨機數(shù)判斷信息是否有效。因此,也可以將信息有效消息和信息無效消息統(tǒng)稱為驗證結果消息。具體地,驗證節(jié)點可以將信息內(nèi)容、簽名以及隨機數(shù)作為參數(shù),對驗證結果進行預設計算后根據(jù)計算結果判斷待驗證信息的真?zhèn)巍F渲?,驗證節(jié)點進行判斷時所采用的隨機數(shù)與步驟S240中保存的隨機數(shù)相同,若步驟S240中保存的隨機數(shù)是與信息有效信息對應的隨機數(shù),則驗證節(jié)點進行判斷時所采用的隨機數(shù)也是與信息有效信息對應的隨機數(shù);若步驟S240中保存的隨機數(shù)是與信息無效信息對應的隨機數(shù),則驗證節(jié)點進行判斷時所采用的隨機數(shù)也是與信息無效信息對應的隨機數(shù)。
為了加深對本實施例的理解,下面給出本實施例中采用的不可否認簽名算法的具體簽名及驗證方式:
1.產(chǎn)生系統(tǒng)參數(shù)
設p是一個大素數(shù),并且p=2q+1,其中q也是素數(shù),Zp*中的離散對數(shù)是難解的。
隨機取Zp*中的階為q的元素g,由此構造Zp*的q階乘法子群G(即g為G的生成元),
在{1,2…,q-1}中隨機選擇作為SK,
令PK=gSKmod p,
將PK與p,g一起作為公鑰公開,而SK作為簽名用戶的秘密密鑰。
2.簽名過程
信息發(fā)布方要對消息m∈G簽名,可用其密鑰SK計算s=(m)SK mod p,把s作為對m的簽名連同m一起發(fā)給對方。但這個s事實上是無法被其他人證實的。
3.驗證協(xié)議:
接收方收到s和m后,選擇隨機數(shù)k1,k2∈Zp*,并計算c=sk1PKk2mod p,把c送給簽名者。
簽名者在收到c后計算d=c(modq)/SKmodp,并把d送給簽名的接收者。
接收方計算t=mk1gk2modp,當且僅當t=d時可確定s是一個對m的合法簽名。
綜上可知,本發(fā)明一方面使用區(qū)塊鏈來存儲信息,充分利用了區(qū)塊鏈的分布式,不易篡改的特性,另一方面通過不可否認簽名和摻雜錯誤數(shù)據(jù)的方式,使簽名的驗證者只有和簽名者交互才能確定信息是否真實及簽名是否合法,否則無法確定信息的真?zhèn)危行У胤乐沽藗卧旌灻碾[患。另外,摻雜錯誤數(shù)據(jù)的方式使得在不驗證的情況下,其他用戶無法知道哪一條信息是正確的,因而隱藏了真實信息。因此,在大量的信息數(shù)據(jù)集合中,通過摻雜錯誤數(shù)據(jù)的方法能夠有效干擾他人獲知有效信息,使用不可否認簽名的方式,簽名者在區(qū)塊鏈上選擇性地為其他用戶校驗簽名,因而保證了無關人員無法獲知真實信息及簽名是否有效。
實施例三
圖3是本申請實施例三提供的一種基于區(qū)塊鏈的信息驗證裝置的結構示意圖。如圖3所述,該裝置包括:有效簽名模塊310、無效簽名模塊320、消息接收模塊330和消息驗證模塊340。
有效簽名模塊310,用于根據(jù)待驗證信息生成對應的有效簽名信息,將有效簽名信息存儲到區(qū)塊鏈中。
其中,有效簽名模塊310根據(jù)待驗證信息生成有效簽名信息的方式可以靈活設定,例如,本領域技術人員可以靈活采用各種數(shù)字簽名算法對待驗證信息進行簽名,從而生成與待驗證信息對應的有效簽名信息。具體地,可以采用盲簽名算法、不可否認簽名算法等各類簽名算法實現(xiàn)。
另外,有效簽名模塊310將有效簽名信息存儲到區(qū)塊鏈時,也可以靈活采用各種方式存儲,例如,可以由區(qū)塊鏈中的打包節(jié)點負責將有效簽名信息打包存儲到區(qū)塊鏈中;也可以將有效簽名信息廣播到區(qū)塊鏈網(wǎng)絡中,通過廣播方式進行存儲。
無效簽名模塊320,用于根據(jù)待驗證信息生成對應的無效簽名信息,將無效簽名信息存儲到區(qū)塊鏈中。
其中,無效簽名模塊320根據(jù)待驗證信息生成無效簽名信息的方式也可以靈活設定,例如,在一種實現(xiàn)方式中,無效簽名模塊320可以利用隨機算法生成一個隨機數(shù),并將該隨機數(shù)作為無效簽名信息。另外,無效簽名模塊320將無效簽名信息存儲到區(qū)塊鏈時,也可以靈活采用各種方式存儲,例如,可以由區(qū)塊鏈中的打包節(jié)點負責將無效簽名信息打包存儲到區(qū)塊鏈中;也可以將有效簽名信息廣播到區(qū)塊鏈網(wǎng)絡中,通過廣播方式進行存儲。
消息接收模塊330,用于接收驗證節(jié)點根據(jù)區(qū)塊鏈中存儲的有效簽名信息或無效簽名信息生成的驗證請求消息。
其中,驗證節(jié)點可以是接入到區(qū)塊鏈中的任意網(wǎng)絡節(jié)點,例如,可以是完全節(jié)點,也可以是不完全節(jié)點,總之,只要是能夠獲取到區(qū)塊鏈中的存儲信息的網(wǎng)絡節(jié)點均可以作為驗證節(jié)點。
當驗證節(jié)點獲取到區(qū)塊鏈中存儲的有效簽名信息或無效簽名信息后,根據(jù)有效簽名信息或無效簽名信息生成驗證請求消息,該驗證請求消息可以通過各種方式生成,只要能夠?qū)崿F(xiàn)驗證信息真?zhèn)蔚哪康募纯?。例如,可以通過預設的算法對有效簽名信息或無效簽名信息進行運算,將運算結果包含在上述的驗證請求消息中。
消息驗證模塊340,用于對驗證請求消息進行驗證,根據(jù)驗證結果向驗證節(jié)點返回信息有效消息或信息無效消息。
具體地,對驗證請求消息進行驗證的具體實現(xiàn)方式可由本領域技術人員靈活設定,例如,當驗證請求消息中包含通過預設的算法對有效簽名信息或無效簽名信息進行運算后得到的運算結果時,可以對該運算結果進行逆運算,以確定驗證請求消息對應的原始簽名信息,從而驗證原始簽名信息為有效簽名信息或無效簽名信息,進而返回相應的消息。
其中,信息有效消息或信息無效消息中可以直接包含驗證結果,以便驗證節(jié)點能夠直接地、快速地根據(jù)信息有效消息或信息無效消息確定信息真?zhèn)?;也可以僅包含利用約定算法產(chǎn)生的反饋結果,以便驗證節(jié)點通過對該反饋結果進行處理后根據(jù)處理結果確認信息真?zhèn)?,從而進一步提升驗證過程的安全性。
上述各個模塊的具體工作原理可參照方法實施例中相應步驟的描述,此處不再贅述。
由此可見,在本申請實施例提供的一種基于區(qū)塊鏈的信息驗證裝置中,能夠針對待驗證信息分別生成有效簽名信息以及無效簽名信息,從而將有效簽名信息和無效簽名信息摻雜存儲到區(qū)塊鏈中。由此一來,一方面,能夠達到迷惑用戶的目的,從而有效保護數(shù)據(jù)的私密性;另一方面,本申請實施例中的待驗證信息通過區(qū)塊鏈進行存儲,能夠有效利用區(qū)塊鏈不易篡改、安全性高的優(yōu)勢,并且,區(qū)塊鏈中的信息需要經(jīng)過簽名者的驗證方可辨認真?zhèn)危瑥亩M一步提升了信息驗證時的安全性。由此可見,本申請實施例中的信息驗證裝置能夠兼顧信息的安全性與私密性。
實施例四
圖4是本申請實施例四提供的一種基于區(qū)塊鏈的信息驗證裝置的結構示意圖。如圖4所示,該裝置包括:有效簽名模塊410、無效簽名模塊420、消息接收模塊430和消息驗證模塊440。其中,消息驗證模塊440進一步包括:判斷子模塊441和驗證子模塊442。
有效簽名模塊410,用于根據(jù)待驗證信息生成對應的有效簽名信息,將有效簽名信息存儲到區(qū)塊鏈中。
在本實施例中,有效簽名模塊410根據(jù)待驗證信息生成有效簽名信息時,通過不可否認簽名算法對待驗證信息進行簽名,相應地,有效簽名信息中包含待驗證信息的信息內(nèi)容、待驗證信息的不可否認簽名、以及簽名公鑰。當然,除不可否認簽名算法外,還可以采用盲簽名等其他簽名算法實現(xiàn),從而更好地確保簽名信息的安全性。
有效簽名模塊410將有效簽名信息存儲到區(qū)塊鏈時,首先生成區(qū)塊鏈中的一筆交易,然后將有效簽名信息寫入該筆交易中(例如,可以寫入該筆交易的OP_RETURN部分),最后將該筆交易廣播到區(qū)塊鏈中,以便區(qū)塊鏈中的各個網(wǎng)絡節(jié)點均能獲取到該筆交易中包含的信息。
無效簽名模塊420,用于根據(jù)待驗證信息生成對應的無效簽名信息,將無效簽名信息存儲到區(qū)塊鏈中。
為了防止真實信息的泄露,在本實施例中,無效簽名模塊420根據(jù)待驗證信息生成對應的無效簽名信息,以達到迷惑攻擊者的目的。具體實現(xiàn)時,無效簽名信息中可以包含待驗證信息的信息內(nèi)容、待驗證信息的偽簽名、以及簽名公鑰。其中,無效簽名信息中包含的待驗證信息的信息內(nèi)容可以是與真實信息內(nèi)容對應的相似信息內(nèi)容,即:信息內(nèi)容本身并非真實有效的,但是與真實信息內(nèi)容非常相似。另外,無效簽名信息中包含的偽簽名可以通過各類方式實現(xiàn),只要能夠區(qū)別于真簽名即可,例如,可以通過隨機簽名實現(xiàn),即:通過隨機算法生成一個隨機數(shù),將該隨機數(shù)作為待驗證信息的偽簽名。
另外,無效簽名模塊420將無效簽名信息存儲到區(qū)塊鏈時,首先生成區(qū)塊鏈中的另一筆交易,然后將無效簽名信息寫入該筆交易中(例如,可以寫入該筆交易的OP_RETURN部分),最后將該筆交易廣播到區(qū)塊鏈中,以便區(qū)塊鏈中的各個網(wǎng)絡節(jié)點均能獲取到該筆交易中包含的信息。
消息接收模塊430,用于接收驗證節(jié)點根據(jù)區(qū)塊鏈中存儲的有效簽名信息或無效簽名信息生成的驗證請求消息。
其中,驗證節(jié)點可以是接入到區(qū)塊鏈中的任意網(wǎng)絡節(jié)點,例如,可以是完全節(jié)點,也可以是不完全節(jié)點。驗證節(jié)點可以通過獲取區(qū)塊鏈中的交易記錄的方式獲取到有效簽名信息或無效簽名信息。為了便于描述,下文將有效簽名信息和無效簽名信息統(tǒng)稱為待驗證簽名信息。
由于驗證節(jié)點本身無法判斷獲取到的待驗證簽名信息是否有效,因此,需要通過與簽名節(jié)點交互的方式進行確認。在本實施例中,驗證請求消息通過下述方式生成:首先,驗證節(jié)點分析待驗證簽名信息的信息內(nèi)容,獲取其中包含的待驗證信息的信息內(nèi)容、待驗證信息的簽名(該簽名既可能是真簽名也可能是偽簽名)、以及簽名公鑰。然后,通過隨機算法生成并保存一個隨機數(shù),利用待驗證信息的信息內(nèi)容、待驗證信息的簽名、簽名公鑰以及隨機數(shù)作為參數(shù)進行預設計算,將計算結果作為驗證信息數(shù)據(jù),將驗證信息數(shù)據(jù)包含在驗證請求消息中發(fā)送給簽名節(jié)點。
消息驗證模塊440,用于對驗證請求消息進行驗證,根據(jù)驗證結果向驗證節(jié)點返回信息有效消息或信息無效消息。
具體的,當驗證節(jié)點發(fā)送的驗證請求消息中進一步包含驗證節(jié)點的身份信息時,消息驗證模塊440進一步包括:
判斷子模塊441,用于根據(jù)驗證節(jié)點的身份信息判斷驗證節(jié)點是否為合法節(jié)點。其中,為了防止區(qū)塊鏈中的大量無關節(jié)點惡意發(fā)送驗證請求消息,以耗費簽名節(jié)點的系統(tǒng)資源,并防止簽名信息的泄露,在本實施例中,判斷子模塊441預先設置并存儲了合法節(jié)點的身份信息,合法節(jié)點可以是與簽名節(jié)點存在業(yè)務往來或其他關聯(lián)的網(wǎng)絡節(jié)點。判斷子模塊441可以根據(jù)身份信息判斷發(fā)送驗證請求消息的網(wǎng)絡節(jié)點是否為合法節(jié)點。
驗證子模塊442,用于當判斷結果為是時,對驗證請求消息進行驗證,并根據(jù)驗證結果向驗證節(jié)點返回信息有效消息或信息無效消息;當判斷結果為否時,向驗證節(jié)點返回驗證失敗消息。
具體地,當驗證節(jié)點并非合法節(jié)點時,驗證子模塊442拒絕為該驗證節(jié)點驗證,從而向其返回驗證失敗消息,該方法結束。
當驗證節(jié)點為合法節(jié)點時,驗證子模塊442獲取上述驗證請求消息中包含的驗證信息數(shù)據(jù),根據(jù)該驗證信息數(shù)據(jù)生成相應的驗證結果。例如,驗證子模塊442首先獲取驗證信息數(shù)據(jù)中包含的數(shù)據(jù)內(nèi)容(如上文提到的待驗證信息的信息內(nèi)容、待驗證信息的簽名、簽名公鑰),然后,將該數(shù)據(jù)內(nèi)容以及信息內(nèi)容、簽名和公鑰等信息作為參數(shù)進行預設的計算后得到驗證結果。相應地,返回的信息有效消息或信息無效消息中包含該驗證結果,以供驗證節(jié)點根據(jù)該驗證結果以及消息接收模塊430中保存的隨機數(shù)判斷信息是否有效。因此,也可以將信息有效消息和信息無效消息統(tǒng)稱為驗證結果消息。具體地,驗證節(jié)點可以將信息內(nèi)容、簽名以及隨機數(shù)作為參數(shù),對驗證結果進行預設計算后根據(jù)計算結果判斷待驗證信息的真?zhèn)?。其中,驗證節(jié)點進行判斷時所采用的隨機數(shù)與消息接收模塊430中保存的隨機數(shù)相同,若消息接收模塊430中保存的隨機數(shù)是與信息有效信息對應的隨機數(shù),則驗證節(jié)點進行判斷時所采用的隨機數(shù)也是與信息有效信息對應的隨機數(shù);若消息接收模塊430中保存的隨機數(shù)是與信息無效信息對應的隨機數(shù),則驗證節(jié)點進行判斷時所采用的隨機數(shù)也是與信息無效信息對應的隨機數(shù)。
上述各個模塊的具體工作原理可參照方法實施例中相應步驟的描述,此處不再贅述。
綜上可知,本發(fā)明一方面使用區(qū)塊鏈來存儲信息,充分利用了區(qū)塊鏈的分布式,不易篡改的特性,另一方面通過不可否認簽名和摻雜錯誤數(shù)據(jù)的方式,使簽名的驗證者只有和簽名者交互才能確定信息是否真實及簽名是否合法,否則無法確定信息的真?zhèn)危行У胤乐沽藗卧旌灻碾[患。另外,摻雜錯誤數(shù)據(jù)的方式使得在不驗證的情況下,其他用戶無法知道哪一條信息是正確的,因而隱藏了真實信息。因此,在大量的信息數(shù)據(jù)集合中,通過摻雜錯誤數(shù)據(jù)的方法能夠有效干擾他人獲知有效信息,使用不可否認簽名的方式,簽名者在區(qū)塊鏈上選擇性地為其他用戶校驗簽名,因而保證了無關人員無法獲知真實信息及簽名是否有效。
此外,本領域的技術人員能夠理解,盡管在此的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本申請實施例的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本申請實施例的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本申請實施例的裝置中的一些或者全部部件的一些或者全部功能。本申請實施例還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本申請實施例的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是上述實施例對本申請實施例進行說明而不是對本申請實施例進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本申請實施例可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
本發(fā)明公開了:A1、一種基于區(qū)塊鏈的信息驗證方法,其中,包括:
根據(jù)待驗證信息生成對應的有效簽名信息,將所述有效簽名信息存儲到區(qū)塊鏈中;
根據(jù)所述待驗證信息生成對應的無效簽名信息,將所述無效簽名信息存儲到所述區(qū)塊鏈中;
接收驗證節(jié)點根據(jù)所述區(qū)塊鏈中存儲的有效簽名信息或無效簽名信息生成的驗證請求消息;
對所述驗證請求消息進行驗證,根據(jù)驗證結果向所述驗證節(jié)點返回信息有效消息或信息無效消息。
A2、根據(jù)A1所述的方法,其中,所述驗證請求消息中包括:所述驗證節(jié)點的身份信息,則所述對所述驗證請求消息進行驗證,根據(jù)驗證結果向所述驗證節(jié)點返回信息有效消息或信息無效消息的步驟具體包括:
根據(jù)所述驗證節(jié)點的身份信息判斷所述驗證節(jié)點是否為合法節(jié)點;
當判斷結果為是時,對所述驗證請求消息進行驗證,并根據(jù)驗證結果向所述驗證節(jié)點返回信息有效消息或信息無效消息。
A3、根據(jù)A2所述的方法,其中,當判斷結果為否時,向所述驗證節(jié)點返回驗證失敗消息。
A4、根據(jù)A1-A3任一所述的方法,其中,所述有效簽名信息包括:所述待驗證信息的信息內(nèi)容、所述待驗證信息的真簽名、以及簽名公鑰;
所述無效簽名信息包括:所述待驗證信息的信息內(nèi)容、所述待驗證信息的偽簽名、以及簽名公鑰。
A5、根據(jù)A4所述的方法,其中,所述真簽名包括不可否認簽名,所述偽簽名包括隨機簽名。
A6、根據(jù)A4或A5所述的方法,其中,所述驗證請求消息中包含驗證信息數(shù)據(jù),且所述驗證信息數(shù)據(jù)通過所述有效簽名信息與隨機數(shù)的組合或所述無效簽名信息與隨機數(shù)的組合確定;
則所述對驗證請求消息進行驗證的步驟具體包括:獲取所述驗證請求消息中包含的驗證信息數(shù)據(jù),根據(jù)所述驗證信息數(shù)據(jù)以及所述有效簽名信息生成相應的驗證結果;
并且,所述信息有效消息或信息無效消息中包含所述驗證結果,以供所述驗證節(jié)點根據(jù)所述驗證結果以及所述隨機數(shù)判斷信息是否有效。
A7、根據(jù)A1-A6任一所述的方法,其中,所述將所述有效簽名信息存儲到區(qū)塊鏈中的步驟具體包括:將所述有效簽名信息寫入第一交易記錄,并將所述第一交易記錄廣播到所述區(qū)塊鏈中;
所述將所述無效簽名信息存儲到區(qū)塊鏈中的步驟具體包括:將所述無效簽名信息寫入第二交易記錄,并將所述第二交易記錄廣播到所述區(qū)塊鏈中。
本發(fā)明還公開了:B8、一種基于區(qū)塊鏈的信息驗證裝置,其中,包括:
有效簽名模塊,用于根據(jù)待驗證信息生成對應的有效簽名信息,將所述有效簽名信息存儲到區(qū)塊鏈中;
無效簽名模塊,用于根據(jù)所述待驗證信息生成對應的無效簽名信息,將所述無效簽名信息存儲到所述區(qū)塊鏈中;
消息接收模塊,用于接收驗證節(jié)點根據(jù)所述區(qū)塊鏈中存儲的有效簽名信息或無效簽名信息生成的驗證請求消息;
消息驗證模塊,用于對所述驗證請求消息進行驗證,根據(jù)驗證結果向所述驗證節(jié)點返回信息有效消息或信息無效消息。
B9、根據(jù)B8所述的裝置,其中,所述驗證請求消息中包括:所述驗證節(jié)點的身份信息,則所述消息驗證模塊具體包括:
判斷子模塊,用于根據(jù)所述驗證節(jié)點的身份信息判斷所述驗證節(jié)點是否為合法節(jié)點;
驗證子模塊,用于當判斷結果為是時,對所述驗證請求消息進行驗證,并根據(jù)驗證結果向所述驗證節(jié)點返回信息有效消息或信息無效消息。
B10、根據(jù)B9所述的裝置,其中,當所述判斷子模塊的判斷結果為否時,所述驗證子模塊向所述驗證節(jié)點返回驗證失敗消息。
B11、根據(jù)B8-B10任一所述的裝置,其中,所述有效簽名信息包括:所述待驗證信息的信息內(nèi)容、所述待驗證信息的真簽名、以及簽名公鑰;
所述無效簽名信息包括:所述待驗證信息的信息內(nèi)容、所述待驗證信息的偽簽名、以及簽名公鑰。
B12、根據(jù)B11所述的裝置,其中,所述真簽名包括不可否認簽名,所述偽簽名包括隨機簽名。
B13、根據(jù)B11或B12所述的裝置,其中,所述驗證請求消息中包含驗證信息數(shù)據(jù),且所述驗證信息數(shù)據(jù)通過所述有效簽名信息與隨機數(shù)的組合或所述無效簽名信息與隨機數(shù)的組合確定;
則所述消息驗證模塊具體用于:獲取所述驗證請求消息中包含的驗證信息數(shù)據(jù),根據(jù)所述驗證信息數(shù)據(jù)以及所述有效簽名信息生成相應的驗證結果;
并且,所述信息有效消息或信息無效消息中包含所述驗證結果,以供所述驗證節(jié)點根據(jù)所述驗證結果以及所述隨機數(shù)判斷信息是否有效。
B14、根據(jù)B8-B13任一所述的裝置,其中,所述有效簽名模塊具體用于:將所述有效簽名信息寫入第一交易記錄,并將所述第一交易記錄廣播到所述區(qū)塊鏈中;
所述無效簽名模塊具體用于:將所述無效簽名信息寫入第二交易記錄,并將所述第二交易記錄廣播到所述區(qū)塊鏈中。