TWI764811B - 分層確定性錢包的金鑰生成系統及其方法 - Google Patents
分層確定性錢包的金鑰生成系統及其方法Info
- Publication number
- TWI764811B TWI764811B TW110130213A TW110130213A TWI764811B TW I764811 B TWI764811 B TW I764811B TW 110130213 A TW110130213 A TW 110130213A TW 110130213 A TW110130213 A TW 110130213A TW I764811 B TWI764811 B TW I764811B
- Authority
- TW
- Taiwan
- Prior art keywords
- host
- random number
- node
- base point
- product
- Prior art date
Links
Images
Landscapes
- Storage Device Security (AREA)
- Input From Keyboards Or The Like (AREA)
Abstract
一種分層確定性錢包的金鑰生成系統及其方法,透過將金鑰推導函式轉換為布林電路,再將布林電路加密生成密碼學的亂碼電路,以及使用密碼學的不經意傳輸,使二個節點主機能夠在不還原私鑰的前提下,分別將自身的私鑰共享單元或種子輸入亂碼電路以計算出相應的計算結果,以及根據計算結果產生與私鑰或主私鑰相應且符合比特幣改進提案「BIP32」規範的衍生金鑰或主私鑰共享單元,達到提高私鑰的安全性之技術功效。
Description
本發明涉及一種金鑰生成系統及其方法,特別是分層確定性錢包的金鑰生成系統及其方法。
近年來,隨著區塊鏈的普及與蓬勃發展,各種應用在區塊鏈的技術便如雨後春筍般湧現,其中又以「BIP32」/「BIP44」最受矚目。
一般而言,「BIP32」是制定推導衍生性私鑰的方法,其透過父私鑰及其鏈碼(Chain Code)來生成其它衍生的子私鑰(Child Private Key),目的是為了降低同時管理眾多私鑰的不便性,也就是說,可以使用一把主私鑰便能夠管理所有由它衍生出的其它的子私鑰,進而大幅減輕管理大量私鑰的負擔,因為只需要管理一把主私鑰。目前「BIP32」定義兩種衍生性金鑰(如:子私鑰)的生成方式,第一種是從公鑰推出;第二種是從私鑰推出。然而,使用第二種方式時,需要先將私鑰組出,導致私鑰的安全性大幅降低,這與不希望在任何環節組出私鑰的目的相違背,故在產生衍生性私鑰時,具有安全性不足的問題。至於「BIP44」同樣使用「BIP32」的方式展開衍生性私鑰,例如:「BIP44」是連續使用「BIP32」所規定的方法五次持續推導衍生,即:使用三次第二種方式及二次第一種方式。因此,「BIP44」也同樣繼承了「BIP32」的缺點,即具有上述安全性不足的問題,倘若解決了「BIP32」的問題,以相同方式也可一併解決「BIP44」的問題。
綜上所述,可知先前技術中長期以來一直存在產生衍生性私鑰時,具有安全性不足的問題,因此實有必要提出改進的技術手段,來解決此一問題。
本發明揭露一種分層確定性錢包的金鑰生成系統及其方法。
首先,本發明揭露一種分層確定性錢包的金鑰生成系統,其包含:二個節點主機,輪流作為亂數端主機及評估端主機,每一節點主機皆包含:儲存模組、處理模組、計算模組及驗證模組。其中,儲存模組儲存私鑰共享單元,此私鑰共享單元為指定位元長度的正整數;處理模組用以在節點主機為亂數端主機時,將金鑰推導函式(HMAC-SHA512)轉換為布林電路(Boolean Circuit),再將此布林電路進行加密以轉換為亂數電路(Garbled Circuit)並傳送至評估端主機;計算模組連接處理模組,用以與另一節點主機共同執行不經意傳輸(Oblivious Transfer, OT),使評估端主機及亂數端主機在相互不知對方輸入亂數電路的私鑰共享單元的情況下,由評估端主機執行亂數電路計算金鑰推導函式以輸出相應的計算結果,並且將亂數端主機及評估端主機的角色互換,使二個節點主機各自計算出相應的計算結果;以及驗證模組連接計算模組,用以執行驗證協定(Validation Protocol)以驗證二個節點主機各自計算出的計算結果是否一致,並且在一致時,在不將私鑰共享單元組成私鑰的條件下,根據計算結果計算出衍生金鑰。
接著,本發明揭露一種分層確定性錢包的金鑰生成系統,其包含:二個節點主機,輪流作為亂數端主機及評估端主機,每一節點主機皆包含:生成模組、處理模組、計算模組、廣播模組、執行模組、驗證模組及金鑰模組。其中,生成模組用以在節點主機為第一個節點主機時,隨機生成第一種子(Seed)及指定長度的第一隨機亂數,以及在節點主機為第二個節點主機時,隨機生成第二種子及指定長度的第二隨機亂數,其中,第一種子及第二種子皆為指定位元長度的字串;處理模組用以在節點主機為亂數端主機時,將金鑰推導函式轉換為布林電路,再將此布林電路進行加密以轉換為亂數電路並傳送至作為該評估端主機;計算模組連接處理模組,用以與另一節點主機共同執行不經意傳輸,由評估端主機執行亂數電路計算金鑰推導函式以輸出相應的計算結果,並且將亂數端主機及評估端主機的角色互換,使二個節點主機各自計算出相應的計算結果;廣播模組連接計算模組,當節點主機為第一個節點主機時,廣播本身的計算結果與橢圓曲線的基點的乘積的雜湊值,以及廣播第一隨機亂數與基點的乘積的雜湊值,當節點主機為第二個節點主機時,廣播本身的計算結果與基點的乘積的雜湊值,以及廣播第二隨機亂數與基點的乘積的雜湊值;執行模組連接廣播模組,用以在節點主機為第一個節點主機時,將本身的計算結果與基點的乘積和第一隨機亂數與基點的乘積進行加法運算,以及在節點主機為第二個節點主機時,將本身的計算結果與基點的乘積和第二隨機亂數與基點的乘積進行加法運算,並且第一個節點主機隨機選擇第三隨機亂數,再廣播第三隨機亂數與基點的乘積,以及第二個節點主機隨機選擇第四隨機亂數,再廣播第四隨機亂數與基點的乘積;驗證模組連接執行模組,用以執行驗證協定驗證第一個節點主機的計算結果與基點的乘積減第二隨機亂數與基點的乘積是否等於第二個節點主機的計算結果與基點的乘積減第一隨機亂數與基點的乘積,若相等,第一個節點主機選擇第一多項式,第二個節點主機選擇第二多項式,並且第一個節點主機將第二個節點主機的x座標帶入第一多項式計算出的A值傳送至第二個節點主機,以及第二個節點主機將第一個節點主機的x座標帶入第二多項式計算出的B值傳送至第一個節點主機;以及金鑰模組連接驗證模組,用以在節點主機為第一個節點主機時,將本身的x座標帶入第一多項式計算出的值與接收到的B值相加以作為相應主私鑰的主私鑰共享單元,以及在節點主機為第二個節點主機時,將本身的x座標帶入第二多項式計算出的值與接收到的A值相加以作為與主私鑰相應的另一主私鑰共享單元。
另外,本發明還揭露一種分層確定性錢包的金鑰生成方法,其步驟包括:(a)提供二個節點主機,每一節點主機皆具有私鑰共享單元,其中,每一私鑰共享單元皆為指定位元長度的正整數;(b)將二個節點主機分別作為亂數端主機及評估端主機;(c)亂數端主機將金鑰推導函式轉換為布林電路,再將此布林電路進行加密以轉換為亂數電路;(d)亂數端主機將亂數電路傳送至評估端主機;(e)亂數端主機與評估端主機共同執行不經意傳輸,使評估端主機及亂數端主機在相互不知對方輸入亂數電路的私鑰共享單元的情況下,由評估端主機執行亂數電路計算金鑰推導函式以輸出相應的計算結果;(f)將亂數端主機及評估端主機的角色互換後,重複執行步驟(c)至步驟(e);以及(g)二個節點主機執行驗證協定以驗證執行步驟(c)至步驟(e)所得到的計算結果是否一致,並且在一致時,在不將私鑰共享單元組成私鑰的條件下,根據計算結果計算出衍生金鑰。
最後,本發明還揭露一種分層確定性錢包的金鑰生成方法,其步驟包括:(a)提供二個節點主機,第一個節點主機隨機生成第一種子及指定長度的第一隨機亂數,第二個節點主機隨機生成第二種子及指定長度的第二隨機亂數,其中,第一種子及第二種子皆為指定位元長度的字串;(b)將二個節點主機分別作為亂數端主機及評估端主機;(c)亂數端主機將金鑰推導函式轉換為布林電路,再將此布林電路進行加密以轉換為亂數電路;(d)亂數端主機將亂數電路傳送至評估端主機;(e)亂數端主機與評估端主機共同執行不經意傳輸,由評估端主機執行亂數電路計算金鑰推導函式以輸出相應的計算結果;(f)將亂數端主機及評估端主機的角色互換後,重複執行步驟(c)至步驟(e);(g)第一個節點主機廣播本身的計算結果與橢圓曲線的基點的乘積的雜湊值,以及廣播第一隨機亂數與基點的乘積的雜湊值,第二個節點主機廣播本身的計算結果與基點的乘積的雜湊值,以及廣播第二隨機亂數與基點的乘積的雜湊值;(h)第一個節點主機將本身的計算結果與基點的乘積和第一隨機亂數與基點的乘積進行加法運算,第二個節點主機將本身的計算結果與基點的乘積和第二隨機亂數與基點的乘積進行加法運算,並且第一個節點主機隨機選擇第三隨機亂數,再廣播第三隨機亂數與基點的乘積,以及第二個節點主機隨機選擇第四隨機亂數,再廣播第四隨機亂數與基點的乘積;(i)二個節點主機執行驗證協定驗證第一個節點主機的計算結果與基點的乘積減第二隨機亂數與基點的乘積是否等於第二個節點主機的計算結果與基點的乘積減第一隨機亂數與基點的乘積,若相等,第一個節點主機選擇第一多項式,第二個節點主機選擇第二多項式,並且第一個節點主機將第二個節點主機的x座標帶入第一多項式計算出的A值傳送至第二個節點主機,以及第二個節點主機將第一個節點主機的x座標帶入第二多項式計算出的B值傳送至第一個節點主機;以及(j)第一個節點主機將本身的x座標帶入第一多項式計算出的值與接收到的B值相加以作為相應主私鑰的主私鑰共享單元,第二個節點主機將本身的x座標帶入第二多項式計算出的值與接收到的A值相加以作為相應主私鑰的另一主私鑰共享單元。
本發明所揭露之系統與方法如上,與先前技術的差異在於本發明是透過將金鑰推導函式轉換為布林電路,再將布林電路加密生成密碼學的亂碼電路,以及使用密碼學的不經意傳輸,使二個節點主機能夠在不還原私鑰的前提下,分別將自身的私鑰共享單元或種子輸入亂碼電路以計算出相應的計算結果,以及根據計算結果產生與私鑰或主私鑰相應且符合「BIP32」規範的衍生金鑰或主私鑰共享單元。
透過上述的技術手段,本發明可以達成提高私鑰的安全性之技術功效。
以下將配合圖式及實施例來詳細說明本發明之實施方式,藉此對本發明如何應用技術手段來解決技術問題並達成技術功效的實現過程能充分理解並據以實施。
首先,在說明本發明所揭露之分層確定性錢包的金鑰生成系統及其方法之前,先對本發明自行定義的名詞作說明,本發明所述的共享單元(Share),如:私鑰共享單元、主私鑰共享單元等等,是指在進行安全多方計算時,在不同的節點主機之間進行相互交換資料及計算結果所生成的元素,其可視為私鑰的一部分,所述元素能夠在不需重組私鑰的情況下,直接以數學運算計算出符合橢圓曲線數位簽名演算法(Elliptic Curve Digital Signature Algorithm, ECDSA)的簽章格式之簽章(或稱為「簽名」)。
以下配合圖式對本發明分層確定性錢包的金鑰生成系統及其方法做進一步說明,請先參閱「第1圖」,「第1圖」為本發明分層確定性錢包的金鑰生成系統的第一實施方式之系統方塊圖,此系統包含:二個節點主機(110a、110b),輪流作為亂數端主機及評估端主機,每一節點主機皆包含:儲存模組111、處理模組112、計算模組113及驗證模組114。其中,儲存模組111儲存私鑰共享單元,此私鑰共享單元為指定位元長度的正整數,例如:指定位元長度為256位元、512位元等等。在實際實施上,節點主機(110a、110b)可以由桌上型電腦、筆記型電腦、平板電腦、刀鋒伺服器、伺服器或其相似物來實現。在實際實施上,所述私鑰共享單元的指定位元長度的正整數取決於橢圓曲線數位簽名演算法所使用的橢圓曲線群的大小。
處理模組112用以在節點主機為亂數端主機時,將金鑰推導函式(HMAC-SHA512)轉換為布林電路,再將此布林電路進行加密以轉換為亂數電路並傳送至評估端主機。在實際實施上,所述亂數電路(或稱為亂碼電路、混淆電路等等)是指雙方安全計算的加密協定,其可透過「及閘(AND Gate)」、「互斥或閘(Exclusive-OR, XOR)」或「反及閘(NAND gate)」來實現,例如:目前已有進階加密標準(Advanced Encryption Standard, AES`)加解密函式被製作成亂數電路,運算雙方可以在各自持有的金鑰及明文不被揭露的情形下得到AES密文,而在本案中,藉由亂數電路的技術,可以在雙方擁有私鑰共享單元且不組成私鑰的條件下,推導出與私鑰相應且符合「BIP32」所規定的衍生金鑰。
計算模組113連接處理模組112,用以與另一節點主機共同執行不經意傳輸,使評估端主機及亂數端主機在相互不知對方輸入亂數電路的私鑰共享單元的情況下,由評估端主機執行亂數電路計算金鑰推導函式以輸出相應的計算結果,並且將亂數端主機及評估端主機的角色互換後,重新執行相應步驟,使二個節點主機(110a、110b)各自計算出相應的計算結果。特別要說明的是,所述不經意傳輸為密碼學中的一個協議,常用於實現安全多方計算(Secure Multi-party Computation, MPC)。具體而言,在執行亂數電路後,第二個節點主機110b會得到「f(S
A,S
B)」的值,其中,「S
A」為第一個節點主機110a持有的私鑰共享單元;「S
B」為第二個節點主機110b持有的私鑰共享單元,第一個節點主機110a不會知道第二個節點主機110b輸入的「S
B」,而且第二個節點主機110b也不會知道第一個節點主機110a輸入的「S
A」。
驗證模組114連接計算模組113,用以執行驗證協定以驗證二個節點主機(110a、110b)各自計算出的計算結果是否一致,並且在一致時,在不將私鑰共享單元組成私鑰的條件下,根據計算結果計算出衍生金鑰。
接著,請參閱「第2圖」,「第2圖」為本發明分層確定性錢包的金鑰生成系統的第二實施方式之系統方塊圖,此系統包含:二個節點主機(210a、210b),輪流作為亂數端主機及評估端主機,每一節點主機皆包含:生成模組211、處理模組212、計算模組213、廣播模組214、執行模組215、驗證模組216及金鑰模組217。其中,生成模組211用以在節點主機為第一個節點主機210a時,隨機生成第一種子(例如:「Seed
A」)及指定長度的第一隨機亂數(例如:「a」),以及在節點主機為第二個節點主機210b時,隨機生成第二種子(例如:「Seed
B」)及指定長度的第二隨機亂數(例如:「b」),其中,第一種子及第二種子皆為指定位元長度的字串,而且這兩個種子都是「BIP44」規範中的種子的一部分。
處理模組212用以在節點主機為亂數端主機時,將金鑰推導函式轉換為布林電路,再將此布林電路進行加密以轉換為亂數電路並傳送至作為該評估端主機。在實際實施上,所述節點主機(210a、210b)在傳送亂數電路時還會將代表自己輸入的隨機亂數傳送給另一方。另外,相較於第一實施方式的亂數電路,第二實施方式的亂數電路可以在第一個節點主機210a和第二個節點主機210b雙方各自獨立生成種子的一部分,並且在不透露各自擁有的種子的一部分且不還原主私鑰的條件下,一起計算出「BIP32」所定義的主私鑰所對應的私鑰共享單元。
計算模組213連接處理模組212,用以與另一節點主機共同執行不經意傳輸,由評估端主機執行亂數電路計算金鑰推導函式以輸出相應的計算結果,並且將亂數端主機及評估端主機的角色互換,使二個節點主機(210a、210b)各自計算出相應的計算結果。在實際實施上,在執行亂數電路計算時,節點主機(210a、210b)會將自身的種子輸入亂數電路。舉例來說,第一個節點主機210a執行亂數電路後會得到「s+b」;第二個節點主機210b執行亂數電路後會得到「s+a」。其中,「s」為「HMAC-SHA512(seed
A|| seed
B)」,「||」代表串聯、「a」代表第一個節點主機210a所選的亂數、「b」代表第二個節點主機210b所選的亂數。
廣播模組214連接計算模組213及生成模組211,當節點主機為第一個節點主機210a時,廣播本身的計算結果與橢圓曲線的基點(即:「G」)的乘積的雜湊值(即:「commitment Hash((s+b)*G)」),以及廣播第一隨機亂數與基點的乘積的雜湊值(即:「Hash (a*G)」),當節點主機為第二個節點主機210b時,廣播本身的計算結果與基點的乘積的雜湊值(即:「commitment Hash((s+a)*G)」),以及廣播第二隨機亂數與基點的乘積的雜湊值(即:「Hash (b*G)」)。其中,「commitment Hash()」及「Hash()」為雜湊函式。
執行模組215連接廣播模組214及生成模組211,用以在節點主機為第一個節點主機210a時,將本身的計算結果與基點的乘積(即:「(s+b)*G」)和第一隨機亂數與基點的乘積(即:「a*G」)進行加法運算,以及在節點主機為第二個節點主機210b時,將本身的計算結果與基點的乘積(即:「(s+a)*G」)和第二隨機亂數與基點的乘積(即:「b*G」)進行加法運算,並且第一個節點主機210a隨機選擇第三隨機亂數(即:「a
1」),再廣播第三隨機亂數與基點的乘積(即:「a
1*G」),以及第二個節點主機210b隨機選擇第四隨機亂數(即:「b
1」),再廣播第四隨機亂數與基點的乘積(即:「b
1*G」)。
驗證模組216連接執行模組215及生成模組211,用以執行驗證協定驗證第一個節點主機210a的計算結果與基點的乘積減第二隨機亂數與基點的乘積是否等於第二個節點主機210b的計算結果與基點的乘積減第一隨機亂數與基點的乘積(即:「(s+b)*G-b*G」是否等於「(s+a)*G-a*G」),若相等,第一個節點主機210a選擇第一多項式(例如:「f
A(x) = a
1x+(s+b)-a」),第二個節點主機210b選擇第二多項式(例如:「f
B(x) = b
1x+(s+a)-b」),並且第一個節點主機210a將第二個節點主機210b的x座標(即:X
B)帶入第一多項式計算出的A值(即:「f
A(X
B)」)傳送至第二個節點主機210b,以及第二個節點主機210b將第一個節點主機210a的x座標(即:X
A)帶入第二多項式計算出的B值(即:「f
B(X
A)」)傳送至第一個節點主機210a。以上述為例,第一多項式為「a
1x+(s+b)-a」,第二多項式為「b
1x+(s+a)-b」,其中,「a
1」為第三隨機亂數、「(s+b)」為第一個節點主機的計算結果、「a」為第一隨機亂數、「b
1」為第四隨機亂數、「(s+a)」為第二個節點主機的計算結果以及「b」為第二隨機亂數。特別要說明的是,當用在具有層級值(Rank)的情況時,也就是共享單元有等級之分時,多項式會經過微分處理,例如:等級為0時,多項式不微分;等級為1時,多項式微分一次;等級為2時,多項式微分二次。另外,所述x座標是指橢圓曲線數位簽名演算法的曲線點的x座標,不同的節點主機有不同的x座標,並且能夠透過安全多方計算交換彼此的x座標。
金鑰模組217連接驗證模組216,用以在節點主機為第一個節點主機210a時,將本身的x座標(即:「X
A」)帶入第一多項式計算出的值與接收到的B值相加(即:「f
A(X
A) + f
B(X
A)」)以作為相應主私鑰的主私鑰共享單元,以及在節點主機為第二個節點主機210b時,將本身的x座標(即:「X
B」)帶入第二多項式計算出的值與接收到的A值相加(即:「f
B(X
B) + f
A(X
B)」)以作為與主私鑰相應的另一主私鑰共享單元。換句話說,由於第一個節點主機210a會選擇第一多項式「f
A(x)」,而第二個節點主機210b會選擇第二多項式「f
B(x)」,因此,在節點主機為第一個節點主機210a時,便將自己(即:第一個節點主機210a)的x座標(即:「X
A」)和對方(即:第二個節點主機210b)的x座標(即:「X
B」)分別帶入第一多項式「f
A(x)」以計算出相應的「f
A(X
A)」和「f
A(X
B)」,而在節點主機為第二個節點主機210b時,便將自己(即:第二個節點主機210b)的x座標(即:「X
B」)和對方(即:第一個節點主機210a)的x座標(即:「X
A」)分別帶入第二多項式「f
B(x)」以計算出相應的「f
B(X
A)」和「f
B(X
B)」。接下來,第一個節點主機210a會將A值(即:「f
A(X
B)」)傳送至第二個節點主機210b,而第二個節點主機210b會將B值(即:「f
B(X
A)」)傳送至第一個節點主機210a。此時,第一個節點主機210a擁有「f
A(X
A)」和「f
B(X
A)」,而第二個節點主機210b則擁有「f
B(X
B)」和「f
A(X
B)」。因此,當節點主機為第一個節點主機210a時,金鑰模組217會計算出「f
A(X
A) + f
B(X
A)」以作為相應主私鑰的主私鑰共享單元,當節點主機為第二個節點主機210b時,金鑰模組217會計算出「f
B(X
B) + f
A(X
B)」以作為與主私鑰相應的另一主私鑰共享單元。
特別要說明的是,在實際實施上,本發明所述的模組皆可利用各種方式來實現,包含軟體、硬體或其任意組合,例如,在某些實施方式中,各模組可利用軟體及硬體或其中之一來實現,除此之外,本發明亦可部分地或完全地基於硬體來實現,例如,系統中的一個或多個模組可以透過積體電路晶片、系統單晶片(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語言或類似的程式語言。所述電腦程式指令可以完全地在電腦上執行、部分地在電腦上執行、作爲一個獨立的軟體執行、部分在客戶端電腦上部分在遠端電腦上執行、或者完全在遠端電腦或伺服器上執行。
請參閱「第3A圖」及「第3B圖」,「第2A圖」及「第2B圖」為本發明分層確定性錢包的金鑰生成方法的第一實施方式之方法流程圖,其步驟包括:提供二個節點主機,每一節點主機皆具有私鑰共享單元,其中,每一私鑰共享單元皆為指定位元長度的正整數(步驟301);將二個節點主機分別作為亂數端主機及評估端主機(步驟302);亂數端主機將金鑰推導函式轉換為布林電路,再將此布林電路進行加密以轉換為亂數電路(步驟303);亂數端主機將亂數電路傳送至評估端主機(步驟304);亂數端主機與評估端主機共同執行不經意傳輸,使評估端主機及亂數端主機在相互不知對方輸入亂數電路的私鑰共享單元的情況下,由評估端主機執行亂數電路計算金鑰推導函式以輸出相應的計算結果(步驟305);將亂數端主機及評估端主機的角色互換後,重複執行步驟303至步驟305(步驟306);二個節點主機執行驗證協定以驗證執行步驟303至步驟305所得到的計算結果是否一致,並且在一致時,在不將私鑰共享單元組成私鑰的條件下,根據計算結果計算出衍生金鑰(步驟307)。透過上述步驟,即可透過將金鑰推導函式轉換為布林電路,再將布林電路加密生成密碼學的亂碼電路,以及使用密碼學的不經意傳輸,使二個節點主機能夠在不還原私鑰的前提下,分別將自身的私鑰共享單元輸入亂碼電路以計算出相應的計算結果,以及根據計算結果產生與私鑰相應且符合「BIP32」規範的衍生金鑰。
另外,請參閱「第4A圖」至「第4C圖」,「第4A圖」至「第4C圖」為本發明分層確定性錢包的金鑰生成方法的第二實施方式之方法流程圖,其步驟包括:提供二個節點主機,第一個所述節點主機隨機生成一第一種子(Seed)及指定長度的一第一隨機亂數,第二個所述節點主機隨機生成一第二種子及指定長度的一第二隨機亂數,其中,該第一種子及該第二種子皆為指定位元長度的字串(步驟401);將二個節點主機分別作為亂數端主機及評估端主機(步驟402);亂數端主機將金鑰推導函式轉換為布林電路,再將此布林電路進行加密以轉換為亂數電路(步驟403);亂數端主機將亂數電路傳送至評估端主機(步驟404);亂數端主機與評估端主機共同執行不經意傳輸,由評估端主機執行亂數電路計算金鑰推導函式以輸出相應的計算結果(步驟405);將亂數端主機及評估端主機的角色互換後,重複執行步驟403至步驟405(步驟406);第一個節點主機廣播本身的計算結果與橢圓曲線的基點的乘積的雜湊值,以及廣播第一隨機亂數與基點的乘積的雜湊值,第二個節點主機廣播本身的計算結果與基點的乘積的雜湊值,以及廣播第二隨機亂數與基點的乘積的雜湊值(步驟307);第一個節點主機將本身的計算結果與基點的乘積和第一隨機亂數與基點的乘積進行加法運算,第二個節點主機將本身的計算結果與基點的乘積和第二隨機亂數與基點的乘積進行加法運算,並且第一個節點主機隨機選擇第三隨機亂數,再廣播此第三隨機亂數與基點的乘積,以及第二個節點主機隨機選擇第四隨機亂數,再廣播此第四隨機亂數與基點的乘積(步驟408);二個節點主機執行驗證協定驗證第一個節點主機的計算結果與基點的乘積減第二隨機亂數與基點的乘積是否等於第二個節點主機的計算結果與基點的乘積減第一隨機亂數與基點的乘積,若相等,第一個節點主機選擇第一多項式,第二個節點主機選擇第二多項式,並且第一個節點主機將第二個節點主機的x座標帶入第一多項式計算出的A值傳送至第二個節點主機,以及將第二個節點主機第一個節點主機的x座標帶入第二多項式計算出的B值傳送至第一個節點主機(步驟409);第一個節點主機將本身的x座標帶入第一多項式計算出的值與接收到的B值相加以作為相應主私鑰的主私鑰共享單元,第二個節點主機將本身的x座標帶入第二多項式計算出的值與接收到的A值相加以作為相應主私鑰的另一主私鑰共享單元(步驟410)。透過上述步驟,即可透過將金鑰推導函式轉換為布林電路,再將布林電路加密生成密碼學的亂碼電路,以及使用密碼學的不經意傳輸,使二個節點主機能夠在不還原私鑰的前提下,分別將自身的種子輸入亂碼電路以計算出相應的計算結果,以及根據計算結果產生與主私鑰相應且符合「BIP32」規範的主私鑰共享單元。
如此一來,即可在BIP32的規範下,使用HMAC-SHA512計算衍生性金鑰時,解決以往無法解決的問題,也就是當兩方(即:二個節點主機)各有一個私鑰共享單元時,如何在不還原私鑰的情況下,讓兩方共同執行計算出HMAC-SHA512的計算結果。由於整體過程均不需要還原私鑰,故能夠有效提高私鑰的安全性。
綜上所述,可知本發明與先前技術之間的差異在於透過將金鑰推導函式轉換為布林電路,再將布林電路加密生成密碼學的亂碼電路,以及使用密碼學的不經意傳輸,使二個節點主機能夠在不還原私鑰的前提下,分別將自身的私鑰共享單元或種子輸入亂碼電路以計算出相應的計算結果,以及根據計算結果產生與私鑰或主私鑰相應且符合「BIP32」規範的衍生金鑰或主私鑰共享單元,藉由此一技術手段可以解決先前技術所存在的問題,進而達成提高私鑰的安全性之技術功效。
雖然本發明以前述之實施例揭露如上,然其並非用以限定本發明,任何熟習相像技藝者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之專利保護範圍須視本說明書所附之申請專利範圍所界定者為準。
110a,110b:節點主機
111:儲存模組
112:處理模組
113:計算模組
114:驗證模組
210a,210b:節點主機
211:生成模組
212:處理模組
213:計算模組
214:廣播模組
215:執行模組
216:驗證模組
217:金鑰模組
步驟301:提供二個節點主機,每一所述節點主機皆具有一私鑰共享單元,其中,每一所述私鑰共享單元皆為指定位元長度的正整數
步驟302:將所述二個節點主機分別作為一亂數端主機及一評估端主機
步驟303:該亂數端主機將一金鑰推導函式(HMAC-SHA512)轉換為一布林電路(Boolean Circuit),再將該布林電路進行加密以轉換為一亂數電路(Garbled Circuit)
步驟304:該亂數端主機將該亂數電路傳送至該評估端主機
步驟305:該亂數端主機與該評估端主機共同執行一不經意傳輸(Oblivious Transfer, OT),使該評估端主機及該亂數端主機在相互不知對方輸入該亂數電路的所述私鑰共享單元的情況下,由該評估端主機執行亂數電路計算該金鑰推導函式以輸出相應的一計算結果
步驟306:將該亂數端主機及該評估端主機的角色互換後,重複執行步驟303至步驟305
步驟307:所述二個節點主機執行一驗證協定(Validation Protocol)以驗證執行步驟303至步驟305所得到的所述計算結果是否一致,並且在一致時,在不將所述私鑰共享單元組成一私鑰的條件下,根據所述計算結果計算出一衍生金鑰
步驟401:提供二個節點主機,第一個所述節點主機隨機生成一第一種子(Seed)及指定長度的一第一隨機亂數,第二個所述節點主機隨機生成一第二種子及指定長度的一第二隨機亂數,其中,該第一種子及該第二種子皆為指定位元長度的字串
步驟402:將所述二個節點主機分別作為一亂數端主機及一評估端主機
步驟403:該亂數端主機將一金鑰推導函式(HMAC-SHA512)轉換為一布林電路(Boolean Circuit),再將該布林電路進行加密以轉換為一亂數電路(Garbled Circuit)
步驟404:該亂數端主機將該亂數電路傳送至該評估端主機
步驟405:該亂數端主機與該評估端主機共同執行一不經意傳輸(Oblivious Transfer, OT),由該評估端主機執行該亂數電路計算該金鑰推導函式以輸出相應的一計算結果
步驟406:將該亂數端主機及該評估端主機的角色互換後,重複執行步驟403至步驟405
步驟407:第一個所述節點主機廣播本身的該計算結果與橢圓曲線的一基點的乘積的雜湊值,以及廣播該第一隨機亂數與該基點的乘積的雜湊值,第二個所述節點主機廣播本身的該計算結果與該基點的乘積的雜湊值,以及廣播該第二隨機亂數與該基點的乘積的雜湊值
步驟408:第一個所述節點主機將本身的該計算結果與該基點的乘積和該第一隨機亂數與該基點的乘積進行加法運算,第二個所述節點主機將本身的該計算結果與該基點的乘積和該第二隨機亂數與該基點的乘積進行加法運算,並且第一個所述節點主機隨機選擇一第三隨機亂數,再廣播所述第三隨機亂數與該基點的乘積,以及第二個所述節點主機隨機選擇一第四隨機亂數,再廣播該第四隨機亂數與該基點的乘積
步驟409:所述二個節點主機執行一驗證協定(Validation Protocol)驗證第一個所述節點主機的該計算結果與該基點的乘積減該第二隨機亂數與該基點的乘積是否等於第二個所述節點主機的該計算結果與該基點的乘積減該第一隨機亂數與該基點的乘積,若相等,第一個所述節點主機選擇一第一多項式,第二個所述節點主機選擇一第二多項式,並且第一個所述節點主機將第二個所述節點主機的一x座標帶入該第一多項式計算出的一A值傳送至第二個所述節點主機,以及第二個所述節點主機將第一個所述節點主機的該x座標帶入該第二多項式計算出的一B值傳送至第一個所述節點主機
步驟410:第一個所述節點主機將本身的該x座標帶入該第一多項式計算出的值與接收到的該B值相加以作為相應一主私鑰的一主私鑰共享單元,第二個所述節點主機將本身的該x座標帶入該第二多項式計算出的值與接收到的該A值相加以作為相應該主私鑰的另一該主私鑰共享單元
第1圖為本發明分層確定性錢包的金鑰生成系統的第一實施方式之系統方塊圖。
第2圖為本發明分層確定性錢包的金鑰生成系統的第二實施方式之系統方塊圖。
第3A圖及第3B圖為本發明分層確定性錢包的金鑰生成方法的第一實施方式之方法流程圖。
第4A圖至第4C圖為本發明分層確定性錢包的金鑰生成方法的第二實施方式之方法流程圖。
110a,110b:節點主機
111:儲存模組
112:處理模組
113:計算模組
114:驗證模組
Claims (10)
- 一種分層確定性錢包的金鑰生成系統,該系統包含: 二個節點主機,輪流作為一亂數端主機及一評估端主機,每一所述節點主機皆包含: 一儲存模組,儲存一私鑰共享單元,該私鑰共享單元為指定位元長度的正整數; 一處理模組,用以在所述節點主機為該亂數端主機時,將一金鑰推導函式(HMAC-SHA512)轉換為一布林電路(Boolean Circuit),再將該布林電路進行加密以轉換為一亂數電路(Garbled Circuit)並傳送至該評估端主機; 一計算模組,連接該處理模組,用以與另一所述節點主機共同執行一不經意傳輸(Oblivious Transfer, OT),使該評估端主機及該亂數端主機在相互不知對方輸入該亂數電路的所述私鑰共享單元的情況下,由該評估端主機執行該亂數電路計算該金鑰推導函式以輸出相應的一計算結果,並且將該亂數端主機及該評估端主機的角色互換,使二個所述節點主機各自計算出相應的所述計算結果;以及 一驗證模組,連接該計算模組,用以執行一驗證協定(Validation Protocol)以驗證二個所述節點主機各自計算出的所述計算結果是否一致,並且在一致時,在不將所述私鑰共享單元組成一私鑰的條件下,根據所述計算結果計算出一衍生金鑰。
- 如請求項1之分層確定性錢包的金鑰生成系統,其中所述私鑰共享單元的正整數取決於橢圓曲線數位簽名演算法(Elliptic Curve Digital Signature Algorithm, ECDSA)所使用的橢圓曲線群的大小。
- 一種分層確定性錢包的金鑰生成系統,該系統包含: 二個節點主機,輪流作為一亂數端主機及一評估端主機,每一所述節點主機皆包含: 一生成模組,用以在所述節點主機為第一個所述節點主機時,隨機生成一第一種子(Seed)及指定長度的一第一隨機亂數,以及在所述節點主機為第二個所述節點主機時,隨機生成一第二種子及指定長度的一第二隨機亂數,其中,該第一種子及該第二種子皆為指定位元長度的字串; 一處理模組,用以在所述節點主機為該亂數端主機時,將一金鑰推導函式(HMAC-SHA512)轉換為一布林電路(Boolean Circuit),再將該布林電路進行加密以轉換為一亂數電路(Garbled Circuit)並傳送至作為該評估端主機; 一計算模組,連接該處理模組,用以與另一所述節點主機共同執行一不經意傳輸(Oblivious Transfer, OT),由該評估端主機執行該亂數電路計算該金鑰推導函式以輸出相應的一計算結果,並且將該亂數端主機及該評估端主機的角色互換,使二個所述節點主機各自計算出相應的所述計算結果; 一廣播模組,連接該計算模組及該生成模組,當所述節點主機為第一個所述節點主機時,廣播本身的該計算結果與橢圓曲線的一基點的乘積的雜湊值,以及廣播該第一隨機亂數與該基點的乘積的雜湊值,當所述節點主機為第二個所述節點主機時,廣播本身的該計算結果與該基點的乘積的雜湊值,以及廣播該第二隨機亂數與該基點的乘積的雜湊值; 一執行模組,連接該廣播模組及該生成模組,用以在所述節點主機為第一個所述節點主機時,將本身的該計算結果與該基點的乘積和該第一隨機亂數與該基點的乘積進行加法運算,以及在所述節點主機為第二個所述節點主機時,將本身的該計算結果與該基點的乘積和該第二隨機亂數與該基點的乘積進行加法運算,並且第一個所述節點主機隨機選擇一第三隨機亂數,再廣播所述第三隨機亂數與該基點的乘積,以及第二個所述節點主機隨機選擇一第四隨機亂數,再廣播該第四隨機亂數與該基點的乘積; 一驗證模組,連接該執行模組及該生成模組,用以執行一驗證協定(Validation Protocol)驗證第一個所述節點主機的該計算結果與該基點的乘積減該第二隨機亂數與該基點的乘積是否等於第二個所述節點主機的該計算結果與該基點的乘積減該第一隨機亂數與該基點的乘積,若相等,第一個所述節點主機選擇一第一多項式,第二個所述節點主機選擇一第二多項式,並且將第二個所述節點主機的一x座標帶入該第一多項式計算出的一A值傳送至第二個所述節點主機,以及將第一個所述節點主機的該x座標帶入該第二多項式計算出的一B值傳送至第一個所述節點主機;以及 一金鑰模組,連接該驗證模組,用以在所述節點主機為第一個所述節點主機時,將本身的該x座標帶入該第一多項式計算出的值與接收到的該B值相加以作為相應一主私鑰的一主私鑰共享單元,以及在所述節點主機為第二個所述節點主機時,將本身的該x座標帶入該第二多項式計算出的值與接收到的該A值相加以作為與該主私鑰相應的另一該主私鑰共享單元。
- 如請求項3之分層確定性錢包的金鑰生成系統,其中所述x座標為橢圓曲線數位簽名演算法(Elliptic Curve Digital Signature Algorithm, ECDSA)的曲線點的x座標。
- 如請求項3之分層確定性錢包的金鑰生成系統,其中該第一多項式為a 1x+(s+b)-a,該第二多項式為b 1x+(s+a)-b,其中,a 1為該第三隨機亂數、(s+b)為第一個所述節點主機的該計算結果、a為第一隨機亂數、b 1為第四隨機亂數、(s+a)為第二個所述節點主機的該計算結果以及b為第二隨機亂數。
- 一種分層確定性錢包的金鑰生成方法,其步驟包括: (a)提供二個節點主機,每一所述節點主機皆具有一私鑰共享單元,其中,每一所述私鑰共享單元皆為指定位元長度的正整數; (b)將所述二個節點主機分別作為一亂數端主機及一評估端主機; (c)該亂數端主機將一金鑰推導函式(HMAC-SHA512)轉換為一布林電路(Boolean Circuit),再將該布林電路進行加密以轉換為一亂數電路(Garbled Circuit); (d)該亂數端主機將該亂數電路傳送至該評估端主機; (e)該亂數端主機與該評估端主機共同執行一不經意傳輸(Oblivious Transfer, OT),使該評估端主機及該亂數端主機在相互不知對方輸入該亂數電路的所述私鑰共享單元的情況下,由該評估端主機執行該亂數電路計算該金鑰推導函式以輸出相應的一計算結果; (f)將該亂數端主機及該評估端主機的角色互換後,重複執行步驟(c)至步驟(e);以及 (g)所述二個節點主機執行一驗證協定(Validation Protocol)以驗證執行步驟(c)至步驟(e)所得到的所述計算結果是否一致,並且在一致時,在不將所述私鑰共享單元組成一私鑰的條件下,根據所述計算結果計算出一衍生金鑰。
- 如請求項6之分層確定性錢包的金鑰生成方法,其中所述私鑰共享單元的正整數取決於橢圓曲線數位簽名演算法(Elliptic Curve Digital Signature Algorithm, ECDSA)所使用的橢圓曲線群的大小。
- 一種分層確定性錢包的金鑰生成方法,其步驟包括: (a)提供二個節點主機,第一個所述節點主機隨機生成一第一種子(Seed)及指定長度的一第一隨機亂數,第二個所述節點主機隨機生成一第二種子及指定長度的一第二隨機亂數,其中,該第一種子及該第二種子皆為指定位元長度的字串; (b)將所述二個節點主機分別作為一亂數端主機及一評估端主機; (c)該亂數端主機將一金鑰推導函式(HMAC-SHA512)轉換為一布林電路(Boolean Circuit),再將該布林電路進行加密以轉換為一亂數電路(Garbled Circuit); (d)該亂數端主機將該亂數電路傳送至該評估端主機; (e)該亂數端主機與該評估端主機共同執行一不經意傳輸(Oblivious Transfer, OT),由該評估端主機執行該亂數電路計算該金鑰推導函式以輸出相應的一計算結果; (f)將該亂數端主機及該評估端主機的角色互換後,重複執行步驟(c)至步驟(e); (g)第一個所述節點主機廣播本身的該計算結果與橢圓曲線的一基點的乘積的雜湊值,以及廣播該第一隨機亂數與該基點的乘積的雜湊值,第二個所述節點主機廣播本身的該計算結果與該基點的乘積的雜湊值,以及廣播該第二隨機亂數與該基點的乘積的雜湊值; (h)第一個所述節點主機將本身的該計算結果與該基點的乘積和該第一隨機亂數與該基點的乘積進行加法運算,第二個所述節點主機將本身的該計算結果與該基點的乘積和該第二隨機亂數與該基點的乘積進行加法運算,並且第一個所述節點主機隨機選擇一第三隨機亂數,再廣播所述第三隨機亂數與該基點的乘積,以及第二個所述節點主機隨機選擇一第四隨機亂數,再廣播該第四隨機亂數與該基點的乘積; (i)所述二個節點主機執行一驗證協定(Validation Protocol)驗證第一個所述節點主機的該計算結果與該基點的乘積減該第二隨機亂數與該基點的乘積是否等於第二個所述節點主機的該計算結果與該基點的乘積減該第一隨機亂數與該基點的乘積,若相等,第一個所述節點主機選擇一第一多項式,第二個所述節點主機選擇一第二多項式,並且第一個所述節點主機將第二個所述節點主機的一x座標帶入該第一多項式計算出的一A值傳送至第二個所述節點主機,以及第二個所述節點主機將第一個所述節點主機的該x座標帶入該第二多項式計算出的一B值傳送至第一個所述節點主機;以及 (j)第一個所述節點主機將本身的該x座標帶入該第一多項式計算出的值與接收到的該B值相加以作為相應一主私鑰的一主私鑰共享單元,第二個所述節點主機將本身的該x座標帶入該第二多項式計算出的值與接收到的該A值相加以作為相應該主私鑰的另一該主私鑰共享單元。
- 如請求項8之分層確定性錢包的金鑰生成方法,其中所述x座標為橢圓曲線數位簽名演算法(Elliptic Curve Digital Signature Algorithm, ECDSA)的曲線點的x座標。
- 如請求項8之分層確定性錢包的金鑰生成方法,其中該第一多項式為a 1x+(s+b)-a,該第二多項式為b 1x+(s+a)-b,其中,a 1為該第三隨機亂數、(s+b)為第一個所述節點主機的該計算結果、a為第一隨機亂數、b 1為第四隨機亂數、(s+a)為第二個所述節點主機的該計算結果以及b為第二隨機亂數。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110130213A TWI764811B (zh) | 2021-08-17 | 2021-08-17 | 分層確定性錢包的金鑰生成系統及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110130213A TWI764811B (zh) | 2021-08-17 | 2021-08-17 | 分層確定性錢包的金鑰生成系統及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI764811B true TWI764811B (zh) | 2022-05-11 |
TW202310584A TW202310584A (zh) | 2023-03-01 |
Family
ID=82594440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110130213A TWI764811B (zh) | 2021-08-17 | 2021-08-17 | 分層確定性錢包的金鑰生成系統及其方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI764811B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW202040457A (zh) * | 2019-02-15 | 2020-11-01 | 安地卡及巴布達商區塊鏈控股有限公司 | 在區塊鏈網路上實施轉移之電腦實施系統及方法 |
-
2021
- 2021-08-17 TW TW110130213A patent/TWI764811B/zh active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW202040457A (zh) * | 2019-02-15 | 2020-11-01 | 安地卡及巴布達商區塊鏈控股有限公司 | 在區塊鏈網路上實施轉移之電腦實施系統及方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202310584A (zh) | 2023-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113424185B (zh) | 快速不经意传输 | |
Schneider et al. | GMW vs. Yao? Efficient secure two-party computation with low depth circuits | |
US12010216B2 (en) | Computer-implemented system and method for highly secure, high speed encryption and transmission of data | |
US10630476B1 (en) | Obtaining keys from broadcasters in supersingular isogeny-based cryptosystems | |
US11616641B2 (en) | Computer implemented system and method for sharing a common secret | |
US11528127B2 (en) | Computer-implemented system and method for highly secure, high speed encryption and transmission of data | |
WO2020042023A1 (zh) | 一种即时通信的数据加密方法及装置 | |
TWI764811B (zh) | 分層確定性錢包的金鑰生成系統及其方法 | |
TWI759138B (zh) | 基於輸入密碼的門檻式簽章系統及其方法 | |
TWI782701B (zh) | 區塊鏈錢包的非互動式批核系統及其方法 | |
US10880278B1 (en) | Broadcasting in supersingular isogeny-based cryptosystems | |
TWI776416B (zh) | 分層確定性錢包的門檻式簽章系統及其方法 | |
TWI795284B (zh) | 基於混淆電路的門檻式簽章生成系統及其方法 | |
US12034840B2 (en) | Computer implemented system and method for sharing a common secret preliminary class | |
TWI702820B (zh) | 具分級機制的秘密共享簽章系統及其方法 | |
TWI737956B (zh) | 基於秘密共享的門檻式簽章系統及其方法 | |
WO2023055582A1 (en) | Round optimal oblivious transfers from isogenies | |
TWI734087B (zh) | 基於同態加密的簽章系統及其方法 | |
TW202349241A (zh) | 門檻式簽章的亂數生成系統及其方法 | |
TWI689194B (zh) | 基於無分派者秘密共享的門檻式簽章系統及其方法 | |
CN117768180A (zh) | 一种基于对称密钥伪随机函数的隐私集合交集计算方法 | |
Akinwonmi et al. | Design of circuit system-based cryptography |