本公開(kāi)涉及信息技術(shù)領(lǐng)域,尤其涉及一種基于區(qū)塊鏈的身份認(rèn)證方法、裝置、節(jié)點(diǎn)及系統(tǒng)。
背景技術(shù):
身份認(rèn)證是目前計(jì)算機(jī)及網(wǎng)絡(luò)系統(tǒng)中確認(rèn)操作者身份的基本技術(shù)手段,是判斷被認(rèn)證對(duì)象的身份是否屬實(shí)和有效的一個(gè)過(guò)程。網(wǎng)絡(luò)系統(tǒng)中常用的身份認(rèn)證技術(shù)包括用戶名/口令、kerberos(一種網(wǎng)絡(luò)認(rèn)證協(xié)議)和pki(publickeyinfrastructure,公鑰基礎(chǔ)設(shè)施)等。這些認(rèn)證方法存在一個(gè)共同點(diǎn),即都存在一個(gè)認(rèn)證雙方共同信任的第三方機(jī)構(gòu),通過(guò)這個(gè)第三方機(jī)構(gòu)為認(rèn)證雙方發(fā)布身份信息,并以此身份信息作為認(rèn)證雙方間確認(rèn)對(duì)方身份的基礎(chǔ)。
但是,這樣上述的認(rèn)證機(jī)制容易出現(xiàn)由于單點(diǎn)故障問(wèn)題和安全問(wèn)題而影響整個(gè)系統(tǒng)的可用性和安全性的問(wèn)題,這是由于當(dāng)系統(tǒng)中的某個(gè)或某些節(jié)點(diǎn)(例如認(rèn)證雙方或者可信第三方機(jī)構(gòu))的故障容易導(dǎo)致其他節(jié)點(diǎn)無(wú)法獲取身份認(rèn)證信息,并且可信第三方機(jī)構(gòu)在網(wǎng)絡(luò)中的地址通常是固定的,極易受到各種攻擊,其可信第三方機(jī)構(gòu)自身安全性是整個(gè)系統(tǒng)安全的基礎(chǔ),當(dāng)可信第三方機(jī)構(gòu)的安全出現(xiàn)問(wèn)題時(shí),整個(gè)系統(tǒng)的安全則無(wú)法保證。
技術(shù)實(shí)現(xiàn)要素:
本公開(kāi)的目的是提供一種基于區(qū)塊鏈的身份認(rèn)證方法、裝置、節(jié)點(diǎn)及系統(tǒng),用于解決現(xiàn)有認(rèn)證機(jī)制由于單點(diǎn)故障問(wèn)題和安全問(wèn)題而影響整個(gè)系統(tǒng)的可用性和安全性的問(wèn)題。
為了實(shí)現(xiàn)上述目的,根據(jù)本公開(kāi)實(shí)施例的第一方面,本公開(kāi)提供一種基于區(qū)塊鏈的身份認(rèn)證方法,應(yīng)用于認(rèn)證方節(jié)點(diǎn),所述方法包括:
接收被認(rèn)證方節(jié)點(diǎn)發(fā)送的認(rèn)證請(qǐng)求,所述認(rèn)證請(qǐng)求中包括所述被認(rèn)證方節(jié)點(diǎn)的身份信息和身份證明發(fā)布節(jié)點(diǎn)的身份信息;
在確認(rèn)所述被認(rèn)證方節(jié)點(diǎn)的身份信息、所述身份證明發(fā)布節(jié)點(diǎn)的身份信息,以及所述身份證明發(fā)布節(jié)點(diǎn)對(duì)所述被認(rèn)證方節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名得到的第一數(shù)字簽名已寫(xiě)入?yún)^(qū)塊鏈中時(shí),根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)所述第一數(shù)字簽名進(jìn)行驗(yàn)證;所述身份證明發(fā)布節(jié)點(diǎn)的公鑰是根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的身份信息獲取的;
在所述第一數(shù)字簽名通過(guò)驗(yàn)證后,驗(yàn)證所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰;所述被認(rèn)證方節(jié)點(diǎn)的公鑰是根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的身份信息獲取的;
當(dāng)確認(rèn)所述被認(rèn)證方已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰時(shí),確定所述被認(rèn)證方節(jié)點(diǎn)通過(guò)身份認(rèn)證。
可選的,所述在所述第一數(shù)字簽名通過(guò)驗(yàn)證后,驗(yàn)證所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰,包括:
在所述第一數(shù)字簽名通過(guò)驗(yàn)證后,向所述被認(rèn)證方節(jié)點(diǎn)發(fā)送驗(yàn)證信息;
接收所述被認(rèn)證方節(jié)點(diǎn)根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)所述驗(yàn)證信息進(jìn)行數(shù)字簽名得到的第二數(shù)字簽名;
根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)所述第二數(shù)字簽名進(jìn)行驗(yàn)證;
當(dāng)所述第二數(shù)字簽名通過(guò)驗(yàn)證時(shí),確認(rèn)所述被認(rèn)證方已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,所述在所述第一數(shù)字簽名通過(guò)驗(yàn)證后,向所述被認(rèn)證方確認(rèn)所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰,包括:
接收所述被認(rèn)證方節(jié)點(diǎn)發(fā)送的驗(yàn)證信息,以及被認(rèn)證方節(jié)點(diǎn)根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)所述驗(yàn)證信息進(jìn)行數(shù)字簽名得到的第三數(shù)字簽名;所述驗(yàn)證信息是所述被認(rèn)證方節(jié)點(diǎn)根據(jù)預(yù)設(shè)的信息生成規(guī)則生成的,所述信息生成規(guī)則預(yù)設(shè)置在所述被認(rèn)證方節(jié)點(diǎn)和所述認(rèn)證方節(jié)點(diǎn);
驗(yàn)證所述驗(yàn)證信息是否是按照所述信息生成規(guī)則生成的;
當(dāng)所述驗(yàn)證信息是按照所述信息生成規(guī)則生成的時(shí),根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)所述第三數(shù)字簽名進(jìn)行驗(yàn)證;
當(dāng)所述第三數(shù)字簽名通過(guò)驗(yàn)證時(shí),確認(rèn)所述被認(rèn)證方已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,當(dāng)所述身份證明發(fā)布節(jié)點(diǎn)存在上一級(jí)身份證明發(fā)布節(jié)點(diǎn)時(shí),所述根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)所述第一數(shù)字簽名進(jìn)行驗(yàn)證,包括:
從所述區(qū)塊鏈中獲取所述上一級(jí)身份證明節(jié)點(diǎn)根據(jù)所述上一級(jí)身份證明節(jié)點(diǎn)的私鑰對(duì)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰進(jìn)行數(shù)字簽名得到的第四數(shù)字簽名;
根據(jù)所述上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)所述第四數(shù)字簽名進(jìn)行驗(yàn)證;所述上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰是從所述區(qū)塊鏈中獲取的,或者是預(yù)先存儲(chǔ)的;
在所述第四數(shù)字簽名通過(guò)驗(yàn)證后,根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)所述第一數(shù)字簽名進(jìn)行驗(yàn)證,所述身份證明發(fā)布節(jié)點(diǎn)的公鑰是從所述區(qū)塊鏈中獲取的,或者是預(yù)先存儲(chǔ)的。
可選的,所述在所述第一數(shù)字簽名通過(guò)驗(yàn)證后,在驗(yàn)證所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰之前,還包括:
在所述第一數(shù)字簽名通過(guò)驗(yàn)證后,從所述區(qū)塊鏈中獲取所述上一級(jí)身份證明節(jié)點(diǎn)根據(jù)所述上一級(jí)身份證明節(jié)點(diǎn)的私鑰對(duì)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰進(jìn)行數(shù)字簽名得到的第四數(shù)字簽名;
根據(jù)所述上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)所述第四數(shù)字簽名進(jìn)行驗(yàn)證;所述上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰是從所述區(qū)塊鏈中獲取的,或者是預(yù)先存儲(chǔ)的;
在所述第四數(shù)字簽名通過(guò)驗(yàn)證后,驗(yàn)證所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,所述被認(rèn)證方節(jié)點(diǎn)的身份信息包括所述被認(rèn)證方節(jié)點(diǎn)的賬戶地址或者所述被認(rèn)證方節(jié)點(diǎn)的公鑰,所述被認(rèn)證方節(jié)點(diǎn)的賬戶地址是根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的公鑰獲取的;所述身份證明發(fā)布節(jié)點(diǎn)的身份信息包括:所述身份證明發(fā)布節(jié)點(diǎn)的賬戶地址或者所述身份證明發(fā)布節(jié)點(diǎn)的公鑰,所述身份證明發(fā)布節(jié)點(diǎn)的賬戶地址是根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰獲取的。
根據(jù)本公開(kāi)實(shí)施例的第二方面,提供一種基于區(qū)塊鏈的身份認(rèn)證方法,應(yīng)用于被認(rèn)證方節(jié)點(diǎn),所述方法包括:
向認(rèn)證方發(fā)送認(rèn)證請(qǐng)求,所述認(rèn)證請(qǐng)求中包括所述被認(rèn)證方節(jié)點(diǎn)的身份信息和身份證明發(fā)布節(jié)點(diǎn)的身份信息;
在所述認(rèn)證方節(jié)點(diǎn)確認(rèn)所述被認(rèn)證方節(jié)點(diǎn)的身份信息、所述身份證明發(fā)布節(jié)點(diǎn)的身份信息、所述身份證明發(fā)布節(jié)點(diǎn)對(duì)所述被認(rèn)證方節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名得到的第一數(shù)字簽名已寫(xiě)入?yún)^(qū)塊鏈中,并且在所述第一數(shù)字簽名通過(guò)所述認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,與所述認(rèn)證方節(jié)點(diǎn)進(jìn)行所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰的驗(yàn)證;
當(dāng)所述認(rèn)證方節(jié)點(diǎn)確認(rèn)所述被認(rèn)證方已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰時(shí),所述被認(rèn)證方節(jié)點(diǎn)通過(guò)身份認(rèn)證。
可選的,所述在所述第一數(shù)字簽名通過(guò)所述認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,與所述認(rèn)證方節(jié)點(diǎn)進(jìn)行所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰的驗(yàn)證,包括:
在所述第一數(shù)字簽名通過(guò)所述認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,接收所述認(rèn)證方節(jié)點(diǎn)發(fā)送的驗(yàn)證信息;
根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)所述驗(yàn)證信息進(jìn)行數(shù)字簽名得到第二數(shù)字簽名;
向所述認(rèn)證方節(jié)點(diǎn)發(fā)送所述第二數(shù)字簽名,當(dāng)所述第二數(shù)字簽名通過(guò)所述認(rèn)證方的驗(yàn)證時(shí),所述被認(rèn)證方節(jié)點(diǎn)被確認(rèn)已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,所述在所述第一數(shù)字簽名通過(guò)所述認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,與所述認(rèn)證方節(jié)點(diǎn)進(jìn)行所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰的驗(yàn)證,包括:
在所述第一數(shù)字簽名通過(guò)所述認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,根據(jù)預(yù)設(shè)的信息生成規(guī)則生成驗(yàn)證信息;所述信息生成規(guī)則預(yù)設(shè)置在所述被認(rèn)證方節(jié)點(diǎn)和所述認(rèn)證方節(jié)點(diǎn);
根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)所述驗(yàn)證信息進(jìn)行數(shù)字簽名得到第三數(shù)字簽名;
向所述認(rèn)證方節(jié)點(diǎn)發(fā)送所述驗(yàn)證信息以及所述第三數(shù)字簽名;
當(dāng)所述認(rèn)證方節(jié)點(diǎn)確認(rèn)所述驗(yàn)證信息是按照所述信息生成規(guī)則生成的,并且所述認(rèn)證方節(jié)點(diǎn)根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)所述第三數(shù)字簽名進(jìn)行的驗(yàn)證通過(guò)驗(yàn)證時(shí),所述被認(rèn)證方節(jié)點(diǎn)被確認(rèn)已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,所述身份證明發(fā)布節(jié)點(diǎn)對(duì)所述被認(rèn)證方節(jié)點(diǎn)的身份信息和所述第一數(shù)字簽名寫(xiě)入所述區(qū)塊鏈的方法包括:
向所述區(qū)塊鏈寫(xiě)入身份證明請(qǐng)求,所述身份證明請(qǐng)求中包括所述被認(rèn)證方節(jié)點(diǎn)的身份信息,用于所述身份證明發(fā)布節(jié)點(diǎn)在所述區(qū)塊鏈中確認(rèn)所述被認(rèn)證方節(jié)點(diǎn)的身份信息,并根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的私鑰對(duì)所述被認(rèn)證方節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名得到所述第一數(shù)字簽名,并將所述第一數(shù)字簽名寫(xiě)入所述區(qū)塊鏈。
可選的,在所述身份證明發(fā)布節(jié)點(diǎn)向所述區(qū)塊鏈寫(xiě)入用于撤銷(xiāo)所述第一數(shù)字簽名的撤銷(xiāo)證明后,所述被認(rèn)證方節(jié)點(diǎn)的所述第一數(shù)字簽名被撤銷(xiāo),所述撤銷(xiāo)證明中包括對(duì)所述第一數(shù)字簽名的撤銷(xiāo)說(shuō)明,以及通過(guò)所述身份證明發(fā)布節(jié)點(diǎn)的私鑰對(duì)所述撤銷(xiāo)說(shuō)明進(jìn)行數(shù)字簽名得到第五數(shù)字簽名。
可選的,所述被認(rèn)證方節(jié)點(diǎn)的身份信息包括所述被認(rèn)證方節(jié)點(diǎn)的賬戶地址或者所述被認(rèn)證方節(jié)點(diǎn)的公鑰,所述被認(rèn)證方節(jié)點(diǎn)的賬戶地址是根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的公鑰獲取的;所述身份證明發(fā)布節(jié)點(diǎn)的身份信息包括:所述身份證明發(fā)布節(jié)點(diǎn)的賬戶地址或者所述身份證明發(fā)布節(jié)點(diǎn)的公鑰,所述身份證明發(fā)布節(jié)點(diǎn)的賬戶地址是根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰獲取的。
根據(jù)本公開(kāi)實(shí)施例的第三方面,提供一種基于區(qū)塊鏈的身份認(rèn)證裝置,應(yīng)用于認(rèn)證方節(jié)點(diǎn),所述裝置包括:
接收模塊,用于接收被認(rèn)證方節(jié)點(diǎn)發(fā)送的認(rèn)證請(qǐng)求,所述認(rèn)證請(qǐng)求中包括所述被認(rèn)證方節(jié)點(diǎn)的身份信息和身份證明發(fā)布節(jié)點(diǎn)的身份信息;
第一驗(yàn)證模塊,用于在確認(rèn)所述被認(rèn)證方節(jié)點(diǎn)的身份信息、所述身份證明發(fā)布節(jié)點(diǎn)的身份信息,以及所述身份證明發(fā)布節(jié)點(diǎn)對(duì)所述被認(rèn)證方節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名得到的第一數(shù)字簽名已寫(xiě)入?yún)^(qū)塊鏈中時(shí),根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)所述第一數(shù)字簽名進(jìn)行驗(yàn)證;所述身份證明發(fā)布節(jié)點(diǎn)的公鑰是根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的身份信息獲取的;
第二驗(yàn)證模塊,用于在所述第一數(shù)字簽名通過(guò)驗(yàn)證后,驗(yàn)證所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰;所述被認(rèn)證方節(jié)點(diǎn)的公鑰是根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的身份信息獲取的;
確定模塊,用于當(dāng)確認(rèn)所述被認(rèn)證方已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰時(shí),確定所述被認(rèn)證方節(jié)點(diǎn)通過(guò)身份認(rèn)證。
可選的,所述第二驗(yàn)證模塊包括:
發(fā)送子模塊,用于在所述第一數(shù)字簽名通過(guò)驗(yàn)證后,向所述被認(rèn)證方節(jié)點(diǎn)發(fā)送驗(yàn)證信息;
接收子模塊,用于接收所述被認(rèn)證方節(jié)點(diǎn)根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)所述驗(yàn)證信息進(jìn)行數(shù)字簽名得到的第二數(shù)字簽名;
驗(yàn)證子模塊,用于根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)所述第二數(shù)字簽名進(jìn)行驗(yàn)證;
確認(rèn)子模塊,用于確定當(dāng)所述第二數(shù)字簽名通過(guò)驗(yàn)證時(shí),確認(rèn)所述被認(rèn)證方已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,所述第二驗(yàn)證模塊包括:
接收子模塊,用于接收所述被認(rèn)證方節(jié)點(diǎn)發(fā)送的驗(yàn)證信息,以及被認(rèn)證方節(jié)點(diǎn)根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)所述驗(yàn)證信息進(jìn)行數(shù)字簽名得到的第三數(shù)字簽名;所述驗(yàn)證信息是所述被認(rèn)證方節(jié)點(diǎn)根據(jù)預(yù)設(shè)的信息生成規(guī)則生成的,所述信息生成規(guī)則預(yù)設(shè)置在所述被認(rèn)證方節(jié)點(diǎn)和所述認(rèn)證方節(jié)點(diǎn);
信息驗(yàn)證子模塊,用于驗(yàn)證所述驗(yàn)證信息是否是按照所述信息生成規(guī)則生成的;
簽名驗(yàn)證子模塊,用于當(dāng)所述驗(yàn)證信息是按照所述信息生成規(guī)則生成的時(shí),根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)所述第三數(shù)字簽名進(jìn)行驗(yàn)證;
確認(rèn)子模塊,用于當(dāng)所述第三數(shù)字簽名通過(guò)驗(yàn)證時(shí),確認(rèn)所述被認(rèn)證方已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,當(dāng)所述身份證明發(fā)布節(jié)點(diǎn)存在上一級(jí)身份證明發(fā)布節(jié)點(diǎn)時(shí),所述第一驗(yàn)證模塊用于:
從所述區(qū)塊鏈中獲取所述上一級(jí)身份證明節(jié)點(diǎn)根據(jù)所述上一級(jí)身份證明節(jié)點(diǎn)的私鑰對(duì)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰進(jìn)行數(shù)字簽名得到的第四數(shù)字簽名;所述上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰是從所述區(qū)塊鏈中獲取的,或者是預(yù)先存儲(chǔ)的;
根據(jù)所述上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)所述第四數(shù)字簽名進(jìn)行驗(yàn)證;
在所述第四數(shù)字簽名通過(guò)驗(yàn)證后,根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)所述第一數(shù)字簽名進(jìn)行驗(yàn)證,所述身份證明發(fā)布節(jié)點(diǎn)的公鑰是從所述區(qū)塊鏈中獲取的,或者是預(yù)先存儲(chǔ)的。
可選的,所述第一驗(yàn)證模塊用于:
在所述第一數(shù)字簽名通過(guò)驗(yàn)證后,從所述區(qū)塊鏈中獲取所述上一級(jí)身份證明節(jié)點(diǎn)根據(jù)所述上一級(jí)身份證明節(jié)點(diǎn)的私鑰對(duì)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰進(jìn)行數(shù)字簽名得到的第四數(shù)字簽名;
根據(jù)所述上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)所述第四數(shù)字簽名進(jìn)行驗(yàn)證;所述上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰是從所述區(qū)塊鏈中獲取的,或者是預(yù)先存儲(chǔ)的;
所述發(fā)送模塊還用于在所述第四數(shù)字簽名通過(guò)驗(yàn)證后,所述第二驗(yàn)證模塊驗(yàn)證所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,所述被認(rèn)證方節(jié)點(diǎn)的身份信息包括所述被認(rèn)證方節(jié)點(diǎn)的賬戶地址或者所述被認(rèn)證方節(jié)點(diǎn)的公鑰,所述被認(rèn)證方節(jié)點(diǎn)的賬戶地址是根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的公鑰獲取的;所述身份證明發(fā)布節(jié)點(diǎn)的身份信息包括:所述身份證明發(fā)布節(jié)點(diǎn)的賬戶地址或者所述身份證明發(fā)布節(jié)點(diǎn)的公鑰,所述身份證明發(fā)布節(jié)點(diǎn)的賬戶地址是根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰獲取的。
根據(jù)本公開(kāi)實(shí)施例的第四方面,提供一種基于區(qū)塊鏈的身份認(rèn)證裝置,應(yīng)用于被認(rèn)證方節(jié)點(diǎn),所述裝置包括:
認(rèn)證請(qǐng)求模塊,用于向認(rèn)證方發(fā)送認(rèn)證請(qǐng)求,所述認(rèn)證請(qǐng)求中包括所述被認(rèn)證方節(jié)點(diǎn)的身份信息和身份證明發(fā)布節(jié)點(diǎn)的身份信息;
驗(yàn)證模塊,用于在所述認(rèn)證方節(jié)點(diǎn)確認(rèn)所述被認(rèn)證方節(jié)點(diǎn)的身份信息、所述身份證明發(fā)布節(jié)點(diǎn)的身份信息、所述身份證明發(fā)布節(jié)點(diǎn)對(duì)所述被認(rèn)證方節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名得到的第一數(shù)字簽名已寫(xiě)入?yún)^(qū)塊鏈中,并且在所述第一數(shù)字簽名通過(guò)所述認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,與所述認(rèn)證方節(jié)點(diǎn)進(jìn)行所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰的驗(yàn)證;當(dāng)所述認(rèn)證方節(jié)點(diǎn)確認(rèn)所述被認(rèn)證方已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰時(shí),所述被認(rèn)證方節(jié)點(diǎn)通過(guò)身份認(rèn)證。
可選的,所述驗(yàn)證模塊包括:
接收子模塊,用于在所述第一數(shù)字簽名通過(guò)所述認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,接收所述認(rèn)證方節(jié)點(diǎn)發(fā)送的驗(yàn)證信息;
簽名子模塊,用于根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)所述驗(yàn)證信息進(jìn)行數(shù)字簽名得到第二數(shù)字簽名;
發(fā)送子模塊,用于向所述認(rèn)證方節(jié)點(diǎn)發(fā)送所述第二數(shù)字簽名,當(dāng)所述第二數(shù)字簽名通過(guò)所述認(rèn)證方的驗(yàn)證時(shí),所述被認(rèn)證方節(jié)點(diǎn)被確認(rèn)已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,所述驗(yàn)證模塊包括:
信息生成子模塊,用于在所述第一數(shù)字簽名通過(guò)所述認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,根據(jù)預(yù)設(shè)的信息生成規(guī)則生成驗(yàn)證信息;所述信息生成規(guī)則預(yù)設(shè)置在所述被認(rèn)證方節(jié)點(diǎn)和所述認(rèn)證方節(jié)點(diǎn);
簽名子模塊,用于根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)所述驗(yàn)證信息進(jìn)行數(shù)字簽名得到第三數(shù)字簽名;
發(fā)送子模塊,用于向所述認(rèn)證方節(jié)點(diǎn)發(fā)送所述驗(yàn)證信息以及所述第三數(shù)字簽名;當(dāng)所述認(rèn)證方節(jié)點(diǎn)確認(rèn)所述驗(yàn)證信息是按照所述信息生成規(guī)則生成的,并且所述認(rèn)證方節(jié)點(diǎn)根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)所述第三數(shù)字簽名進(jìn)行的驗(yàn)證通過(guò)驗(yàn)證時(shí),所述被認(rèn)證方節(jié)點(diǎn)被確認(rèn)已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,所述裝置還包括:身份證明請(qǐng)求模塊,用于:
向所述區(qū)塊鏈寫(xiě)入身份證明請(qǐng)求,所述身份證明請(qǐng)求中包括所述被認(rèn)證方節(jié)點(diǎn)的身份信息,用于所述身份證明發(fā)布節(jié)點(diǎn)在所述區(qū)塊鏈中確認(rèn)所述被認(rèn)證方節(jié)點(diǎn)的身份信息,并根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的私鑰對(duì)所述被認(rèn)證方節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名得到所述第一數(shù)字簽名,并將所述第一數(shù)字簽名寫(xiě)入所述區(qū)塊鏈。
可選的,在所述身份證明發(fā)布節(jié)點(diǎn)向所述區(qū)塊鏈寫(xiě)入用于撤銷(xiāo)所述第一數(shù)字簽名的撤銷(xiāo)證明后,所述被認(rèn)證方節(jié)點(diǎn)的所述第一數(shù)字簽名被撤銷(xiāo),所述撤銷(xiāo)證明中包括對(duì)所述第一數(shù)字簽名的撤銷(xiāo)說(shuō)明,以及通過(guò)所述身份證明發(fā)布節(jié)點(diǎn)的私鑰對(duì)所述撤銷(xiāo)說(shuō)明進(jìn)行數(shù)字簽名得到第五數(shù)字簽名。
可選的,所述被認(rèn)證方節(jié)點(diǎn)的身份信息包括所述被認(rèn)證方節(jié)點(diǎn)的賬戶地址或者所述被認(rèn)證方節(jié)點(diǎn)的公鑰,所述被認(rèn)證方節(jié)點(diǎn)的賬戶地址是根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的公鑰獲取的;所述身份證明發(fā)布節(jié)點(diǎn)的身份信息包括:所述身份證明發(fā)布節(jié)點(diǎn)的賬戶地址或者所述身份證明發(fā)布節(jié)點(diǎn)的公鑰,所述身份證明發(fā)布節(jié)點(diǎn)的賬戶地址是根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰獲取的。
根據(jù)本公開(kāi)實(shí)施例的第五方面,提供一種非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中包括一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序用于第一方面所述的方法。
根據(jù)本公開(kāi)實(shí)施例的第六方面,提供一種用戶節(jié)點(diǎn),所述用戶節(jié)點(diǎn)包括:
第五方面所述的非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì);以及
一個(gè)或者多個(gè)處理器,用于執(zhí)行所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的程序。
根據(jù)本公開(kāi)實(shí)施例的第七方面,提供一種非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中包括一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序用于第二方面所述的方法。
根據(jù)本公開(kāi)實(shí)施例的第八方面,提供一種用戶節(jié)點(diǎn),所述用戶節(jié)點(diǎn)包括:
第七方面所述的非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì);以及
一個(gè)或者多個(gè)處理器,用于執(zhí)行所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的程序。
根據(jù)本公開(kāi)實(shí)施例的第九方面,提供一種身份認(rèn)證系統(tǒng),所述系統(tǒng)包括:
區(qū)塊鏈;
至少一個(gè)第六方面所述的用戶節(jié)點(diǎn),作為認(rèn)證方節(jié)點(diǎn);
至少一個(gè)第八方面所述的用戶節(jié)點(diǎn),作為被認(rèn)證方節(jié)點(diǎn);以及
至少一個(gè)身份證明發(fā)布節(jié)點(diǎn);
其中,所述區(qū)塊鏈,所述至少一個(gè)第六方面所述的用戶節(jié)點(diǎn),所述至少一個(gè)第八方面所述的用戶節(jié)點(diǎn)以及所述至少一個(gè)身份證明發(fā)布節(jié)點(diǎn)屬于同一區(qū)塊鏈網(wǎng)絡(luò)。
可選的,所述至少一個(gè)身份證明發(fā)布節(jié)點(diǎn)為一個(gè)身份證明發(fā)布節(jié)點(diǎn),所述身份證明發(fā)布節(jié)點(diǎn)用于向所述區(qū)塊鏈發(fā)布第一用戶節(jié)點(diǎn)的身份證明;所述第一用戶節(jié)點(diǎn)為任一用戶節(jié)點(diǎn);
其中,所述身份證明發(fā)布節(jié)點(diǎn)向所述區(qū)塊鏈發(fā)布第一用戶節(jié)點(diǎn)的身份證明包括:所述身份證明發(fā)布節(jié)點(diǎn)在所述區(qū)塊鏈中確認(rèn)所述第一用戶節(jié)點(diǎn)的身份信息,并根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的私鑰對(duì)所述第一用戶節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名,并將得到的數(shù)字簽名寫(xiě)入所述區(qū)塊鏈。
可選的,所述至少一個(gè)身份證明發(fā)布節(jié)點(diǎn)至少包括一個(gè)身份證明發(fā)布節(jié)點(diǎn)和所述身份證明發(fā)布節(jié)點(diǎn)的上一級(jí)身份證明發(fā)布節(jié)點(diǎn),所述身份證明發(fā)布節(jié)點(diǎn)用于向所述區(qū)塊鏈發(fā)布第一用戶節(jié)點(diǎn)的身份證明,所述第一用戶節(jié)點(diǎn)為任一用戶節(jié)點(diǎn),所述上一級(jí)身份證明發(fā)布節(jié)點(diǎn)用于向所述區(qū)塊鏈發(fā)布所述身份證明發(fā)布節(jié)點(diǎn)的身份證明;
其中,所述身份證明發(fā)布節(jié)點(diǎn)向所述區(qū)塊鏈發(fā)布第一用戶節(jié)點(diǎn)的身份證明包括:所述身份證明發(fā)布節(jié)點(diǎn)在所述區(qū)塊鏈中確認(rèn)所述第一用戶節(jié)點(diǎn)的身份信息,并根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的私鑰對(duì)所述第一用戶節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名,并將得到的數(shù)字簽名寫(xiě)入所述區(qū)塊鏈;
所述上一級(jí)身份證明發(fā)布節(jié)點(diǎn)向所述區(qū)塊鏈發(fā)布所述身份證明發(fā)布節(jié)點(diǎn)的身份證明包括:所述上一級(jí)身份證明節(jié)點(diǎn)根據(jù)所述上一級(jí)身份證明節(jié)點(diǎn)的私鑰對(duì)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰進(jìn)行數(shù)字簽名,并將得到的數(shù)字簽名寫(xiě)入所述區(qū)塊鏈。
可選的,所述系統(tǒng)包括多個(gè)身份證明發(fā)布子系統(tǒng),每個(gè)身份證明發(fā)布子系統(tǒng)中包括至少一個(gè)身份證明發(fā)布節(jié)點(diǎn)和至少一個(gè)用戶節(jié)點(diǎn);
其中,當(dāng)?shù)谝簧矸葑C明發(fā)布子系統(tǒng)中包括一個(gè)身份證明發(fā)布節(jié)點(diǎn)時(shí),所述身份證明發(fā)布節(jié)點(diǎn)用于向所述區(qū)塊鏈發(fā)布所述第一身份證明發(fā)布子系統(tǒng)的第一用戶節(jié)點(diǎn)的身份證明,所述第一用戶節(jié)點(diǎn)為所述第一身份證明發(fā)布子系統(tǒng)中的任一用戶節(jié)點(diǎn);所述第一身份證明發(fā)布子系統(tǒng)為所述多個(gè)身份證明發(fā)布子系統(tǒng)中的任一身份證明發(fā)布子系統(tǒng);
當(dāng)?shù)谝簧矸葑C明發(fā)布子系統(tǒng)中至少包括一個(gè)身份證明發(fā)布節(jié)點(diǎn)和所述身份證明發(fā)布節(jié)點(diǎn)的上一級(jí)身份證明發(fā)布節(jié)點(diǎn),所述身份證明發(fā)布節(jié)點(diǎn)用于向所述區(qū)塊鏈發(fā)布所述第一身份證明發(fā)布子系統(tǒng)的所述第一用戶節(jié)點(diǎn)的身份證明,所述上一級(jí)身份證明發(fā)布節(jié)點(diǎn)用于向所述區(qū)塊鏈發(fā)布所述身份證明發(fā)布節(jié)點(diǎn)的身份證明;
其中,所述身份證明發(fā)布節(jié)點(diǎn)向所述區(qū)塊鏈發(fā)布所述第一身份證明發(fā)布子系統(tǒng)的所述第一用戶節(jié)點(diǎn)的身份證明包括:所述身份證明發(fā)布節(jié)點(diǎn)在所述區(qū)塊鏈中確認(rèn)所述第一用戶節(jié)點(diǎn)的身份信息,并根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的私鑰對(duì)所述第一用戶節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名,并將得到的數(shù)字簽名寫(xiě)入所述區(qū)塊鏈;
所述上一級(jí)身份證明發(fā)布節(jié)點(diǎn)向所述區(qū)塊鏈發(fā)布所述身份證明發(fā)布節(jié)點(diǎn)的身份證明包括:所述上一級(jí)身份證明節(jié)點(diǎn)根據(jù)所述上一級(jí)身份證明節(jié)點(diǎn)的私鑰對(duì)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰進(jìn)行數(shù)字簽名,并將得到的數(shù)字簽名寫(xiě)入所述區(qū)塊鏈。
通過(guò)上述技術(shù)方案,由于被認(rèn)證方的身份信息和身份證明發(fā)布節(jié)點(diǎn)的身份信息均記錄在區(qū)塊鏈中,不會(huì)因?yàn)槟硞€(gè)或某些節(jié)點(diǎn)的故障導(dǎo)致無(wú)法獲取身份信息,因此能夠避免單點(diǎn)故障對(duì)整個(gè)系統(tǒng)的影響,并且在區(qū)塊鏈網(wǎng)絡(luò)中,由于任何一個(gè)節(jié)點(diǎn)只要配置了身份證明發(fā)布節(jié)點(diǎn)的私鑰,其角色就是身份認(rèn)證發(fā)布節(jié)點(diǎn),因此身份證明發(fā)布節(jié)點(diǎn)不是固定的某一節(jié)點(diǎn),攻擊者無(wú)法對(duì)對(duì)身份認(rèn)證信息發(fā)布節(jié)點(diǎn)進(jìn)行定位,從而無(wú)法對(duì)身份認(rèn)證節(jié)點(diǎn)發(fā)起攻擊,從而保證了整個(gè)系統(tǒng)的安全,因此能夠解決由于單點(diǎn)故障問(wèn)題和安全問(wèn)題而影響整個(gè)系統(tǒng)的可用性和安全性的問(wèn)題,保證整個(gè)系統(tǒng)的可用性和安全性。
本公開(kāi)的其他特征和優(yōu)點(diǎn)將在隨后的具體實(shí)施方式部分予以詳細(xì)說(shuō)明。
附圖說(shuō)明
附圖是用來(lái)提供對(duì)本公開(kāi)的進(jìn)一步理解,并且構(gòu)成說(shuō)明書(shū)的一部分,與下面的具體實(shí)施方式一起用于解釋本公開(kāi),但并不構(gòu)成對(duì)本公開(kāi)的限制。在附圖中:
圖1是根據(jù)一實(shí)施例示出的一種基于區(qū)塊鏈的身份認(rèn)證方法的流程圖;
圖2是根據(jù)一實(shí)施例示出的一種基于區(qū)塊鏈的身份認(rèn)證方法的流程圖;
圖3是根據(jù)一實(shí)施例示出的另一種基于區(qū)塊鏈的身份認(rèn)證方法的流程圖;
圖4是根據(jù)圖3所示實(shí)施例示出的一種私鑰驗(yàn)證方法的流程圖;
圖5是根據(jù)圖3所示實(shí)施例示出的另一種私鑰驗(yàn)證方法的流程圖;
圖6是根據(jù)一實(shí)施例示出的一種基于區(qū)塊鏈的身份認(rèn)證裝置框圖;
圖7是根據(jù)圖6所示實(shí)施例示出的一種第二驗(yàn)證模塊框圖;
圖8是根據(jù)圖6所示實(shí)施例示出的另一種第二驗(yàn)證模塊框圖;
圖9是根據(jù)一實(shí)施例示出的另一種基于區(qū)塊鏈的身份認(rèn)證裝置框圖;
圖10是根據(jù)圖9所示實(shí)施例示出的一種驗(yàn)證模塊框圖;
圖11是根據(jù)圖9所示實(shí)施例示出的另一種驗(yàn)證模塊框圖;
圖12是根據(jù)一實(shí)施例示出的又一種基于區(qū)塊鏈的身份認(rèn)證裝置框圖;
圖13是根據(jù)一實(shí)施例示出的一種身份認(rèn)證系統(tǒng)結(jié)構(gòu)框圖;
圖14a是根據(jù)一實(shí)施例示出的另一種身份認(rèn)證系統(tǒng)結(jié)構(gòu)框圖;
圖14b是根據(jù)一實(shí)施例示出的又一種身份認(rèn)證系統(tǒng)結(jié)構(gòu)框圖;
圖15是根據(jù)一實(shí)施例示出的又一種身份認(rèn)證系統(tǒng)結(jié)構(gòu)框圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本公開(kāi)的具體實(shí)施方式進(jìn)行詳細(xì)說(shuō)明。應(yīng)當(dāng)理解的是,此處所描述的具體實(shí)施方式僅用于說(shuō)明和解釋本公開(kāi),并不用于限制本公開(kāi)。
在對(duì)本公開(kāi)提供的基于區(qū)塊鏈的身份認(rèn)證方法進(jìn)行說(shuō)明之前,先對(duì)本公開(kāi)各個(gè)實(shí)施例所涉及的應(yīng)用場(chǎng)景進(jìn)行介紹。
首先,對(duì)區(qū)塊鏈進(jìn)行介紹,區(qū)塊鏈?zhǔn)怯蓞^(qū)塊鏈網(wǎng)絡(luò)中所有節(jié)點(diǎn)共同參與維護(hù)的去中心化分布式數(shù)據(jù)庫(kù)系統(tǒng),它是由一系列基于密碼學(xué)方法產(chǎn)生的數(shù)據(jù)塊組成,每個(gè)數(shù)據(jù)塊即為區(qū)塊鏈中的一個(gè)區(qū)塊。根據(jù)產(chǎn)生時(shí)間的先后順序,區(qū)塊被有序地鏈接在一起,形成一個(gè)數(shù)據(jù)鏈條,被形象地稱(chēng)為區(qū)塊鏈。下面對(duì)區(qū)塊鏈網(wǎng)絡(luò)的一些概念進(jìn)行介紹。
區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點(diǎn)可以稱(chēng)為區(qū)塊鏈節(jié)點(diǎn),其中區(qū)塊鏈網(wǎng)絡(luò)基于p2p(peertopeer,對(duì)等網(wǎng)絡(luò))網(wǎng)絡(luò),每個(gè)參與交易和區(qū)塊存儲(chǔ)、驗(yàn)證、轉(zhuǎn)發(fā)的p2p網(wǎng)絡(luò)節(jié)點(diǎn)都是一個(gè)區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點(diǎn)。
區(qū)塊鏈中的用戶身份可以使用公鑰或者是根據(jù)該公鑰生成的賬戶地址表示,并且公鑰和私鑰是成對(duì)出現(xiàn)的,其中私鑰由用戶掌握而不發(fā)布到上述的區(qū)塊鏈網(wǎng)絡(luò)中,公鑰或者上述的賬戶地址可隨意發(fā)布在區(qū)塊鏈網(wǎng)絡(luò)中。其中,公鑰可以通過(guò)特定的哈希和編碼后成為上述的賬戶地址。值得一提的是,用戶身份和區(qū)塊鏈節(jié)點(diǎn)不存在一一對(duì)應(yīng)關(guān)系,用戶可以在任意一個(gè)區(qū)塊鏈節(jié)點(diǎn)上使用自己的私鑰。
關(guān)于區(qū)塊鏈的數(shù)據(jù)寫(xiě)入,是由區(qū)塊鏈節(jié)點(diǎn)通過(guò)向區(qū)塊鏈網(wǎng)絡(luò)發(fā)布交易(transaction)實(shí)現(xiàn)向區(qū)塊鏈寫(xiě)入數(shù)據(jù)。該交易包括:區(qū)塊鏈節(jié)點(diǎn)按照預(yù)設(shè)的交易數(shù)據(jù)格式對(duì)生成的交易數(shù)據(jù)包,以及利用該區(qū)塊鏈節(jié)點(diǎn)自己的私鑰對(duì)該交易數(shù)據(jù)包進(jìn)行的數(shù)字簽名,該數(shù)字簽名用于證明該區(qū)塊鏈節(jié)點(diǎn)的用戶的身份;而后,該交易被區(qū)塊鏈網(wǎng)絡(luò)中的“礦工”(即執(zhí)行pow(proofofwork,工作證明)共識(shí)競(jìng)爭(zhēng)機(jī)制的區(qū)塊鏈節(jié)點(diǎn))記錄入?yún)^(qū)塊鏈中產(chǎn)生的新區(qū)塊,并將該交易發(fā)布到區(qū)塊鏈網(wǎng)絡(luò)中,在該交易被其他區(qū)塊鏈節(jié)點(diǎn)驗(yàn)證通過(guò)(其他節(jié)點(diǎn)可以從該區(qū)塊鏈節(jié)點(diǎn)生成的交易中獲取該區(qū)塊鏈節(jié)點(diǎn)的公鑰,并根據(jù)該區(qū)塊鏈節(jié)點(diǎn)的公鑰對(duì)上述的數(shù)字簽名進(jìn)行驗(yàn)證,除了驗(yàn)證數(shù)字簽名之外還可以驗(yàn)證交易數(shù)據(jù)包是否為規(guī)定的數(shù)據(jù)結(jié)構(gòu))和接受后,該交易即被寫(xiě)入?yún)^(qū)塊鏈。其中,區(qū)塊鏈中的新區(qū)塊是由上述的“礦工”通過(guò)執(zhí)行pow共識(shí)競(jìng)爭(zhēng)機(jī)制(該機(jī)制可以理解為:各個(gè)“礦工”按照區(qū)塊的預(yù)設(shè)技術(shù)要求,例如按照預(yù)設(shè)的隨機(jī)數(shù)要求來(lái)共同計(jì)算隨機(jī)數(shù),哪一個(gè)“礦工”先計(jì)算出符合該隨機(jī)數(shù)要求的隨機(jī)數(shù),該“礦工”產(chǎn)生的區(qū)塊就作為該新區(qū)塊)而定期產(chǎn)生的,因此產(chǎn)生新區(qū)塊的時(shí)間間隔通常和上述的預(yù)設(shè)技術(shù)要求相關(guān),通過(guò)設(shè)置不同的預(yù)設(shè)技術(shù)要求可以改變區(qū)塊鏈產(chǎn)生新區(qū)塊的時(shí)間間隔。
本發(fā)明公開(kāi)的各個(gè)實(shí)施例中,向區(qū)塊鏈中寫(xiě)入數(shù)據(jù)的流程均是采用上述流程。本發(fā)明公開(kāi)各個(gè)實(shí)施例所涉及的應(yīng)用場(chǎng)景可以是一種身份認(rèn)證系統(tǒng),該系統(tǒng)基于區(qū)塊鏈,可以至少包括:區(qū)塊鏈、兩個(gè)以上用戶節(jié)點(diǎn)和一個(gè)身份證明發(fā)布節(jié)點(diǎn),該區(qū)塊鏈、用戶節(jié)點(diǎn)和身份證明發(fā)布節(jié)點(diǎn)均屬于同一區(qū)塊鏈網(wǎng)絡(luò)。其中,用戶節(jié)點(diǎn)是身份證明的需求節(jié)點(diǎn),用于實(shí)際進(jìn)行身份認(rèn)證操作。身份證明發(fā)布節(jié)點(diǎn)是用于為用戶節(jié)點(diǎn)發(fā)布身份證明的節(jié)點(diǎn),這里的“發(fā)布身份證明”,是指對(duì)用戶節(jié)點(diǎn)的身份信息進(jìn)行確認(rèn)、數(shù)字簽名、并將數(shù)字簽名寫(xiě)入?yún)^(qū)塊鏈,并且在區(qū)塊鏈網(wǎng)絡(luò)中,身份證明發(fā)布節(jié)點(diǎn)可以不是固定的某一個(gè)節(jié)點(diǎn),任何一個(gè)節(jié)點(diǎn)只要配置了身份證明發(fā)布節(jié)點(diǎn)的私鑰,其角色就是身份認(rèn)證發(fā)布節(jié)點(diǎn)。通常身份證明發(fā)布節(jié)點(diǎn)的身份信息(的賬戶地址或公鑰)已寫(xiě)入?yún)^(qū)塊鏈,并得到用戶節(jié)點(diǎn)的認(rèn)可。
圖1是根據(jù)一實(shí)施例示出的一種基于區(qū)塊鏈的身份認(rèn)證方法的流程圖,該方法應(yīng)用于被認(rèn)證方節(jié)點(diǎn),該被認(rèn)證方節(jié)點(diǎn)可以是上述身份認(rèn)證系統(tǒng)中的任一用戶節(jié)點(diǎn),參見(jiàn)圖1,該方法可以包括以下步驟。
步驟101,向認(rèn)證方發(fā)送認(rèn)證請(qǐng)求,認(rèn)證請(qǐng)求中包括被認(rèn)證方節(jié)點(diǎn)的身份信息和身份證明發(fā)布節(jié)點(diǎn)的身份信息。
其中,認(rèn)證方節(jié)點(diǎn)也是上述系統(tǒng)中除了該被認(rèn)證方節(jié)點(diǎn)外的任一用戶節(jié)點(diǎn),即該身份認(rèn)證方法是兩個(gè)用戶節(jié)點(diǎn)之間進(jìn)行的,并且每個(gè)用戶節(jié)點(diǎn)既可以作為被認(rèn)證方節(jié)點(diǎn)也可以作為認(rèn)證方節(jié)點(diǎn)。另外被認(rèn)證方節(jié)點(diǎn)的身份信息包括被認(rèn)證方節(jié)點(diǎn)的賬戶地址或者被認(rèn)證方節(jié)點(diǎn)的公鑰,被認(rèn)證方節(jié)點(diǎn)的賬戶地址是根據(jù)被認(rèn)證方節(jié)點(diǎn)的公鑰獲取的;身份證明發(fā)布節(jié)點(diǎn)的身份信息包括:身份證明發(fā)布節(jié)點(diǎn)的賬戶地址或者身份證明發(fā)布節(jié)點(diǎn)的公鑰,身份證明發(fā)布節(jié)點(diǎn)的賬戶地址是根據(jù)身份證明發(fā)布節(jié)點(diǎn)的公鑰獲取的。其中,上述各個(gè)節(jié)點(diǎn)的賬戶地址可以是通過(guò)將公鑰進(jìn)行特定的哈希計(jì)算以及編碼后生成的。
步驟102,在認(rèn)證方節(jié)點(diǎn)在確認(rèn)被認(rèn)證方節(jié)點(diǎn)的身份信息、身份證明發(fā)布節(jié)點(diǎn)的身份信息、身份證明發(fā)布節(jié)點(diǎn)對(duì)被認(rèn)證方節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名得到的第一數(shù)字簽名已寫(xiě)入?yún)^(qū)塊鏈中,并且在第一數(shù)字簽名通過(guò)認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,與認(rèn)證方節(jié)點(diǎn)進(jìn)行被認(rèn)證方是否掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰的驗(yàn)證。
步驟103,當(dāng)認(rèn)證方節(jié)點(diǎn)確認(rèn)被認(rèn)證方已掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰時(shí),被認(rèn)證方節(jié)點(diǎn)通過(guò)身份認(rèn)證。
圖2是根據(jù)一實(shí)施例示出的一種基于區(qū)塊鏈的身份認(rèn)證方法的流程圖,該方法應(yīng)用于認(rèn)證方節(jié)點(diǎn),該認(rèn)證方節(jié)點(diǎn)可以是上述身份認(rèn)證系統(tǒng)中的任一用戶節(jié)點(diǎn),參見(jiàn)圖2,該方法可以包括以下步驟。
步驟201,接收被認(rèn)證方節(jié)點(diǎn)發(fā)送的認(rèn)證請(qǐng)求,認(rèn)證請(qǐng)求中包括被認(rèn)證方節(jié)點(diǎn)的身份信息和身份證明發(fā)布節(jié)點(diǎn)的身份信息。
其中,被認(rèn)證方節(jié)點(diǎn)也是上述系統(tǒng)中除了該認(rèn)證方節(jié)點(diǎn)外的任一用戶節(jié)點(diǎn),即該身份認(rèn)證方法是兩個(gè)用戶節(jié)點(diǎn)之間進(jìn)行的,并且每個(gè)用戶節(jié)點(diǎn)既可以作為被認(rèn)證方節(jié)點(diǎn)也可以作為認(rèn)證方節(jié)點(diǎn)。另外被認(rèn)證方節(jié)點(diǎn)的身份信息和身份證明發(fā)布節(jié)點(diǎn)的身份信息所包括的內(nèi)容可參照步驟101,不再贅述。
步驟202,在確認(rèn)被認(rèn)證方節(jié)點(diǎn)的身份信息、身份證明發(fā)布節(jié)點(diǎn)的身份信息,以及身份證明發(fā)布節(jié)點(diǎn)對(duì)被認(rèn)證方節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名得到的第一數(shù)字簽名已寫(xiě)入?yún)^(qū)塊鏈中時(shí),根據(jù)身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)第一數(shù)字簽名進(jìn)行驗(yàn)證;身份證明發(fā)布節(jié)點(diǎn)的公鑰是根據(jù)身份證明發(fā)布節(jié)點(diǎn)的身份信息獲取的。
步驟203,在第一數(shù)字簽名通過(guò)驗(yàn)證后,驗(yàn)證被認(rèn)證方是否掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰;被認(rèn)證方節(jié)點(diǎn)的公鑰是根據(jù)被認(rèn)證方節(jié)點(diǎn)的身份信息獲取的。
步驟204,當(dāng)確認(rèn)被認(rèn)證方已掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰時(shí),確定被認(rèn)證方節(jié)點(diǎn)通過(guò)身份認(rèn)證。
圖3是根據(jù)一實(shí)施例示出的另一種基于區(qū)塊鏈的身份認(rèn)證方法的流程圖,該方法應(yīng)用于上述的身份認(rèn)證系統(tǒng),本實(shí)施例中的被認(rèn)證方節(jié)點(diǎn)和認(rèn)證方節(jié)點(diǎn)均為該認(rèn)證系統(tǒng)中的用戶節(jié)點(diǎn),參見(jiàn)圖3,該方法可以包括以下步驟。
步驟301,被認(rèn)證方節(jié)點(diǎn)向認(rèn)證方發(fā)送認(rèn)證請(qǐng)求,認(rèn)證請(qǐng)求中包括被認(rèn)證方節(jié)點(diǎn)的身份信息和身份證明發(fā)布節(jié)點(diǎn)的身份信息。
其中,認(rèn)證方節(jié)點(diǎn)和被認(rèn)證方節(jié)點(diǎn)可以是上述身份認(rèn)證系統(tǒng)中的任意兩個(gè)用戶節(jié)點(diǎn)。被認(rèn)證方節(jié)點(diǎn)的身份信息包括被認(rèn)證方節(jié)點(diǎn)的賬戶地址或者被認(rèn)證方節(jié)點(diǎn)的公鑰,被認(rèn)證方節(jié)點(diǎn)的賬戶地址是根據(jù)被認(rèn)證方節(jié)點(diǎn)的公鑰獲取的;身份證明發(fā)布節(jié)點(diǎn)的身份信息包括:身份證明發(fā)布節(jié)點(diǎn)的賬戶地址或者身份證明發(fā)布節(jié)點(diǎn)的公鑰,身份證明發(fā)布節(jié)點(diǎn)的賬戶地址是根據(jù)身份證明發(fā)布節(jié)點(diǎn)的公鑰獲取的。其中,上述各個(gè)節(jié)點(diǎn)的賬戶地址可以是通過(guò)將公鑰進(jìn)行特定的哈希計(jì)算以及編碼后生成的。
步驟302,認(rèn)證方節(jié)點(diǎn)接收被認(rèn)證方節(jié)點(diǎn)的認(rèn)證請(qǐng)求后,確認(rèn)被認(rèn)證方節(jié)點(diǎn)的身份信息、身份證明發(fā)布節(jié)點(diǎn)的身份信息,以及身份證明發(fā)布節(jié)點(diǎn)對(duì)被認(rèn)證方節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名得到的第一數(shù)字簽名是否已寫(xiě)入?yún)^(qū)塊鏈中。
其中,由于認(rèn)證方節(jié)點(diǎn)、被認(rèn)證方節(jié)點(diǎn)以及身份證明發(fā)布節(jié)點(diǎn)屬于同一個(gè)區(qū)塊鏈網(wǎng)絡(luò),在被認(rèn)證方節(jié)點(diǎn)的身份信息、身份證明發(fā)布節(jié)點(diǎn)的身份信息以及第一數(shù)字簽名已寫(xiě)入?yún)^(qū)塊鏈的情況下,認(rèn)證方節(jié)點(diǎn)是能夠從區(qū)塊鏈中讀取到這些信息的。其中,第一數(shù)字簽名是在身份證明發(fā)布節(jié)點(diǎn)向區(qū)塊鏈中發(fā)布被認(rèn)證方節(jié)點(diǎn)的身份證明后產(chǎn)生的。關(guān)于身份證明發(fā)布節(jié)點(diǎn)向區(qū)塊鏈中發(fā)布被認(rèn)證方節(jié)點(diǎn)的身份證明的方法,可以包括以下步驟:
首先,被認(rèn)證方節(jié)點(diǎn)向區(qū)塊鏈寫(xiě)入身份證明請(qǐng)求,身份證明請(qǐng)求中包括被認(rèn)證方節(jié)點(diǎn)的身份信息。其中向區(qū)塊鏈中寫(xiě)入身份證明請(qǐng)求的過(guò)程可以參照前文所述的區(qū)塊鏈的數(shù)據(jù)寫(xiě)入過(guò)程。
其次,身份證明發(fā)布節(jié)點(diǎn)在接收到身份證明請(qǐng)求后,在區(qū)塊鏈中確認(rèn)被認(rèn)證方節(jié)點(diǎn)的身份信息(例如確認(rèn)區(qū)塊鏈中已寫(xiě)入被認(rèn)證方節(jié)點(diǎn)的身份信息),并根據(jù)身份證明發(fā)布節(jié)點(diǎn)的私鑰對(duì)被認(rèn)證方節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名得到該第一數(shù)字簽名。
最后,將該第一數(shù)字簽名寫(xiě)入?yún)^(qū)塊鏈中,寫(xiě)入?yún)^(qū)塊鏈中后,區(qū)塊鏈網(wǎng)絡(luò)中的所有節(jié)點(diǎn)均可以讀取到該第一數(shù)字簽名,從而完成了對(duì)該被認(rèn)證方節(jié)點(diǎn)的身份證明的發(fā)布。
另外,值得一提的是,身份證明發(fā)布節(jié)點(diǎn)向區(qū)塊鏈中發(fā)布被認(rèn)證方節(jié)點(diǎn)的身份證明的流程應(yīng)當(dāng)在被認(rèn)證方節(jié)點(diǎn)向認(rèn)證方節(jié)點(diǎn)發(fā)起身份認(rèn)證之前。并且,向區(qū)塊鏈寫(xiě)入身份證明請(qǐng)求不限于上述的被認(rèn)證方節(jié)點(diǎn),區(qū)塊鏈網(wǎng)絡(luò)中的任一用戶節(jié)點(diǎn)均可以發(fā)起向區(qū)塊鏈寫(xiě)入身份證明請(qǐng)求。
步驟303,在被認(rèn)證方節(jié)點(diǎn)的身份信息、身份證明發(fā)布節(jié)點(diǎn)的身份信息以及第一數(shù)字簽名已寫(xiě)入?yún)^(qū)塊鏈中時(shí),認(rèn)證方節(jié)點(diǎn)根據(jù)身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)第一數(shù)字簽名進(jìn)行驗(yàn)證。
由于第一數(shù)字簽名是根據(jù)身份證明發(fā)布節(jié)點(diǎn)的私鑰對(duì)被認(rèn)證方節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名得到的,因此可以根據(jù)身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)第一數(shù)字簽名進(jìn)行驗(yàn)證,以確定該第一數(shù)字簽名的合法性,其中,身份證明發(fā)布節(jié)點(diǎn)的公鑰可以從區(qū)塊鏈中獲取,也可以是預(yù)先存儲(chǔ)在認(rèn)證方節(jié)點(diǎn)上的。其中,由于身份證明發(fā)布節(jié)點(diǎn)的身份信息已經(jīng)寫(xiě)入?yún)^(qū)塊鏈中,因此區(qū)塊鏈網(wǎng)絡(luò)中的任意節(jié)點(diǎn)均可以獲取該身份信息,因此,如果該身份信息是身份證明發(fā)布節(jié)點(diǎn)的公鑰,則認(rèn)證方節(jié)點(diǎn)可以直接得到身份證明發(fā)布節(jié)點(diǎn)的公鑰,如果該身份信息是身份證明發(fā)布節(jié)點(diǎn)的賬戶地址,則認(rèn)證方節(jié)點(diǎn)可以根據(jù)該賬戶地址進(jìn)行計(jì)算得到身份證明發(fā)布節(jié)點(diǎn)的公鑰。
步驟304,在第一數(shù)字簽名通過(guò)驗(yàn)證后,認(rèn)證方節(jié)點(diǎn)驗(yàn)證被認(rèn)證方是否掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
示例的,圖4是根據(jù)圖3所示實(shí)施例示出的一種私鑰驗(yàn)證方法的流程圖,如圖4所示,在一種實(shí)現(xiàn)方式中,驗(yàn)證被認(rèn)證方是否掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰可以通過(guò)以下步驟:
步驟3041a,在第一數(shù)字簽名通過(guò)驗(yàn)證后,認(rèn)證方節(jié)點(diǎn)生成驗(yàn)證信息。該驗(yàn)證信息可以是挑戰(zhàn)碼(challenge),挑戰(zhàn)碼也稱(chēng)作挑戰(zhàn)口令,是指遵循握手驗(yàn)證協(xié)議(英文:challengehandshakeauthenticationprotocol,簡(jiǎn)稱(chēng):chap)生成的一組加密口令,用于在傳輸過(guò)程中保證用戶的真實(shí)密碼不被泄露。或者驗(yàn)證信息可以是按照預(yù)設(shè)的信息生成規(guī)則生成的信息。
步驟3042a,認(rèn)證方節(jié)點(diǎn)向被認(rèn)證方節(jié)點(diǎn)發(fā)送驗(yàn)證信息。
步驟3043a,被認(rèn)證方節(jié)點(diǎn)根據(jù)被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)驗(yàn)證信息進(jìn)行數(shù)字簽名得到第二數(shù)字簽名。
步驟3044a,認(rèn)證方節(jié)點(diǎn)從被認(rèn)證方節(jié)點(diǎn)獲取第二數(shù)字簽名后,根據(jù)被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)第二數(shù)字簽名進(jìn)行驗(yàn)證。其中,被認(rèn)證方節(jié)點(diǎn)的公鑰可以是從區(qū)塊鏈中獲取的,也可以是預(yù)先存儲(chǔ)在認(rèn)證方節(jié)點(diǎn)的。
步驟3045a,當(dāng)?shù)诙?shù)字簽名通過(guò)驗(yàn)證時(shí),確認(rèn)被認(rèn)證方已掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
圖5是根據(jù)圖3所示實(shí)施例示出的另一種私鑰驗(yàn)證方法的流程圖,如圖5所示,在另一種實(shí)現(xiàn)方式中,驗(yàn)證被認(rèn)證方是否掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰可以通過(guò)以下步驟:
步驟3041b,在第一數(shù)字簽名通過(guò)認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,被認(rèn)證方節(jié)點(diǎn)根據(jù)預(yù)設(shè)的信息生成規(guī)則生成驗(yàn)證信息。
其中,驗(yàn)證信息可以與步驟3041a中所述的驗(yàn)證信息相同,信息生成規(guī)則預(yù)設(shè)置在被認(rèn)證方節(jié)點(diǎn)和認(rèn)證方節(jié)點(diǎn)。
步驟3042b,被認(rèn)證方節(jié)點(diǎn)根據(jù)被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)驗(yàn)證信息進(jìn)行數(shù)字簽名得到第三數(shù)字簽名。
步驟3043b,被認(rèn)證方節(jié)點(diǎn)向認(rèn)證方節(jié)點(diǎn)發(fā)送驗(yàn)證信息以及第三數(shù)字簽名。
步驟3044b,認(rèn)證方節(jié)點(diǎn)驗(yàn)證該驗(yàn)證信息是否是按照該信息生成規(guī)則生成的。
步驟3045b,當(dāng)認(rèn)證方節(jié)點(diǎn)確認(rèn)驗(yàn)證信息是按照信息生成規(guī)則生成的時(shí),根據(jù)被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)第三數(shù)字簽名進(jìn)行驗(yàn)證。其中,被認(rèn)證方節(jié)點(diǎn)的公鑰可以是從區(qū)塊鏈中獲取的,也可以是預(yù)先存儲(chǔ)在認(rèn)證方節(jié)點(diǎn)的。
步驟3046b,當(dāng)?shù)谌龜?shù)字簽名通過(guò)驗(yàn)證時(shí),認(rèn)證方節(jié)點(diǎn)確認(rèn)被認(rèn)證方節(jié)點(diǎn)已掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
除了上述圖4或圖5所述的實(shí)施方式外,驗(yàn)證被認(rèn)證方是否掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰也可以是其他可能的實(shí)施方式,包括但不限于上述的方案。
步驟305,當(dāng)確認(rèn)被認(rèn)證方已掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰時(shí),認(rèn)證方節(jié)點(diǎn)確定被認(rèn)證方節(jié)點(diǎn)通過(guò)身份認(rèn)證。
其中,在上述步驟303和步驟304中有任一個(gè)步驟驗(yàn)證失敗時(shí),被認(rèn)證方節(jié)點(diǎn)的身份認(rèn)證均被確認(rèn)為失敗。
可選的,當(dāng)所述身份證明發(fā)布節(jié)點(diǎn)存在上一級(jí)身份證明發(fā)布節(jié)點(diǎn)時(shí),步驟303所述的根據(jù)從區(qū)塊鏈中獲取的身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)第一數(shù)字簽名進(jìn)行驗(yàn)證的步驟可以包括:
首先,從區(qū)塊鏈中獲取上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰,以及上一級(jí)身份證明節(jié)點(diǎn)根據(jù)上一級(jí)身份證明節(jié)點(diǎn)的私鑰對(duì)身份證明發(fā)布節(jié)點(diǎn)的公鑰進(jìn)行數(shù)字簽名得到的第四數(shù)字簽名;
其次,根據(jù)上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)第四數(shù)字簽名進(jìn)行驗(yàn)證;
再次,在第四數(shù)字簽名通過(guò)驗(yàn)證后,根據(jù)從區(qū)塊鏈中獲取的身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)第一數(shù)字簽名進(jìn)行驗(yàn)證。
或者,當(dāng)所述身份證明發(fā)布節(jié)點(diǎn)存在上一級(jí)身份證明發(fā)布節(jié)點(diǎn)時(shí),在步驟304中所述的在第一數(shù)字簽名通過(guò)驗(yàn)證后,在驗(yàn)證被認(rèn)證方是否掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰之前可以包括:
首先,在所述第一數(shù)字簽名通過(guò)驗(yàn)證后,從區(qū)塊鏈中獲取所述上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰,以及上一級(jí)身份證明節(jié)點(diǎn)根據(jù)上一級(jí)身份證明節(jié)點(diǎn)的私鑰對(duì)身份證明發(fā)布節(jié)點(diǎn)的公鑰進(jìn)行數(shù)字簽名得到的第四數(shù)字簽名;
其次,根據(jù)上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)第四數(shù)字簽名進(jìn)行驗(yàn)證;
再次,在第四數(shù)字簽名通過(guò)驗(yàn)證后,向被認(rèn)證方節(jié)點(diǎn)發(fā)送挑戰(zhàn)碼。
在實(shí)際的應(yīng)用場(chǎng)景中,上述的上一級(jí)身份證明發(fā)布節(jié)點(diǎn)也可能存在更上一級(jí)的身份證明發(fā)布節(jié)點(diǎn),這里稱(chēng)為上上一級(jí)身份證明發(fā)布節(jié)點(diǎn),則在驗(yàn)證了該第四數(shù)字簽名后,還需要驗(yàn)證上上一級(jí)身份證明發(fā)布節(jié)點(diǎn)利用自身私鑰對(duì)上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰的數(shù)字簽名。當(dāng)然,還可能存在更高一級(jí)的身份證明發(fā)布節(jié)點(diǎn),其原理與前述方法相同,以此類(lèi)推,不再一一列舉。
另外,可選的,身份證明發(fā)布節(jié)點(diǎn)還可以對(duì)已經(jīng)發(fā)布的身份證明進(jìn)行撤銷(xiāo),示例的,身份證明發(fā)布節(jié)點(diǎn)可以向所述區(qū)塊鏈寫(xiě)入撤銷(xiāo)證明,其寫(xiě)入撤銷(xiāo)證明的過(guò)程可以參照上述的區(qū)塊鏈的數(shù)據(jù)寫(xiě)入過(guò)程。該撤銷(xiāo)證明中可以包括對(duì)之前發(fā)布過(guò)的某一身份證明,例如上述的第一數(shù)字簽名進(jìn)行撤銷(xiāo)的,以及利用身份證明發(fā)布節(jié)點(diǎn)的私鑰對(duì)撤銷(xiāo)說(shuō)明進(jìn)行數(shù)字簽名得到第五數(shù)字簽名。區(qū)塊鏈網(wǎng)絡(luò)中的其他節(jié)點(diǎn)可以通過(guò)身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)第五數(shù)字簽名進(jìn)行驗(yàn)證,從而確定撤銷(xiāo)說(shuō)明的合法性。
綜上所述,本公開(kāi)提供的基于區(qū)塊鏈的身份認(rèn)證方法中,由于被認(rèn)證方的身份信息和身份證明發(fā)布節(jié)點(diǎn)的身份信息均記錄在區(qū)塊鏈中,不會(huì)因?yàn)槟硞€(gè)或某些節(jié)點(diǎn)的故障導(dǎo)致無(wú)法獲取身份信息,因此能夠避免單點(diǎn)故障對(duì)整個(gè)系統(tǒng)的影響,并且在區(qū)塊鏈網(wǎng)絡(luò)中,由于任何一個(gè)節(jié)點(diǎn)只要配置了身份證明發(fā)布節(jié)點(diǎn)的私鑰,其角色就是身份認(rèn)證發(fā)布節(jié)點(diǎn),因此身份證明發(fā)布節(jié)點(diǎn)不是固定的某一節(jié)點(diǎn),攻擊者無(wú)法對(duì)對(duì)身份認(rèn)證信息發(fā)布節(jié)點(diǎn)進(jìn)行定位,從而無(wú)法對(duì)身份認(rèn)證節(jié)點(diǎn)發(fā)起攻擊,從而保證了整個(gè)系統(tǒng)的安全,因此能夠解決由于單點(diǎn)故障問(wèn)題和安全問(wèn)題而影響整個(gè)系統(tǒng)的可用性和安全性的問(wèn)題,保證整個(gè)系統(tǒng)的可用性和安全性。
圖6是根據(jù)一實(shí)施例示出的一種基于區(qū)塊鏈的身份認(rèn)證裝置框圖,該裝置600可以應(yīng)用于認(rèn)證方節(jié)點(diǎn),用于執(zhí)行圖2或圖3至圖5任一所示的方法,參見(jiàn)圖6,該裝置600可以包括:接收模塊610、第一驗(yàn)證模塊620、第二驗(yàn)證模塊630以及確定模塊640,其中:
接收模塊610,用于接收被認(rèn)證方節(jié)點(diǎn)發(fā)送的認(rèn)證請(qǐng)求,認(rèn)證請(qǐng)求中包括被認(rèn)證方節(jié)點(diǎn)的身份信息和身份證明發(fā)布節(jié)點(diǎn)的身份信息;
第一驗(yàn)證模塊620,用于在確認(rèn)被認(rèn)證方節(jié)點(diǎn)的身份信息、身份證明發(fā)布節(jié)點(diǎn)的身份信息,以及身份證明發(fā)布節(jié)點(diǎn)對(duì)被認(rèn)證方節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名得到的第一數(shù)字簽名已寫(xiě)入?yún)^(qū)塊鏈中時(shí),根據(jù)身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)第一數(shù)字簽名進(jìn)行驗(yàn)證;身份證明發(fā)布節(jié)點(diǎn)的公鑰是根據(jù)身份證明發(fā)布節(jié)點(diǎn)的身份信息獲取的;
第二驗(yàn)證模塊630,用于在第一數(shù)字簽名通過(guò)驗(yàn)證后,驗(yàn)證被認(rèn)證方是否掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰;被認(rèn)證方節(jié)點(diǎn)的公鑰是根據(jù)被認(rèn)證方節(jié)點(diǎn)的身份信息獲取的;
確定模塊640,用于當(dāng)確認(rèn)被認(rèn)證方已掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰時(shí),確定被認(rèn)證方節(jié)點(diǎn)通過(guò)身份認(rèn)證。
可選的,圖7是根據(jù)圖6所示實(shí)施例示出的一種第二驗(yàn)證模塊框圖,如圖7所示,第二驗(yàn)證模塊630包括:
發(fā)送子模塊631,用于在第一數(shù)字簽名通過(guò)驗(yàn)證后,向被認(rèn)證方節(jié)點(diǎn)發(fā)送驗(yàn)證信息;
接收子模塊632,用于接收被認(rèn)證方節(jié)點(diǎn)根據(jù)被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)驗(yàn)證信息進(jìn)行數(shù)字簽名得到的第二數(shù)字簽名;
驗(yàn)證子模塊633,用于根據(jù)被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)第二數(shù)字簽名進(jìn)行驗(yàn)證;
確認(rèn)子模塊634,用于確定當(dāng)?shù)诙?shù)字簽名通過(guò)驗(yàn)證時(shí),確認(rèn)被認(rèn)證方已掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
或者,圖8是根據(jù)圖6所示實(shí)施例示出的另一種第二驗(yàn)證模塊框圖,如圖8所示,第二驗(yàn)證模塊630包括:
接收子模塊635,用于接收被認(rèn)證方節(jié)點(diǎn)發(fā)送的驗(yàn)證信息,以及被認(rèn)證方節(jié)點(diǎn)根據(jù)被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)驗(yàn)證信息進(jìn)行數(shù)字簽名得到的第三數(shù)字簽名;驗(yàn)證信息是被認(rèn)證方節(jié)點(diǎn)根據(jù)預(yù)設(shè)的信息生成規(guī)則生成的,信息生成規(guī)則預(yù)設(shè)置在被認(rèn)證方節(jié)點(diǎn)和認(rèn)證方節(jié)點(diǎn);
信息驗(yàn)證子模塊636,用于驗(yàn)證驗(yàn)證信息是否是按照信息生成規(guī)則生成的;
簽名驗(yàn)證子模塊637,用于當(dāng)驗(yàn)證信息是按照信息生成規(guī)則生成的時(shí),根據(jù)被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)第三數(shù)字簽名進(jìn)行驗(yàn)證;
確認(rèn)子模塊638,用于當(dāng)?shù)谌龜?shù)字簽名通過(guò)驗(yàn)證時(shí),確認(rèn)被認(rèn)證方已掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,當(dāng)身份證明發(fā)布節(jié)點(diǎn)存在上一級(jí)身份證明發(fā)布節(jié)點(diǎn)時(shí),第一驗(yàn)證模塊620用于:
從區(qū)塊鏈中獲取上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰,以及上一級(jí)身份證明節(jié)點(diǎn)根據(jù)上一級(jí)身份證明節(jié)點(diǎn)的私鑰對(duì)身份證明發(fā)布節(jié)點(diǎn)的公鑰進(jìn)行數(shù)字簽名得到的第四數(shù)字簽名;
根據(jù)上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)第四數(shù)字簽名進(jìn)行驗(yàn)證;
在第四數(shù)字簽名通過(guò)驗(yàn)證后,根據(jù)從區(qū)塊鏈中獲取的身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)第一數(shù)字簽名進(jìn)行驗(yàn)證。
或者,第一驗(yàn)證模塊620用于:
在第一數(shù)字簽名通過(guò)驗(yàn)證后,從區(qū)塊鏈中獲取上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰,以及上一級(jí)身份證明節(jié)點(diǎn)根據(jù)上一級(jí)身份證明節(jié)點(diǎn)的私鑰對(duì)身份證明發(fā)布節(jié)點(diǎn)的公鑰進(jìn)行數(shù)字簽名得到的第四數(shù)字簽名;根據(jù)上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)第四數(shù)字簽名進(jìn)行驗(yàn)證;
發(fā)送模塊還用于在第四數(shù)字簽名通過(guò)驗(yàn)證后,第二驗(yàn)證模塊630驗(yàn)證被認(rèn)證方是否掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,被認(rèn)證方節(jié)點(diǎn)的身份信息包括被認(rèn)證方節(jié)點(diǎn)的賬戶地址或者被認(rèn)證方節(jié)點(diǎn)的公鑰,被認(rèn)證方節(jié)點(diǎn)的賬戶地址是根據(jù)被認(rèn)證方節(jié)點(diǎn)的公鑰獲取的;身份證明發(fā)布節(jié)點(diǎn)的身份信息包括:身份證明發(fā)布節(jié)點(diǎn)的賬戶地址或者身份證明發(fā)布節(jié)點(diǎn)的公鑰,身份證明發(fā)布節(jié)點(diǎn)的賬戶地址是根據(jù)身份證明發(fā)布節(jié)點(diǎn)的公鑰獲取的。
圖9是根據(jù)一實(shí)施例示出的另一種基于區(qū)塊鏈的身份認(rèn)證裝置框圖,該裝置900應(yīng)用于被認(rèn)證方節(jié)點(diǎn),用于執(zhí)行圖1或圖3至圖5任一所示的方法,參見(jiàn)圖9,該裝置900可以包括:裝置包括:認(rèn)證請(qǐng)求模塊910和驗(yàn)證模塊920,其中:
認(rèn)證請(qǐng)求模塊910,用于向認(rèn)證方發(fā)送認(rèn)證請(qǐng)求,認(rèn)證請(qǐng)求中包括被認(rèn)證方節(jié)點(diǎn)的身份信息和身份證明發(fā)布節(jié)點(diǎn)的身份信息;
驗(yàn)證模塊920,用于在認(rèn)證方節(jié)點(diǎn)在確認(rèn)被認(rèn)證方節(jié)點(diǎn)的身份信息、身份證明發(fā)布節(jié)點(diǎn)的身份信息、身份證明發(fā)布節(jié)點(diǎn)對(duì)被認(rèn)證方節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名得到的第一數(shù)字簽名已寫(xiě)入?yún)^(qū)塊鏈中,并且在第一數(shù)字簽名通過(guò)認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,與認(rèn)證方節(jié)點(diǎn)進(jìn)行被認(rèn)證方是否掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰的驗(yàn)證;當(dāng)認(rèn)證方節(jié)點(diǎn)確認(rèn)被認(rèn)證方已掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰時(shí),被認(rèn)證方節(jié)點(diǎn)通過(guò)身份認(rèn)證。
可選的,圖10是根據(jù)圖9所示實(shí)施例示出的一種驗(yàn)證模塊框圖,如圖10所示,驗(yàn)證模塊920包括:
接收子模塊921,用于在第一數(shù)字簽名通過(guò)認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,接收認(rèn)證方節(jié)點(diǎn)發(fā)送的驗(yàn)證信息;
簽名子模塊922,用于根據(jù)被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)驗(yàn)證信息進(jìn)行數(shù)字簽名得到第二數(shù)字簽名;
發(fā)送子模塊923,用于向認(rèn)證方節(jié)點(diǎn)發(fā)送第二數(shù)字簽名,當(dāng)?shù)诙?shù)字簽名通過(guò)認(rèn)證方的驗(yàn)證時(shí),被認(rèn)證方節(jié)點(diǎn)被確認(rèn)已掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,圖11是根據(jù)圖9所示實(shí)施例示出的另一種驗(yàn)證模塊框圖,如圖11所示,驗(yàn)證模塊920包括:
信息生成子模塊923,用于在第一數(shù)字簽名通過(guò)認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,根據(jù)預(yù)設(shè)的信息生成規(guī)則生成驗(yàn)證信息;信息生成規(guī)則預(yù)設(shè)置在被認(rèn)證方節(jié)點(diǎn)和認(rèn)證方節(jié)點(diǎn);
簽名子模塊924,用于根據(jù)被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)驗(yàn)證信息進(jìn)行數(shù)字簽名得到第三數(shù)字簽名;
發(fā)送子模塊925,用于向認(rèn)證方節(jié)點(diǎn)發(fā)送驗(yàn)證信息以及第三數(shù)字簽名;當(dāng)認(rèn)證方節(jié)點(diǎn)確認(rèn)驗(yàn)證信息是按照信息生成規(guī)則生成的,并且認(rèn)證方節(jié)點(diǎn)根據(jù)被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)第三數(shù)字簽名進(jìn)行的驗(yàn)證通過(guò)驗(yàn)證時(shí),被認(rèn)證方節(jié)點(diǎn)被確認(rèn)已掌握與被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,圖12是根據(jù)一實(shí)施例示出的又一種基于區(qū)塊鏈的身份認(rèn)證裝置框圖,裝置900還包括:身份證明請(qǐng)求模塊930,用于:
向區(qū)塊鏈寫(xiě)入身份證明請(qǐng)求,身份證明請(qǐng)求中包括被認(rèn)證方節(jié)點(diǎn)的身份信息,用于身份證明發(fā)布節(jié)點(diǎn)在區(qū)塊鏈中確認(rèn)被認(rèn)證方節(jié)點(diǎn)的身份信息,并根據(jù)身份證明發(fā)布節(jié)點(diǎn)的私鑰對(duì)被認(rèn)證方節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名得到第一數(shù)字簽名,并將第一數(shù)字簽名寫(xiě)入?yún)^(qū)塊鏈。
可選的,在身份證明發(fā)布節(jié)點(diǎn)向區(qū)塊鏈寫(xiě)入用于撤銷(xiāo)第一數(shù)字簽名的撤銷(xiāo)證明后,被認(rèn)證方節(jié)點(diǎn)的第一數(shù)字簽名被撤銷(xiāo),撤銷(xiāo)證明中包括對(duì)第一數(shù)字簽名的撤銷(xiāo)說(shuō)明,以及通過(guò)身份證明發(fā)布節(jié)點(diǎn)的私鑰對(duì)撤銷(xiāo)說(shuō)明進(jìn)行數(shù)字簽名得到第五數(shù)字簽名。
可選的,被認(rèn)證方節(jié)點(diǎn)的身份信息包括被認(rèn)證方節(jié)點(diǎn)的賬戶地址或者被認(rèn)證方節(jié)點(diǎn)的公鑰,被認(rèn)證方節(jié)點(diǎn)的賬戶地址是根據(jù)被認(rèn)證方節(jié)點(diǎn)的公鑰獲取的;身份證明發(fā)布節(jié)點(diǎn)的身份信息包括:身份證明發(fā)布節(jié)點(diǎn)的賬戶地址或者身份證明發(fā)布節(jié)點(diǎn)的公鑰,身份證明發(fā)布節(jié)點(diǎn)的賬戶地址是根據(jù)身份證明發(fā)布節(jié)點(diǎn)的公鑰獲取的。
綜上所述,由于被認(rèn)證方的身份信息和身份證明發(fā)布節(jié)點(diǎn)的身份信息均記錄在區(qū)塊鏈中,不會(huì)因?yàn)槟硞€(gè)或某些節(jié)點(diǎn)的故障導(dǎo)致無(wú)法獲取身份信息,因此能夠避免單點(diǎn)故障對(duì)整個(gè)系統(tǒng)的影響,并且在區(qū)塊鏈網(wǎng)絡(luò)中,由于任何一個(gè)節(jié)點(diǎn)只要配置了身份證明發(fā)布節(jié)點(diǎn)的私鑰,其角色就是身份認(rèn)證發(fā)布節(jié)點(diǎn),因此身份證明發(fā)布節(jié)點(diǎn)不是固定的某一節(jié)點(diǎn),攻擊者無(wú)法對(duì)對(duì)身份認(rèn)證信息發(fā)布節(jié)點(diǎn)進(jìn)行定位,從而無(wú)法對(duì)身份認(rèn)證節(jié)點(diǎn)發(fā)起攻擊,從而保證了整個(gè)系統(tǒng)的安全,因此能夠解決由于單點(diǎn)故障問(wèn)題和安全問(wèn)題而影響整個(gè)系統(tǒng)的可用性和安全性的問(wèn)題,保證整個(gè)系統(tǒng)的可用性和安全性。
本公開(kāi)實(shí)施例還提供一種非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)1,所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中包括一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序用于執(zhí)行一種基于區(qū)塊鏈的身份認(rèn)證方法,該基于區(qū)塊鏈的身份認(rèn)證方法應(yīng)用于認(rèn)證方節(jié)點(diǎn),該基于區(qū)塊鏈的身份認(rèn)證方法包括:接收被認(rèn)證方節(jié)點(diǎn)發(fā)送的認(rèn)證請(qǐng)求,所述認(rèn)證請(qǐng)求中包括所述被認(rèn)證方節(jié)點(diǎn)的身份信息和身份證明發(fā)布節(jié)點(diǎn)的身份信息;在確認(rèn)所述被認(rèn)證方節(jié)點(diǎn)的身份信息、所述身份證明發(fā)布節(jié)點(diǎn)的身份信息,以及所述身份證明發(fā)布節(jié)點(diǎn)對(duì)所述被認(rèn)證方節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名得到的第一數(shù)字簽名已寫(xiě)入?yún)^(qū)塊鏈中時(shí),根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)所述第一數(shù)字簽名進(jìn)行驗(yàn)證;所述身份證明發(fā)布節(jié)點(diǎn)的公鑰是根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的身份信息獲取的;在所述第一數(shù)字簽名通過(guò)驗(yàn)證后,驗(yàn)證所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰;所述被認(rèn)證方節(jié)點(diǎn)的公鑰是根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的身份信息獲取的;當(dāng)確認(rèn)所述被認(rèn)證方已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰時(shí),確定所述被認(rèn)證方節(jié)點(diǎn)通過(guò)身份認(rèn)證。
可選的,所述在所述第一數(shù)字簽名通過(guò)驗(yàn)證后,驗(yàn)證所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰,包括:在所述第一數(shù)字簽名通過(guò)驗(yàn)證后,向所述被認(rèn)證方節(jié)點(diǎn)發(fā)送驗(yàn)證信息;接收所述被認(rèn)證方節(jié)點(diǎn)根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)所述驗(yàn)證信息進(jìn)行數(shù)字簽名得到的第二數(shù)字簽名;根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)所述第二數(shù)字簽名進(jìn)行驗(yàn)證;當(dāng)所述第二數(shù)字簽名通過(guò)驗(yàn)證時(shí),確認(rèn)所述被認(rèn)證方已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,所述在所述第一數(shù)字簽名通過(guò)驗(yàn)證后,向所述被認(rèn)證方確認(rèn)所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰,包括:接收所述被認(rèn)證方節(jié)點(diǎn)發(fā)送的驗(yàn)證信息,以及被認(rèn)證方節(jié)點(diǎn)根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)所述驗(yàn)證信息進(jìn)行數(shù)字簽名得到的第三數(shù)字簽名;所述驗(yàn)證信息是所述被認(rèn)證方節(jié)點(diǎn)根據(jù)預(yù)設(shè)的信息生成規(guī)則生成的,所述信息生成規(guī)則預(yù)設(shè)置在所述被認(rèn)證方節(jié)點(diǎn)和所述認(rèn)證方節(jié)點(diǎn);驗(yàn)證所述驗(yàn)證信息是否是按照所述信息生成規(guī)則生成的;當(dāng)所述驗(yàn)證信息是按照所述信息生成規(guī)則生成的時(shí),根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)所述第三數(shù)字簽名進(jìn)行驗(yàn)證;當(dāng)所述第三數(shù)字簽名通過(guò)驗(yàn)證時(shí),確認(rèn)所述被認(rèn)證方已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,當(dāng)所述身份證明發(fā)布節(jié)點(diǎn)存在上一級(jí)身份證明發(fā)布節(jié)點(diǎn)時(shí),所述根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)所述第一數(shù)字簽名進(jìn)行驗(yàn)證,包括:
從所述區(qū)塊鏈中獲取所述上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰,以及所述上一級(jí)身份證明節(jié)點(diǎn)根據(jù)所述上一級(jí)身份證明節(jié)點(diǎn)的私鑰對(duì)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰進(jìn)行數(shù)字簽名得到的第四數(shù)字簽名;根據(jù)所述上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)所述第四數(shù)字簽名進(jìn)行驗(yàn)證;在所述第四數(shù)字簽名通過(guò)驗(yàn)證后,根據(jù)從所述區(qū)塊鏈中獲取的所述身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)所述第一數(shù)字簽名進(jìn)行驗(yàn)證。
可選的,所述在所述第一數(shù)字簽名通過(guò)驗(yàn)證后,在驗(yàn)證所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰之前,還包括:在所述第一數(shù)字簽名通過(guò)驗(yàn)證后,從所述區(qū)塊鏈中獲取所述上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰,以及所述上一級(jí)身份證明節(jié)點(diǎn)根據(jù)所述上一級(jí)身份證明節(jié)點(diǎn)的私鑰對(duì)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰進(jìn)行數(shù)字簽名得到的第四數(shù)字簽名;根據(jù)所述上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰對(duì)所述第四數(shù)字簽名進(jìn)行驗(yàn)證;在所述第四數(shù)字簽名通過(guò)驗(yàn)證后,驗(yàn)證所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,所述被認(rèn)證方節(jié)點(diǎn)的身份信息包括所述被認(rèn)證方節(jié)點(diǎn)的賬戶地址或者所述被認(rèn)證方節(jié)點(diǎn)的公鑰,所述被認(rèn)證方節(jié)點(diǎn)的賬戶地址是根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的公鑰獲取的;所述身份證明發(fā)布節(jié)點(diǎn)的身份信息包括:所述身份證明發(fā)布節(jié)點(diǎn)的賬戶地址或者所述身份證明發(fā)布節(jié)點(diǎn)的公鑰,所述身份證明發(fā)布節(jié)點(diǎn)的賬戶地址是根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰獲取的。
本公開(kāi)實(shí)施例還提供一種用戶節(jié)點(diǎn)2,所述用戶節(jié)點(diǎn)2包括:
上述的非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)1;以及
一個(gè)或者多個(gè)處理器,用于執(zhí)行上述的非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)1中的程序。
本公開(kāi)實(shí)施例還提供另一種非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)3,所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)3中包括一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序用于執(zhí)行一種基于區(qū)塊鏈的身份認(rèn)證方法,該基于區(qū)塊鏈的身份認(rèn)證方法應(yīng)用于被認(rèn)證方節(jié)點(diǎn),該基于區(qū)塊鏈的身份認(rèn)證方法包括:向認(rèn)證方發(fā)送認(rèn)證請(qǐng)求,所述認(rèn)證請(qǐng)求中包括所述被認(rèn)證方節(jié)點(diǎn)的身份信息和身份證明發(fā)布節(jié)點(diǎn)的身份信息;在所述認(rèn)證方節(jié)點(diǎn)在確認(rèn)所述被認(rèn)證方節(jié)點(diǎn)的身份信息、所述身份證明發(fā)布節(jié)點(diǎn)的身份信息、所述身份證明發(fā)布節(jié)點(diǎn)對(duì)所述被認(rèn)證方節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名得到的第一數(shù)字簽名已寫(xiě)入?yún)^(qū)塊鏈中,并且在所述第一數(shù)字簽名通過(guò)所述認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,與所述認(rèn)證方節(jié)點(diǎn)進(jìn)行所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰的驗(yàn)證;當(dāng)所述認(rèn)證方節(jié)點(diǎn)確認(rèn)所述被認(rèn)證方已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰時(shí),所述被認(rèn)證方節(jié)點(diǎn)通過(guò)身份認(rèn)證。
可選的,所述在所述第一數(shù)字簽名通過(guò)所述認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,與所述認(rèn)證方節(jié)點(diǎn)進(jìn)行所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰的驗(yàn)證,包括:在所述第一數(shù)字簽名通過(guò)所述認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,接收所述認(rèn)證方節(jié)點(diǎn)發(fā)送的驗(yàn)證信息;根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)所述驗(yàn)證信息進(jìn)行數(shù)字簽名得到第二數(shù)字簽名;向所述認(rèn)證方節(jié)點(diǎn)發(fā)送所述第二數(shù)字簽名,當(dāng)所述第二數(shù)字簽名通過(guò)所述認(rèn)證方的驗(yàn)證時(shí),所述被認(rèn)證方節(jié)點(diǎn)被確認(rèn)已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,所述在所述第一數(shù)字簽名通過(guò)所述認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,與所述認(rèn)證方節(jié)點(diǎn)進(jìn)行所述被認(rèn)證方是否掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰的驗(yàn)證,包括:在所述第一數(shù)字簽名通過(guò)所述認(rèn)證方節(jié)點(diǎn)的驗(yàn)證后,根據(jù)預(yù)設(shè)的信息生成規(guī)則生成驗(yàn)證信息;所述信息生成規(guī)則預(yù)設(shè)置在所述被認(rèn)證方節(jié)點(diǎn)和所述認(rèn)證方節(jié)點(diǎn);根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的私鑰對(duì)所述驗(yàn)證信息進(jìn)行數(shù)字簽名得到第三數(shù)字簽名;向所述認(rèn)證方節(jié)點(diǎn)發(fā)送所述驗(yàn)證信息以及所述第三數(shù)字簽名;當(dāng)所述認(rèn)證方節(jié)點(diǎn)確認(rèn)所述驗(yàn)證信息是按照所述信息生成規(guī)則生成的,并且所述認(rèn)證方節(jié)點(diǎn)根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)所述第三數(shù)字簽名進(jìn)行的驗(yàn)證通過(guò)驗(yàn)證時(shí),所述被認(rèn)證方節(jié)點(diǎn)被確認(rèn)已掌握與所述被認(rèn)證方節(jié)點(diǎn)的公鑰對(duì)應(yīng)的私鑰。
可選的,所述身份證明發(fā)布節(jié)點(diǎn)對(duì)所述被認(rèn)證方節(jié)點(diǎn)的身份信息和所述第一數(shù)字簽名寫(xiě)入所述區(qū)塊鏈的方法包括:向所述區(qū)塊鏈寫(xiě)入身份證明請(qǐng)求,所述身份證明請(qǐng)求中包括所述被認(rèn)證方節(jié)點(diǎn)的身份信息,用于所述身份證明發(fā)布節(jié)點(diǎn)在所述區(qū)塊鏈中確認(rèn)所述被認(rèn)證方節(jié)點(diǎn)的身份信息,并根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的私鑰對(duì)所述被認(rèn)證方節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名得到所述第一數(shù)字簽名,并將所述第一數(shù)字簽名寫(xiě)入所述區(qū)塊鏈。
可選的,在所述身份證明發(fā)布節(jié)點(diǎn)向所述區(qū)塊鏈寫(xiě)入用于撤銷(xiāo)所述第一數(shù)字簽名的撤銷(xiāo)證明后,所述被認(rèn)證方節(jié)點(diǎn)的所述第一數(shù)字簽名被撤銷(xiāo),所述撤銷(xiāo)證明中包括對(duì)所述第一數(shù)字簽名的撤銷(xiāo)說(shuō)明,以及通過(guò)所述身份證明發(fā)布節(jié)點(diǎn)的私鑰對(duì)所述撤銷(xiāo)說(shuō)明進(jìn)行數(shù)字簽名得到第五數(shù)字簽名。
可選的,所述被認(rèn)證方節(jié)點(diǎn)的身份信息包括所述被認(rèn)證方節(jié)點(diǎn)的賬戶地址或者所述被認(rèn)證方節(jié)點(diǎn)的公鑰,所述被認(rèn)證方節(jié)點(diǎn)的賬戶地址是根據(jù)所述被認(rèn)證方節(jié)點(diǎn)的公鑰獲取的;所述身份證明發(fā)布節(jié)點(diǎn)的身份信息包括:所述身份證明發(fā)布節(jié)點(diǎn)的賬戶地址或者所述身份證明發(fā)布節(jié)點(diǎn)的公鑰,所述身份證明發(fā)布節(jié)點(diǎn)的賬戶地址是根據(jù)所述身份證明發(fā)布節(jié)點(diǎn)的公鑰獲取的。
本公開(kāi)實(shí)施例還提供另一種用戶節(jié)點(diǎn)4,所述用戶節(jié)點(diǎn)4包括:
上述的非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)3;以及
一個(gè)或者多個(gè)處理器,用于執(zhí)行上述的非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)3中的程序。
本公開(kāi)實(shí)施例還提供一種身份認(rèn)證系統(tǒng),所述系統(tǒng)包括:
區(qū)塊鏈;
至少一個(gè)上述的用戶節(jié)點(diǎn)1,作為認(rèn)證方節(jié)點(diǎn);
至少一個(gè)上述的用戶節(jié)點(diǎn)4,作為被認(rèn)證方節(jié)點(diǎn);以及
至少一個(gè)身份證明發(fā)布節(jié)點(diǎn);
其中,所述區(qū)塊鏈,所述至少一個(gè)上述的用戶節(jié)點(diǎn)1,所述至少一個(gè)上述的用戶節(jié)點(diǎn)4以及所述至少一個(gè)身份證明發(fā)布節(jié)點(diǎn)屬于同一區(qū)塊鏈網(wǎng)絡(luò)。
可選的,所述系統(tǒng)中身份證明發(fā)布節(jié)點(diǎn)和用戶節(jié)點(diǎn)的關(guān)系可以包括以下三種:
在第一種實(shí)現(xiàn)方式中,如圖13所示,圖13是根據(jù)一實(shí)施例示出的一種身份認(rèn)證系統(tǒng)結(jié)構(gòu)框圖,在圖13中,所述至少一個(gè)身份證明發(fā)布節(jié)點(diǎn)為一個(gè)身份證明發(fā)布節(jié)點(diǎn),該身份證明發(fā)布節(jié)點(diǎn)用于向區(qū)塊鏈發(fā)布區(qū)塊鏈網(wǎng)絡(luò)中的每個(gè)用戶節(jié)點(diǎn)的身份證明;
其中,以第一用戶節(jié)點(diǎn)為例,該第一用戶節(jié)點(diǎn)為任一用戶節(jié)點(diǎn),身份證明發(fā)布節(jié)點(diǎn)向區(qū)塊鏈發(fā)布第一用戶節(jié)點(diǎn)的身份證明包括:身份證明發(fā)布節(jié)點(diǎn)在區(qū)塊鏈中確認(rèn)第一用戶節(jié)點(diǎn)的身份信息,并根據(jù)身份證明發(fā)布節(jié)點(diǎn)的私鑰對(duì)第一用戶節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名,并將得到的數(shù)字簽名寫(xiě)入?yún)^(qū)塊鏈。
在第二種實(shí)現(xiàn)方式中,如圖14a所示,圖14a是根據(jù)一實(shí)施例示出的另一種身份認(rèn)證系統(tǒng)結(jié)構(gòu)框圖,在圖14a中,所述至少一個(gè)身份證明發(fā)布節(jié)點(diǎn)至少包括一個(gè)身份證明發(fā)布節(jié)點(diǎn)和該身份證明發(fā)布節(jié)點(diǎn)的上一級(jí)身份證明發(fā)布節(jié)點(diǎn),身份證明發(fā)布節(jié)點(diǎn)用于向區(qū)塊鏈發(fā)布每個(gè)用戶節(jié)點(diǎn)的身份證明,上一級(jí)身份證明發(fā)布節(jié)點(diǎn)用于向區(qū)塊鏈發(fā)布身份證明發(fā)布節(jié)點(diǎn)的身份證明;另外,如圖14b所示,圖14b是根據(jù)一實(shí)施例示出的又一種身份認(rèn)證系統(tǒng)結(jié)構(gòu)框圖,在圖14b中,上述的上一級(jí)身份證明發(fā)布節(jié)點(diǎn)也可能存在更上一級(jí)的身份證明發(fā)布節(jié)點(diǎn),這里稱(chēng)為上上一級(jí)身份證明發(fā)布節(jié)點(diǎn),上一級(jí)身份證明發(fā)布節(jié)點(diǎn),用于向區(qū)塊鏈發(fā)布上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的身份證明,并且,身份證明發(fā)布節(jié)點(diǎn)可以不用發(fā)布每個(gè)用戶節(jié)點(diǎn)的身份證明,而是由身份證明發(fā)布節(jié)點(diǎn)、上一級(jí)身份證明發(fā)布節(jié)點(diǎn)以及上一級(jí)身份證明發(fā)布節(jié)點(diǎn)各自負(fù)責(zé)一部分用戶節(jié)點(diǎn)的身份證明的發(fā)布。并且,上上一級(jí)身份證明發(fā)布節(jié)點(diǎn)可以作為另一部分用戶節(jié)點(diǎn)的身份證明發(fā)布節(jié)點(diǎn),當(dāng)然,還可能存在更高一級(jí)的身份證明發(fā)布節(jié)點(diǎn),以此類(lèi)推,不再一一列舉。
其中,以第一用戶節(jié)點(diǎn)為例,該第一用戶節(jié)點(diǎn)為任一用戶節(jié)點(diǎn),身份證明發(fā)布節(jié)點(diǎn)向區(qū)塊鏈發(fā)布第一用戶節(jié)點(diǎn)的身份證明包括:身份證明發(fā)布節(jié)點(diǎn)在區(qū)塊鏈中確認(rèn)第一用戶節(jié)點(diǎn)的身份信息,并根據(jù)身份證明發(fā)布節(jié)點(diǎn)的私鑰對(duì)第一用戶節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名,并將得到的數(shù)字簽名寫(xiě)入?yún)^(qū)塊鏈;上一級(jí)身份證明發(fā)布節(jié)點(diǎn)向區(qū)塊鏈發(fā)布身份證明發(fā)布節(jié)點(diǎn)的身份證明包括:上一級(jí)身份證明節(jié)點(diǎn)根據(jù)上一級(jí)身份證明節(jié)點(diǎn)的私鑰對(duì)身份證明發(fā)布節(jié)點(diǎn)的公鑰進(jìn)行數(shù)字簽名,并將得到的數(shù)字簽名寫(xiě)入所述區(qū)塊鏈。上上一級(jí)身份證明發(fā)布節(jié)點(diǎn)向區(qū)塊鏈發(fā)布上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的身份證明包括:上上一級(jí)身份證明節(jié)點(diǎn)根據(jù)上上一級(jí)身份證明節(jié)點(diǎn)的私鑰對(duì)上一級(jí)身份證明發(fā)布節(jié)點(diǎn)的公鑰進(jìn)行數(shù)字簽名,并將得到的數(shù)字簽名寫(xiě)入所述區(qū)塊鏈。
另外,上上一級(jí)身份證明節(jié)點(diǎn)和上上一級(jí)身份證明發(fā)布節(jié)點(diǎn)向區(qū)塊鏈發(fā)布用戶節(jié)點(diǎn)的身份證明的方法與上述的身份證明發(fā)布節(jié)點(diǎn)向區(qū)塊鏈發(fā)布第一用戶節(jié)點(diǎn)的身份證明的方法相同,不在贅述。
在第三種實(shí)現(xiàn)方式中,如圖15所示,圖15是根據(jù)一實(shí)施例示出的又一種身份認(rèn)證系統(tǒng)結(jié)構(gòu)框圖,該身份認(rèn)證系統(tǒng)可以包括多個(gè)身份證明發(fā)布子系統(tǒng),每個(gè)身份證明發(fā)布子系統(tǒng)中可以包括至少一個(gè)身份證明發(fā)布節(jié)點(diǎn)和至少一個(gè)用戶節(jié)點(diǎn);
其中,當(dāng)?shù)谝簧矸葑C明發(fā)布子系統(tǒng)中包括一個(gè)身份證明發(fā)布節(jié)點(diǎn)時(shí),該身份證明發(fā)布節(jié)點(diǎn)用于向區(qū)塊鏈發(fā)布第一身份證明發(fā)布子系統(tǒng)的第一用戶節(jié)點(diǎn)的身份證明,該第一用戶節(jié)點(diǎn)為第一身份證明發(fā)布子系統(tǒng)中的任一用戶節(jié)點(diǎn);第一身份證明發(fā)布子系統(tǒng)為該多個(gè)身份證明發(fā)布子系統(tǒng)中的任一身份證明發(fā)布子系統(tǒng);
當(dāng)?shù)谝簧矸葑C明發(fā)布子系統(tǒng)中至少包括一個(gè)身份證明發(fā)布節(jié)點(diǎn)和身份證明發(fā)布節(jié)點(diǎn)的上一級(jí)身份證明發(fā)布節(jié)點(diǎn),身份證明發(fā)布節(jié)點(diǎn)用于向區(qū)塊鏈發(fā)布第一身份證明發(fā)布子系統(tǒng)的第一用戶節(jié)點(diǎn)的身份證明,上一級(jí)身份證明發(fā)布節(jié)點(diǎn)用于向區(qū)塊鏈發(fā)布身份證明發(fā)布節(jié)點(diǎn)的身份證明;
其中,身份證明發(fā)布節(jié)點(diǎn)向區(qū)塊鏈發(fā)布第一身份證明發(fā)布子系統(tǒng)的第一用戶節(jié)點(diǎn)的身份證明包括:身份證明發(fā)布節(jié)點(diǎn)在區(qū)塊鏈中確認(rèn)第一用戶節(jié)點(diǎn)的身份信息,并根據(jù)身份證明發(fā)布節(jié)點(diǎn)的私鑰對(duì)第一用戶節(jié)點(diǎn)的身份信息進(jìn)行數(shù)字簽名,并將得到的數(shù)字簽名寫(xiě)入?yún)^(qū)塊鏈;
上一級(jí)身份證明發(fā)布節(jié)點(diǎn)向區(qū)塊鏈發(fā)布身份證明發(fā)布節(jié)點(diǎn)的身份證明包括:上一級(jí)身份證明節(jié)點(diǎn)根據(jù)上一級(jí)身份證明節(jié)點(diǎn)的私鑰對(duì)身份證明發(fā)布節(jié)點(diǎn)的公鑰進(jìn)行數(shù)字簽名,并將得到的數(shù)字簽名寫(xiě)入?yún)^(qū)塊鏈。即可以理解為每個(gè)身份證明發(fā)布子系統(tǒng)可以包括如圖13、或圖14a或圖14b所示的結(jié)構(gòu)。
以上結(jié)合附圖詳細(xì)描述了本公開(kāi)的優(yōu)選實(shí)施方式,但是,本公開(kāi)并不限于上述實(shí)施方式中的具體細(xì)節(jié),在本公開(kāi)的技術(shù)構(gòu)思范圍內(nèi),可以對(duì)本公開(kāi)的技術(shù)方案進(jìn)行多種簡(jiǎn)單變型,這些簡(jiǎn)單變型均屬于本公開(kāi)的保護(hù)范圍。
另外需要說(shuō)明的是,在上述具體實(shí)施方式中所描述的各個(gè)具體技術(shù)特征,在不矛盾的情況下,可以通過(guò)任何合適的方式進(jìn)行組合,為了避免不必要的重復(fù),本公開(kāi)對(duì)各種可能的組合方式不再另行說(shuō)明。
此外,本公開(kāi)的各種不同的實(shí)施方式之間也可以進(jìn)行任意組合,只要其不違背本公開(kāi)的思想,其同樣應(yīng)當(dāng)視為本公開(kāi)所公開(kāi)的內(nèi)容。