TWI776416B - 分層確定性錢包的門檻式簽章系統及其方法 - Google Patents

分層確定性錢包的門檻式簽章系統及其方法 Download PDF

Info

Publication number
TWI776416B
TWI776416B TW110108179A TW110108179A TWI776416B TW I776416 B TWI776416 B TW I776416B TW 110108179 A TW110108179 A TW 110108179A TW 110108179 A TW110108179 A TW 110108179A TW I776416 B TWI776416 B TW I776416B
Authority
TW
Taiwan
Prior art keywords
private key
value
sharing unit
threshold
master
Prior art date
Application number
TW110108179A
Other languages
English (en)
Other versions
TW202236822A (zh
Inventor
莊治耘
林祐德
Original Assignee
英屬開曼群島商現代財富控股有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英屬開曼群島商現代財富控股有限公司 filed Critical 英屬開曼群島商現代財富控股有限公司
Priority to TW110108179A priority Critical patent/TWI776416B/zh
Application granted granted Critical
Publication of TWI776416B publication Critical patent/TWI776416B/zh
Publication of TW202236822A publication Critical patent/TW202236822A/zh

Links

Images

Landscapes

  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

一種分層確定性錢包的門檻式簽章系統及其方法,透過在分層確定性錢包執行門檻式簽章運算時,由參與運算的節點主機執行子金鑰推導函式,以便根據父私鑰共享單元、父鏈碼及索引值計算私鑰平移量,並且將其除以所述節點主機的數量以作為節點主機選擇的隨機多項式的常數項,再執行安全多方運算以計算及交換訊息,以便根據計算及交換訊息的結果生成相應的子私鑰共享單元並用於門檻式簽章運算,藉以在不生成私鑰的情況下,達到提高分層確定性錢包的安全性之技術功效。

Description

分層確定性錢包的門檻式簽章系統及其方法
本發明涉及一種簽章系統及其方法,特別是分層確定性錢包的門檻式簽章系統及其方法。
近年來,隨著區塊鏈的普及與蓬勃發展,各種區塊鏈技術的改良手段便如雨後春筍般湧現,舉例來說,區塊鏈錢包會隨著私鑰儲存方式的不同而分成許多不同的類型。其中,「分層確定性錢包」即為廣泛使用的其中一種類型。
一般而言,分層確定性錢包可以從一個種子(Seed)生成一個樹狀結構來儲存多組金鑰對(包含私鑰及公鑰),其依循「BIP(Bitcoin Improvement Proposal)32」協議,換句話說,可以利用一個種子所生成的主私鑰(Master Private Key)推導出許多子私鑰(Child Private Key)及其對應的子公鑰與地址,甚至可以繼續根據子私鑰推導出許多孫私鑰(Grandchildren Private Key)及其對應的孫公鑰與地址,並且以此類推持續迭代繁衍,其中,相對於推導出的子私鑰而言,所述主私鑰可被其視為父私鑰,同時相對於孫私鑰而言,所述子私鑰可被其視 為父私鑰。如此一來,在管理上可以大幅減輕大量管理私鑰的負擔,因為只要管理一把父私鑰便可以同時管理許多可使用的帳戶。然而,也因為如此,父私鑰的安全性便顯得更為重要,特別是傳統使用「普通金鑰(Normal key)」的分層確定性錢包只要子私鑰遺失,則父私鑰也等同遺失,所以在分層確定性錢包中儲存完整的私鑰將具有安全性不足的問題。
有鑑於此,便有廠商提出多重簽章(Multisig)的技術手段,其透過允許兩個以上的用戶,以各自持有的私鑰來共同進行簽章,以降低單一私鑰洩漏所造成的安全性影響。然而,並非所有情境都適合使用多個私鑰來進行多重簽章,目前仍然有許多只允許使用單一金鑰的情況。因此,此方式仍然無法有效解決分層確定性錢包的安全性不足的問題。
綜上所述,可知先前技術中長期以來一直存在分層確定性錢包的安全性不足的問題,因此實有必要提出改進的技術手段,來解決此一問題。
本發明揭露一種分層確定性錢包的門檻式簽章系統及其方法。
首先,本發明揭露一種分層確定性錢包的門檻式簽章系統,應用在區塊鏈網路,其包含:多個節點主機用以共同參與分層確定性錢包的門檻式簽章運算,其中,所述分層確定性錢包儲存主私鑰共享單元及其相應的主公鑰。每一節點主機包含:初始模組、執行模組、計算模組、選擇模組、運算模組、生成模組及簽章模組。其中,初始模組儲存節點數量、門檻值、索引值、主公鑰、主鏈碼、X座標值及與主公鑰相應的另一不同的主私鑰共享單元;執行模組連接初始模組,用以在分層確定性錢包執行門檻式簽章運算時,驅動節點主機 執行M次的子金鑰推導(Child Key Derivation,CKD)函式,同時帶入第N層私鑰共享單元(可視為父私鑰共享單元)、第N層鏈碼(可視為父鏈碼)及索引值,其中,M、N皆為正整數,並且在初次執行時,將每一節點主機的主私鑰共享單元作為第N層私鑰共享單元、將主鏈碼作為第N層鏈碼;計算模組連接執行模組,用以執行雜湊訊息鑑別碼(Hash-based Message Authentication Code,HMAC)函式,使所述雜湊訊息鑑別碼函式根據第N層鏈碼、第N層公鑰及索引值計算出雜湊值,再將此雜湊值分割成相同長度的第一部分及第二部分,並且先將第一部分轉換為數值以作為私鑰平移量,再將此私鑰平移量除以節點數量以作為常數值;選擇模組連接計算模組,用以選擇隨機多項式,並且將常數值作為選擇的隨機多項式的常數項,其中,隨機多項式的最高次數為節點數量減數值1;運算模組連接選擇模組,用以執行安全多方運算(Secure Multi-Party Computation,MPC)以相互交換每一節點主機各自的X座標值,並且將不同節點主機的X座標值帶入選擇的隨機多項式以計算出相應的多項式值,再根據所述X座標值將計算出的多項式值傳送至相應的節點主機;生成模組連接運算模組,用以將接收自不同節點主機的多項式值、根據自身X座標值計算出的多項式值,以及自身的第N層私鑰共享單元相加以產生第N+1層私鑰共享單元(相較於第N層私鑰共享單元,第N+1層私鑰共享單元可視為其子私鑰共享單元),並且同時根據私鑰平移量及橢圓曲線基點計算出相應的第N+1層公鑰;簽章模組連接生成模組,用以透過安全多方運算對計算出的第N+1層私鑰共享單元進行計算且與其它節點主機交換訊息,使分層確定性錢包完成門檻式簽章運算,同時在不知完整私鑰的情況下,直接計算出相應第N+1層公鑰且符合橢圓曲線數位簽名演算法的簽章訊息。
另外,本發明還揭露一種分層確定性錢包的門檻式簽章方法,應用在區塊鏈網路,其步驟包括:在區塊鏈網路中提供多個節點主機以共同參與分層確定性錢包的門檻式簽章運算,其中,分層確定性錢包儲存主私鑰共享單元及其相應的主公鑰,所述節點主機各自具有節點數量、門檻值、索引值、主公鑰、主鏈碼、X座標值及與主公鑰相應的另一不同的主私鑰共享單元;當分層確定性錢包執行門檻式簽章運算時,驅動節點主機執行M次的子金鑰推導函式,同時帶入第N層私鑰共享單元、第N層鏈碼及索引值,其中,M、N皆為正整數,並且在初次執行時,將每一節點主機的主私鑰共享單元作為第N層私鑰共享單元、將主鏈碼作為第N層鏈碼,使每一節點主機分別執行以下步驟:執行雜湊訊息鑑別碼函式,使雜湊訊息鑑別碼函式根據第N層鏈碼、第N層公鑰及索引值計算出雜湊值,再將此雜湊值分割成相同長度的第一部分及第二部分,並且先將第一部分轉換為數值以作為私鑰平移量,再將此私鑰平移量除以節點數量以作為常數值;選擇隨機多項式,並且將常數值作為選擇的隨機多項式的常數項,其中,隨機多項式的最高次數為節點數量減數值1;執行安全多方運算,用以相互交換每一節點主機各自的X座標值,並且將不同節點主機的X座標值帶入選擇的隨機多項式以計算出相應的多項式值,再根據X座標值將計算出的多項式值傳送至相應的節點主機;將接收自不同節點主機的多項式值、根據自身X座標值計算出的多項式值,以及自身的第N層私鑰共享單元相加以產生第N+1層私鑰共享單元,並且同時根據私鑰平移量及橢圓曲線基點計算出相應的第N+1層公鑰;以及透過安全多方運算對計算出的第N+1層私鑰共享單元進行計算且與其它節點主機交換訊息,使分層確定性錢包完成門檻式簽章運算,用以在不知完整私鑰 的情況下,直接計算出相應第N+1層公鑰且符合橢圓曲線數位簽名演算法的簽章訊息。
本發明所揭露之系統與方法如上,與先前技術的差異在於本發明是透過在分層確定性錢包執行門檻式簽章運算時,由參與運算的節點主機執行子金鑰推導函式,以便根據父私鑰共享單元、父鏈碼及索引值計算私鑰平移量,並且將其除以所述節點主機的數量以作為節點主機選擇的隨機多項式的常數項,再執行安全多方運算以計算及交換訊息,以便根據計算及交換訊息的結果生成相應的子私鑰共享單元並用於門檻式簽章運算。
透過上述的技術手段,本發明可以在不生成私鑰的情況下,達成提高分層確定性錢包的安全性之技術功效。
100:區塊鏈網路
110a,110b:節點主機
111:初始模組
112:執行模組
113:計算模組
114:選擇模組
115:運算模組
116:生成模組
117:簽章模組
310,320:隨機多項式
330:子私鑰
步驟210:在區塊鏈網路中提供多個節點主機以共同參與一分層確定性錢包的門檻式簽章運算,其中,該分層確定性錢包儲存一主私鑰共享單元及其相應的一主公鑰,所述節點主機各自具有一節點數量、 一門檻值、一索引值、該主公鑰、一主鏈碼、一X座標值及與該主公鑰相應的另一主私鑰共享單元
步驟220:當該分層確定性錢包執行門檻式簽章運算時,驅動所述節點主機執行M次的一子金鑰推導(Child Key Derivation,CKD)函式,同時帶入一第N層私鑰共享單元、一第N層鏈碼及所述索引值,其中,M、N皆為正整數,並且在初次執行時,將每一節點主機的所述主私鑰共享單元作為所述第N層私鑰共享單元、將所述主鏈碼作為所述第N層鏈碼,使每一節點主機分別執行以下步驟
步驟221:執行一雜湊訊息鑑別碼(Hash-based Message Authentication Code,HMAC)函式,使該雜湊訊息鑑別碼函式根據所述第N層鏈碼、所述第N層公鑰及所述索引值計算出一雜湊值,再將該雜湊值分割成相同長度的一第一部分及一第二部分,並且先將該第一部分轉換為數值以作為一私鑰平移量,再將該私鑰平移量除以該節點數量以作為一常數值
步驟222:選擇一隨機多項式,並且將該常數值作為選擇的該隨機多項式的常數項,其中,該隨機多項式的最高次數為該節點數量減數值1
步驟223:執行安全多方運算(Secure Multi-Party Computation,MPC),用以相互交換每一節點主機各自的一X座標值,並且將不同所述節點主機的該X座標值帶入選擇的該隨機多項式以計算出相應的一多項式值,再根據所述X座標值將計算出的所述多項式值傳送至相應的所述節點主機
步驟224:將接收自不同所述節點主機的所述多項式值、根據自身所述X座標值計算出的所述多項式值,以及自身的該第N層私鑰共享單元相加以產生一第N+1層私鑰共享單元,並且同時根據該私鑰平移量及一橢圓曲線基點計算出相應的一第N+1層公鑰
步驟225:透過安全多方運算對計算出的所述第N+1層私鑰共享單元進行計算且與其它所述節點主機交換訊息,使該分層確定性錢包完成門檻式簽章運算,用以在不知完整私鑰的情況下,直接計算出相應該第N+1層公鑰且符合橢圓曲線數位簽名演算法的一簽章訊息
第1圖為本發明分層確定性錢包的門檻式簽章系統之系統方塊圖。
第2A圖及第2B圖為本發明分層確定性錢包的門檻式簽章方法之方法流程圖。
第3圖為應用本發明產生能夠用於分層確定性錢包的門檻式簽章的子私鑰共享單元之示意圖。
以下將配合圖式及實施例來詳細說明本發明之實施方式,藉此對本發明如何應用技術手段來解決技術問題並達成技術功效的實現過程能充分理解並據以實施。
首先,在說明本發明所揭露之分層確定性錢包的門檻式簽章系統及其方法之前,先對本發明的應用環境作說明,本發明係應用在區塊鏈網路中,提供分層確定性錢包針對推導出的子私鑰共享單元及其相應的子公鑰(或子地址),能夠在不知完整私鑰的情況下,直接根據子私鑰共享單元計算出相應子公鑰(或子公開地址)且符合橢圓曲線數位簽名演算法的簽章訊息。如此一來,由於整個過程均不需得知完整私鑰,所以能夠大幅提高分層確定性錢包的私鑰安全性。特別要說明的是,文中所述的「父私鑰共享單元」可以「第N層私鑰共享單元」表示、「父公鑰」可以「第N層公鑰」表示、「父鏈碼」可以「第N層鏈碼」表示、「子私鑰共享單元」可以「第N+1層私鑰共享單元」來表示、「子公鑰」可以「第N+1層公鑰」表示、「子鏈碼」可以「第N+1層鏈碼」表示。以私鑰共享單元為例,第1層私鑰共享單元是第2層私鑰共享單元的父私鑰共享單元,反過來說,第2層私鑰共享單元是第1層私鑰共享單元的子私鑰共享單元;同理,第2層私鑰共享單元是第3層私鑰共享單元的父私鑰共享單元,第3層私鑰共享單元是第2層私鑰共享單元的子私鑰共享單元,並以此類推。換句話說,「父」與「子」的關係等同於「第N層」與「第N+1層」的關係。
以下配合圖式對本發明分層確定性錢包的門檻式簽章系統及其方法做進一步說明,請先參閱「第1圖」,「第1圖」為本發明分層確定性錢包的門檻式簽章系統之系統方塊圖,應用在區塊鏈網路100,此系統包含:多個節點主機(110a、110b)用以共同參與分層確定性錢包的門檻式簽章運算,其中, 所述分層確定性錢包儲存主私鑰共享單元及其相應的主公鑰。每一節點主機(110a、110b)皆包含:初始模組111、執行模組112、計算模組113、選擇模組114、運算模組115、生成模組116及簽章模組117。其中,初始模組111用以儲存節點數量、門檻值、索引值、主公鑰、主鏈碼、X座標值及與主公鑰相應的另一主私鑰共享單元。在實際實施上,節點數量為參與分層確定性錢包的門檻式簽章運算的節點主機(110a、110b)之數量,以「第1圖」為例,參與的節點主機(110a、110b)分別為節點主機110a及節點主機110b,所以節點數量為數值2。特別要說明的是,雖然前述節點數量以數值2為例,然而本發明並未以此為限,只要在二個或其上的數量皆不脫離本發明的應用範疇。另外,所述門檻值是指滿足門檻式簽章協定的門檻值,也就是說,當滿足門檻值時便能夠正確計算出簽章;索引值可為具唯一性的數值;父公鑰(Parent Public Key)是指分層確定性錢包的第N層的公鑰,其可用以產生第N+1層的子公鑰(Child Public Key);父鏈碼(Parent Chain Code)是指分層確定性錢包的第N層鏈碼,其可視為熵(Entropy)且用於產生子金鑰(包含子公鑰和子私鑰);X座標值是指一個在橢圓曲線上的點的X座標值;至於另一與主公鑰相應的主私鑰共享單元是指執行秘密共享演算法或分散式私鑰生成函式(Distributed Key Generation,DKG)時,其產生與主公鑰相應的多個主私鑰共享單元其中之一,換句話說,每一節點主機(110a、110b)可持有不同的其中一個主私鑰共享單元。實際上,秘密共享演算法可包含沙米爾的秘密共享(Shamir’s Secret Sharing,SSS)及布萊克利的秘密共享(Blakley’s Secret Sharing,BSS)。另外,由於「BIP 32」所規範產生主私鑰的方式會導致分散式私鑰生成函式產生主私鑰共享單元時,有一個節點主機會知道真正的主私鑰,因為「BIP 32」是從種子產生主私鑰且藉由雜湊函式, 而不是單純依靠數學運算,所以所述主私鑰共享單元可以使用兩種方式產生,第一種方式是由每一節點主機(110a、110b)執行分散式私鑰生成函式,再搭配預設的節點數量、門檻值、主鏈碼及隨機多項式以進行生成。另一種方式則是使所述節點主機(110a、110b)其中之一為分派端主機,用以先根據種子產生主私鑰,再執行秘密共享演算法將主私鑰分成不同的主私鑰共享單元,以及將主私鑰共享單元傳送至不同的節點主機,所述種子可為節點主機根據字典檔隨機產生的助記詞,所述助記詞為語言可讀的有序字詞。雖然第二種方式在一開始執行秘密共享演算法時,主私鑰會存在於記憶體中,但是之後在對子公開地址(Child Public Address)做簽章時,主私鑰並不會被組出。
執行模組112連接初始模組111,用以在分層確定性錢包執行門檻式簽章運算時,驅動節點主機(110a、110b)執行M次的子金鑰推導函式,同時帶入第N層私鑰共享單元、第N層鏈碼及索引值,其中,M、N皆為正整數,並且在初次執行時,將每一節點主機(110a、110b)的主私鑰共享單元作為第N層私鑰共享單元、將主鏈碼作為第N層鏈碼。在實際實施上,索引值可代表第幾個子私鑰及第幾個子鏈碼,舉例來說,假設帶入的索引值為數值1,可代表產生第一個子私鑰及第一個子鏈碼;假設帶入的索引值為數值2,可代表產生第二個子私鑰及第二個子鏈碼,並以此類推。
計算模組113連接執行模組112,用以執行雜湊訊息鑑別碼函式,使所述雜湊訊息鑑別碼函式根據第N層鏈碼、第N層公鑰及索引值計算出雜湊值,再將此雜湊值分割成相同長度的第一部分及第二部分,並且先將第一部分轉換為數值以作為私鑰平移量,再將此私鑰平移量除以節點數量以作為常數值。在實際實施上,假設雜湊訊息鑑別碼函式為「HMAC-SHA512」,則計算出 的雜湊值為512位元組(Bytes),而第一部分及第二部分便分別為256位元組。另外,假設第一部分轉換後的數值為2342,節點數量為數值2,那麼,常數值即為「2342/2=1171」。
選擇模組114連接計算模組113,用以選擇隨機多項式,並且將常數值作為選擇的隨機多項式的常數項,其中,隨機多項式的最高次數為節點數量減數值1。以上述節點數量為數值2且常數值「1171」為例,節點主機110a選擇的隨機多項式可為「5x+1171」;節點主機110b選擇的隨機多項式可為「10x+1171」,從這兩個隨機多項式可清楚看到,這是兩個一次多項式且常數項均為「1171」,因為隨機多項式的最高次數為「2-1=1」。
運算模組115連接選擇模組114,用以執行安全多方運算以相互交換每一節點主機(110a、110b)各自的X座標值,並且將不同節點主機(110a、110b)的X座標值帶入選擇的隨機多項式以計算出相應的多項式值,再根據所述X座標值將計算出的多項式值傳送至相應的節點主機(110a、110b)。以上述多項式為例,假設節點主機110a的X座標值為數值「1」;節點主機110b的X座標值為數值「3」,當節點主機(110a、110b)相互交換彼此的X座標值之後,節點主機110a會將數值「1」帶入隨機多項式「5x+1171」計算出多項式值「1176」以及將數值「3」帶入隨機多項式「5x+1171」計算出多項式值「1186」。接著,將多項式值「1186」傳送至X座標值為數值「3」的節點主機110b。同樣地,節點主機110b也會將數值「1」帶入隨機多項式「10x+1171」計算出多項式值「1181」以及將數值「3」帶入隨機多項式「10x+1171」計算出多項式值「1201」,並且將多項式值「1181」傳送至X座標值為數值「1」的節點主機110a。
生成模組116連接運算模組115,用以將接收自不同節點主機(110a、110b)的多項式值、根據自身X座標值計算出的多項式值,以及自身的第N層私鑰共享單元相加以產生第N+1層私鑰共享單元,並且同時根據私鑰平移量及橢圓曲線基點計算出相應的第N+1層公鑰。以上述為例,假設節點主機110a的第N層私鑰共享單元為數值「5」,則第N+1層私鑰共享單元為「5+1176+1181=2362」;假設節點主機110b的第N層私鑰共享單元為數值「9」,則其第N+1層私鑰共享單元為「9+1186+1201=2396」。特別要說明的是,為了便於說明,上述皆以簡單的數值進行示意,然而實際上這些數值皆是非常大的整數值。
簽章模組117連接生成模組116,用以透過安全多方運算對計算出的第N+1層私鑰共享單元進行計算且與其它節點主機交換訊息,使分層確定性錢包完成門檻式簽章運算,同時在不知完整私鑰的情況下,直接計算出相應第N+1層公鑰及符合橢圓曲線數位簽名演算法的簽章訊息。在實際實施上,所有節點主機(110a、110b)所產生的第N+1層私鑰共享單元可使用插值法(如:拉格朗日插值法、伯克霍夫插值法等等)與多方安全計算出數值「s」,並且與X座標值「r」組成一對(Pair),進而獲得簽章訊息「(r,s)」以便嵌入原始交易訊息。特別要說明的是,在計算過程中,倘若「r」或「s」的數值為零,那麼,所有節點主機(110a、110b)將重新選擇隨機多項式並重新進行計算直到數值不為零為止。另外,倘若第N+1層私鑰共享單元沒有等級區分,可以在安全多方運算的基礎上,使用拉格朗日插值法來與多方安全計算出數值「s」;倘若第N+1層私鑰共享單元有等級區分,則可使用伯克霍夫插值法來與多方安全計算出數值「s」。
特別要說明的是,在實際實施上,本發明所述的模組皆可利用各種方式來實現,包含軟體、硬體或其任意組合,例如,在某些實施方式中,各 模組可利用軟體及硬體或其中之一來實現,除此之外,本發明亦可部分地或完全地基於硬體來實現,例如,系統中的一個或多個模組可以透過積體電路晶片、系統單晶片(System on Chip,SoC)、複雜可程式邏輯裝置(Complex Programmable Logic Device,CPLD)、現場可程式邏輯閘陣列(Field Programmable Gate Array,FPGA)等來實現。本發明可以是系統、方法及/或電腦程式。電腦程式可以包括電腦可讀儲存媒體,其上載有用於使處理器實現本發明的各個方面的電腦可讀程式指令,電腦可讀儲存媒體可以是可以保持和儲存由指令執行設備使用的指令的有形設備。電腦可讀儲存媒體可以是但不限於電儲存設備、磁儲存設備、光儲存設備、電磁儲存設備、半導體儲存設備或上述的任意合適的組合。電腦可讀儲存媒體的更具體的例子(非窮舉的列表)包括:硬碟、隨機存取記憶體、唯讀記憶體、快閃記憶體、光碟、軟碟以及上述的任意合適的組合。此處所使用的電腦可讀儲存媒體不被解釋為瞬時訊號本身,諸如無線電波或者其它自由傳播的電磁波、通過波導或其它傳輸媒介傳播的電磁波(例如,通過光纖電纜的光訊號)、或者通過電線傳輸的電訊號。另外,此處所描述的電腦可讀程式指令可以從電腦可讀儲存媒體下載到各個計算/處理設備,或者通過網路,例如:網際網路、區域網路、廣域網路及/或無線網路下載到外部電腦設備或外部儲存設備。網路可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火牆、交換器、集線器及/或閘道器。每一個計算/處理設備中的網路卡或者網路介面從網路接收電腦可讀程式指令,並轉發此電腦可讀程式指令,以供儲存在各個計算/處理設備中的電腦可讀儲存媒體中。執行本發明操作的電腦程式指令可以是組合語言指令、指令集架構指令、機器指令、機器相關指令、微指令、韌體指令、或者以一種或多種程式語言的任意組合編寫的原始碼或目的碼 (Object Code),所述程式語言包括物件導向的程式語言,如:Common Lisp、Python、C++、Objective-C、Smalltalk、Delphi、Java、Swift、C#、Perl、Ruby與PHP等,以及常規的程序式(Procedural)程式語言,如:C語言或類似的程式語言。所述電腦程式指令可以完全地在電腦上執行、部分地在電腦上執行、作為一個獨立的軟體執行、部分在客戶端電腦上部分在遠端電腦上執行、或者完全在遠端電腦或伺服器上執行。
請參閱「第2A圖」及「第2B圖」,「第2A圖」及「第2B圖」為本發明分層確定性錢包的門檻式簽章方法之方法流程圖,應用在區塊鏈網路100,其步驟包括:在區塊鏈網路100中提供多個節點主機(110a、110b)以共同參與分層確定性錢包的門檻式簽章運算,其中,分層確定性錢包儲存主私鑰共享單元及其相應的主公鑰,所述節點主機(110a、110b)各自具有節點數量、門檻值、索引值、主公鑰、主鏈碼、X座標值及與主公鑰相應的另一主私鑰共享單元(步驟210);當分層確定性錢包執行門檻式簽章運算時,驅動節點主機(110a、110b)執行M次的子金鑰推導函式,同時帶入第N層私鑰共享單元、第N層鏈碼及索引值,其中,M、N皆為正整數,並且在初次執行時,將每一節點主機(110a、110b)的主私鑰共享單元作為第N層私鑰共享單元、將主鏈碼作為第N層鏈碼,使每一節點主機(110a、110b)分別執行以下步驟(步驟220):執行雜湊訊息鑑別碼函式,使雜湊訊息鑑別碼函式根據第N層鏈碼、第N層公鑰及索引值計算出雜湊值,再將此雜湊值分割成相同長度的第一部分及第二部分,並且先將第一部分轉換為數值以作為私鑰平移量,再將此私鑰平移量除以節點數量以作為常數值(步驟221);選擇隨機多項式,並且將常數值作為選擇的隨機多項式的常數項,其中,隨機多項式的最高次數為節點數量減數值1(步 驟222);執行安全多方運算,用以相互交換每一節點主機(110a、110b)各自的X座標值,並且將不同節點主機(110a、110b)的X座標值帶入選擇的隨機多項式以計算出相應的多項式值,再根據X座標值將計算出的多項式值傳送至相應的節點主機(110a、110b)(步驟223);將接收自不同節點主機(110a、110b)的多項式值、根據自身X座標值計算出的多項式值,以及自身的第N層私鑰共享單元相加以產生第N+1層私鑰共享單元,並且同時根據私鑰平移量及橢圓曲線基點計算出相應的第N+1層公鑰(步驟224);以及透過安全多方運算對計算出的第N+1層私鑰共享單元進行計算且與其它節點主機交換訊息,使分層確定性錢包完成門檻式簽章運算,用以在不知完整私鑰的情況下,直接計算出相應第N+1層公鑰且符合橢圓曲線數位簽名演算法的簽章訊息(步驟225)。透過上述步驟,即可透過在分層確定性錢包執行門檻式簽章運算時,由參與運算的節點主機(110a、110b)執行子金鑰推導函式,以便根據父私鑰共享單元、父鏈碼及索引值計算私鑰平移量,並且將其除以所述節點主機的數量以作為節點主機(110a、110b)選擇的隨機多項式的常數項,再執行安全多方運算以計算及交換訊息,以便根據計算及交換訊息的結果生成相應的子私鑰共享單元並用於門檻式簽章運算。
以下配合「第3圖」以實施例的方式進行如下說明,如「第3圖」所示意,「第3圖」為應用本發明產生能夠用於分層確定性錢包的門檻式簽章的子私鑰共享單元之示意圖。假設在區塊鏈網路100中提供二個節點主機(110a、110b)以共同參與分層確定性錢包的門檻式簽章運算,並且門檻值為數值「2」,這兩個節點主機(110a、110b)會各自持有一個主私鑰共享單元,例如:分別以數值「5」及數值「9」來進行示意,且X座標值分別為數值「1」及數值「3」。 當分層確定性錢包執行門檻式簽章運算時,這兩個節點主機(110a、110b)會以安全多方運算的方式執行子金鑰推導函式。在執行子金鑰推導函式時,會先執行雜湊訊息鑑別碼函式,如:「HMAC-SHA512」,用以根據父鏈碼(如:cpar)、父公鑰(如:P)及索引值(如:i)計算出雜湊值(如:I),再將雜湊值分割成相同長度的第一部分(如:IL)及第二部分(如:IR),並且先將第一部分轉換為數值,如:「parse256(IL)」,用以作為私鑰平移量,再將此私鑰平移量除以節點數量,如:「parse256(IL)/n」,用以作為常數值。其中,「parse256(IL)」是指將第一部分「IL」轉換為256位元的數值且最高有效位元組在前;「n」是指節點數量,以此例而言是數值「2」。假設「parse256(IL)」轉換後的數值為「2342」,那麼在此例中,常數值為數值「1171」。要補充說明的是,在此例中,「parse256(IL)/n」為「2342/2」,中的「2」是因為在例子中是兩個人參與因此每個人都需要貢獻「2342/2」才會使得計算出來的結果是預期將私鑰平移2342(即:「(2342/2) * 2」)。假設有三個節點主機參與這次的簽名(即:節點數量為數值「3」),並且假設「parse256(IL)」計算出的私鑰平移量是數值「5678」,則各節點主機需要加上的數值為「5678/3」,如此一來,經過計算後才會使得真正的私鑰平移「(5678/3) * 3」。
接下來,節點主機110a和節點主機110b分別選擇一個隨機多項式,由於節點數量為數值「2」,所以隨機多項式為一次多項式(即:最高次數為「2-1=1」),如「第3圖」所示意的隨機多項式(310、320)分別為「fa(x)=5x+1171」及「fb(x)=10x+1171」。更具體的說法是一次項任意且常數項皆為數值「1171」(即:常數值)。然後,節點主機110a和節點主機110b執行安全多方運算,以便相互交換每一節點主機(110a、110b)各自的X座標值,並且 將不同節點主機(110a、110b)的X座標值帶入選擇的隨機多項式以計算出相應的多項式值,再根據X座標值將計算出的多項式值傳送至相應的節點主機(110a、110b),在此例中,假設節點主機110a的X座標值為數值「1」;節點主機110b的X座標值為數值「3」。那麼,節點主機110a會將多項式值「1186」傳送給節點主機110b;節點主機110b會將多項式值「1181」傳送給節點主機110a。如此一來,節點主機110a便可將接收自節點主機110b的多項式值「1181」、根據自身X座標值計算出的多項式值「1176」,以及自身的父私鑰共享單元「5」相加以產生子私鑰共享單元(即:「5+1176+1181=2362」)。同樣地,節點主機110b也可以將接收自節點主機110a的多項式值「1186」、根據自身X座標值計算出的多項式值「1201」,以及自身的父私鑰共享單元「9」相加以產生子私鑰共享單元(即:「9+1186+1201=2396」)。此時,可以計算與子私鑰共享單元相應的公鑰,即:子公鑰為「(3+私鑰平移量) * G」。其中,G為橢圓曲線基點、「3」是指父私鑰,由於「3 * G」即為父公鑰,同理,「(3+私鑰平移量)」為子私鑰,而「(3+私鑰平移量) * G」即為子公鑰。在此例中,「3+2342」為子私鑰,「2345 * G」為子公鑰。另外,假設要驗證子私鑰是否真的為「3+2342」,可找出共同滿足隨機多項式310與隨機多項式320的唯一一次方程式(即:f(x)=17x+2345),其中的常數項即代表子私鑰330,其與上述「3+2342」的值相等,而將X座標值「1」、「3」分別帶入這個唯一的一次方程式亦可得到「2362」及「2396」,這兩個結果分別與節點主機110a與節點主機110b的子私鑰共享單元相符。特別要說明的是,上述舉例只是為了方便說明父私鑰、父公鑰、子私鑰與子私鑰之間的關係,然而實際上並未實際計算出父私鑰及子私鑰的數值。實際上,在計算公鑰的時候,可利用橢圓曲線加法的特性「(aG+bG)=(a+b)G」 來算出公鑰。換句話說,各節點主機(110a、110b)會將各自的子私鑰共享單元乘以橢圓曲線基點「G」,再將此乘積廣播給各節點主機(110a、110b)。如此一來,各節點主機(110a、110b)便可先將自己的乘積與其它節點主機的乘積加起來,接著再將前述乘積的總和加上私鑰平移量「parse256(IL)」與橢圓曲線基點「G」的乘積(即:「parse256(IL) * G」)進而計算出相應的子公鑰。
在產生子私鑰共享單元及其相應的子公鑰後,使用者即可直接從多層確定性錢包的父私鑰共享單元,簽出指定子位址的簽章,在整個過程中,無論是父私鑰或子私鑰都不會被組出,若子私鑰所對應的子私鑰共享單元遺失,也很難推出相應的父私鑰共享單元,因為每次得到的子私鑰共享單元都是不同的。另外,傳統上子私鑰遺失會導致父私鑰也隨之遺失,但藉由整合門檻式簽章的方式,則需要達到門檻值的子私鑰共享單元同時遺失,才會使得父私鑰遺失,也就是說,在不同次簽名中,記憶體內的子私鑰共享單元所遺失的數量相加達到門檻值才會使私鑰洩漏。
綜上所述,可知本發明與先前技術之間的差異在於透過在分層確定性錢包執行門檻式簽章運算時,由參與運算的節點主機執行子金鑰推導函式,以便根據父私鑰共享單元、父鏈碼及索引值計算私鑰平移量,並且將其除以所述節點主機的數量以作為節點主機選擇的隨機多項式的常數項,再執行安全多方運算以計算及交換訊息,以便根據計算及交換訊息的結果生成相應的子私鑰共享單元並用於門檻式簽章運算,藉由此一技術手段可以解決先前技術所存在的問題,進而在不生成私鑰的情況下,達成提高分層確定性錢包的安全性之技術功效。
雖然本發明以前述之實施例揭露如上,然其並非用以限定本發明,任何熟習相像技藝者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之專利保護範圍須視本說明書所附之申請專利範圍所界定者為準。
100:區塊鏈網路
110a,110b:節點主機
111:初始模組
112:執行模組
113:計算模組
114:選擇模組
115:運算模組
116:生成模組
117:簽章模組

Claims (10)

  1. 一種分層確定性錢包的門檻式簽章系統,應用在一區塊鏈網路,該系統包含:多個節點主機,用以共同參與一分層確定性錢包的門檻式簽章運算,其中,該分層確定性錢包儲存一主私鑰共享單元及其相應的一主公鑰,每一節點主機皆包含:一初始模組,用以儲存一節點數量、一門檻值、一索引值、該主公鑰、一主鏈碼、一X座標值及與該主公鑰相應的另一不同的所述主私鑰共享單元;一執行模組,連接該初始模組,用以在該分層確定性錢包執行門檻式簽章運算時,驅動所述節點主機執行M次的一子金鑰推導(Child Key Derivation,CKD)函式,同時帶入一第N層私鑰共享單元、一第N層鏈碼及所述索引值,其中,M、N皆為正整數,並且在初次執行時,將每一節點主機的所述主私鑰共享單元作為所述第N層私鑰共享單元、將所述主鏈碼作為所述第N層鏈碼;一計算模組,連接該執行模組,用以執行一雜湊訊息鑑別碼(Hash-based Message Authentication Code,HMAC)函式,使該雜湊訊息鑑別碼函式根據所述第N層鏈碼、一第N層公鑰及所述索引值計算出一雜湊值,再將該雜湊值分割成相同長度的一第一部分及一第二部分,並且先將該 第一部分轉換為數值以作為一私鑰平移量,再將該私鑰平移量除以該節點數量以作為一常數值;一選擇模組,連接該計算模組,用以選擇一隨機多項式,並且將該常數值作為選擇的該隨機多項式的常數項,其中,該隨機多項式的最高次數為該節點數量減數值1;一運算模組,連接該選擇模組,用以執行一安全多方運算(Secure Multi-Party Computation,MPC)以相互交換每一節點主機各自的一X座標值,並且將不同所述節點主機的該X座標值帶入選擇的該隨機多項式以計算出相應的一多項式值,再根據所述X座標值將計算出的所述多項式值傳送至相應的所述節點主機;一生成模組,連接該運算模組,用以將接收自不同所述節點主機的所述多項式值、根據自身所述X座標值計算出的所述多項式值,以及自身的所述第N層私鑰共享單元相加以產生一第N+1層私鑰共享單元,以及同時根據該私鑰平移量及一橢圓曲線基點計算出相應的一第N+1層公鑰;以及一簽章模組,連接該生成模組,用以透過所述安全多方運算對計算出的所述第N+1層私鑰共享單元進行計算且與其它所述節點主機交換訊息,使該分層確定性錢包完成門檻式簽章運算,同時在不知完整私鑰的情況下,直接計 算出相應該第N+1層公鑰且符合橢圓曲線數位簽名演算法的一簽章訊息。
  2. 如請求項1之分層確定性錢包的門檻式簽章系統,其中所述主私鑰共享單元係由每一節點主機執行一分散式私鑰生成(Distributed Key Generation,DKG)函式,再搭配預設的該節點數量、該門檻值、該主鏈碼及所述隨機多項式以進行生成。
  3. 如請求項1之分層確定性錢包的門檻式簽章系統,其中所述節點主機包含一分派端主機,用以先根據一種子產生一主私鑰,再執行一秘密共享演算法將該主私鑰分成不同的所述主私鑰共享單元,以及將所述主私鑰共享單元傳送至不同的所述節點主機。
  4. 如請求項3之分層確定性錢包的門檻式簽章系統,其中該秘密共享演算法包含沙米爾的秘密共享(Shamir’s Secret Sharing,SSS)及布萊克利的秘密共享(Blakley’s Secret Sharing,BSS)。
  5. 如請求項3之分層確定性錢包的門檻式簽章系統,其中該種子為所述節點主機根據一字典檔隨機產生的多個助記詞,所述助記詞為語言可讀的有序字詞。
  6. 一種分層確定性錢包的門檻式簽章方法,應用在一區塊鏈網路,其步驟包括:在該區塊鏈網路中提供多個節點主機以共同參與一分層確定性錢包的門檻式簽章運算,其中,該分層確定性錢包儲存一主私鑰共享單元及其相應的一主公鑰,所述節點主機各自具有一節點數量、一門檻值、一索引值、該主公鑰、一主鏈碼、一 X座標值及與該主公鑰相應的另一不同的所述主私鑰共享單元;以及當該分層確定性錢包執行門檻式簽章運算時,驅動所述節點主機執行M次的一子金鑰推導(Child Key Derivation,CKD)函式,同時帶入一第N層私鑰共享單元、一第N層鏈碼及所述索引值,其中,M、N皆為正整數,並且在初次執行時,將每一節點主機的所述主私鑰共享單元作為所述第N層私鑰共享單元、將所述主鏈碼作為所述第N層鏈碼,使每一節點主機分別執行以下步驟:執行一雜湊訊息鑑別碼(Hash-based Message Authentication Code,HMAC)函式,使該雜湊訊息鑑別碼函式根據所述第N層鏈碼、一第N層公鑰及所述索引值計算出一雜湊值,再將該雜湊值分割成相同長度的一第一部分及一第二部分,並且先將該第一部分轉換為數值以作為一私鑰平移量,再將該私鑰平移量除以該節點數量以作為一常數值;選擇一隨機多項式,並且將該常數值作為選擇的該隨機多項式的常數項,其中,該隨機多項式的最高次數為該節點數量減數值1;執行安全多方運算(Secure Multi-Party Computation,MPC),用以相互交換每一節點主機各自的一X座標值,並且將不同所述節點主機的該X座標值帶入選擇的該隨機 多項式以計算出相應的一多項式值,再根據所述X座標值將計算出的所述多項式值傳送至相應的所述節點主機;將接收自不同所述節點主機的所述多項式值、根據自身所述X座標值計算出的所述多項式值,以及自身的該第N層私鑰共享單元相加以產生一第N+1層私鑰共享單元,並且同時根據該私鑰平移量及一橢圓曲線基點計算出相應的一第N+1層公鑰;以及透過安全多方運算對計算出的所述第N+1層私鑰共享單元進行計算且與其它所述節點主機交換訊息,使該分層確定性錢包完成門檻式簽章運算,用以在不知完整私鑰的情況下,直接計算出相應該第N+1層公鑰且符合橢圓曲線數位簽名演算法的一簽章訊息。
  7. 如請求項6之分層確定性錢包的門檻式簽章方法,其中所述主私鑰共享單元係由每一節點主機執行一分散式私鑰生成(Distributed Key Generation,DKG)函式,再搭配預設的該節點數量、該門檻值、該主鏈碼及所述隨機多項式以進行生成。
  8. 如請求項6之分層確定性錢包的門檻式簽章方法,其中所述節點主機包含一分派端主機,用以先根據一種子產生一主私鑰,再執行一秘密共享演算法將該主私鑰分成不同的所述主私鑰共享單元,以及將所述主私鑰共享單元傳送至不同的所述節點主機。
  9. 如請求項8之分層確定性錢包的門檻式簽章方法,其中該秘密共享演算法包含沙米爾的秘密共享(Shamir’s Secret Sharing,SSS)及布萊克利的秘密共享(Blakley’s Secret Sharing,BSS)。
  10. 如請求項8之分層確定性錢包的門檻式簽章方法,其中該種子為所述節點主機根據一字典檔隨機產生的多個助記詞,所述助記詞為語言可讀的有序字詞。
TW110108179A 2021-03-08 2021-03-08 分層確定性錢包的門檻式簽章系統及其方法 TWI776416B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TW110108179A TWI776416B (zh) 2021-03-08 2021-03-08 分層確定性錢包的門檻式簽章系統及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW110108179A TWI776416B (zh) 2021-03-08 2021-03-08 分層確定性錢包的門檻式簽章系統及其方法

Publications (2)

Publication Number Publication Date
TWI776416B true TWI776416B (zh) 2022-09-01
TW202236822A TW202236822A (zh) 2022-09-16

Family

ID=84957221

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110108179A TWI776416B (zh) 2021-03-08 2021-03-08 分層確定性錢包的門檻式簽章系統及其方法

Country Status (1)

Country Link
TW (1) TWI776416B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240259191A1 (en) * 2023-01-27 2024-08-01 MetaLoop Inc. Hardened key derivation in multi-party computation

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017127238A1 (en) * 2016-01-20 2017-07-27 Mastercard International Incorporated Method and system for distributed cryptographic key provisioning and storage via elliptic curve cryptography
TW201946412A (zh) * 2018-03-02 2019-12-01 安地卡及巴布達商區塊鏈控股有限公司 用以移轉數位資產支配權之電腦實施方法及系統

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017127238A1 (en) * 2016-01-20 2017-07-27 Mastercard International Incorporated Method and system for distributed cryptographic key provisioning and storage via elliptic curve cryptography
TW201946412A (zh) * 2018-03-02 2019-12-01 安地卡及巴布達商區塊鏈控股有限公司 用以移轉數位資產支配權之電腦實施方法及系統

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
網路文獻 Adriano Di Luzio, Danilo Francati, G. Ateniese, "Arcula: A Secure Hierarchical Deterministic Wallet for Multi-asset Blockchains", Computer Science, IACR Cryptol. ePrint Arch, 2019/12/12. [https://arxiv.org/abs/1906.05919] *

Also Published As

Publication number Publication date
TW202236822A (zh) 2022-09-16

Similar Documents

Publication Publication Date Title
CN113424185B (zh) 快速不经意传输
WO2020253234A1 (zh) 实现隐私保护的数据同态加解密方法及装置
Schneider et al. GMW vs. Yao? Efficient secure two-party computation with low depth circuits
CN112906044B (zh) 多方安全计算方法、装置、设备及存储介质
CN111512589A (zh) 用于利用spdz的快速安全多方内积的方法
CN112152794A (zh) 具有基于签名加入协议和无限签名的有效后量子匿名证明
US8681986B2 (en) Single-round password-based key exchange protocols
JP2020508021A (ja) キー交換デバイス及び方法
US11979492B2 (en) Computer-implemented system and method for distributing shares of digitally signed data
JP2021523620A (ja) 秘密を通信する方法及びシステム
TW201946412A (zh) 用以移轉數位資產支配權之電腦實施方法及系統
US12034840B2 (en) Computer implemented system and method for sharing a common secret preliminary class
JP2021510954A (ja) デジタル署名されたデータを取得するためのコンピュータにより実施される方法及びシステム
WO2023020216A1 (zh) 多方安全确定最值的方法、装置、设备及存储介质
Ranjith et al. Blockchain-based knapsack system for security and privacy preserving to medical data
TWI776416B (zh) 分層確定性錢包的門檻式簽章系統及其方法
TWI759138B (zh) 基於輸入密碼的門檻式簽章系統及其方法
TWI764811B (zh) 分層確定性錢包的金鑰生成系統及其方法
TWI689194B (zh) 基於無分派者秘密共享的門檻式簽章系統及其方法
TWI737956B (zh) 基於秘密共享的門檻式簽章系統及其方法
TWI694349B (zh) 防止記憶體傾印的門檻式簽章系統及其方法
TWI799286B (zh) 門檻式簽章的亂數生成系統及其方法
WO2023055582A1 (en) Round optimal oblivious transfers from isogenies
TW202345542A (zh) 基於混淆電路的門檻式簽章生成系統及其方法

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent