TWI689194B - 基於無分派者秘密共享的門檻式簽章系統及其方法 - Google Patents
基於無分派者秘密共享的門檻式簽章系統及其方法 Download PDFInfo
- Publication number
- TWI689194B TWI689194B TW108102431A TW108102431A TWI689194B TW I689194 B TWI689194 B TW I689194B TW 108102431 A TW108102431 A TW 108102431A TW 108102431 A TW108102431 A TW 108102431A TW I689194 B TWI689194 B TW I689194B
- Authority
- TW
- Taiwan
- Prior art keywords
- value
- sharing
- unit
- broadcast
- signature
- Prior art date
Links
Images
Landscapes
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一種基於無分派者秘密共享的門檻式簽章系統及其方法,透過前端主機選擇多個執行節點,由執行節點執行聯合隨機秘密分享演算法及聯合隨機零值秘密分享演算法產生共享單元,並且透過安全多方運算對共享單元進行計算及交換訊息,以便根據計算及交換訊息的結果生成對應共享單元的公鑰及交易簽章,並且將交易簽章嵌入原始交易訊息後廣播至區塊鏈網路,用以在不生成私鑰的情況下,達到提高簽章的公正性之技術功效。
Description
本發明涉及一種簽章系統及其方法,特別是基於無分派者秘密共享的門檻式簽章系統及其方法。
近年來,隨著政府、組織及民眾等對資訊安全的重視,各種基於電子簽章(以下簡稱簽章)的應用便如雨後春筍般出現。其中又以多方簽章(Multisig)的應用最受矚目。
一般而言,多方簽章是指多個用戶對同一個訊息進行簽章,舉例來說,在區塊鏈交易(Blockchain Transaction)中,一個交易允許N個用戶使用各自的私鑰(Private Key)對其簽章,也就是說,允許N個私鑰進行簽章,而其中只要有M個用戶簽章時(M<N),即代表允許支付交易。由於可參與交易的用戶數量變多,所以可以應用的交易方式也更具多樣性。然而,多方簽章也存在許多問題,例如:多方簽章會使交易訊息變大,導致手續費變貴;隱私性較低,外人可以知道M或N是那些地址,進而追蹤各別地址的其它交易;以智能合約實現需要多個交易才能完成;汰換M成員需要重新建立錢包,或是依照智能合約內容汰換。
有鑑於此,便有廠商提出搭配秘密共享演算法的技術,其透過將私鑰分解為多個共享單元(Share),由每一方分別持有不同的共享單元,用以對同一個區塊鏈交易訊息進行計算以生成簽章。如此一來,可有效控制交易訊息的大小,並且因為不使用完整的地址,所以更具隱私性,在汰換成員時,能夠更新所有共享單元,但維持使用原本的私鑰,所以更具靈活性。然而,此方式會由伺服端產生私鑰,當伺服端被入侵時,將導致私鑰外洩而使得未獲授權者得以使用此私鑰進行簽章,破壞簽章的公正性,故以此方式具有簽章的公正性不佳的問題。
綜上所述,可知先前技術中長期以來一直存在簽章的公正性不佳之問題,因此實有必要提出改進的技術手段,來解決此一問題。
本發明揭露一種基於無分派者秘密共享的門檻式簽章系統及其方法。
首先,本發明揭露一種基於無分派者秘密共享的門檻式簽章系統,此系統包含:客戶端及伺服端。所述客戶端允許作為多個執行節點其中之一,以及傳送交易請求及包含門檻值及總數值的金鑰請求,其中,門檻值小於或等於總數值,並且門檻值及總數值皆為大於數值1的正整數。
在伺服端的部分,其包含前端主機及多個節點。其中,所述前端主機用以接收交易請求及金鑰請求,並且根據金鑰請求選擇與總數值相同數量的執行節點,以及在區塊鏈交易初始時,根據交易請求及區塊鏈資料格式生成對應的原始交易訊息以進行傳送;所述節點連接前端主機,並且將前端主機選擇的節點作為執行節點,每一執行節點包含:執行模組、金鑰模組、計算模組及簽章模組。其中,執行模組用以執行聯合隨機秘密共享(Joint Random Secret Sharing, JRSS)演算法,選擇隨機多項式進行計算,並且與每一執行節點交換計算結果以生成相應的私鑰共享單元,以及執行二次聯合隨機秘密共享演算法以生成相應的第一共享單元及第二共享單元,再執行二次聯合隨機零值秘密共享(Joint Random Zero Secret Sharing, JZSS)演算法以生成相應的第三共享單元及第四共享單元;金鑰模組連接執行模組,用以廣播生成的私鑰共享單元對基點(Base Point)的乘積值,以及根據每一執行節點廣播的乘積值的數值總和計算出公鑰;計算模組連接執行模組,用以根據每一執行節點各自擁有的第一共享單元、第二共享單元、第三共享單元及第四共享單元計算相應的第一廣播數值及第二廣播數值,其中,第一廣播數值為第一共享單元乘以第二共享單元後,加上第三共享單元,第二廣播數值為第二共享單元乘以基點,以及廣播各自計算出的第一廣播數值及第二廣播數值,並且根據所有第一廣播數值及第二廣播數值計算曲線座標點;簽章模組連接執行模組、金鑰模組及計算模組,用以執行橢圓曲線數位簽名演算法(Elliptic Curve Digital Signature Algorithm, ECDSA)的門檻簽章協定,根據原始交易訊息、曲線座標點的X座標及各自擁有的第一共享單元、私鑰共享單元及第四共享單元進行計算及交換訊息,當計算及交換訊息的數量滿足門檻值時,由執行節點至少其中之一根據計算及交換訊息的結果生成交易簽章,並且將此交易簽章嵌入原始交易訊息以生成已簽章交易訊息,以及將已簽章交易訊息廣播至區塊鏈網路。
另外,本發明揭露一種基於無分派者秘密共享的門檻式簽章方法,應用在具有客戶端及伺服端的網路環境中,此伺服端包含前端主機及多個節點,其步驟包括:客戶端傳送包含門檻值及總數值的金鑰請求至伺服端的前端主機,其中,門檻值小於或等於總數值,並且門檻值及總數值皆為大於數值1的正整數;前端主機根據接收到的金鑰請求,自節點及客戶端中選擇與總數值相同的數量作為執行節點,每一執行節點皆執行聯合隨機秘密共享演算法,用以分別選擇隨機多項式進行計算,並且與每一執行節點交換計算結果以生成相應的私鑰共享單元;每一執行節點廣播生成的私鑰共享單元對基點的乘積值,以及根據每一執行節點廣播的乘積值的數值總和計算出公鑰;在區塊鏈交易初始時,伺服端的前端主機接收來自客戶端的交易請求,並且根據交易請求及區塊鏈資料格式生成對應的原始交易訊息,以及將原始交易訊息傳送至客戶端及每一執行節點;每一執行節點執行二次JRSS演算法以生成相應的第一共享單元及第二共享單元,以及執行二次JZSS演算法以生成相應的第三共享單元及第四共享單元;每一執行節點根據各自擁有的第一共享單元、第二共享單元、第三共享單元及第四共享單元計算相應的第一廣播數值及第二廣播數值,其中,第一廣播數值為第一共享單元乘以第二共享單元後,加上第三共享單元,第二廣播數值為第二共享單元乘以基點;每一執行節點廣播各自計算出的第一廣播數值及第二廣播數值,並且根據所有第一廣播數值及第二廣播數值計算曲線座標點;以及每一執行節點執行橢圓曲線數位簽名演算法的門檻簽章協定,用以根據原始交易訊息、曲線座標點的X座標及各自擁有的第一共享單元、私鑰共享單元及第四共享單元進行計算及交換訊息,當計算及交換訊息的數量滿足門檻值時,由執行節點至少其中之一根據計算及交換訊息的結果生成交易簽章,並且將交易簽章嵌入原始交易訊息以生成已簽章交易訊息,以及將已簽章交易訊息廣播至區塊鏈網路。
本發明所揭露之系統與方法如上,與先前技術的差異在於本發明是透過前端主機選擇多個執行節點,由執行節點執行聯合隨機秘密分享演算法及聯合隨機零值秘密分享演算法產生共享單元,並且透過安全多方運算對共享單元進行計算及交換訊息,以便根據計算及交換訊息的結果生成對應共享單元的公鑰及交易簽章,並且將交易簽章嵌入原始交易訊息後廣播至區塊鏈網路,並且將已簽章交易訊息廣播至區塊鏈網路。
透過上述的技術手段,本發明可以在不生成私鑰的前提下,達成提高簽章的公正性之技術功效。
以下將配合圖式及實施例來詳細說明本發明之實施方式,藉此對本發明如何應用技術手段來解決技術問題並達成技術功效的實現過程能充分理解並據以實施。
在說明本發明所揭露之基於無分派者秘密共享的門檻式簽章系統及其方法之前,先對本發明所自行定義的名詞作說明,本發明所述的各種「共享單元(Share)」,如:「私鑰共享單元」、「第一共享單元」、「第二共享單元」、「第三共享單元」、「第四共享單元」及「簽章共享單元」,均是指執行秘密共享演算法,如:聯合隨機秘密共享演算法、聯合隨機零值秘密共享演算法等的過程中,進行計算時所需的元素,這些元素會在執行安全多方運算(Secure Multi-Party Computation, SMC/MPC)時,在不同的執行節點之間進行相互交換,並且用來計算出交易簽章(或稱為「簽名」),即:「(r, s)」,其中,「r」為曲線座標點的X座標,「s」為透過內插法計算出的簽章值,稍後將針對交易簽章的計算方式做進一步說明。接著,所述第一廣播數值及第二廣播數值是指執行JRSS及JZSS時,需要廣播給其它執行節點的數值,如:「v
i」及「w
i」,另外,所述無分派者是指並非由單一方產生及分派私鑰,而是由多方經過JRSS及JZSS共同計算及交換訊息後,計算出相應公鑰及符合ECDSA簽章格式的交易簽章。
以下配合圖式對本發明基於無分派者秘密共享的門檻式簽章系統及其方法做進一步說明,請先參閱「第1圖」,「第1圖」為本發明基於無分派者秘密共享的門檻式簽章系統的系統方塊圖,此系統包含:客戶端110及伺服端120。其中,客戶端110用以允許作為多個執行節點其中之一,以及傳送交易請求及包含門檻值及總數值的金鑰請求,其中,門檻值小於或等於總數值,並且門檻值及總數值皆為大於數值1的正整數。在實際實施上,所述客戶端110及執行節點130均預先設置相同的秘密共享參數,此秘密共享參數包含橢圓曲線、質數、基點及階數的數值,以供執行聯合隨機秘密共享演算法及聯合隨機零值秘密共享演算法之用,舉例來說,可以使用ECDSA這個通用演算法在 「Secp256k1」 這條曲線上的參數作為秘密共享參數。
伺服端120包含:前端主機121及節點122,其中,前端主機121用以接收交易請求及金鑰請求,並且根據金鑰請求選擇與總數值相同數量的執行節點130,以及在區塊鏈交易初始時,根據交易請求及區塊鏈資料格式生成對應的原始交易訊息以進行傳送。在實際實施上,所述交易請求可包含來源地址,如:客戶端110的區塊鏈地址(或稱為「帳戶地址」),以便伺服端120能夠根據此來源地址自儲存空間(例如:資料庫)中查詢出相應客戶端110的共享單元,用以在執行門檻簽章協定時,將查詢出的共享單元用來對原始交易訊息進行計算以生成簽章。另外,所述區塊鏈資料格式包含比特幣(Bitcoin)區塊鏈、以太坊(Ethereum)區塊鏈或其它相似區塊鏈的資料格式,假設區塊鏈資料格式為比特幣區塊鏈,那麼會將區塊鏈的交易請求轉換為比特幣的交易資料格式,假設區塊鏈資料格式為以太坊區塊鏈,則會將區塊鏈的交易請求轉換為以太坊的交易資料格式。
節點122連接前端主機121,並且將前端主機121選擇的節點122作為執行節點130,換句話說,節點122與執行節點130的差異僅在於是否被前端主機121選擇。每一執行節點130包含:執行模組131、金鑰模組132、計算模組133及簽章模組134。其中,執行模組131用以執行聯合隨機秘密共享演算法,選擇隨機多項式進行計算,並且與每一執行節點交換計算結果以生成相應的私鑰共享單元,以及執行二次聯合隨機秘密共享演算法以生成相應的第一共享單元及第二共享單元,再執行二次聯合隨機零值秘密共享演算法以生成相應的第三共享單元及第四共享單元。在實際實施上,JRSS演算法及JZSS演算法是透過安全多方運算來進行計算及交換訊息,每當利用MPC計算一個數值出來時,各執行節點130需要同時在線上。另外,執行JRSS演算法及JZSS演算法的目的主要是為了讓每一執行節點130產生亂數,而且可以經過計算將這些產生的亂數組合起來後,剛好轉換為欲獲得的數值,如:「d*r」的數值,其中,「d」代表私鑰、「r」代表曲線座標點中的X座標。如此一來,在具有「d*r」的計算式子中,是否有「d」便不再重要,因為已經直接得知「d*r」的數值。另外,為了提高安全性,每一執行節點130可執行聯合隨機零值秘密共享演算法以生成相應的隨機數值「z
i」,並且將此隨機數值與各自的私鑰共享單元「Sd
i」相加成為隨機的數值「Sd
’ i」。
金鑰模組132連接執行模組131,用以廣播生成的私鑰共享單元「Sd
i」對基點「G」的乘積值,以及根據每一執行節點130廣播的乘積值的數值總和計算出公鑰。舉例來說,假設廣播的乘積值分別為「Sd
1*G」、「Sd
2*G」及「Sd
3*G」,公鑰「Q」的計算式即為「Q=Sd
1*G+Sd
2*G+Sd
3*G」。在實際實施上,公鑰可以經過雜湊處理後作為客戶端110的帳戶地址,以便透過帳戶地址進行區塊鏈交易,所述雜湊處理是指使用安全雜湊演算法(Secure Hash Algorithm, SHA),如:SHA3、SHA256、或其相似演算法進行計算。
計算模組133用以連接執行模組131,用以根據每一執行節點130各自擁有的第一共享單元、第二共享單元、第三共享單元及第四共享單元計算相應的第一廣播數值及第二廣播數值,其中,第一廣播數值為第一共享單元乘以第二共享單元後,加上第三共享單元,第二廣播數值為第二共享單元乘以基點,以及廣播各自計算出的第一廣播數值及第二廣播數值,並且根據所有第一廣播數值及第二廣播數值計算曲線座標點。舉例來說,假設第一共享單元為「k
i」、第二共享單元為「a
i」、第三共享單元為「b
i」、第四共享單元為「c
i」、第一廣播數值為「v
i」、第二廣播數值為「w
i」及基點為「G」,那麼,第一廣播數值的計算方式為「v
i=k
i*a
i+b
i」、第二廣播數值的計算方式為「w
i=a
i*G」,其中,「i」代表第幾個執行節點130,「i」為數值1代表第一個執行節點130、「i」為數值2代表第二個執行節點130,並以此類推,「i」為數值5代表第五個執行節點130,也就是說,「i」的數值與總數值相等。特別要說明的是,第二共享單元為「a
i」、第三共享單元為「b
i」及第四共享單元為「c
i」在計算式子中目的是作為避免洩漏第一共享單元為「k
i」的遮罩(Mask)。另外,所述計算式子可以是取其餘數的數值,以「v
i=k
i*a
i+b
i」為例,其可以是「v
i=k
i*a
i+b
imod q」,其中「q」為除數。
簽章模組134連接執行模組131、金鑰模組132及計算模組133,用以執行橢圓曲線數位簽名演算法的門檻簽章協定,以便根據原始交易訊息、曲線座標點的X座標及各自擁有的第一共享單元、選擇的一組數值及第四共享單元進行計算及交換訊息,舉例來說,假設原始交易訊息經雜湊處理後的數值為「e」、曲線座標點的X座標為「r」、第一共享單元為「k
i」、私鑰共享單元為「Sd
i」及第四共享單元為「c
i」,那麼可根據計算式子「s
i= k
i -1(e+Sd
ir)」計算出相應各執行節點130的簽章共享單元「s
i」,並將其作為欲交換的訊息。當計算及交換訊息的數量滿足門檻值時(例如:「s
i」的數量及門檻值皆為數值3),由執行節點130至少其中之一根據計算及交換訊息的結果生成交易簽章,以上例而言,由於執行節點130除了本身將計算出簽章共享單元之外,在交換訊息後還會得到其它執行節點130所計算出簽章共享單元,因此,將所有執行節點130所計算出的各簽章共享單元使用拉格朗日插值法即可計算出簽章值「s」,舉例來說,假設有三個執行節點130,簽章值的計算方式為「s=L[(1,s
1)+(2,s
2)+(3,s
3)][0]」,其中,L代表拉格朗日插值法,「[0]」代表取值在x=0,並且與曲線座標點的X座標「r」組成一對(Pair),進而獲得交易簽章「(r, s)」。接著,再將此交易簽章「(r, s)」嵌入原始交易訊息以生成已簽章交易訊息,以及將已簽章交易訊息廣播至區塊鏈網路。特別要說明的是,在計算過程中,倘若「r」或「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圖」為本發明基於無分派者秘密共享的門檻式簽章方法的方法流程圖,應用在具有客戶端110及伺服端120的網路環境中,所述伺服端120包含前端主機121及節點122,其步驟包括:客戶端110傳送包含門檻值及總數值的金鑰請求至伺服端120的前端主機121,其中,門檻值小於或等於總數值,並且門檻值及總數值皆為大於數值1的正整數(步驟210);前端主機121根據接收到的金鑰請求,自節點122及客戶端110中選擇與總數值相同的數量作為多個執行節點130,每一執行節點130皆執行聯合隨機秘密共享演算法,用以分別選擇一隨機多項式進行計算,並且與每一執行節點交換計算結果以生成相應的私鑰共享單元(步驟220);每一執行節點130廣播生成的私鑰共享單元對基點的乘積值,以及根據每一執行節點130廣播的乘積值的數值總和計算出公鑰(步驟230);在區塊鏈交易初始時,伺服端120的前端主機121接收來自客戶端110的交易請求,並且根據此交易請求及區塊鏈資料格式生成對應的原始交易訊息,以及將此原始交易訊息傳送至客戶端110及每一執行節點130(步驟240);每一執行節點130執行二次聯合隨機秘密共享演算法以生成相應的第一共享單元及第二共享單元,以及執行二次聯合隨機零值秘密共享演算法以生成相應的第三共享單元及第四共享單元(步驟250);每一執行節點130根據各自擁有的第一共享單元、第二共享單元、第三共享單元及第四共享單元計算相應的第一廣播數值及第二廣播數值,其中,第一廣播數值為第一共享單元乘以第二共享單元後,加上第三共享單元,第二廣播數值為第二共享單元乘以基點(步驟260);每一執行節點130廣播各自計算出的第一廣播數值及第二廣播數值,並且根據所有第一廣播數值及第二廣播數值計算曲線座標點(步驟270);每一執行節點130執行橢圓曲線數位簽名演算法的門檻簽章協定,用以根據原始交易訊息、曲線座標點的X座標及各自擁有的第一共享單元、私鑰共享單元及第四共享單元進行計算及交換訊息,當計算及交換訊息的數量滿足門檻值時,由執行節點130至少其中之一根據計算及交換訊息的結果生成交易簽章,並且將此交易簽章嵌入原始交易訊息以生成已簽章交易訊息,以及將已簽章交易訊息廣播至區塊鏈網路(步驟280)。透過上述步驟,即可透過前端主機121選擇多個執行節點130,由執行節點130執行聯合隨機秘密分享演算法及聯合隨機零值秘密分享演算法產生共享單元,並且透過安全多方運算對共享單元進行計算及交換訊息,以便根據計算及交換訊息的結果生成對應共享單元的公鑰及交易簽章,並且將交易簽章嵌入原始交易訊息後廣播至區塊鏈網路。
以下配合「第3圖」及「第4圖」以實施例的方式進行如下說明,請先參閱「第3圖」,「第3圖」為應用本發明產生私鑰共享單元及計算公鑰之示意圖。在實際實施上,當客戶端110發送金鑰請求給伺服端120的前端主機121後,伺服端120的前端主機121會根據接收到的金鑰請求,從伺服端120的節點122及客戶端110中選擇與總數值相同的數量作為執行節點130。接著,每一執行節點130皆執行JRSS演算法,用以分別選擇一隨機多項式「d
i」進行計算,舉例來說,假設有三個執行節點130,第一個執行節點130選擇隨機多項式「d
1=x
2+x+1」,並且將數值1至3分別帶入x得到三個計算結果;第二個執行節點130選擇隨機多項式「d
2=x
2+x+3」,並且同樣將數值1至3分別帶入x得到三個計算結果,以此類推,第三個執行節點130選擇隨機多項式「d
3=x
2+x+4」,並且同樣將數值1至3分別帶入x得到三個計算結果,接下來,每一執行節點130會交換計算結果(即:每一執行節點130會將對應數值1的計算結果提供給第一個執行節點130、將對應數值2的計算結果提供給第二個執行節點130,以及將對應數值3的計算結果提供給第三個執行節點130)以生成相應的共享單元(即:私鑰共享單元「Sd
i」),並且可將其儲存至資料庫。然後,透過MPC繼續執行JRSS演算法的計算及交換訊息,以便廣播生成的私鑰共享單元「Sd
i」對基點「G」的乘積值「Sd
i*G」,以及根據每一個執行節點130廣播的乘積值的數值總和計算出公鑰「Q」,並且可將公鑰儲存至資料庫與對應的私鑰共享單元相對應。舉例來說,假設門檻值為數值2、總數量為數值3,前端主機121會選擇三個執行節點130,這些執行節點在執行JRSS演算法時,假設第一個執行節點130生成私鑰共享單元「Sd
1」、第二個執行節點130生成私鑰共享單元「Sd
2」及第三個執行節點130生成私鑰共享單元「Sd
3」,並且同樣乘以基點「G」後分別得到「Sd
1*G」、「Sd
2*G」及「Sd
3*G」作為私鑰共享單元對基點的乘積值並進行廣播。如此一來,各執行節點130都會擁有三個私鑰共享單元對基點的乘積值「Sd
1*G」、「Sd
2*G」及「Sd
3*G」,此時,每一執行節點130只要將這三個私鑰共享單元對基點的乘積值相加後,都可以計算出公鑰「Q」,其計算式為「Q=Sd
1*G+Sd
2*G+Sd
3*G」。以此方式可以確保沒有人可以得知私鑰「d」,因為「d=Sd
1+Sd
2+Sd
3」,但是在橢圓曲線上有個難題是,即使已知「d*G」及「G」,欲知「d」仍然十分困難。另外,將公鑰「Q」進行雜湊處理後可以作為客戶端130的帳戶地址。要補充說明的是,前面提到,從伺服端120的節點122及客戶端110中選擇與總數值相同的數量作為執行節點130,其目的是為了讓客戶端110也有參與其中的機會,而不是僅由伺服端120來計算及儲存。換句話說,倘若選擇到客戶端110作為其中一個執行節點130,那麼客戶端110便能夠參與計算及儲存,倘若沒選擇到客戶端110,那麼便全部由伺服端120的執行節點130進行計算及儲存。因此,客戶端110可以包含執行節點130的所有模組及其功能,以便在前端主機121選擇客戶端110時,能夠成為其中一個執行節點130。
如「第4圖」所示意,「第4圖」為應用本發明計算及生成簽章之示意圖。在區塊鏈交易初始時,客戶端110會發送交易請求給伺服端120,由伺服端120根據此交易請求的來源地址,自儲存空間(例如:資料庫)中查詢出相應此客戶端110的共享單元。同時,伺服端120會根據交易請求及區塊鏈資料格式來產生原始交易訊息,也就是說,假設區塊鏈資料格式是使用以太坊的資料格式,那麼產生的原始交易訊息就會符合以太坊的資料格式;假設區塊鏈資料格式是使用比特幣的資料格式,那麼產生的原始交易訊息就會符合比特幣的資料格式。接著,伺服端120會將產生的原始交易訊息傳送給客戶端110及執行節點130。假設客戶端110是其中一個執行節點,客戶端110與伺服端120的執行節點130會進行MPC來針對原始交易訊息進行門檻式簽章,其中,MPC包含了執行多次JRSS演算法及JZSS演算法的計算及交換訊息的步驟,最後生成交易簽章嵌入原始交易訊息以生成已簽章交易訊息,並且將生成的已簽章交易訊息廣播至區塊鏈網路。
在實際實施上,由於一開始資料庫不會存在相應的共享單元,因此,第i個執行節點130會執行二次JRSS演算法以生成相應的第一共享單元「k
i」及第二共享單元「a
i」,以及執行二次JZSS演算法以生成相應的第三共享單元「b
i」及第四共享單元「c
i」。接著,每一執行節點130根據各自擁有的第一共享單元「k
i」、第二共享單元「a
i」、第三共享單元「b
i」及第四共享單元「c
i」計算相應的第一廣播數值「v
i」及第二廣播數值「w
i」,其中,第一廣播數值「v
i」為第一共享單元「k
i」乘以第二共享單元「a
i」後,加上第三共享單元「b
i」,亦即「v
i=k
i*a
i+b
i」;第二廣播數值「w
i」為第二共享單元「a
i」乘以基點「G」,亦即「w
i=a
i*G」。然後,每一執行節點130廣播各自計算出的第一廣播數值「v
i」及第二廣播數值「w
i」,並且根據所有第一廣播數值進行拉格朗日插值計算,以上述三個執行節點130為例,即:「v=L[(1,v
1)+(2,v
2)+(3,v
3)][0]」,其中,L代表拉格朗日插值法,「[0]」代表取值在x=0」,再將計算結果的倒數乘以所有第二廣播值的總和,即:「w=w
1+w
2+w
3」,用以計算曲線座標點「(R
x, R
y)」,其計算方式為「(R
x, R
y)=w*v
-1」。接下來,每一執行節點130執行橢圓曲線數位簽名演算法的門檻簽章協定,用以根據原始交易訊息「m」、曲線座標點的X座標(即:r=R
x)及各自擁有的第一共享單元「k
i」、私鑰共享單元「Sd
i」及第四共享單元「c
i」進行計算及交換訊息,當計算及交換訊息的數量滿足門檻值時,由執行節點130至少其中之一根據計算及交換訊息的結果生成交易簽章「(r, s)」,其中,「r」為曲線座標點的X座標;「s」的計算方式是先由各執行節點130交換各自根據計算式子「s
i= k
i -1(e+Sd
ir)」所計算出的結果,再進行插值(Interpolation)計算所得,其中,「e」為經雜湊處理的原始交易訊息「m」。舉例來說,假設有三個執行節點130,第一個執行節點130的計算式子為「s
1= k
1 -1(e+Sd
1r)」;第二個執行節點130的計算式子為「s
2= k
2 -1(e+Sd
2r)」;第三個執行節點130的計算式子為「s
3= k
3 -1(e+Sd
3r)」,經過MPC的計算及交換訊息後,每一個執行節點130皆具有「s
1」、「s
2」及「s
3」,因此,使用拉格朗日插值法即可計算出簽章值「s」,例如:「s=L[(1,s
1)+(2,s
2)+(3,s
3)][0]」,其中,L代表拉格朗日插值法,「[0]」代表取值在x=0。如此一來,便可將「r」的數值與「s」的數值組合成一對作為交易簽章「(r, s)」。最後,將此交易簽章嵌入原始交易訊息以生成已簽章交易訊息,以及將已簽章交易訊息廣播至區塊鏈網路。
綜上所述,可知本發明與先前技術之間的差異在於透過前端主機選擇多個執行節點,由執行節點執行聯合隨機秘密分享演算法及聯合隨機零值秘密分享演算法產生共享單元,並且透過安全多方運算對共享單元進行計算及交換訊息,以便根據計算及交換訊息的結果生成對應共享單元的公鑰及交易簽章,並且將交易簽章嵌入原始交易訊息後廣播至區塊鏈網路,藉由此一技術手段可以解決先前技術所存在的問題,進而在不生成私鑰的前提下,達成提高簽章的公正性之技術功效。
雖然本發明以前述之實施例揭露如上,然其並非用以限定本發明,任何熟習相像技藝者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之專利保護範圍須視本說明書所附之申請專利範圍所界定者為準。
110:客戶端
120:伺服端
121:前端主機
122:節點
130:執行節點
131:執行模組
132:金鑰模組
133:計算模組
134:簽章模組
步驟210:客戶端傳送包含一門檻值及一總數值的一金鑰請求至伺服端的前端主機,其中,該門檻值小於或等於該總數值,並且該門檻值及該總數值皆為大於數值1的正整數
步驟220:該前端主機根據接收到的該金鑰請求,自節點及該客戶端中選擇與該總數值相同的數量作為多個執行節點,每一執行節點皆執行一聯合隨機秘密共享演算法,用以分別選擇一隨機多項式進行計算,並且與每一執行節點交換計算結果以生成相應的一私鑰共享單元
步驟230:每一執行節點廣播生成的該私鑰共享單元對一基點的一乘積值,以及根據每一執行節點廣播的該乘積值的數值總和計算出一公鑰
步驟240:在區塊鏈交易初始時,該伺服端的該前端主機接收來自該客戶端的一交易請求,並且根據該交易請求及區塊鏈資料格式生成對應的一原始交易訊息,以及將該原始交易訊息傳送至該客戶端及每一執行節點
步驟250:每一執行節點執行二次該聯合隨機秘密共享演算法以生成相應的一第一共享單元及一第二共享單元,以及執行二次一聯合隨機零值秘密共享演算法以生成相應的一第三共享單元及一第四共享單元
步驟260:每一執行節點根據各自擁有的該第一共享單元、該第二共享單元、該第三共享單元及該第四共享單元計算相應的一第一廣播數值及一第二廣播數值,其中,該第一廣播數值為該第一共享單元乘以該第二共享單元後,加上該第三共享單元,該第二廣播數值為該第二共享單元乘以該基點
步驟270:每一執行節點廣播各自計算出的該第一廣播數值及該第二廣播數值,並且根據所有該第一廣播數值及該第二廣播數值計算一曲線座標點
步驟280:每一執行節點執行橢圓曲線數位簽名演算法的一門檻簽章協定,用以根據該原始交易訊息、該曲線座標點的一X座標及各自擁有的所述第一共享單元、所述私鑰共享單元及所述第四共享單元進行計算及交換訊息,當計算及交換訊息的數量滿足門檻值時,由所述執行節點至少其中之一根據計算及交換訊息的結果生成一交易簽章,並且將該交易簽章嵌入該原始交易訊息以生成一已簽章交易訊息,以及將該已簽章交易訊息廣播至區塊鏈網路
第1圖為本發明基於無分派者秘密共享的門檻式簽章系統之系統方塊圖。 第2A圖及第2B圖為本發明基於無分派者秘密共享的門檻式簽章方法之方法流程圖。 第3圖為應用本發明產生私鑰共享單元及計算公鑰之示意圖。 第4圖為應用本發明計算及生成簽章之示意圖。
110:客戶端
120:伺服端
121:前端主機
122:節點
130:執行節點
131:執行模組
132:金鑰模組
133:計算模組
134:簽章模組
Claims (10)
- 一種基於無分派者秘密共享的門檻式簽章系統,該系統包含: 一客戶端,用以允許作為多個執行節點其中之一,以及傳送一交易請求及包含一門檻值及一總數值的一金鑰請求,其中,該門檻值小於或等於該總數值,並且該門檻值及該總數值皆為大於數值1的正整數;以及 一伺服端,該伺服端包含: 一前端主機,用以接收該交易請求及該金鑰請求,並且根據該金鑰請求選擇與該總數值相同數量的所述執行節點,以及在區塊鏈交易初始時,根據該交易請求及區塊鏈資料格式生成對應的一原始交易訊息以進行傳送;以及 多個節點,連接該前端主機,並且將該前端主機選擇的所述節點作為所述執行節點,每一執行節點包含: 一執行模組,用以執行一聯合隨機秘密共享(Joint Random Secret Sharing, JRSS)演算法,選擇一隨機多項式進行計算,並且與每一執行節點交換計算結果以生成相應的一私鑰共享單元,以及執行二次該聯合隨機秘密共享演算法以生成相應的一第一共享單元及一第二共享單元,再執行二次一聯合隨機零值秘密共享(Joint Random Zero Secret Sharing, JZSS)演算法以生成相應的一第三共享單元及一第四共享單元; 一金鑰模組,連接該執行模組,用以廣播生成的該私鑰共享單元對一基點的一乘積值,以及根據每一執行節點廣播的該乘積值的數值總和計算出一公鑰; 一計算模組,連接該執行模組,用以根據每一執行節點各自擁有的該第一共享單元、該第二共享單元、該第三共享單元及該第四共享單元計算相應的一第一廣播數值及一第二廣播數值,其中,該第一廣播數值為該第一共享單元乘以該第二共享單元後,加上該第三共享單元,該第二廣播數值為該第二共享單元乘以該基點,以及廣播各自計算出的該第一廣播數值及該第二廣播數值,並且根據所有該第一廣播數值及該第二廣播數值計算一曲線座標點;以及 一簽章模組,連接該執行模組、該金鑰模組及該計算模組,用以執行橢圓曲線數位簽名演算法的一門檻簽章協定,根據該原始交易訊息、該曲線座標點的一X座標及各自擁有的所述第一共享單元、所述私鑰共享單元及所述第四共享單元進行計算及交換訊息,當計算及交換訊息的數量滿足門檻值時,由所述執行節點至少其中之一根據計算及交換訊息的結果生成一交易簽章,並且將該交易簽章嵌入該原始交易訊息以生成一已簽章交易訊息,以及將該已簽章交易訊息廣播至區塊鏈網路。
- 根據申請專利範圍第1項之基於無分派者秘密共享的門檻式簽章系統,其中該客戶端及所述執行節點預先設置相同的一秘密共享參數,該秘密共享參數包含橢圓曲線、質數、該基點及階數的數值,以供執行該聯合隨機秘密共享演算法及該聯合隨機零值秘密共享演算法之用。
- 根據申請專利範圍第1項之基於無分派者秘密共享的門檻式簽章系統,其中每一執行節點根據該原始交易訊息、該X座標及各自擁有的所述第一共享單元、所述私鑰共享單元及所述第四共享單元計算出相應的一簽章共享單元,並且執行安全多方運算廣播每一執行節點的該簽章共享單元再以內插法計算出一簽章值,以及根據該X座標及該簽章值生成該交易簽章。
- 根據申請專利範圍第1項之基於無分派者秘密共享的門檻式簽章系統,其中該公鑰進行雜湊處理後作為該客戶端的一帳戶地址,用以透過該帳戶地址進行區塊鏈交易,所述雜湊處理包含安全雜湊演算法(Secure Hash Algorithm, SHA)。
- 根據申請專利範圍第1項之基於無分派者秘密共享的門檻式簽章系統,其中每一執行節點執行該聯合隨機零值秘密共享演算法以生成相應的一隨機數值,並且將該隨機數值與各自的所述私鑰共享單元相加。
- 一種基於無分派者秘密共享的門檻式簽章方法,應用在具有一客戶端及一伺服端的網路環境中,該伺服端包含一前端主機及多個節點,其步驟包括: 該客戶端傳送包含一門檻值及一總數值的一金鑰請求至該伺服端的該前端主機,其中,該門檻值小於或等於該總數值,並且該門檻值及該總數值皆為大於數值1的正整數; 該前端主機根據接收到的該金鑰請求,自所述節點及該客戶端中選擇與該總數值相同的數量作為多個執行節點,每一執行節點皆執行一聯合隨機秘密共享(Joint Random Secret Sharing, JRSS)演算法,用以分別選擇一隨機多項式進行計算,並且與每一執行節點交換計算結果以生成相應的一私鑰共享單元; 每一執行節點廣播生成的該私鑰共享單元對一基點的一乘積值,以及根據每一執行節點廣播的該乘積值的數值總和計算出一公鑰; 在區塊鏈交易初始時,該伺服端的該前端主機接收來自該客戶端的一交易請求,並且根據該交易請求及區塊鏈資料格式生成對應的一原始交易訊息,以及將該原始交易訊息傳送至該客戶端及每一執行節點; 每一執行節點執行二次該聯合隨機秘密共享演算法以生成相應的一第一共享單元及一第二共享單元,以及執行二次一聯合隨機零值秘密共享(Joint Random Zero Secret Sharing, JZSS)演算法以生成相應的一第三共享單元及一第四共享單元; 每一執行節點根據各自擁有的該第一共享單元、該第二共享單元、該第三共享單元及該第四共享單元計算相應的一第一廣播數值及一第二廣播數值,其中,該第一廣播數值為該第一共享單元乘以該第二共享單元後,加上該第三共享單元,該第二廣播數值為該第二共享單元乘以該基點; 每一執行節點廣播各自計算出的該第一廣播數值及該第二廣播數值,並且根據所有該第一廣播數值及該第二廣播數值計算一曲線座標點;以及 每一執行節點執行橢圓曲線數位簽名演算法的一門檻簽章協定,用以根據該原始交易訊息、該曲線座標點的一X座標及各自擁有的所述第一共享單元、所述私鑰共享單元及所述第四共享單元進行計算及交換訊息,當計算及交換訊息的數量滿足門檻值時,由所述執行節點至少其中之一根據計算及交換訊息的結果生成一交易簽章,並且將該交易簽章嵌入該原始交易訊息以生成一已簽章交易訊息,以及將該已簽章交易訊息廣播至區塊鏈網路。
- 根據申請專利範圍第6項之基於無分派者秘密共享的門檻式簽章方法,其中該客戶端及所述執行節點預先設置相同的一秘密共享參數,該秘密共享參數包含橢圓曲線、質數、該基點及階數的數值,以供執行該聯合隨機秘密共享演算法及該聯合隨機零值秘密共享演算法之用。
- 根據申請專利範圍第6項之基於無分派者秘密共享的門檻式簽章方法,其中每一執行節點根據該原始交易訊息、該X座標及各自擁有的所述第一共享單元、所述私鑰共享單元及所述第四共享單元計算出相應的一簽章共享單元,並且執行安全多方運算廣播每一執行節點的該簽章共享單元再以內插法計算出一簽章值,以及根據該X座標及該簽章值生成該交易簽章。
- 根據申請專利範圍第6項之基於無分派者秘密共享的門檻式簽章方法,其中該公鑰進行雜湊處理後作為該客戶端的一帳戶地址,用以透過該帳戶地址進行區塊鏈交易,所述雜湊處理包含安全雜湊演算法(Secure Hash Algorithm, SHA)。
- 根據申請專利範圍第6項之基於無分派者秘密共享的門檻式簽章方法,其中每一執行節點執行該聯合隨機零值秘密共享演算法以生成相應的一隨機數值,並且將該隨機數值與各自的所述私鑰共享單元相加。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108102431A TWI689194B (zh) | 2019-01-22 | 2019-01-22 | 基於無分派者秘密共享的門檻式簽章系統及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108102431A TWI689194B (zh) | 2019-01-22 | 2019-01-22 | 基於無分派者秘密共享的門檻式簽章系統及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI689194B true TWI689194B (zh) | 2020-03-21 |
TW202029687A TW202029687A (zh) | 2020-08-01 |
Family
ID=70767048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108102431A TWI689194B (zh) | 2019-01-22 | 2019-01-22 | 基於無分派者秘密共享的門檻式簽章系統及其方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI689194B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9569771B2 (en) * | 2011-04-29 | 2017-02-14 | Stephen Lesavich | Method and system for storage and retrieval of blockchain blocks using galois fields |
CN106664205A (zh) * | 2014-04-17 | 2017-05-10 | 赫尔实验室有限公司 | 用于安全弹性分布式生成具有主动安全性的基于椭圆曲线数字签名算法(ecdsa)的数字签名的方法 |
CN107801059A (zh) * | 2017-09-26 | 2018-03-13 | 武汉斗鱼网络科技有限公司 | 一种鉴权方法及服务器 |
TW201840159A (zh) * | 2017-04-07 | 2018-11-01 | 安地卡及巴布達商區塊鏈控股有限公司 | 用於使用區塊鏈之安全資料記錄分配之方法及系統 |
WO2018203186A1 (en) * | 2017-05-05 | 2018-11-08 | nChain Holdings Limited | Secure dynamic threshold signature scheme employing trusted hardware |
-
2019
- 2019-01-22 TW TW108102431A patent/TWI689194B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9569771B2 (en) * | 2011-04-29 | 2017-02-14 | Stephen Lesavich | Method and system for storage and retrieval of blockchain blocks using galois fields |
CN106664205A (zh) * | 2014-04-17 | 2017-05-10 | 赫尔实验室有限公司 | 用于安全弹性分布式生成具有主动安全性的基于椭圆曲线数字签名算法(ecdsa)的数字签名的方法 |
TW201840159A (zh) * | 2017-04-07 | 2018-11-01 | 安地卡及巴布達商區塊鏈控股有限公司 | 用於使用區塊鏈之安全資料記錄分配之方法及系統 |
WO2018203186A1 (en) * | 2017-05-05 | 2018-11-08 | nChain Holdings Limited | Secure dynamic threshold signature scheme employing trusted hardware |
CN107801059A (zh) * | 2017-09-26 | 2018-03-13 | 武汉斗鱼网络科技有限公司 | 一种鉴权方法及服务器 |
Also Published As
Publication number | Publication date |
---|---|
TW202029687A (zh) | 2020-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11190496B2 (en) | Fast oblivious transfers | |
US20210377010A1 (en) | Key management method and related device | |
Schneider et al. | GMW vs. Yao? Efficient secure two-party computation with low depth circuits | |
CN112906044B (zh) | 多方安全计算方法、装置、设备及存储介质 | |
WO2021114819A1 (zh) | 生成和执行智能合约交易的方法及装置 | |
CN114586313B (zh) | 用于签署一信息的系统及方法 | |
CN109299149B (zh) | 数据查询方法、计算设备以及系统 | |
JP2021507563A (ja) | ブロックチェーンベースのスマートコントラクトの複数当事者生成のためのシステム及び方法 | |
CN112953700B (zh) | 一种提升安全多方计算效率的方法、系统及存储介质 | |
US8923519B2 (en) | Method of efficient secure function evaluation using resettable tamper-resistant hardware tokens | |
CN116032667A (zh) | 支持高效更新的在线匿踪查询方法、系统及相关设备 | |
CN112202555B (zh) | 基于信息的属性生成随机数的信息处理方法、装置及设备 | |
TWI689194B (zh) | 基於無分派者秘密共享的門檻式簽章系統及其方法 | |
TWI782701B (zh) | 區塊鏈錢包的非互動式批核系統及其方法 | |
TWI737956B (zh) | 基於秘密共享的門檻式簽章系統及其方法 | |
TWI694349B (zh) | 防止記憶體傾印的門檻式簽章系統及其方法 | |
TW202239173A (zh) | 基於輸入密碼的門檻式簽章系統及其方法 | |
TW202236130A (zh) | 基於門檻式簽章的資產跨鏈交換系統及其方法 | |
TWI734087B (zh) | 基於同態加密的簽章系統及其方法 | |
TWI776416B (zh) | 分層確定性錢包的門檻式簽章系統及其方法 | |
TWI782486B (zh) | 門檻式簽章方案的門檻值與參與數量的調整系統及其調整方法 | |
TWI702820B (zh) | 具分級機制的秘密共享簽章系統及其方法 | |
TWI764811B (zh) | 分層確定性錢包的金鑰生成系統及其方法 | |
TWI783804B (zh) | 基於線性整數秘密共享的共享單元生成系統及其方法 | |
CN113381850B (zh) | 一种sm9用户密钥生成方法、装置、设备及存储介质 |