本發(fā)明涉及互聯(lián)網(wǎng)技術領域,具體涉及一種基于區(qū)塊鏈網(wǎng)絡的身份認證方法、系統(tǒng)、服務器及終端設備。
背景技術:
隨著互聯(lián)網(wǎng)和電子商務的發(fā)展,計算機網(wǎng)絡應用已經滲透到各行各業(yè),全球信息化已經成為人類發(fā)展的大趨勢。而且很多網(wǎng)站或應用都會要求先登錄網(wǎng)站賬號之后,才能進行相應的操作,例如,用戶想在XX網(wǎng)站上購買衣服,一般要求用戶利用已有的賬號登錄該網(wǎng)站,再購買。在用戶登錄網(wǎng)站或應用時,需要對用戶的身份進行認證,現(xiàn)有技術存在多種進行身份認證的方法,但大多數(shù)認證方法都是使用用戶名和密碼對用戶身份進行認證,若用戶輸入的用戶名、密碼與服務器所存儲的用戶名、密碼相匹配,則服務器對用戶的身份認證成功。
然而,現(xiàn)有技術中存在服務器對認證記錄造假或者服務器中存儲的認證記錄被篡改的情況,而且用戶名和密碼很容易被盜取,一旦盜取到用戶名和密碼就可以通過認證,所以這種認證方式的安全性不高。
技術實現(xiàn)要素:
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的基于區(qū)塊鏈網(wǎng)絡的身份認證方法、服務器、終端設備和相應的基于區(qū)塊鏈網(wǎng)絡的身份認證系統(tǒng)。
根據(jù)本發(fā)明的一個方面,提供了一種基于區(qū)塊鏈網(wǎng)絡的身份認證方法,用于對區(qū)塊鏈網(wǎng)絡中的節(jié)點進行身份認證,方法包括:
接收節(jié)點發(fā)送的攜帶有用戶名的登錄請求;
根據(jù)預先存儲的用戶名與第一區(qū)塊鏈賬戶地址之間的對應關系,獲取與用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址;
判斷區(qū)塊鏈中是否存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易;
若是,則確認用戶身份認證成功。
根據(jù)本發(fā)明的另一個方面,提供了一種基于區(qū)塊鏈的身份認證方法,用于對區(qū)塊鏈網(wǎng)絡中的節(jié)點進行身份認證,方法包括:
向服務器發(fā)送攜帶有用戶名的登錄請求,以供服務器根據(jù)用戶名獲取與用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址;
構建從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易,并在構建完成第一交易后將第一交易發(fā)送至區(qū)塊鏈網(wǎng)絡,以供服務器進行身份認證。
根據(jù)本發(fā)明的另一個方面,提供了一種服務器,用于對區(qū)塊鏈網(wǎng)絡中的節(jié)點進行身份認證,服務器包括:
接收模塊,用于接收節(jié)點發(fā)送的攜帶有用戶名的登錄請求;
區(qū)塊鏈賬戶地址獲取模塊,用于根據(jù)預先存儲的用戶名與第一區(qū)塊鏈賬戶地址之間的對應關系,獲取與用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址;
判斷模塊,用于判斷區(qū)塊鏈中是否存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易;
認證模塊,用于在判斷出區(qū)塊鏈中存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易的情況下,確認用戶身份認證成功。
根據(jù)本發(fā)明的另一個方面,提供了一種終端設備,終端設備為區(qū)塊鏈網(wǎng)絡的節(jié)點,終端設備包括:
發(fā)送模塊,用于向服務器發(fā)送攜帶有用戶名的登錄請求,以供服務器根據(jù)用戶名獲取與用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址;
構建模塊,用于構建從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易,并在構建完成第一交易后將第一交易發(fā)送至區(qū)塊鏈網(wǎng)絡,以供服務器進行身份認證。
根據(jù)本發(fā)明的另一個方面,提供了一種基于區(qū)塊鏈網(wǎng)絡的身份認證系統(tǒng),包括上述的服務器以及終端設備。
根據(jù)本發(fā)明提供的技術方案,接收節(jié)點發(fā)送的攜帶有用戶名的登錄請求;根據(jù)預先存儲的用戶名與第一區(qū)塊鏈賬戶地址之間的對應關系,獲取與用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址;判斷區(qū)塊鏈中是否存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易;若是,則確認用戶身份認證成功,由于保存在區(qū)塊鏈中的交易信息是無法被篡改的并且可回溯查詢,因此,提高了認證的安全性和認證過程的信用度,登錄是無需用戶輸入密碼,也就無需用戶記憶密碼,提高了便利性,而且防止了其他惡意人員利用所盜取的用戶名和密碼登錄其他網(wǎng)站而造成的撞庫攻擊。
上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了根據(jù)本發(fā)明一個實施例的基于區(qū)塊鏈網(wǎng)絡的身份認證方法的流程圖;
圖2示出了根據(jù)本發(fā)明一個實施例的基于區(qū)塊鏈網(wǎng)絡的身份認證方法的流程圖;
圖3示出了根據(jù)本發(fā)明一個實施例的基于區(qū)塊鏈網(wǎng)絡的身份認證方法的信令流程圖;
圖4示出了根據(jù)本發(fā)明一個實施例的服務器的結構框圖;
圖5示出了根據(jù)本發(fā)明另一個實施例的服務器的結構框圖;
圖6示出了根據(jù)本發(fā)明一個實施例的終端設備的結構框圖;
圖7示出了根據(jù)本發(fā)明一個實施例的基于區(qū)塊鏈網(wǎng)絡的身份認證系統(tǒng)的結構框圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
區(qū)塊鏈是一串使用密碼學方法相關聯(lián)產生的數(shù)據(jù)塊,每一個數(shù)據(jù)塊中包含了區(qū)塊鏈網(wǎng)絡交易的信息,用于驗證其信息的有效性(防偽)和生成下一個區(qū)塊,一旦信息添加至區(qū)塊鏈,就會永久的存儲起來,除非能夠同時控制住區(qū)塊鏈網(wǎng)絡中超過51%的節(jié)點,否則單個節(jié)點上對區(qū)塊鏈的修改是無效的,因此區(qū)塊鏈的數(shù)據(jù)穩(wěn)定性和可靠性極高。本發(fā)明實施例利用了區(qū)塊鏈中信息不可修改的特性,來對用戶身份進行認證。
圖1示出了根據(jù)本發(fā)明一個實施例的基于區(qū)塊鏈網(wǎng)絡的身份認證方法的流程圖。圖1所示的方法的執(zhí)行主體可以是服務器,用于對區(qū)塊鏈網(wǎng)絡中的節(jié)點進行身份認證,如圖1所示,本實施例的基于區(qū)塊鏈網(wǎng)絡的身份認證方法,具體可以包括以下步驟:
步驟S100,接收節(jié)點發(fā)送的攜帶有用戶名的登錄請求。
本實施例中的節(jié)點為區(qū)塊鏈網(wǎng)絡中的節(jié)點,例如可以是終端設備,終端設備可以包括但不限于手機、個人數(shù)字助理(Personal Digital Assistant,PDA)、無線手持設備、平板電腦(Tablet Computer)、個人電腦(Personal Computer,PC)、可穿戴設備等。區(qū)塊鏈網(wǎng)絡可以是公有區(qū)塊鏈網(wǎng)絡、聯(lián)盟區(qū)塊鏈網(wǎng)絡或私有區(qū)塊鏈網(wǎng)絡。公有區(qū)塊鏈網(wǎng)絡包括但不限于比特幣網(wǎng)絡和以太坊(Ethereum)網(wǎng)絡,以及聯(lián)盟區(qū)塊鏈網(wǎng)絡包括但不限于超級賬本(Hyperledger)網(wǎng)絡。
以用戶利用終端設備登錄某網(wǎng)站為例,用戶通過終端設備向服務器發(fā)送登錄請求,該登錄請求中包括用于登錄該網(wǎng)站的用戶名,其中,用戶名可以是用戶的手機號、郵箱地址或者由至少一個字符組成,服務器接收終端設備發(fā)送的攜帶有用戶名的登錄請求。
步驟S101,根據(jù)預先存儲的用戶名與第一區(qū)塊鏈賬戶地址之間的對應關系,獲取與用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址。
第一區(qū)塊鏈賬戶地址是用戶的交易地址,而且是用戶已有的交易地址,在本步驟中,第一區(qū)塊鏈賬戶地址是用于進行付款交易的地址,其可以是比特幣地址,其中,比特幣地址是由多個字符串所組成的,例如1CeZ4EZamNQixcgPQ6tTXbgYkNfc5dDErB,這里僅是舉例說明不做任何具體限定,第一區(qū)塊鏈賬戶地址還可以是萊特幣地址、無限幣地址等,本領域技術人員可以根據(jù)實際需要選用合適的第一區(qū)塊鏈賬戶地址。具體地,終端設備可以調用已安裝的比特幣錢包實現(xiàn)付款,或者具有比特幣錢包功能的賬戶地址進行付款,這里不做具體限定。
在本實施例中,用戶名與用戶的比特幣地址以映射方式預先存儲于服務器,服務器可以存儲很多用戶名及與用戶名關聯(lián)的比特幣地址,在接收到節(jié)點發(fā)送的攜帶有用戶名的登錄請求后,可以根據(jù)登錄請求中的用戶名獲取到與該用戶名關聯(lián)的比特幣地址。
步驟S102,判斷區(qū)塊鏈中是否存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易,若是,則執(zhí)行步驟S103。
本步驟中的第一交易是終端設備在向服務器發(fā)送登錄請求后構建的,終端設備在構建完成第一交易后,將第一交易發(fā)送至區(qū)塊鏈網(wǎng)絡中。預設的第二區(qū)塊鏈賬戶地址是用于收款的地址,可以是服務器指定的比特幣地址,例如可以是服務器所擁有的比特幣地址。
服務器在獲知終端設備構建了第一交易后,可以根據(jù)第一區(qū)塊鏈賬戶地址判斷區(qū)塊鏈中是否存在第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易,來對用戶身份進行認證,若存在,則表明用戶具有用戶名的擁有權,確認其為合法用戶,即用戶身份認證成功,可以允許用戶利用用戶名登錄到網(wǎng)站;若不存在,則表明用戶對相應的用戶名不具有擁有權,用戶身份認證失敗,不允許用戶利用用戶名登錄到網(wǎng)站。
步驟S103,確認用戶身份認證成功。
可選地,在本實施例的一個可能的實現(xiàn)方式中,在步驟S100之前,方法還包括:接收來自節(jié)點的注冊請求,具體地,用戶在登錄網(wǎng)站或應用之前,需要先進行注冊,用戶通過終端設備向服務器發(fā)送注冊請求。
服務器在接收到終端設備發(fā)送的注冊請求后,服務器向節(jié)點發(fā)送攜帶有預設的第二區(qū)塊鏈賬戶地址的反饋消息,以供節(jié)點構建從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第二交易并將第二交易發(fā)送到區(qū)塊鏈網(wǎng)絡,其中第二交易中包含用戶名,這里的反饋信息可以包括第二區(qū)塊鏈賬戶地址和交易金額,具體的反饋信息可以是根據(jù)第一區(qū)塊鏈賬戶地址和交易金額所生成條形碼或二維碼,還可以是第一區(qū)塊鏈賬戶地址和交易金額的文本信息,因此,終端設備可以通過掃描條形碼或二維碼來獲得第一區(qū)塊鏈賬戶地址和交易金額;當然,第一區(qū)塊鏈賬戶地址和交易金額還可以由用戶輸入,這里不做具體限定。
本實施例是通過交易完成注冊過程的,具體地,終端設備在接收到服務器發(fā)送的反饋消息后,構建從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第二交易并將第二交易發(fā)送到區(qū)塊鏈網(wǎng)絡,在構建第二交易時,用戶可以手動輸入用于注冊的用戶名從而完成注冊過程。
具體地,終端設備在交易的付款地址處輸入第一區(qū)塊鏈賬戶地址,在交易的收款地址處輸入預設的第二區(qū)塊鏈賬戶地址,在注冊信息處輸入用戶名,構建從第一區(qū)塊鏈賬戶地址到預設的第二區(qū)塊鏈賬戶地址的付款交易,在構建完成第二交易后,終端設備將第二交易發(fā)送至區(qū)塊鏈網(wǎng)絡,使得區(qū)塊鏈網(wǎng)絡的其它節(jié)點獲知完成一筆交易,以供服務器對用戶進行身份認證。
服務器在接收到注冊請求后,將第二區(qū)塊鏈賬戶地址發(fā)送給終端設備,以使終端設備根據(jù)第二區(qū)塊鏈賬戶地址構建第二交易,因此,終端設備可以根據(jù)已有的第二區(qū)塊鏈賬戶地址構建第一交易。
具體地,對于服務器是區(qū)塊鏈網(wǎng)絡中的節(jié)點,終端設備可以通過廣播方式發(fā)送交易通知消息,服務器接收終端設備通過廣播方式發(fā)送的交易通知消息后,從區(qū)塊鏈中獲取從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第二交易,將第一區(qū)塊鏈賬戶地址和用戶名關聯(lián)存儲,以在對用戶身份進行驗證時,可以根據(jù)用戶名獲取到與用戶名關聯(lián)存儲的第一區(qū)塊鏈賬戶地址,進而根據(jù)第一區(qū)塊鏈賬戶地址判斷區(qū)塊鏈中是否存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易。
可選地,在本實施例的一個可能的實現(xiàn)方式中,在將用戶名和第一區(qū)塊鏈賬戶地址關聯(lián)存儲之前,方法還包括:根據(jù)用戶名查詢數(shù)據(jù)庫中是否存儲有與用戶名相同的用戶名;若否,則將用戶名和與第一區(qū)塊鏈賬戶地址關聯(lián)存儲至數(shù)據(jù)庫,并向節(jié)點反饋注冊成功信息;若是,則向節(jié)點反饋注冊失敗信息。
一般情況下,服務器并無法區(qū)分是否是同一用戶,因此一般一個用戶名僅能注冊一次,也就是說,不同用戶所使用的用戶名是不同的,因此,根據(jù)用戶名查詢數(shù)據(jù)庫中是否存儲有與用戶名相同的用戶名,以確定是否存在重復的用戶名,在數(shù)據(jù)庫中不存在相同的用戶名的情況下,將用戶名和與用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址關聯(lián)存儲至數(shù)據(jù)庫,并向終端設備反饋注冊成功信息;在數(shù)據(jù)庫中存在相同的用戶名的情況下,向終端設備反饋注冊失敗信息。
本發(fā)明實施例是采用讓第一區(qū)塊鏈賬戶地址向第二區(qū)塊鏈賬戶地址付款完成交易,完成注冊以及實現(xiàn)對用戶身份認證的目的,交易的數(shù)額是任意的,可能大于或等于0,然而,本實施例僅是對用戶身份進行認證,很多用戶可能并不希望有金錢損失,因此,在本實施例的一個可能的實現(xiàn)方式中,在第一區(qū)塊鏈賬戶地址向第二區(qū)塊鏈賬戶地址所付款項的數(shù)額大于0時,在確認用戶身份認證成功之后,服務器還可以構建從預設的第二區(qū)塊鏈賬戶地址付款到第一區(qū)塊鏈賬戶地址的第三交易并將第三交易發(fā)送到區(qū)塊鏈網(wǎng)絡,以將預設的第二區(qū)塊鏈賬戶地址的款項返回至第一區(qū)塊鏈賬戶地址。
可選地,在本實施例的一個可能的實現(xiàn)方式中,第一交易中包含用于下一次登錄時進行交易的第三區(qū)塊鏈賬戶地址,方法還包括:將第三區(qū)塊鏈賬戶地址與用戶名關聯(lián)存儲。這里預先存儲了下一次登錄時交易的第三區(qū)塊鏈賬戶地址,這樣當用戶下一次登錄時,可利用第三區(qū)塊鏈賬戶地址進行交易。
可選地,在本實施例的一個可能的實現(xiàn)方式中,在第一交易中包含用于下一次登錄時進行交易的第三區(qū)塊鏈賬戶地址,并將第三區(qū)塊鏈賬戶地址與用戶名關聯(lián)存儲后,還需要刪除第一區(qū)塊鏈賬戶地址與用戶名的關聯(lián),使得用戶下一次僅能利用第三區(qū)塊鏈賬戶地址進行認證,而不能再用第一區(qū)塊鏈賬戶地址進行認證,從而避免重復使用相同區(qū)塊鏈賬戶地址進行認證,提高安全性。
根據(jù)本發(fā)明上述實施例提供的方法,通過判斷區(qū)塊鏈網(wǎng)絡中是否存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易,來對用戶身份進行認證,由于保存在區(qū)塊鏈中的交易信息是無法被篡改的并且可回溯查詢,因此,提高了認證的安全性和認證過程的信用度,登錄是無需用戶輸入密碼,也就無需用戶記憶密碼,提高了便利性,而且防止了其他惡意人員利用所盜取的用戶名和密碼登錄其他網(wǎng)站而造成的撞庫攻擊。
圖2示出了根據(jù)本發(fā)明一個實施例的基于區(qū)塊鏈網(wǎng)絡的身份認證方法的流程圖。圖2所示的方法的執(zhí)行主體可以是終端設備,其為區(qū)塊鏈網(wǎng)絡中的節(jié)點,用于對區(qū)塊鏈網(wǎng)絡中的節(jié)點進行身份認證,如圖2所示,本實施例的基于區(qū)塊鏈網(wǎng)絡的身份認證方法,具體可以包括以下步驟:
步驟S200,向服務器發(fā)送攜帶有用戶名的登錄請求,以供服務器根據(jù)用戶名獲取與用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址。
以用戶利用終端設備登錄某網(wǎng)站為例,用戶通過終端設備向服務器發(fā)送登錄請求,例如可以在該登錄請求中包括用于登錄該網(wǎng)站的用戶名,其中,用戶名可以是用戶的手機號、郵箱地址或者由至少一個字符組成,終端設備可以采用多種方式向服務器發(fā)送登錄請求,例如采用http協(xié)議或者其它合適的協(xié)議,這里不做具體限定。服務器接收終端設備發(fā)送的攜帶有用戶名的登錄請求后,可以根據(jù)用戶名獲取與用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址,具體地,可以根據(jù)用戶名查詢預先存儲有用戶名和第一區(qū)塊鏈賬戶地址的數(shù)據(jù)庫,獲取與用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址。
步驟S201,構建從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易,并在構建完成第一交易后將第一交易發(fā)送至區(qū)塊鏈網(wǎng)絡,以供服務器進行身份認證。
具體的,終端設備在交易的付款地址處輸入第一區(qū)塊鏈賬戶地址,在交易的收款地址處輸入預設的第二區(qū)塊鏈賬戶地址,構建從第一區(qū)塊鏈賬戶地址到預設的第二區(qū)塊鏈賬戶地址的付款交易,在構建完成第一交易后,終端設備將第一交易發(fā)送至區(qū)塊鏈網(wǎng)絡,使得區(qū)塊鏈網(wǎng)絡的其它節(jié)點獲知完成一筆交易,以供服務器對用戶進行身份認證。
可選地,在本實施例的一個可能的實現(xiàn)方式中,在向服務器發(fā)送攜帶有用戶名的登錄請求之前,該方法還包括:向服務器發(fā)送注冊請求,其中,終端設備可以采用多種方式向服務器發(fā)送的注冊請求,例如采用http協(xié)議或者其它合適的協(xié)議,這里不做具體限定;服務器在接收到注冊請求后,將攜帶有預設的第二區(qū)塊鏈賬戶地址的反饋消息發(fā)送給終端設備,終端設備接收來自服務器的攜帶有預設的第二區(qū)塊鏈賬戶地址的反饋消息,構建從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第二交易,并在構建完成第二交易后將第二交易發(fā)送至區(qū)塊鏈網(wǎng)絡,以供服務器進行身份注冊,其中第二交易中包含用戶名。
本發(fā)明是通過讓用戶利用第一區(qū)塊鏈賬戶地址向第二區(qū)塊鏈賬戶地址付款完成交易,通過判斷區(qū)塊鏈中是否存在從第一區(qū)塊鏈賬戶地址向第二區(qū)塊鏈賬戶地址付款的第一交易,來對用戶身份進行認證,因此,需要先利用用戶名進行注冊,這里注冊過程是通過第一區(qū)塊鏈賬戶地址向第二區(qū)塊鏈賬戶地址付款交易完成注冊的,在構建交易時,需要用戶手動輸入用于注冊的用戶名。
可選地,在本實施例的一個可能的實現(xiàn)方式中,第一交易中包含用于下一次登錄時進行交易的第三區(qū)塊鏈賬戶地址,該第三區(qū)塊鏈賬戶地址可以用于下一次登錄時對用戶身份的認證。
根據(jù)本發(fā)明上述實施例提供的方法,通過判斷區(qū)塊鏈網(wǎng)絡中是否存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易,來對用戶身份進行認證,由于保存在區(qū)塊鏈中的交易信息是無法被篡改的并且可回溯查詢,因此,提高了認證的安全性和認證過程的信用度,登錄是無需用戶輸入密碼,也就無需用戶記憶密碼,提高了便利性,而且防止了其他惡意人員利用所盜取的用戶名和密碼登錄其他網(wǎng)站而造成的撞庫攻擊。
圖3示出了根據(jù)本發(fā)明一個實施例的基于區(qū)塊鏈網(wǎng)絡的身份認證方法的信令流程圖。服務器用于對區(qū)塊鏈網(wǎng)絡中的節(jié)點進行身份認證,區(qū)塊鏈網(wǎng)絡中的節(jié)點可以是終端設備,如圖3所示,本實施例的基于區(qū)塊鏈網(wǎng)絡的身份認證方法,具體可以包括以下步驟:
步驟S300,終端設備向服務器發(fā)送注冊請求。
步驟S301,服務器根據(jù)注冊請求向終端設備發(fā)送攜帶有預設的第二區(qū)塊鏈賬戶地址的反饋消息。
步驟S302,終端設備根據(jù)所接收到的攜帶有預設的第二區(qū)塊鏈賬戶地址的反饋消息,構建從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第二交易,并在構建完成第二交易后將第二交易發(fā)送至區(qū)塊鏈網(wǎng)絡,以供服務器進行身份注冊,其中第二交易中包含用戶名。
步驟S303,服務器從區(qū)塊鏈中獲取從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第二交易,并將第一區(qū)塊鏈賬戶地址和用戶名關聯(lián)存儲。
步驟S304,終端設備向服務器發(fā)送攜帶有用戶名的登錄請求。
步驟S305,構建從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易,并在構建完成第一交易后將第一交易發(fā)送至區(qū)塊鏈網(wǎng)絡,以供服務器進行身份認證。
步驟S306,服務器在接收到攜帶有用戶名的登錄請求后,根據(jù)預先存儲的用戶名與第一區(qū)塊鏈賬戶地址之間的對應關系,獲取與用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址。
步驟S307,服務器判斷區(qū)塊鏈中是否存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易,若是,則確認用戶身份認證成功。
本實施例中各方法步驟的具體實現(xiàn)方式與圖1和圖2所示實施例中對應步驟類似,這里不再贅述。
圖4示出了根據(jù)本發(fā)明一個實施例的服務器的結構框圖。如圖4所示,本實施的服務器400,具體可以包括:接收模塊410、區(qū)塊鏈賬戶地址獲取模塊420、判斷模塊430和認證模塊440。
接收模塊410,用于接收節(jié)點發(fā)送的攜帶有用戶名的登錄請求。
區(qū)塊鏈賬戶地址獲取模塊420,用于根據(jù)預先存儲的用戶名與第一區(qū)塊鏈賬戶地址之間的對應關系,獲取與用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址。
判斷模塊430,用于判斷區(qū)塊鏈中是否存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易。
認證模塊440,用于在判斷出區(qū)塊鏈中存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易的情況下,確認用戶身份認證成功。
圖5示出了根據(jù)本發(fā)明一個實施例的服務器的結構框圖。如圖5所示,本實施的服務器500,具體可以包括:接收模塊510、區(qū)塊鏈賬戶地址獲取模塊520、判斷模塊530和認證模塊540。
接收模塊510,用于接收節(jié)點發(fā)送的攜帶有用戶名的登錄請求。
區(qū)塊鏈賬戶地址獲取模塊520,用于根據(jù)預先存儲的用戶名與第一區(qū)塊鏈賬戶地址之間的對應關系,獲取與用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址。
判斷模塊530,用于判斷區(qū)塊鏈中是否存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易。
認證模塊540,用于在判斷出區(qū)塊鏈中存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易的情況下,確認用戶身份認證成功。
此外,接收模塊510進一步用于:接收來自節(jié)點的注冊請求;
服務器還包括:反饋模塊550,用于向節(jié)點發(fā)送攜帶有預設的第二區(qū)塊鏈賬戶地址的反饋消息,以供節(jié)點構建從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第二交易并將第二交易發(fā)送到區(qū)塊鏈網(wǎng)絡,其中第二交易中包含用戶名;
交易獲取模塊560,用于從區(qū)塊鏈中獲取從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第二交易;以及
數(shù)據(jù)庫570,用于關聯(lián)存儲第一區(qū)塊鏈賬戶地址和用戶名。
為了確保每個注冊的用戶名都不相同,服務器還包括:查詢模塊580,用于根據(jù)用戶名查詢數(shù)據(jù)庫中是否存儲有與用戶名相同的用戶名;
數(shù)據(jù)庫570進一步用于:在根據(jù)用戶名查詢數(shù)據(jù)庫中未存儲有與用戶名相同的用戶名的情況下,關聯(lián)存儲用戶名和與第一區(qū)塊鏈賬戶地址;
反饋模塊550進一步用于:在根據(jù)用戶名查詢數(shù)據(jù)庫中未存儲有與用戶名相同的用戶名的情況下,向節(jié)點反饋注冊成功信息;在根據(jù)用戶名查詢數(shù)據(jù)庫中存儲有與用戶名相同的用戶名的情況下,向節(jié)點反饋注冊失敗信息。
另外,服務器還包括:構建模塊590,用于構建從預設的第二區(qū)塊鏈賬戶地址付款到第一區(qū)塊鏈賬戶地址的第三交易并將第三交易發(fā)送到區(qū)塊鏈網(wǎng)絡,以將預設的第二區(qū)塊鏈賬戶地址的款項返回至第一區(qū)塊鏈賬戶地址。
此外,第一交易中還包含用于下一次登錄時進行交易的第三區(qū)塊鏈賬戶地址,數(shù)據(jù)庫570進一步用于:關聯(lián)存儲第三區(qū)塊鏈賬戶地址與用戶名。
在將第三區(qū)塊鏈賬戶地址與用戶名關聯(lián)存儲后,服務器還包括:刪除模塊591,用于刪除第一區(qū)塊鏈賬戶地址與用戶名的關聯(lián)。
根據(jù)本發(fā)明上述實施例提供的服務器,通過判斷區(qū)塊鏈網(wǎng)絡中是否存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易,來對用戶身份進行認證,由于保存在區(qū)塊鏈中的交易信息是無法被篡改的并且可回溯查詢,因此,提高了認證的安全性和認證過程的信用度,登錄是無需用戶輸入密碼,也就無需用戶記憶密碼,提高了便利性,而且防止了其他惡意人員利用所盜取的用戶名和密碼登錄其他網(wǎng)站而造成的撞庫攻擊。
圖6示出了根據(jù)本發(fā)明一個實施例的終端設備的結構框圖。如圖6所示,本實施的終端設備600,具體可以包括:發(fā)送模塊610、構建模塊620。
發(fā)送模塊610,用于向服務器發(fā)送攜帶有用戶名的登錄請求,以供服務器根據(jù)用戶名獲取與用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址;
構建模塊620,用于構建從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易,并在構建完成第一交易后將第一交易發(fā)送至區(qū)塊鏈網(wǎng)絡,以供服務器進行身份認證。
此外,發(fā)送模塊進一步用于:向服務器發(fā)送注冊請求;
終端設備還包括:接收模塊630,用于接收來自服務器的攜帶有預設的第二區(qū)塊鏈賬戶地址的反饋消息;
構建模塊620進一步用于:構建從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第二交易,并在構建完成第二交易后將第二交易發(fā)送至區(qū)塊鏈網(wǎng)絡,以供服務器進行身份注冊,其中第二交易中包含用戶名。
此外,第一交易中包含用于下一次登錄時進行交易的第三區(qū)塊鏈賬戶地址。
根據(jù)本發(fā)明上述實施例提供的終端設備,通過判斷區(qū)塊鏈網(wǎng)絡中是否存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易,來對用戶身份進行認證,由于保存在區(qū)塊鏈中的交易信息是無法被篡改的并且可回溯查詢,因此,提高了認證的安全性和認證過程的信用度,登錄是無需用戶輸入密碼,也就無需用戶記憶密碼,提高了便利性,而且防止了其他惡意人員利用所盜取的用戶名和密碼登錄其他網(wǎng)站而造成的撞庫攻擊。
圖7示出了根據(jù)本發(fā)明一個實施例的基于區(qū)塊鏈網(wǎng)絡的身份認證系統(tǒng)的結構框圖。如圖7所示,該系統(tǒng)700包括服務器500以及終端設備600。
在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設備固有相關。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構造這類系統(tǒng)所要求的結構是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。
類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本發(fā)明的單獨實施例。
本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領域的技術人員能夠理解,盡管在此的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的基于區(qū)塊鏈網(wǎng)絡的身份認證設備中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。
本發(fā)明公開了:
A1、一種基于區(qū)塊鏈的身份認證方法,用于對區(qū)塊鏈網(wǎng)絡中的節(jié)點進行身份認證,其特征在于,所述方法包括:
接收節(jié)點發(fā)送的攜帶有用戶名的登錄請求;
根據(jù)預先存儲的用戶名與第一區(qū)塊鏈賬戶地址之間的對應關系,獲取與所述用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址;
判斷所述區(qū)塊鏈中是否存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易;
若是,則確認用戶身份認證成功。
A2、根據(jù)A1所述的方法,其特征在于,在所述接收節(jié)點發(fā)送的攜帶有用戶名的登錄請求之前,所述方法還包括:
接收來自所述節(jié)點的注冊請求;
向所述節(jié)點發(fā)送攜帶有所述預設的第二區(qū)塊鏈賬戶地址的反饋消息,以供所述節(jié)點構建從所述第一區(qū)塊鏈賬戶地址向所述預設的第二區(qū)塊鏈賬戶地址付款的第二交易并將所述第二交易發(fā)送到所述區(qū)塊鏈網(wǎng)絡,其中所述第二交易中包含所述用戶名;
從所述區(qū)塊鏈中獲取從所述第一區(qū)塊鏈賬戶地址向所述預設的第二區(qū)塊鏈賬戶地址付款的第二交易;以及
將所述第一區(qū)塊鏈賬戶地址和所述用戶名關聯(lián)存儲。
A3、根據(jù)A2所述的方法,其特征在于,
在將所述用戶名和第一區(qū)塊鏈賬戶地址關聯(lián)存儲之前,所述方法還包括:
根據(jù)所述用戶名查詢數(shù)據(jù)庫中是否存儲有與所述用戶名相同的用戶名;
若否,則將所述用戶名和與第一區(qū)塊鏈賬戶地址關聯(lián)存儲至數(shù)據(jù)庫,并向所述節(jié)點反饋注冊成功信息;
若是,則向所述節(jié)點反饋注冊失敗信息。
A4、根據(jù)A1-A3任一項所述的方法,其特征在于,在確認用戶身份認證成功之后,所述方法還包括:
構建從所述預設的第二區(qū)塊鏈賬戶地址付款到所述第一區(qū)塊鏈賬戶地址的第三交易并將所述第三交易發(fā)送到所述區(qū)塊鏈網(wǎng)絡,以將所述預設的第二區(qū)塊鏈賬戶地址的款項返回至所述第一區(qū)塊鏈賬戶地址。
A5、根據(jù)A1-A3任一項所述的方法,其特征在于,所述第一交易中包含用于下一次登錄時進行交易的第三區(qū)塊鏈賬戶地址,所述方法還包括:
將所述第三區(qū)塊鏈賬戶地址與所述用戶名關聯(lián)存儲。
A6、根據(jù)A5所述的方法,其特征在于,所述方法還包括:
刪除所述第一區(qū)塊鏈賬戶地址與所述用戶名的關聯(lián)。
B7、一種基于區(qū)塊鏈的身份認證方法,用于對區(qū)塊鏈網(wǎng)絡中的節(jié)點進行身份認證,其特征在于,所述方法包括:
向服務器發(fā)送攜帶有用戶名的登錄請求,以供服務器根據(jù)所述用戶名獲取與所述用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址;
構建從所述第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易,并在構建完成所述第一交易后將所述第一交易發(fā)送至所述區(qū)塊鏈網(wǎng)絡,以供服務器進行身份認證。
B8、根據(jù)B7所述的方法,其特征在于,所述方法還包括:
向所述服務器發(fā)送注冊請求;
接收來自所述服務器的攜帶有所述預設的第二區(qū)塊鏈賬戶地址的反饋消息;
構建從所述第一區(qū)塊鏈賬戶地址向所述預設的第二區(qū)塊鏈賬戶地址付款的第二交易,并在構建完成所述第二交易后將所述第二交易發(fā)送至所述區(qū)塊鏈網(wǎng)絡,以供服務器進行身份注冊,其中所述第二交易中包含所述用戶名。
B9、根據(jù)B7或B8所述的方法,其特征在于,所述第一交易中包含用于下一次登錄時進行交易的第三區(qū)塊鏈賬戶地址。
C10、一種服務器,用于對區(qū)塊鏈網(wǎng)絡中的節(jié)點進行身份認證,其特征在于,所述服務器包括:
接收模塊,用于接收節(jié)點發(fā)送的攜帶有用戶名的登錄請求;
區(qū)塊鏈賬戶地址獲取模塊,用于根據(jù)預先存儲的用戶名與第一區(qū)塊鏈賬戶地址之間的對應關系,獲取與所述用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址;
判斷模塊,用于判斷所述區(qū)塊鏈中是否存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易;
認證模塊,用于在判斷出所述區(qū)塊鏈中存在從第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易的情況下,確認用戶身份認證成功。
C11、根據(jù)C10所述的服務器,其特征在于,所述接收模塊進一步用于:接收來自所述節(jié)點的注冊請求;
所述服務器還包括:反饋模塊,用于向所述節(jié)點發(fā)送攜帶有所述預設的第二區(qū)塊鏈賬戶地址的反饋消息,以供所述節(jié)點構建從所述第一區(qū)塊鏈賬戶地址向所述預設的第二區(qū)塊鏈賬戶地址付款的第二交易并將所述第二交易發(fā)送到所述區(qū)塊鏈網(wǎng)絡,其中所述第二交易中包含所述用戶名;
交易獲取模塊,用于從所述區(qū)塊鏈中獲取從所述第一區(qū)塊鏈賬戶地址向所述預設的第二區(qū)塊鏈賬戶地址付款的第二交易;以及
數(shù)據(jù)庫,用于關聯(lián)存儲所述第一區(qū)塊鏈賬戶地址和所述用戶名。
C12、根據(jù)C11所述的服務器,其特征在于,所述服務器還包括:
查詢模塊,用于根據(jù)所述用戶名查詢數(shù)據(jù)庫中是否存儲有與所述用戶名相同的用戶名;
所述數(shù)據(jù)庫進一步用于:在根據(jù)所述用戶名查詢所述數(shù)據(jù)庫中未存儲有與所述用戶名相同的用戶名的情況下,關聯(lián)存儲所述用戶名和與第一區(qū)塊鏈賬戶地址;
所述反饋模塊進一步用于:在根據(jù)所述用戶名查詢所述數(shù)據(jù)庫中未存儲有與所述用戶名相同的用戶名的情況下,向所述節(jié)點反饋注冊成功信息;在根據(jù)所述用戶名查詢所述數(shù)據(jù)庫中存儲有與所述用戶名相同的用戶名的情況下,向所述節(jié)點反饋注冊失敗信息。
C13、根據(jù)C10-C12任一項所述的服務器,其特征在于,所述服務器還包括:
構建模塊,用于構建從所述預設的第二區(qū)塊鏈賬戶地址付款到所述第一區(qū)塊鏈賬戶地址的第三交易并將所述第三交易發(fā)送到所述區(qū)塊鏈網(wǎng)絡,以將所述預設的第二區(qū)塊鏈賬戶地址的款項返回至所述第一區(qū)塊鏈賬戶地址。
C14、根據(jù)C10-C12任一項所述的服務器,其特征在于,所述第一交易中包含用于下一次登錄時進行交易的第三區(qū)塊鏈賬戶地址,所述數(shù)據(jù)庫進一步用于:關聯(lián)存儲所述第三區(qū)塊鏈賬戶地址與所述用戶名。
C15、根據(jù)C14所述的服務器,其特征在于,所述服務器還包括:
刪除模塊,用于刪除所述第一區(qū)塊鏈賬戶地址與所述用戶名的關聯(lián)。
D16、一種終端設備,所述終端設備為區(qū)塊鏈網(wǎng)絡的節(jié)點,其特征在于,所述終端設備包括:
發(fā)送模塊,用于向服務器發(fā)送攜帶有用戶名的登錄請求,以供服務器根據(jù)所述用戶名獲取與所述用戶名關聯(lián)的第一區(qū)塊鏈賬戶地址;
構建模塊,用于構建從所述第一區(qū)塊鏈賬戶地址向預設的第二區(qū)塊鏈賬戶地址付款的第一交易,并在構建完成所述第一交易后將所述第一交易發(fā)送至所述區(qū)塊鏈網(wǎng)絡,以供服務器進行身份認證。
D17、根據(jù)D16所述的終端設備,其特征在于,所述發(fā)送模塊進一步用于:向所述服務器發(fā)送注冊請求;
所述終端設備還包括:接收模塊,用于接收來自所述服務器的攜帶有所述預設的第二區(qū)塊鏈賬戶地址的反饋消息;
所述構建模塊進一步用于:構建從所述第一區(qū)塊鏈賬戶地址向所述預設的第二區(qū)塊鏈賬戶地址付款的第二交易,并在構建完成所述第二交易后將所述第二交易發(fā)送至所述區(qū)塊鏈網(wǎng)絡,以供服務器進行身份注冊,其中所述第二交易中包含所述用戶名。
D18、根據(jù)D16或D17所述的終端設備,其特征在于,所述第一交易中包含用于下一次登錄時進行交易的第三區(qū)塊鏈賬戶地址。
E19、一種基于區(qū)塊鏈網(wǎng)絡的身份認證系統(tǒng),其特征在于,所述系統(tǒng)包括:C10-C15任一項所述的服務器以及D16-D18任一項所述的終端設備。