本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種基于區(qū)塊鏈的認(rèn)證方法和裝置。
背景技術(shù):
傳統(tǒng)的數(shù)字資產(chǎn)交互(例如電子貨幣交易)通常由中心化的機構(gòu)來完成。中心化的機構(gòu)主要涉及到第三方交易支付平臺、銀行的賬戶管理系統(tǒng)、遠(yuǎn)程支付系統(tǒng)、轉(zhuǎn)接清算系統(tǒng)等。傳統(tǒng)的數(shù)字資產(chǎn)交互方式存在操作繁瑣,數(shù)據(jù)不透明,容易篡改等問題。
隨著通信技術(shù)的發(fā)展,區(qū)塊鏈由于去中心化、公開、透明、無法篡改等優(yōu)點而逐漸被應(yīng)用于各種數(shù)據(jù)處理的應(yīng)用場景中。區(qū)塊鏈可以看作分布式統(tǒng)一賬本,由所有參與方共同決定記賬內(nèi)容,每個參與方都保存有全量數(shù)據(jù),任何個體參與方無法對數(shù)據(jù)進行篡改。根據(jù)不同的交互場景,基于區(qū)塊鏈的數(shù)字資產(chǎn)轉(zhuǎn)移可能涉及個人、商戶、第三方、銀行等多個參與方。
目前,數(shù)字資產(chǎn)交互的數(shù)據(jù)(例如轉(zhuǎn)賬地址和用于轉(zhuǎn)賬的私鑰)都保存在交易文件中,而交易文件通常采用軟件加密或云加密的方式保存。軟件加密或者云端加密都存在以下數(shù)據(jù)轉(zhuǎn)移過程不安全、交互環(huán)境不安全,容易出現(xiàn)私鑰丟失、遺忘、暴力破解等問題。一旦出現(xiàn)問題,該私鑰對應(yīng)的區(qū)塊鏈上的賬號所持有的數(shù)字資產(chǎn),如數(shù)字貨幣、數(shù)字化實物資產(chǎn)等資產(chǎn),就會出現(xiàn)無法證明所有權(quán)的問題,進而造成數(shù)字資產(chǎn)流失。
如何基于區(qū)塊鏈進行安全、可靠地轉(zhuǎn)移數(shù)字資產(chǎn),成為業(yè)界需要解決的問題。
技術(shù)實現(xiàn)要素:
鑒于以上所述一個或多個問題,本發(fā)明實施例提供了一種基于區(qū)塊鏈的認(rèn)證方法和裝置。
第一方面,提供了一種基于區(qū)塊鏈的認(rèn)證方法。該方法包括:
根據(jù)隨機數(shù)生成用于通過區(qū)塊鏈轉(zhuǎn)移數(shù)字資產(chǎn)的轉(zhuǎn)出私鑰和對應(yīng)的轉(zhuǎn)出公鑰;
對轉(zhuǎn)出公鑰進行編碼處理,生成轉(zhuǎn)入地址;
基于轉(zhuǎn)出私鑰,對擬轉(zhuǎn)移的數(shù)字資產(chǎn)的轉(zhuǎn)移數(shù)值和轉(zhuǎn)入地址以及其他必要信息進行數(shù)字簽名;
基于轉(zhuǎn)移數(shù)值、轉(zhuǎn)入地址、數(shù)字簽名和轉(zhuǎn)出公鑰,獲得數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù);
將數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)廣播至區(qū)塊鏈中,以使得:
認(rèn)證端對所述數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行一級認(rèn)證,或者
在所述一級認(rèn)證之后,所述服務(wù)端和認(rèn)證端共同對所述數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行多級認(rèn)證。
第二方面,提供了一種基于區(qū)塊鏈的認(rèn)證方法。該方法包括:
接收終端廣播在區(qū)塊鏈中的數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù);
對所接收的數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行一級認(rèn)證,或者
在所述一級認(rèn)證之后,與所述終端共同對所述數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行多級認(rèn)證;所述數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)包括:擬轉(zhuǎn)移的數(shù)字資產(chǎn)的轉(zhuǎn)移數(shù)值、轉(zhuǎn)入地址、數(shù)字簽名、用于通過區(qū)塊鏈轉(zhuǎn)移數(shù)字資產(chǎn)的轉(zhuǎn)出公鑰。
第三方面,提供了一種基于區(qū)塊鏈的認(rèn)證裝置。該裝置包括:
密鑰生成單元,用于根據(jù)隨機數(shù)生成用于通過區(qū)塊鏈轉(zhuǎn)移數(shù)字資產(chǎn)的轉(zhuǎn)出私鑰和對應(yīng)的轉(zhuǎn)出公鑰;
地址生成單元,用于對轉(zhuǎn)出公鑰進行編碼處理,生成轉(zhuǎn)入地址;
數(shù)字簽名單元,用于基于轉(zhuǎn)出私鑰,對擬轉(zhuǎn)移的數(shù)字資產(chǎn)的轉(zhuǎn)移數(shù)值和轉(zhuǎn)入地址進行數(shù)字簽名;
數(shù)據(jù)生成單元,用于基于轉(zhuǎn)移數(shù)值、轉(zhuǎn)入地址、數(shù)字簽名和轉(zhuǎn)出公鑰,獲得數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù);
數(shù)據(jù)廣播單元,用于將數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)廣播至區(qū)塊鏈中,以使得:
認(rèn)證端對所述數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行一級認(rèn)證,或者
在所述一級認(rèn)證之后,所述服務(wù)端和認(rèn)證端共同對所述數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行多級認(rèn)證。
第四方面,提供了一種基于區(qū)塊鏈的認(rèn)證裝置。該裝置包括:
數(shù)據(jù)接收單元,用于接收終端廣播在區(qū)塊鏈中的數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù);
數(shù)據(jù)認(rèn)證單元,用于對所接收的數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行一級認(rèn)證,或者
在所述一級認(rèn)證之后,與所述終端共同對所述數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行多級認(rèn)證:所述數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)包括:擬轉(zhuǎn)移的數(shù)字資產(chǎn)的轉(zhuǎn)移數(shù)值、轉(zhuǎn)入地址、數(shù)字簽名、用于通過區(qū)塊鏈轉(zhuǎn)移數(shù)字資產(chǎn)的轉(zhuǎn)出公鑰。
第一方面,本實施例在需要轉(zhuǎn)移數(shù)字資產(chǎn)時,通過對隨機數(shù)進行系列處理生成密鑰和轉(zhuǎn)入地址,從而解決了現(xiàn)有密鑰和轉(zhuǎn)入地址丟失、遺忘或者暴力破解等問題,可以提高黑客攻擊的能力。
第二方面,本實施例通過一級或者多級認(rèn)證,提高了認(rèn)證的準(zhǔn)確性,可以滿足在區(qū)塊鏈開放環(huán)境下數(shù)據(jù)和交易的安全需求。
第三方面,本實施例通過區(qū)塊鏈轉(zhuǎn)移數(shù)字資產(chǎn)可以快速處理數(shù)據(jù)、使得數(shù)據(jù)公開、透明、無法篡改。
附圖說明
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對本發(fā)明實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面所描述的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1(a)是本發(fā)明一實施例的基于區(qū)塊鏈的認(rèn)證系統(tǒng)架構(gòu)示意圖。
圖1(b)是本發(fā)明一實施例的區(qū)塊鏈節(jié)點結(jié)構(gòu)示意圖。
圖2是本發(fā)明一實施例的基于區(qū)塊鏈的認(rèn)證方法流程示意圖。
圖3是本發(fā)明一實施例的獲得數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)的流程示意圖。
圖4是本發(fā)明另一實施例的基于區(qū)塊鏈的認(rèn)證方法流程示意圖。
圖5是本發(fā)明又一實施例的基于區(qū)塊鏈的認(rèn)證方法流程示意圖。
圖6是本發(fā)明一實施例的基于區(qū)塊鏈的認(rèn)證裝置的結(jié)構(gòu)示意圖。
圖7是本發(fā)明另一實施例的基于區(qū)塊鏈的認(rèn)證裝置的結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結(jié)合實施例來詳細(xì)說明本申請。
圖1(a)是本發(fā)明一實施例的基于區(qū)塊鏈的認(rèn)證系統(tǒng)架構(gòu)示意圖。
如圖1(a)所示,該系統(tǒng)架構(gòu)可以包括:區(qū)塊鏈100、網(wǎng)絡(luò)200、區(qū)塊鏈節(jié)點110、120、130、140、150和160。區(qū)塊鏈100可以看作分布式統(tǒng)一賬本,由所有參與方(區(qū)塊鏈節(jié)點110-160)共同決定記賬內(nèi)容。每個參與方都保存有全量數(shù)據(jù),任何個體參與方無法對數(shù)據(jù)進行篡改。根據(jù)不同的交互場景,區(qū)塊鏈節(jié)點可以是終端節(jié)點、認(rèn)證服務(wù)器節(jié)點、商戶節(jié)點、第三方節(jié)點和銀行節(jié)點等。各個節(jié)點可以是各種電子設(shè)備。這些電子設(shè)備包括但不限于個人電腦、智能手機、平板電腦、個人數(shù)字助理、服務(wù)器等。這些電子設(shè)備可以安裝有各種通訊客戶端應(yīng)用,例如即時通信工具、郵箱客戶端、社交平臺軟件、音頻視頻軟件等。其中,這些電子設(shè)備具有存儲器和邏輯運算處理器、控制元件等。這些電子設(shè)備可以發(fā)送數(shù)據(jù)請求,或者可以接收數(shù)據(jù)請求,還可以對數(shù)據(jù)進行分析、驗證和存儲等處理。
網(wǎng)絡(luò)200用以在區(qū)塊鏈節(jié)點110-160之間提供通信鏈路的介質(zhì)。具體的,網(wǎng)絡(luò)可以包括各種連接類型,例如有線、無線通信鏈路或者光纖電纜等。
可以理解圖1(a)中的區(qū)塊鏈100、網(wǎng)絡(luò)200和區(qū)塊鏈節(jié)點110-160的數(shù)量是示意性的,可以根據(jù)實際需要進行靈活配置。
圖1(b)是本發(fā)明一實施例的區(qū)塊鏈節(jié)點結(jié)構(gòu)示意圖。
如圖1(b)區(qū)塊鏈節(jié)點110可以是終端,例如安卓系統(tǒng)的智能手機。該終端可以包括:數(shù)字貨幣客戶端、時鐘clock、安全芯片SE、Javacard API接口、Javacard運行環(huán)境、Javacard虛擬機、底層OS??梢岳斫?,區(qū)塊鏈節(jié)點120-160也可以是上述的智能手機,還可以是用于認(rèn)證數(shù)據(jù)的服務(wù)器。時鐘clock可以提供當(dāng)前時間參數(shù)。安全芯片SE可以存儲有程序,用于執(zhí)行認(rèn)證的各步驟的操作。
在本實施例中,終端可以對待轉(zhuǎn)移的數(shù)字資產(chǎn)進行加密,以確保數(shù)字資產(chǎn)可以安全、可靠地從一個區(qū)塊鏈節(jié)點轉(zhuǎn)移至另一個區(qū)塊鏈節(jié)點,或者從區(qū)塊鏈之外的一個轉(zhuǎn)出端通過區(qū)塊鏈轉(zhuǎn)至區(qū)塊鏈之外的轉(zhuǎn)入端。其中,加密技術(shù)可以依托成熟Javacard框架,通過加密算法類JAVACard API組成加密算法結(jié)構(gòu)框架。該框架可以包括各種密鑰、各種簽名算法、各種加密算法等?;谟布E的數(shù)字貨幣身份認(rèn)證Applet可以使用這些加密算法類建立與Applet有關(guān)的安全邏輯,提高Applet運行時的安全級別。同時也可以使用這些加密算法類為SE外部應(yīng)用提供加解密服務(wù),以體現(xiàn)SE在整個系統(tǒng)中作為安全保障的這一特征。Javacard技術(shù)有成熟的國際標(biāo)準(zhǔn),并通過國際檢測認(rèn)證取得資質(zhì)。Javacard規(guī)范(包括JCVM、JCRE、JCAPI規(guī)范)和GlobalPlatform規(guī)范中的安全域管理、邏輯通道和防火墻機制安全機制,能有效抵御非法代碼攻擊,保證Applet中的敏感數(shù)據(jù)不被暴露。
下面各實施例均可以應(yīng)用圖1(a)、圖1(b)所示系統(tǒng)架構(gòu)來進行數(shù)據(jù)認(rèn)證。為了描述簡潔,各個實施例可以相互參考引用。
圖2是本發(fā)明一實施例的基于區(qū)塊鏈的認(rèn)證方法流程示意圖。
如圖2所示,該方法包括以下步驟:S210,根據(jù)隨機數(shù)生成用于通過區(qū)塊鏈轉(zhuǎn)移數(shù)字資產(chǎn)的轉(zhuǎn)出私鑰和對應(yīng)的轉(zhuǎn)出公鑰;S220,對轉(zhuǎn)出公鑰進行編碼處理,生成轉(zhuǎn)入地址;S230,基于轉(zhuǎn)出私鑰,對擬轉(zhuǎn)移的數(shù)字資產(chǎn)的轉(zhuǎn)移數(shù)值、轉(zhuǎn)入地址和其他必要數(shù)據(jù)進行數(shù)字簽名;S240,基于轉(zhuǎn)移數(shù)值、轉(zhuǎn)入地址、數(shù)字簽名和轉(zhuǎn)出公鑰,獲得數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù);S250,將數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)廣播至區(qū)塊鏈中,以使得:認(rèn)證端對所述數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行一級認(rèn)證,或者在所述一級認(rèn)證之后,所述服務(wù)端和認(rèn)證端共同對所述數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行多級認(rèn)證。
本實施例可以應(yīng)用于終端側(cè),終端可以作為本實施例的動作執(zhí)行主體,具體執(zhí)行各個步驟操作。終端的安全芯片SE可以存儲有數(shù)字貨幣身份認(rèn)證Applet應(yīng)用程序,該程序可以實現(xiàn)如下功能:初始化公鑰、生成轉(zhuǎn)入地址、簽名、驗證等功能。
在步驟S210中,安全芯片SE可以使用隨機數(shù)發(fā)生器生成私鑰Sk。將私鑰Sk經(jīng)過非對稱加密算法處理可以得到公鑰Pk。
生成對應(yīng)的轉(zhuǎn)出公鑰可以包括:基于所述轉(zhuǎn)出私鑰,通過橢圓曲線加密算法ECC、RSA加密算法、Elgamal加密算法、D-H加密算法、國密SM2算法中至少一種非對稱加密算法生成所述對應(yīng)的轉(zhuǎn)出公鑰。
在步驟S220中,編碼處理可以是使用上述加密算法進行編碼處理。轉(zhuǎn)入地址可以是待轉(zhuǎn)入的錢包地址。
在步驟S230中,數(shù)字簽名可以是利用私鑰Sk對原始數(shù)據(jù)進行簽名。交易(或者轉(zhuǎn)移)的原始數(shù)據(jù)可以包括:轉(zhuǎn)賬數(shù)額和轉(zhuǎn)入錢包地址。
在步驟S240中,數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)可以包括:轉(zhuǎn)移數(shù)值、轉(zhuǎn)入地址、數(shù)字簽名和轉(zhuǎn)出公鑰。本實施例可以將轉(zhuǎn)出簽名和轉(zhuǎn)出公鑰添加到原始數(shù)據(jù)中生成優(yōu)化的交易數(shù)據(jù)。優(yōu)化的交易數(shù)據(jù)可以包括:轉(zhuǎn)賬數(shù)額、轉(zhuǎn)入錢包地址、轉(zhuǎn)出簽名和轉(zhuǎn)出公鑰。
在步驟S250中,終端可以通過區(qū)塊鏈將數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)發(fā)送到用于認(rèn)證數(shù)據(jù)的認(rèn)證端(即認(rèn)證服務(wù)器)。
第一方面,本實施例在需要轉(zhuǎn)移數(shù)字資產(chǎn)時,通過對隨機數(shù)進行系列處理生成密鑰和轉(zhuǎn)入地址,從而解決了現(xiàn)有密鑰和轉(zhuǎn)入地址丟失、遺忘或者暴力破解等問題,可以提高黑客攻擊的能力。
第二方面,本實施例通過一級或者多級認(rèn)證,提高了認(rèn)證的準(zhǔn)確性,可以滿足在區(qū)塊鏈開放環(huán)境下數(shù)據(jù)和交易的安全需求。
第三方面,本實施例通過區(qū)塊鏈轉(zhuǎn)移數(shù)字資產(chǎn)可以快速處理數(shù)據(jù)、使得數(shù)據(jù)公開、透明、無法篡改。
作為圖1所示實施例的第一變形實施例,在圖2所示實施例的基礎(chǔ)上增加以下步驟:S260,接收來自認(rèn)證端的加密數(shù)據(jù),加密數(shù)據(jù)是認(rèn)證端利用轉(zhuǎn)出公鑰對隨機數(shù)種子進行加密所生成的;S270,利用轉(zhuǎn)出私鑰對所接收的加密數(shù)據(jù)進行解密,獲取隨機數(shù)種子。本實施例可以應(yīng)用于轉(zhuǎn)賬數(shù)額較小(例如轉(zhuǎn)賬上限為999元)的場景。在本實施例中僅需認(rèn)證端的服務(wù)器進行一級認(rèn)證即可。
在本實施例中,公鑰Pk經(jīng)數(shù)字貨幣APP通過區(qū)塊鏈發(fā)送到認(rèn)證服務(wù)器,認(rèn)證服務(wù)器生成隨機數(shù)種子Seed并使用Pk加密E(seed,PK),并通過區(qū)塊鏈返回到數(shù)字貨幣APP,安全芯片SE數(shù)字貨幣applet用私鑰Sk解密E(seed,PK)并保存隨機數(shù)種子seed。
作為圖1所示實施例的第二變形實施例,可以在第一變形實施例的基礎(chǔ)上增加以下步驟:S280,接收來自認(rèn)證端的當(dāng)前時間參數(shù)和第一OTP(One-time Password,動態(tài)口令)值,第一OTP值是對隨機數(shù)種子和當(dāng)前時間參數(shù)進行哈希運算得到的。
作為圖1所示實施例的第三變形實施例,可以在第二變形實施例的基礎(chǔ)上增加以下步驟:S2100,對隨機數(shù)種子和當(dāng)前時間參數(shù)進行哈希運算得到的第二OTP值;S2110,驗證第一OTP值和第二OTP值是否相等;S2120,當(dāng)驗證結(jié)果指示相等時,數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)通過多級認(rèn)證。本實施例可以是2級認(rèn)證,即認(rèn)證端進行第一次認(rèn)證,然后客戶端進行第二次認(rèn)證。本實施例可以應(yīng)用于當(dāng)轉(zhuǎn)賬數(shù)額較大(例如,大于1000元)時,引入提供額外身份認(rèn)證的手段。在這種情況下,由接收方數(shù)字貨幣APP向認(rèn)證服務(wù)器發(fā)起大額交易認(rèn)證申請,認(rèn)證服務(wù)器對初始隨機數(shù)種子seed和當(dāng)前時間time進行Hash計算,生成OTP值,返回給數(shù)字貨幣APP。數(shù)字貨幣APP將收到的OTP值和當(dāng)前時間一起返回給安全芯片SE身份認(rèn)證Applet,Applet使用自己保存的初始隨機數(shù)種子seed和當(dāng)前時間一起計算得到OTP’,當(dāng)?shù)玫絆TP=OTP’一致結(jié)果時,通過驗證,對交易數(shù)據(jù)進行數(shù)字簽名,并通過區(qū)塊鏈返回交易發(fā)起方,從而完成交易。
本實施例通過端生成OTP數(shù)值,由客戶端(SE)進行認(rèn)證的大額支付方案,增強了客戶端的認(rèn)證權(quán)利,比客戶端生成OTP數(shù)值,由服務(wù)器認(rèn)證更加科學(xué)合理。
在一些實施例中,對轉(zhuǎn)出公鑰進行編碼處理,生成轉(zhuǎn)入地址(即,S220)可以包括以下步驟:S221,對轉(zhuǎn)出公鑰通過哈希運算得到公鑰哈希值;S222,為公鑰哈希值設(shè)置首部版本數(shù)據(jù);S223,為公鑰哈希值設(shè)置尾部校驗數(shù)據(jù);S224,對設(shè)置了首部版本數(shù)據(jù)和尾部校驗數(shù)據(jù)的公鑰哈希值進行編碼處理,生成轉(zhuǎn)入地址。
在一些實施例中,為公鑰哈希值設(shè)置尾部校驗數(shù)據(jù)(即,S223)的步驟可以包括:S2231,對設(shè)置了首部版本數(shù)據(jù)的公鑰哈希值進行預(yù)設(shè)次數(shù)的哈希運算;S2232,提取運算的結(jié)果中的指定部分?jǐn)?shù)據(jù),生成尾部校驗數(shù)據(jù)。
在一些實施例中,預(yù)設(shè)次數(shù)為2次,多級為2級。
例如,首先使用隨機數(shù)發(fā)生器生成“私鑰”,“私鑰”經(jīng)過ECC算法處理成“公鑰”。通過已知的“私鑰”可以算出“公鑰”,而“公鑰”已知時無法反向推出“私鑰”。公鑰通過哈希算法得到“公鑰哈希”,但通過“公鑰哈?!辈荒艿玫健肮€”,將一個字節(jié)的地址版本號鏈接到“公鑰哈?!鳖^部,對其進行兩次哈希運算,將結(jié)果的前4字節(jié)作為公鑰哈希的校驗值,連接在其尾部。將這一結(jié)果使用加密算法進行編碼,就得到了“錢包地址”。
上述實施例可以通過硬件SE中加載的數(shù)字貨幣身份認(rèn)證Applet進行區(qū)塊鏈(數(shù)字貨幣交易)上交易簽名,提高了交易的安全性和可靠性。
圖3是本發(fā)明一實施例的獲得數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)的流程示意圖。
如圖3所示,獲得數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)可以包括:S310,根據(jù)隨機數(shù)RADOM生成轉(zhuǎn)出私鑰Sk;S320,對轉(zhuǎn)出私鑰Sk進行加密算法處理;S330,生成轉(zhuǎn)出公鑰Pk;S340,設(shè)置原始數(shù)據(jù):轉(zhuǎn)賬數(shù)額和轉(zhuǎn)入地址;S350,對轉(zhuǎn)出私鑰Sk與原始數(shù)據(jù)進行數(shù)字簽名;S360,生成轉(zhuǎn)出簽名;S370,將轉(zhuǎn)出簽名和轉(zhuǎn)出公鑰Pk添加到原始數(shù)據(jù)中生成了優(yōu)化的交易數(shù)據(jù),優(yōu)化的交易數(shù)據(jù)包括:轉(zhuǎn)賬數(shù)額、轉(zhuǎn)入地址、轉(zhuǎn)出簽名和轉(zhuǎn)出公鑰Pk。
圖4是本發(fā)明另一實施例的基于區(qū)塊鏈的認(rèn)證方法流程示意圖。
如圖4所示,該方法包括以下步驟:S410,接收終端廣播在區(qū)塊鏈中的數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù);S420,在一級認(rèn)證之后,與終端共同對數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行多級認(rèn)證;數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)包括:擬轉(zhuǎn)移的數(shù)字資產(chǎn)的轉(zhuǎn)移數(shù)值、轉(zhuǎn)入地址、數(shù)字簽名、用于通過區(qū)塊鏈轉(zhuǎn)移數(shù)字資產(chǎn)的轉(zhuǎn)出公鑰。
在一些實施例中,對所接收的數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行一級認(rèn)證包括:對所接收的數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行合法性驗證。例如,接收方數(shù)字貨幣身份認(rèn)證Applet收到交易數(shù)據(jù)后通過轉(zhuǎn)算法對交易數(shù)據(jù)進行解密得到原始交易數(shù)據(jù),當(dāng)轉(zhuǎn)賬數(shù)額小于1000元(即上限為999元)時,對數(shù)據(jù)進行檢驗,其中包括對數(shù)字簽名、交易數(shù)據(jù)是否大于零等進行的檢驗,如果校驗正確,數(shù)字貨幣就成功的從“轉(zhuǎn)出錢包”轉(zhuǎn)移到“轉(zhuǎn)入錢包”,完成交易。交易文件中生成唯一序列號,通過區(qū)塊鏈全網(wǎng)同步。
本實施例可以應(yīng)用于認(rèn)證端側(cè),服務(wù)器可以作為本實施例的動作執(zhí)行主體,具體執(zhí)行各個步驟操作。本實施例與圖2所示實施例構(gòu)思相同,但從不同的角度(認(rèn)證端的角度與終端的角度)來描述基于區(qū)塊鏈的認(rèn)證方法。
在一些實施例中,與終端共同對數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行多級認(rèn)證包括:生成隨機數(shù)種子;基于轉(zhuǎn)出公鑰,對隨機數(shù)種子進行加密并生成加密數(shù)據(jù);將加密數(shù)據(jù)發(fā)送給終端側(cè),以供終端對加密數(shù)據(jù)進行解密,并獲取隨機數(shù)種子。
對隨機數(shù)種子和當(dāng)前時間參數(shù)進行哈希運算得到第一OTP值;將第一OTP值發(fā)送給終端,以供終端:對隨機數(shù)種子和當(dāng)前時間參數(shù)進行哈希運算得到的第二OTP值,驗證第一OTP值和第二OTP值是否相等,當(dāng)驗證結(jié)果指示相等時,通過多級認(rèn)證。
圖5是本發(fā)明又一實施例的基于區(qū)塊鏈的認(rèn)證方法流程示意圖。本實施例是從終端和服務(wù)器兩側(cè)進行數(shù)據(jù)交互的角度來描述認(rèn)證方法的實現(xiàn)方式。
如圖5所示,該方法包括以下步驟:
S501,終端根據(jù)隨機數(shù)生成用于通過區(qū)塊鏈轉(zhuǎn)移數(shù)字資產(chǎn)的轉(zhuǎn)出私鑰Sk;
S502,終端利用非對稱加密算法對轉(zhuǎn)出私鑰進行一系列運算處理,生成轉(zhuǎn)出公鑰Pk,將公鑰Pk發(fā)送給服務(wù)器;
S503,服務(wù)器生成隨機數(shù)種子Seed,基于轉(zhuǎn)出公鑰Pk,對隨機數(shù)種子進行加密并生成加密數(shù)據(jù)E(Seed,Pk),將加密數(shù)據(jù)發(fā)送給終端;
S504,終端用私鑰Sk對加密數(shù)據(jù)進行解密,并獲取并保存隨機數(shù)種子Seed。終端向服務(wù)器發(fā)送優(yōu)化的交易數(shù)據(jù);
S505,服務(wù)器判斷轉(zhuǎn)賬數(shù)額是否達(dá)到閾值(例如閾值為1000元);
S506,當(dāng)沒有達(dá)到閾值時,服務(wù)器對優(yōu)化的交易數(shù)據(jù)進行一級認(rèn)證;
S507,當(dāng)達(dá)到閾值時,服務(wù)器對隨機數(shù)種子Seed和當(dāng)前時間進行哈希運算得到OTP值,將當(dāng)前時間和OTP值發(fā)送給終端;
S508,終端對隨機數(shù)種子Seed和當(dāng)前時間參數(shù)進行哈希運算得到的OTP’值;
S509,終端驗證OTP值和OTP’值是否相等;
S510,當(dāng)驗證結(jié)果指示相等時,通過二級認(rèn)證。
在本實施例中,可以終端的安全芯片使用隨機數(shù)發(fā)生器生成私鑰Sk,私鑰經(jīng)過ECC算法處理成公鑰Pk。公鑰Pk經(jīng)數(shù)字貨幣APP通過區(qū)塊鏈發(fā)送到認(rèn)證服務(wù)器,認(rèn)證服務(wù)器生成隨機數(shù)種子Seed并使用Pk加密E(seed,Pk),并通過區(qū)塊鏈返回到數(shù)字貨幣APP,安全芯片SE數(shù)字貨幣applet用私鑰Sk解密E(seed,Pk)并保存隨機數(shù)種子seed。
發(fā)起交易時,交易數(shù)據(jù)由轉(zhuǎn)出錢包私鑰Sk’生成。交易的原始數(shù)據(jù)包括“轉(zhuǎn)賬數(shù)額”和“轉(zhuǎn)入錢包地址”,然后用私鑰Sk’對原始數(shù)據(jù)簽名。轉(zhuǎn)出私鑰通過ECC算法處理后,得到轉(zhuǎn)出公鑰Pk’。轉(zhuǎn)出簽名和轉(zhuǎn)出公鑰添加到原始數(shù)據(jù)中生成了優(yōu)化的交易數(shù)據(jù),通過區(qū)塊鏈發(fā)送到接收方節(jié)點數(shù)字貨幣APP。
接收方數(shù)字貨幣身份認(rèn)證Applet收到交易數(shù)據(jù)后通過轉(zhuǎn)算法對交易數(shù)據(jù)進行解密得到原始交易數(shù)據(jù),當(dāng)轉(zhuǎn)賬數(shù)額小于1000元(即上限為999元)時,對數(shù)據(jù)進行檢驗,其中包括對數(shù)字簽名的檢驗,如果校驗正確,數(shù)字貨幣就成功的從“轉(zhuǎn)出錢包”轉(zhuǎn)移到“轉(zhuǎn)入錢包”,完成交易。交易文件中生成唯一序列號,通過區(qū)塊鏈全網(wǎng)同步。
當(dāng)轉(zhuǎn)賬數(shù)額大于1000元時,引入提供額外身份認(rèn)證的手段。在這種情況下,由接收方數(shù)字貨幣APP向認(rèn)證服務(wù)器發(fā)起大額交易認(rèn)證申請,認(rèn)證服務(wù)器對初始隨機數(shù)種子seed和當(dāng)前時間time進行Hash計算,生成OTP值(即第一OTP值),返回給數(shù)字貨幣APP。數(shù)字貨幣APP將收到的OTP值和當(dāng)前時間一起返回給安全芯片SE身份認(rèn)證Applet,Applet使用自己保存的初始隨機數(shù)種子seed和當(dāng)前時間一起計算得到OTP’(即第二OTP值),當(dāng)?shù)玫絆TP=OTP’一致結(jié)果時,通過驗證,完成交易。
需要說明的是,在不沖突的情況下,本領(lǐng)域的技術(shù)人員可以按實際需要將上述的操作步驟的順序進行靈活調(diào)整,或者將上述步驟進行靈活組合等操作。為了簡明,不再贅述各種實現(xiàn)方式。另外,各實施例的內(nèi)容可以相互參考引用。
圖6是本發(fā)明一實施例的基于區(qū)塊鏈的認(rèn)證裝置的結(jié)構(gòu)示意圖。本實施例可以應(yīng)用于終端側(cè)。
如圖6所示,基于區(qū)塊鏈的認(rèn)證裝置600可以包括:密鑰生成單元610、地址生成單元620、數(shù)字簽名單元630、數(shù)據(jù)生成單元640和數(shù)據(jù)廣播單元650。其中,密鑰生成單元610可以用于根據(jù)隨機數(shù)生成用于通過區(qū)塊鏈轉(zhuǎn)移數(shù)字資產(chǎn)的轉(zhuǎn)出私鑰和對應(yīng)的轉(zhuǎn)出公鑰;地址生成單元620可以用于對轉(zhuǎn)出公鑰進行編碼處理,生成轉(zhuǎn)入地址;數(shù)字簽名單元630可以用于基于轉(zhuǎn)出私鑰,對擬轉(zhuǎn)移的數(shù)字資產(chǎn)的轉(zhuǎn)移數(shù)值和轉(zhuǎn)入地址進行數(shù)字簽名;數(shù)據(jù)生成單元640可以用于基于轉(zhuǎn)移數(shù)值、轉(zhuǎn)入地址、數(shù)字簽名和轉(zhuǎn)出公鑰,獲得數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù);數(shù)據(jù)廣播單元650可以用于將數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)廣播至區(qū)塊鏈中,以使得:認(rèn)證端對數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行一級認(rèn)證,或者在一級認(rèn)證之后,服務(wù)端和認(rèn)證端共同對數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行多級認(rèn)證??梢岳斫猓瑪?shù)字簽名單元630還可以對其他必要數(shù)據(jù)進行數(shù)字簽名。
需要說明的是,本實施例中所示的功能單元或者功能模塊的實現(xiàn)方式可以為硬件、軟件、固件或者它們的組合。當(dāng)以硬件方式實現(xiàn)時,其可以例如是電子電路、專用集成電路(ASIC)、適當(dāng)?shù)墓碳?、插件、功能卡等等。?dāng)以軟件方式實現(xiàn)時,本發(fā)明的元素是被用于執(zhí)行所需任務(wù)的程序或者代碼段。程序或者代碼段可以存儲在機器可讀介質(zhì)中,或者通過載波中攜帶的數(shù)據(jù)信號在傳輸介質(zhì)或者通信鏈路上傳送?!皺C器可讀介質(zhì)”可以包括能夠存儲或傳輸信息的任何介質(zhì)。機器可讀介質(zhì)的例子包括電子電路、半導(dǎo)體存儲器設(shè)備、ROM、閃存、可擦除ROM(EROM)、軟盤、CD-ROM、光盤、硬盤、光纖介質(zhì)、射頻(RF)鏈路,等等。代碼段可以經(jīng)由諸如因特網(wǎng)、內(nèi)聯(lián)網(wǎng)等的計算機網(wǎng)絡(luò)被下載。
作為圖6所示實施例的第一變形實施例,可以在圖6實施例的基礎(chǔ)上增加:數(shù)據(jù)接收單元和數(shù)據(jù)解密單元。其中,數(shù)據(jù)接收單元可以用于接收來自認(rèn)證端的加密數(shù)據(jù),加密數(shù)據(jù)是認(rèn)證端利用轉(zhuǎn)出公鑰對隨機數(shù)種子進行加密所生成的;數(shù)據(jù)解密單元可以用于利用轉(zhuǎn)出私鑰對所接收的加密數(shù)據(jù)進行解密,獲取隨機數(shù)種子。
作為圖6所示實施例的第二變形實施例,可以在第一變形實施例的基礎(chǔ)上增加:數(shù)據(jù)接收單元。其中,數(shù)據(jù)接收單元可以還用于接收來自認(rèn)證端的當(dāng)前時間參數(shù)和第一OTP值,第一OTP值是對隨機數(shù)種子和當(dāng)前時間參數(shù)進行哈希運算得到的。
作為圖6所示實施例的第三變形實施例,可以在第三變形實施例的基礎(chǔ)上增加:哈希運算單元和數(shù)據(jù)驗證單元。其中,哈希運算單元可以用于對隨機數(shù)種子和當(dāng)前時間參數(shù)進行哈希運算得到的第二OTP值;數(shù)據(jù)驗證單元可以用于驗證第一OTP值和第二OTP值是否相等,當(dāng)驗證結(jié)果指示相等時,數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)通過多級認(rèn)證。
在一些實施例中,地址生成單元可以包括:哈希運算模塊、首部設(shè)置模塊、尾部設(shè)置模塊和數(shù)據(jù)編碼模塊。其中,哈希運算模塊可以用于對轉(zhuǎn)出公鑰通過哈希運算得到公鑰哈希值;首部設(shè)置模塊可以用于為公鑰哈希值設(shè)置首部版本數(shù)據(jù);尾部設(shè)置模塊可以用于為公鑰哈希值設(shè)置尾部校驗數(shù)據(jù);數(shù)據(jù)編碼模塊可以用于對設(shè)置了首部版本數(shù)據(jù)和尾部校驗數(shù)據(jù)的公鑰哈希值進行編碼處理,生成轉(zhuǎn)入地址。
在一些實施例中,尾部設(shè)置模塊可以包括:哈希運算元件和數(shù)據(jù)提取元件。其中,哈希運算元件可以用于對設(shè)置了首部版本數(shù)據(jù)的公鑰哈希值進行預(yù)設(shè)次數(shù)的哈希運算;數(shù)據(jù)提取元件可以用于提取運算的結(jié)果中的指定部分?jǐn)?shù)據(jù),生成尾部校驗數(shù)據(jù)。
在一些實施例中,預(yù)設(shè)次數(shù)為2次,多級為2級??梢岳斫?,預(yù)設(shè)次數(shù)還可以是3次、4次,多級還可以是3級、4級,由于數(shù)量越大運算越復(fù)雜,當(dāng)預(yù)設(shè)次數(shù)為2次,多級為2級時,在滿足運算速度的條件下,認(rèn)證效果最佳。
在一些實施例中,密鑰生成單元還用于:基于所述轉(zhuǎn)出私鑰,通過橢圓曲線加密算法ECC、RSA加密算法、Elgamal加密算法、D-H加密算法、國密SM2算法中至少一種非對稱加密算法生成所述對應(yīng)的轉(zhuǎn)出公鑰。
在圖6所示的各實施例中,基于區(qū)塊鏈的認(rèn)證裝置600可以是移動終端。
圖7是本發(fā)明另一實施例的基于區(qū)塊鏈的認(rèn)證裝置的結(jié)構(gòu)示意圖。本實施例可以應(yīng)用于認(rèn)證端側(cè)。
如圖7所示,基于區(qū)塊鏈的認(rèn)證裝置700可以包括:數(shù)據(jù)接收單元710和數(shù)據(jù)認(rèn)證單元720。其中,數(shù)據(jù)接收單元710可以用于接收終端廣播在區(qū)塊鏈中的數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù);數(shù)據(jù)認(rèn)證單元720可以用于對所接收的數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行一級認(rèn)證,或者在一級認(rèn)證之后,與終端共同對數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行多級認(rèn)證:數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)包括:擬轉(zhuǎn)移的數(shù)字資產(chǎn)的轉(zhuǎn)移數(shù)值、轉(zhuǎn)入地址、數(shù)字簽名、用于通過區(qū)塊鏈轉(zhuǎn)移數(shù)字資產(chǎn)的轉(zhuǎn)出公鑰。
在一些實施例中,數(shù)據(jù)認(rèn)證單元可以包括:一級認(rèn)證模塊。一級認(rèn)證模塊可以用于:對所接收的數(shù)字資產(chǎn)轉(zhuǎn)移數(shù)據(jù)進行合法性驗證。
多級認(rèn)證模塊可以包括:種子生產(chǎn)元件、數(shù)據(jù)加密元件、數(shù)據(jù)發(fā)送元件、哈希運算元件和數(shù)值發(fā)送元件。其中:種子生產(chǎn)元件可以用于生成隨機數(shù)種子;數(shù)據(jù)加密元件可以用于基于轉(zhuǎn)出公鑰,對隨機數(shù)種子進行加密并生成加密數(shù)據(jù);數(shù)據(jù)發(fā)送元件可以用于將加密數(shù)據(jù)發(fā)送給終端側(cè),以供終端對加密數(shù)據(jù)進行解密,并獲取隨機數(shù)種子;哈希運算元件可以用于對隨機數(shù)種子和當(dāng)前時間參數(shù)進行哈希運算得到第一OTP值;數(shù)值發(fā)送元件可以用于將第一OTP值發(fā)送給終端,以供終端:對隨機數(shù)種子和當(dāng)前時間參數(shù)進行哈希運算得到的第二OTP值,驗證第一OTP值和第二OTP值是否相等,當(dāng)驗證結(jié)果指示相等時,通過多級認(rèn)證。
在圖7所示的各實施例中,基于區(qū)塊鏈的認(rèn)證裝置600可以是認(rèn)證服務(wù)器。
需要說明的是,上述各實施例的裝置可作為上述各實施例的用于各實施例的方法中的執(zhí)行主體,可以實現(xiàn)各個方法中的相應(yīng)流程,為了簡潔,此方面內(nèi)容不再贅述。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實施方式可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件。基于這樣的理解,上述技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在計算機可讀存儲介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個實施例或者實施例的某些部分所述的方法。
最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。