本發(fā)明涉及一種基于互聯(lián)網區(qū)塊鏈技術的數字簽名方法。
背景技術:
基于數字證書的數字簽名技術已經發(fā)展多年,并且在很多行業(yè)進行了廣泛的應用。目前的數字簽名技術按照證書的載體主要分為兩大類:
一類是以專用硬件為載體,如U盾等設備。這種類型的技術安全性較高,證書與網絡物理隔離,驗證計算在專有設備上進行,專有設備由所有人持有,在妥善保管的前提下,無法被他人篡改。但是隨著移動設備以及移動互聯(lián)網的普及,這種專有硬件形式的電子簽名方法逐漸暴露出了使用不方便的缺點。用戶在進行電子簽名的時候,必須保證隨身攜帶U盾等設備,這在移動互聯(lián)時代變的很不合時宜。
另一類是僅依靠軟件算法進行數字簽名,證書保存在公共的網絡環(huán)境中,并依靠中心服務器進行認證驗算。純軟件形式的數字簽名在安全性上有比較大的缺陷,首先數字證書的存儲沒有與公共網絡環(huán)境進行物理隔離,容易被盜用。其次,驗算結果存儲在中心服務器,一旦中心服務器被攻破數據容易遭到篡改。
技術實現(xiàn)要素:
鑒于現(xiàn)有技術中存在的上述問題,本發(fā)明的主要目的在于解決現(xiàn)有技術的缺陷,本發(fā)明提供一種安全可靠的基于互聯(lián)網區(qū)塊鏈技術的數字簽名方法。
本發(fā)明提供了一種基于互聯(lián)網區(qū)塊鏈技術的數字簽名方法,包括以下步驟:
S1、密鑰的生成與分發(fā);
S2、簽名過程;
S3、簽名驗證。
可選的,所述步驟S1中秘鑰的生成和分發(fā)具體包括以下步驟:
S11:用戶生成秘鑰;
S12:用戶輸入口令碼;
S13:用戶確認口令碼;
S14:節(jié)點程序根據口令碼生成RSA密鑰對;
S15:判斷節(jié)點中是否已存在密鑰對;
S16:根據步驟S15的判斷結果,如果節(jié)點中存在密鑰對,則需要替換已有密鑰對,如果節(jié)點中不存在密鑰對,將存儲密封對存儲在節(jié)點中;
S17:在節(jié)點網絡中通過P2P的方式分層分發(fā)公鑰,每層分發(fā)n個節(jié)點,其他節(jié)點存儲該公鑰。
可選的,所述節(jié)點為運行在一臺設備上的一份客戶端軟件,且稱為一個節(jié)點;同一臺設備上只允許運行一份客戶端軟件。
可選的,所述步驟S2中簽名過程具體包括以下步驟:
S21:用戶簽名;
S22:用戶在所屬節(jié)點(發(fā)起節(jié)點)輸入生成秘鑰時的口令碼;
S23:發(fā)起節(jié)點從系統(tǒng)中隨機選取m個非自身節(jié)點,用這m個節(jié)點的公鑰分別對目標數據摘要進行加密,在對加密后的密文用發(fā)起節(jié)點的私鑰進行加密;
S24:將m份密文與目標數據摘要明文打包,分別通過P2P發(fā)送給這m個節(jié)點,同時發(fā)起節(jié)點在算法鏈的最后創(chuàng)建一個新的單元起始片段;
S25:m個節(jié)點分別收到數據后,按照相同的過程和算法再分發(fā)m個節(jié)點,同時m個節(jié)點分別在發(fā)起節(jié)點創(chuàng)建的算法鏈新單元的起始片段后,添加本輪驗算的算法片段;
S26:重復上述過程,一直分發(fā)m層后不再繼續(xù)分發(fā),同時每一層在驗算結束后都將本輪驗算記錄在算法鏈中,并把簽名結構記錄到數據鏈;
S27:最后一層節(jié)點驗算后將結果按照原路返回發(fā)起節(jié)點,同時,發(fā)起節(jié)點收到m/2個節(jié)點返回后,將算法鏈的新單元封閉,簽名過程結束。
可選的,所述步驟S3中簽名驗證的具體步驟為:需要進行驗證的節(jié)點,查詢節(jié)點中存儲的數據鏈即可,再查詢前可以請求更新到最新的數據鏈。
可選的,所述算法鏈為:數字簽名驗證算法是分布在各個不同節(jié)點中的,不同的節(jié)點按順序分別執(zhí)行算法的一個片段,所有片段組合起來實現(xiàn)完整的數字簽名驗證算法。所有的這些算法片段按順序鏈接起來保存在每個節(jié)點中。
可選的,所述數據鏈為:各個節(jié)點應用數字簽名算法進行簽名的結果數據,將按照時間的先后順序完整的保存在每個節(jié)點中,組成一個鏈式結構。
本發(fā)明具有以下優(yōu)點和有益效果:本發(fā)明提供一種基于互聯(lián)網區(qū)塊鏈技術的數字簽名方法,這種數字簽名方法無需利用專有硬件,并且利用節(jié)點網絡的人為不可復制與不可修改特性,讓更多的節(jié)點參與進行冗余的驗證計算和結果存儲,這樣即使部分節(jié)點被非法控制也無法對算法和數據進行篡改,從而提高數字簽名的安全性。
附圖說明
圖1為本發(fā)明實施例提供的基于互聯(lián)網區(qū)塊鏈技術的數字簽名方法中密鑰的生成與分發(fā)的流程圖;
圖2為本發(fā)明實施例提供的基于互聯(lián)網區(qū)塊鏈技術的數字簽名方法中簽名過程的流程圖。
具體實施方式
為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。通常在此處附圖中描述和示出的本發(fā)明實施例的組件可以以各種不同的配置來布置和設計。因此,以下對在附圖中提供的本發(fā)明的實施例的詳細描述并非旨在限制要求保護的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
在本發(fā)明的描述中,需要說明的是,術語“中心”、“上”、“下”、“左”、“右”、“豎直”、“水平”、“內”、“外”等指示的方位或位置關系為基于附圖所示的方位或位置關系,僅是為了便于描述本發(fā)明和簡化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構造和操作,因此不能理解為對本發(fā)明的限制。此外,術語“第一”、“第二”、“第三”僅用于描述目的,而不能理解為指示或暗示相對重要性。
在本發(fā)明的描述中,還需要說明的是,除非另有明確的規(guī)定和限定,術語“設置”、“安裝”、“相連”、“連接”應做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連,可以是兩個元件內部的連通。對于本領域的普通技術人員而言,可以根據具體情況理解上述術語在本發(fā)明中的具體含義。
下面將參照附圖和具體實施例對本發(fā)明作進一步的說明。
如圖1和圖2所示:本發(fā)明實施例的一種基于互聯(lián)網區(qū)塊鏈技術的數字簽名方法,包括以下步驟:
S1、密鑰的生成與分發(fā);
S2、簽名過程;
S3、簽名驗證。
作為上述實施例的優(yōu)選實施方式,步驟S1中秘鑰的生成和分發(fā)具體包括以下步驟:
S11:用戶生成秘鑰;
S12:用戶輸入口令碼;
S13:用戶確認口令碼;
S14:節(jié)點程序根據口令碼生成RSA密鑰對;
S15:判斷節(jié)點中是否已存在密鑰對;
S16:根據步驟S15的判斷結果,如果節(jié)點中存在密鑰對,則需要替換已有密鑰對,如果節(jié)點中不存在密鑰對,將存儲密封對存儲在節(jié)點中;
S17:在節(jié)點網絡中通過P2P的方式分層分發(fā)公鑰,每層分發(fā)n個節(jié)點,其他節(jié)點存儲該公鑰。
作為上述實施例的優(yōu)選實施方式,節(jié)點為運行在一臺設備上的一份客戶端軟件,且稱為一個節(jié)點;同一臺設備上只允許運行一份客戶端軟件。
作為上述實施例的優(yōu)選實施方式,步驟S2中簽名過程具體包括以下步驟:
S21:用戶簽名;
S22:用戶在所屬節(jié)點(發(fā)起節(jié)點)輸入生成秘鑰時的口令碼;
S23:發(fā)起節(jié)點從系統(tǒng)中隨機選取m個非自身節(jié)點,用這m個節(jié)點的公鑰分別對目標數據摘要進行加密,在對加密后的密文用發(fā)起節(jié)點的私鑰進行加密;
S24:將m份密文與目標數據摘要明文打包,分別通過P2P發(fā)送給這m個節(jié)點,同時發(fā)起節(jié)點在算法鏈的最后創(chuàng)建一個新的單元起始片段;
S25:m個節(jié)點分別收到數據后,按照相同的過程和算法再分發(fā)m個節(jié)點,同時m個節(jié)點分別在發(fā)起節(jié)點創(chuàng)建的算法鏈新單元的起始片段后,添加本輪驗算的算法片段;
S26:重復上述過程,一直分發(fā)m層后不再繼續(xù)分發(fā),同時每一層在驗算結束后都將本輪驗算記錄在算法鏈中,并把簽名結構記錄到數據鏈;
S27:最后一層節(jié)點驗算后將結果按照原路返回發(fā)起節(jié)點,同時,發(fā)起節(jié)點收到m/2個節(jié)點返回后,將算法鏈的新單元封閉,簽名過程結束。
作為上述實施例的優(yōu)選實施方式,步驟S3中簽名驗證的具體步驟為:需要進行驗證的節(jié)點,查詢節(jié)點中存儲的數據鏈即可,再查詢前可以請求更新到最新的數據鏈。
作為上述實施例的優(yōu)選實施方式,算法鏈為:數字簽名驗證算法是分布在各個不同節(jié)點中的,不同的節(jié)點按順序分別執(zhí)行算法的一個片段,所有片段組合起來實現(xiàn)完整的數字簽名驗證算法。所有的這些算法片段按順序鏈接起來保存在每個節(jié)點中。
作為上述實施例的優(yōu)選實施方式,數據鏈為:各個節(jié)點應用數字簽名算法進行簽名的結果數據,將按照時間的先后順序完整的保存在每個節(jié)點中,組成一個鏈式結構。
最后應說明的是:以上所述的各實施例僅用于說明本發(fā)明的技術方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述實施例所記載的技術方案進行修改,或者對其中部分或全部技術特征進行等同替換;而這些修改或替換,并不使相應技術方案的本質脫離本發(fā)明各實施例技術方案的范圍。