TWI701931B - 具分級機制的數位簽章方法及適用該方法的硬體錢包裝置 - Google Patents
具分級機制的數位簽章方法及適用該方法的硬體錢包裝置 Download PDFInfo
- Publication number
- TWI701931B TWI701931B TW108132973A TW108132973A TWI701931B TW I701931 B TWI701931 B TW I701931B TW 108132973 A TW108132973 A TW 108132973A TW 108132973 A TW108132973 A TW 108132973A TW I701931 B TWI701931 B TW I701931B
- Authority
- TW
- Taiwan
- Prior art keywords
- value
- server
- hardware wallet
- signature
- private key
- Prior art date
Links
Images
Abstract
一種具分級機制的數位簽章方法及適用該方法的硬體錢包裝置,透過伺服端產生初始化訊息,並且使伺服端及硬體錢包裝置獲得不同的初始化訊息以產生相應的多項式,以及將初始化訊息中的層級值作為多項式的微分次數,以便計算出符合共享數量的多項式值,再執行安全多方運算交換多項式值以生成具有等級的私鑰共享單元,當執行簽章運算時,需要滿足門檻值及具有足夠等級的私鑰共享單元才能計算出正確的簽章訊息,達到提高數位簽章的安全性之技術功效。
Description
本發明涉及一種數位簽章方法及適用此方法的硬體錢包裝置,特別是使用秘密共享(Secret Sharing)實現具分級機制的數位簽章方法及適用該方法的硬體錢包裝置。
近年來,隨著網路交易的普及與蓬勃發展,各種用以確保交易的安全性及不可否認性的應用便如雨後春筍般湧現,其中,又以數位簽章最受矚目。一般而言,簽章是指使用私鑰(Private Key)對資料簽名,所以私鑰的安全性便十分重要,倘若私鑰外洩被未獲授權者取得,那麼,未獲授權者便可使用此私鑰對資料進行簽名達到偽造簽名的效果。實際上,為了維護私鑰的安全性,私鑰通常會先經過加密後再進行儲存,如:儲存在資料庫或以檔案形式儲存。然而,上述方式存在一個共同的問題,即:沒有辦法防止記憶體傾印(Memory Dump)攻擊,因為在某些時間點上,私鑰會被解密並讀取至記憶體中,這時候未獲授權者便可透過記憶體傾印從記憶體中竊取私鑰。有鑑於此,便有廠商提出門檻式簽章的技術,其允許多個簽章者共同進行簽章,而且只有在簽章的數量滿足門檻才會生成有效簽章,否則生成無效簽章,並且在生成簽章的過程中,私鑰並沒有被組回。如此一來,可大大降低未獲授權者透過記憶體傾印從記憶體中竊取私鑰的可能性。然而,傳統的門檻式簽章並未對每一個簽章者進行分級,換句話說,每一個簽章者的等級均相同,假設被竊的私鑰數量能夠滿足門檻式簽章的門檻值時,同樣會影響數位簽章的安全性及不可否認性。另外,由於傳統的門檻式簽章只要求滿足門檻值,所以無法避免實務上權責低級別的人因為一起舞弊,反而能夠對不適格的交易進行簽章的情況,故門檻式簽章仍然具有數位簽章的安全性不佳的問題,且無法反映現實組織中,權責事實上是不一的情況。另一方面,由於個人電腦容易遭到電腦病毒、電腦蠕蟲、木馬程式等惡意程式的攻擊或入侵,進而導致私鑰損毀或外洩,所以將私鑰存放在個人電腦內已經被公認為是不安全的方式。因此,如何安全存放私鑰同樣也是各家廠商亟欲解決的問題之一。
綜上所述,可知先前技術中長期以來一直存在數位簽章的安全性不佳之問題,因此實有必要提出改進的技術手段,來解決此一問題。
本發明揭露一種具分級機制的數位簽章方法及適用該方法的硬體錢包裝置。
首先,本發明揭露一種適用於具分級機制的數位簽章之硬體錢包裝置,其透過連接客戶端以與伺服端連線,或同時與伺服端及其它硬體錢包裝置連線,此硬體錢包裝置包含:儲存單元、記憶體單元、輸入輸出單元、私鑰生成單元、轉換單元、第一運算單元及第二運算單元。其中,儲存單元電性連接資料匯流排,用以儲存接收自伺服端的初始化訊息,以及儲存隨機產生的密文、預設的係數陣列及計算出的私鑰共享單元,其中,初始化訊息包含共享數量、門檻值、索引值及層級值;記憶體單元電性連接資料匯流排,用以儲存運算過程中產生的數據,所述數據包含多項式值、遮罩值、隨機值、阿爾法(Alpha)值、貝塔(Beta)值、德爾塔(Delta)值、西格瑪(Sigma)值及伯克霍夫(Birkhoff) 係數;輸入輸出單元電性連接資料匯流排,用以在執行區塊鏈交易時顯示交易訊息,並且允許透過按壓功能鍵或觸控方式確認此交易訊息,當確認此交易訊息後,隨機產生相應的遮罩值及隨機值,以及使客戶端將交易訊息傳送至伺服端以請求簽章;私鑰生成單元電性連接資料匯流排,用以在伺服端接受私鑰建立請求後,根據初始化訊息及係數陣列產生相應的多項式,並且將密文設為多項式的常數項,以及先根據微分J次的多項式及所有索引值計算出符合共享數量的多項式值,並且執行安全多方運算以交換所述多項式值,再根據交換結果生成對應初始化訊息的私鑰共享單元,其中,J為層級值;轉換單元電性連接資料匯流排,用以在伺服端接受簽章請求後,所述硬體錢包裝置自客戶端接收到遮罩值時,轉換單元執行轉換函式,此轉換函式包含隨機產生第一數值、將第一數值的負數儲存為貝塔值,以及根據接收到的遮罩值、自身的隨機值及第一數值計算出第二數值,並且將第二數值傳送至接收到的遮罩值之來源以供儲存為阿爾法值;第一運算單元電性連接資料匯流排,用以將自身的遮罩值傳送至伺服端,或傳送至伺服端及其它硬體錢包裝置,使其執行轉換函式並且獲得其計算出的第二數值以儲存為阿爾法值,當參與簽章的伺服端及其它硬體錢包裝置的總數量滿足門檻值時,根據所述阿爾法值的總和、所述貝塔值的總和、遮罩值與隨機值的乘積,用以計算出德爾塔值並傳送至伺服端,以及將遮罩值和基點的乘積作為第一乘積值並傳送至伺服端,以供伺服端計算出第一簽章數據;以及第二運算單元電性連接資料匯流排,用以在接收到伺服端的第二乘積值時,再次執行轉換函式,並且以第二乘積值取代初次執行轉換函式時所使用的伺服端的遮罩值以計算出西格瑪值,以及根據隨機值、西格瑪值、第一簽章數據及交易訊息的雜湊值計算出簽章值並傳送至伺服端,以供伺服端計算第二簽章數據且將第一簽章數據與第二簽章數據一併作為對應此交易訊息的簽章訊息。
另外,本發明揭露一種具分級機制的數位簽章方法,其步驟包括:提供伺服端及硬體錢包裝置,所述硬體錢包裝置電性連接相應的客戶端,使客戶端轉送伺服端及硬體錢包裝置之間或每一硬體錢包裝置之間的封包及運算結果;伺服端在接收到來自客戶端的私鑰建立請求時,產生對應此私鑰建立請求的M個初始化訊息,當硬體錢包裝置的數量為一個時,將初始化訊息其中之一傳送至硬體錢包裝置,當硬體錢包裝置的數量為N個時,將其中N個初始化訊息分別傳送至不同的N個硬體錢包裝置,每一初始化訊息皆包含門檻值、索引值、層級值及共享數量,其中,M及N皆為正整數且M>N>1;伺服端及硬體錢包裝置根據各自的初始化訊息及預設的係數陣列分別產生相應的多項式,此多項式的常數項為各自隨機產生的密文,並且先根據微分J次的多項式及所有索引值計算出符合共享數量的多個多項式值,以及執行安全多方運算以交換所述多項式值,再根據交換結果分別生成相應的私鑰共享單元,其中,J為與多項式對應的初始化訊息之層級值;在執行區塊鏈交易時,硬體錢包裝置顯示交易訊息,並且在偵測到以按壓功能鍵或觸控方式確認此交易訊息後,透過客戶端將交易訊息傳送至伺服端以請求簽章;伺服端及硬體錢包裝置隨機產生相應此交易訊息的遮罩值及隨機值,並且接收對方產生的遮罩值以執行轉換函式,此轉換函式包含隨機產生第一數值、將第一數值的負數儲存為貝塔值,以及根據對方的遮罩值、自身的隨機值及第一數值計算出第二數值以進行傳送,提供對方將第二數值儲存為阿爾法值;伺服端及硬體錢包裝置參與簽章的數量滿足門檻值時,伺服端及硬體錢包裝置根據阿爾法值的總和、貝塔值的總和、遮罩值與隨機值的乘積,用以計算出德爾塔值,以及將遮罩值和基點的乘積作為第一乘積值,其中,硬體錢包裝置計算出的德爾塔值及第一乘積值皆傳送至伺服端;伺服端加總所有的德爾塔值以作為第三數值,以及加總所有的第一乘積值以作為第四數值,並且將第三數值的倒數與第四數值相乘以計算出曲線點座標,再將此曲線點座標的X座標作為第一簽章數據;伺服端根據所有硬體錢包裝置的私鑰共享單元的X座標及層級值計算伯克霍夫係數,並且根據伯克霍夫係數及所有私鑰共享單元計算第二乘積值,以及將伯克霍夫係數及第一簽章數據傳送至所有硬體錢包裝置;硬體錢包裝置再次執行轉換函式,並且以來自伺服端的第二乘積值取代初次執行轉換函式時所使用的伺服端的遮罩值以計算出西格瑪值,以及根據隨機值、西格瑪值、第一簽章數據及交易訊息的雜湊值計算出簽章值並傳送至伺服端;當伺服端接收到所有參與簽章的硬體錢包裝置的簽章值時,加總所有簽章值以作為第二簽章數據,並且將第一簽章數據與第二簽章數據一併作為對應此交易訊息的簽章訊息。
本發明所揭露之裝置與方法如上,與先前技術的差異在於本發明是透過伺服端產生初始化訊息,並且使伺服端及硬體錢包裝置獲得不同的初始化訊息以產生相應的多項式,以及將初始化訊息中的層級值作為多項式的微分次數,以便計算出符合共享數量的多項式值,再執行安全多方運算交換多項式值以生成具有等級的私鑰共享單元,當執行簽章運算時,需要滿足門檻值及具有足夠等級的私鑰共享單元才能計算出正確的簽章訊息。
透過上述的技術手段,本發明可以達成提高數位簽章的安全性之技術功效。
以下將配合圖式及實施例來詳細說明本發明之實施方式,藉此對本發明如何應用技術手段來解決技術問題並達成技術功效的實現過程能充分理解並據以實施。
在說明本發明所揭露之具分級機制的數位簽章方法及適用該方法的硬體錢包裝置之前,先對本發明所自行定義的名詞作說明,本發明所述的初始化訊息係提供伺服端或硬體錢包裝置生成私鑰共享單元之用,初始化訊息包含共享數量、門檻值、索引值及層級值,其中,共享數量代表欲生成多少個私鑰共享單元;門檻值代表滿足多少個私鑰共享單元即可正確計算出簽章訊息;索引值代表具有唯一性的資料;層級值代表多項式微分的次數,也可視為私鑰共享單元的等級。另外,所述計算出的簽章訊息符合橢圓曲線數位簽名演算法(Elliptic Curve Digital Signature Algorithm, ECDSA)的格式,並且由第一簽章數據及第二簽章數據所組成,實際上,可以使用ECDSA這個通用演算法在 「Secp256k1」 這條曲線上的參數作為秘密共享參數來計算出簽章訊息,相較於傳統ECDSA的簽章訊息「(r, s)」,本發明所述第一簽章數據即代表其中的「r」;所述第二簽章數據即代表其中的「s」。除此之外,本發明所述的轉換函式是指進行乘法轉加法(Multiplication to Addition, MtA)運算,也就是說,將乘法轉換為進行加法運算,但是可以得到與乘法相同的運算結果,例如:「a * k = α + β」,以此例而言,藉由計算出「α」及「β」的值,將兩者相加可以得到與「a * k」相同的計算結果,其目的是因為當「k」是由一個「t」次的多項式表示、「a」是由另一個「t」次的多項式表示時,在計算「k * a」時會得到一個「2t」次的多項式,而因為增加多項式的最高次數(即:「deg f(x)」)會造成擁有私鑰共享單元的人的數量也必須隨之增加,這將導致運算變得更為複雜,因此,通過 MtA 可以使秘密共享簽章的運算,維持在只要維護「t + 1」個私鑰共享單元即可。
接著,針對本發明具分級機制的原理做說明,在實際實施上,本發明所述的私鑰共享單元,其產生方式與一般透過秘密共享演算法(Secret Sharing Algorithm)產生的方式大同小異,其主要差異在於為了使私鑰共享單元具有不同等級,在私鑰共享單元的產生過程中便會根據不同等級對相應的多項式進行不同次數的微分,舉例來說,符號「σ
i,j」是令「f^j(x)」為一個微分「j」次的多項式,且令「f^j(i) = σ
i,j」為此多項式取值在「x = i」的點,其中,「i」代表第「i」個私鑰共享單元的持有者(所述持有者可能是伺服端或客戶端的硬體錢包裝置)、「j」代表微分的次數,同時也是本發明所述的層級值,「j」的數值越大代表多項式的微分次數越多,所生成的私鑰共享單元的層級(或稱為等級)越低。在實際實施上,已知多項式為「f(x) = x^3 + 1」時,可得知「σ
3,2」的數值為「18」,因為多項式微分二次(即:f^2(x) = 6x)且「x = 3」,故得知「σ
3,2= f^2(3) = 6 * 3」。反之,只要得知多項式的形式(Basis)、符號「σ
i,j」中的「i」及「j」的數值,則可使用伯克霍夫插值計算出滿足所有條件的多項式「f(x)」,這個多項式中的常數項即代表密文(Secret),例如:私鑰。舉例來說,假設「σ
1,0= 6」、「σ
2,1= 7」及「σ
3,2= 2」、多項式的形式為「{1, x, x^2}」,經由伯克霍夫插值可計算出滿足所有條件的多項式「f(x) = 2 + 3x + x^2」,其中,常數項的數值「2」即代表密文(即:由「f(0)」得知)。特別要說明的是,基於安全的考量,實際上並不會將密文計算出來,而是直接使用私鑰共享單元進行簽章訊息的計算,其與直接使用密文計算簽章訊息的方式能夠獲得相同的結果。更進一步來說,由於私鑰共享單元來自於多項式取值,雖然將多項式微分再取值也能夠得到私鑰共享單元,但是這個私鑰共享單元對應的多項式會因為經過微分而導致次方較低(即:代表等級較低),此時,便有可能造成即使擁有足夠數量的私鑰共享單元也只能還原微分後對應的多項式,而無法利用插值法計算出密文,如此一來,私鑰共享單元的數量便不再是能否計算出正確的簽章訊息的唯一條件。舉例來說,假設多項式「f(x) = x + 3」,經過一次微分後得到「f^1(x) = 1」,所以這個等級的私鑰共享單元都會是數值「1」,無論擁有多少這個等級的私鑰共享單元都無法計算出原本「f(x)」的密文(即:數值「3」)。也就是說,因為私鑰共享單元有高低等級之分,所以可能出現即使擁有足夠數量的私鑰共享單元,仍然無法利用伯克霍夫插值來獲得「f(0)」的結果。因此,根據不同身分給予不同等級的私鑰共享單元,在進行簽章時便需要同時滿足數量及等級才能夠計算出正確的簽章訊息,而非如傳統的門檻式簽章將是否滿足門檻數量作為唯一的條件,所以在管理及安全性上更具有可操作性。
以下配合圖式對本發明具分級機制的數位簽章方法及適用該方法的硬體錢包裝置做進一步說明,請先參閱「第1圖」,「第1圖」為本發明適用於具分級機制的數位簽章之硬體錢包裝置的方塊圖,其透過連接客戶端110以經由網路140與伺服端130連線,或是同時與伺服端130及其它同樣應用本發明的硬體錢包裝置連線,所述硬體錢包裝置120包含:儲存單元121、記憶體單元122、輸入輸出單元123、私鑰生成單元124、轉換單元125、第一運算單元126及第二運算單元127。其中,儲存單元121電性連接資料匯流排128,用以儲存接收自伺服端130的初始化訊息,以及儲存隨機產生的密文、預設的係數陣列及計算出的私鑰共享單元,所述初始化訊息包含共享數量、門檻值、索引值及層級值。在實際實施上,儲存單元121可使用非揮發性記憶體(Non-Volatile Memory),如:EEPROM、快閃記憶體(Flash memory)等元件來實現。另外,所述硬體錢包裝置120連接客戶端110的方式可透過有線或無線的方式連接,例如:通用序列匯流排(Universal Serial Bus, USB)、RS-232、RS-485、Wi-Fi、藍牙(Bluetooth)等等。
記憶體單元122電性連接資料匯流排128,用以儲存運算過程中產生的數據,所述數據包含多項式值、遮罩值、隨機值、阿爾法值、貝塔值、德爾塔值、西格瑪值及伯克霍夫係數。在實際實施上,記憶體單元122可使用揮發性記憶體(Volatile memory),如:動態隨機存取記憶體(Dynamic Random Access Memory, DRAM)、靜態隨機存取記憶體(Static Random Access Memory, SRAM)等等來實現。
輸入輸出單元123電性連接資料匯流排128,用以在執行區塊鏈交易時顯示交易訊息,並且允許使用者透過按壓功能鍵或觸控方式確認此交易訊息,當確認此交易訊息後,隨機產生相應的遮罩值及隨機值,以及使客戶端110將交易訊息傳送至伺服端130以請求簽章。在實際實施上,輸入輸出單元123可電性連接感測器,用以感測使用者的生物特徵(如:指紋、指靜脈特徵等等),並且將感測到的生物特徵與預先儲存在儲存單元121的對比特徵進行比對,當比對不相符時,代表非授權的使用者,故產生禁能信號以禁止透過按壓功能鍵或觸控方式確認此交易訊息。另外,當禁能信號產生時,代表硬體錢包裝置120曾落入他人手中,所以還可驅動客戶端110傳送警示訊息至伺服端130,並且當再次比對生物特徵與對比特徵為相符時(代表硬體錢包裝置120回到原持有者手中),致能私鑰生成單元124重新隨機產生多項式,用以再次執行安全多方運算以重新生成私鑰共享單元。
私鑰生成單元124電性連接資料匯流排128,用以在伺服端130接受私鑰建立請求後,根據初始化訊息及係數陣列產生相應的多項式,並且將密文設為多項式的常數項,以及先根據微分J次的多項式及所有索引值計算出符合共享數量的多項式值,並且執行安全多方運算以交換所述多項式值,再根據交換結果生成對應初始化訊息的私鑰共享單元,其中,J為層級值。在實際實施上,所述硬體錢包裝置120及伺服端130皆為執行秘密共享簽章的運算裝置,假設所述運算裝置獲得的初始化訊息的索引值為「1」、層級值為數值「0」、共享數量為數值「5」、門檻值為數值「3」,私鑰生成單元124會根據預設的係數陣列、多項式的形式(如:「{1, x, x^2}」)及層級值隨機生成多項式「d1」,如:「x^2+2x+3」,特別要說明的是,多項式的形式會隨著門檻值不同而有所改變,以門檻值等於數值「4」為例,其多項式的形式為「{1, x, x^2, x^3}」,也就是說,當門檻值為「t」時,在多項式的形式中,「x」的最高次數為「t - 1」。接著,假設根據共享數量生成非零的索引值為數值「1」至「5」,將分別帶入多項式的「x」計算出相應的五個多項式值(即:「d1(1)」至「d1(5)」),然後,將帶入數值「2」所計算出來的多項式值「d1(2)」傳送至索引值為「2」的運算裝置、將帶入數值「3」所計算出來的多項式值「d1(3)」傳送至索引值為「3」的運算裝置,並以此類推,將帶入數值「5」所計算出來的多項式值「d1(5)」傳送至索引值為「5」的運算裝置。也就是說,執行安全多方運算會根據索引值將相應的多項式值傳送至相應的運算裝置,所以索引值為「1」的運算裝置,除了擁有自己計算出的多項式值「d1(1)」之外,還會接收到來自不同運算裝置根據自身的多項式帶入數值「1」所計算出的多項式值(即:「d2(1)」、「d3(1)」、「d4(1)」及「d5(1)」);索引值為「2」的運算裝置,除了擁有自己計算出的多項式值「d2(2)」之外,還會接收到來自不同運算裝置根據自身的多項式帶入數值「2」所計算出的多項式值(即:「d1(2)」、「d3(2)」、「d4(2)」及「d5(2)」),並以此類推。如此一來,各運算裝置便能夠根據這些多項式值進行加總以生成對應的私鑰共享單元,例如:索引值為「1」的運算裝置加總多項式值「d1(1)」、「d2(1)」、「d3(1)」、「d4(1)」及「d5(1)」,將獲得私鑰共享單元「Sd
1」(即:「Sd
1= d1(1) + d2(1) + d3(1) + d4(1) + d5(1)」)、索引值為「2」的運算裝置加總多項式值「d1(2)」、「d2(2)」、「d3(2)」、「d4(2)」及「d5(2)」,將獲得私鑰共享單元「Sd
2」(即:「Sd
2= d1(2) + d2(2) + d3(2) + d4(2) + d5(2)」),並以此類推,每一運算裝置皆獲得相應的私鑰共享單元。特別要說明的是,假設層級值為「1」,則原本生成的多項式「d1」(如:「x^2+2x+3」)將會被微分一次而成為「2x+2」,假設多項式取值在「x = 1」,其可表示為「σ
1,1」並且計算出相應的數值為「4」。在實際實施上,每一運算裝置需交換各自的層級值「j」及私鑰共享單元的X座標以便計算伯克霍夫係數。另外,在同時具有多個硬體錢包裝置120的環境下,每一硬體錢包裝置120皆透過各自的客戶端110以點對點(Peer to Peer, P2P)方式相互連接,以及與伺服端130連接,所述硬體錢包裝置120被伺服端130選擇用以執行秘密共享簽章,假設要使用五台運算裝置執行秘密共享簽章的運算,除了需要一台伺服端130之外,伺服端130需要從在線上(Online)的客戶端110中,最多再選擇四台運算裝置,這些運算裝置均用以產生相應的私鑰共享單元及執行秘密共享簽章的運算。另外,伺服端130允許同時具有多個不同的初始化訊息,並且分別根據這些不同的初始化訊息進行安全多方運算,以便根據運算結果產生相應的多個私鑰共享單元,在此情況下,伺服端130便可以選擇較少的客戶端110,舉例來說,假設需要產生五個私鑰共享單元,可在伺服端130同時產生三個私鑰共享單元,然後再選擇二個客戶端110,由其連接的硬體錢包裝置120各自產生一個私鑰共享單元即可。
轉換單元125電性連接資料匯流排128,用以在伺服端130接受簽章請求後,所述硬體錢包裝置120自客戶端110接收到遮罩值時,轉換單元125執行轉換函式,此轉換函式包含隨機產生第一數值、將第一數值的負數儲存為貝塔值,以及根據接收到的遮罩值、自身的隨機值及第一數值計算出第二數值,並且將第二數值傳送至接收到的遮罩值之來源以供儲存為阿爾法值。在實際實施上,所述硬體錢包裝置120及伺服端130皆會執行轉換函式(即:乘法轉加法運算),而在執行之前,可各自預先產生同態加密公鑰及同態加密私鑰,並且相互交換各自的同態加密公鑰,以便在執行轉換函式進行乘法轉加法運算時,根據索引值選擇同態加密公鑰來對遮罩值、隨機值及第二乘積值進行加密,以及使用相應的同態加密私鑰進行解密。簡單來說,在搭配同態加密時,所述轉換函式做的事情是假設現在安全多方運算中有兩方即:A和B,A會選取一個遮罩值,然後A傳出去給B的是加密的遮罩值。所以B(即:對應伺服端130)收到的是加密的遮罩值。接下來,B會先產生第一數值,再計算出第二數值。然後將第二數值傳回給A,這時A會解密這個第二數值,把它儲存為阿爾法值。也可理解成,初始時,A傳出的是密文,在B做完運算以後傳回還是密文,所以需要A再做解密才能得到預期的效果值。為了簡單說明乘法轉加法運算,假設在使用「Secp256k1」這條橢圓曲線,而且選取同態加密公鑰N長度為2048位元的情況下進行如下說明:
首先,第「i」個運算裝置(代表每個私鑰共享單元的擁有者本身,可能是硬體錢包裝置120或伺服端130)會產生隨機值「k
i」及遮罩值「a
i」、第「j」個硬體錢包裝置120(代表自己以外的每個私鑰共享單元的擁有者)會產生隨機值「k
j」及遮罩值「a
j」。在執行乘法轉加法運算時,將進行如下步驟:
(1)第「i」個運算裝置先產生一組同態加密金鑰(即:同態加密私鑰「D( )」和同態加密公鑰「E( )」),並且將同態加密公鑰「E( )」傳送給第「j」個運算裝置。
(2)第「i」個運算裝置以同態加密公鑰「E( )」加密遮罩值「a
i」,並且將加密結果「E(a
i)」傳送給第「j」個運算裝置。
(3)第「j」個運算裝置隨機產生貝塔(Beta)值「β」。
(4)第「j」個運算裝置計算「E(a
i) ^ k
j」得到「E(a
i* k
j)」。
(5)第「j」個運算裝置計算「E(β) * E(a
i* k
j)」得到「E(a
i* k
j+ β)」並傳送給第「i」個運算裝置。
(6)第「i」個運算裝置以同態加密私鑰「D( )」對接收到的「E(a
i* k
j+ β)」解密得到阿爾法(Alpha)值「α
i,j」,即:「α
i,j= D(E(a
i* k
j+ β))」。
(7)第「j」個運算裝置計算「-β」作為「β
i,j」。
至此,即完成乘法轉加法的運算,換句話說,上述步驟所得到的數值「α
i,j」及「β
i,j」的和會等於隨機值「a
i」及遮罩值「 k
j」的乘積,不過「α
i,j」及「β
i,j」的和並沒有實際計算出來。當第「i」個運算裝置對所有的第「j」個運算裝置皆執行上述步驟後,將所有接收到的「α
i,j」相加,以及將所有的「β
i,j」相加,再加上自己本身的「a
i」與「k
i」的乘積「a
i* k
i」以作為德爾塔值「δ
i」。另外,每一硬體錢包裝置120會將遮罩值「a
i」乘以基點「G」以傳送至伺服端130,由伺服端130加總生成相應的第一乘積值「w
i」,其中,所述基點「G」為橢圓曲線的域參數(Domain Parameter)。
第一運算單元126電性連接資料匯流排128,用以將自身的遮罩值傳送至伺服端130,或傳送至伺服端130及其它同樣應用本發明的硬體錢包裝置120,使其執行轉換函式並且獲得其計算出的第二數值以儲存為阿爾法值,當伺服端130及硬體錢包裝置120參與簽章的數量滿足門檻值時,根據所述阿爾法值的總和、所述貝塔值的總和、遮罩值與隨機值的乘積,用以計算出德爾塔值並傳送至伺服端130,以及將遮罩值和基點的乘積作為第一乘積值並傳送至伺服端130,以供伺服端130計算出第一簽章數據。在實際實施上,伺服端130會加總所有相應交易訊息的德爾塔值以作為第三數值,以及加總所有相應交易訊息的第一乘積值以作為第四數值,並且將第一數值的倒數與第二數值相乘以計算出曲線點座標,再將曲線點座標的X座標作為第一簽章數據,以及加總所有相應交易訊息的簽章值以作為該第二簽章數據。舉例來說,伺服端130及每一個硬體錢包裝置120都會各自計算出德爾塔值「δ
i」及第一乘積值「w
i」,並且相互交換這些計算出的值,然後,伺服端130加總所有德爾塔值「δ
i」且對「q」取餘數以得到第三數值「v」(等同「k * a mod q」)。其中,「q」為基數(Cardinality),同樣也是橢圓曲線的域參數。接著,伺服端130再加總所有第一乘積值「w
i」以得到第四數值「w」(等同「a * G」)。如此一來,伺服端130即可計算出曲線點座標「(R
x, R
y)」,即:「(R
x, R
y) = w * v
-1」(等同「k
-1G),並且將其中的X座標「R
x」對「q」取餘數的結果作為第一簽章數據「r」(即:r = R
xmod q)。特別要說明的是,倘若第一簽章數據「r」為數值零,伺服端130及所述硬體錢包裝置120會重新選擇隨機值及遮罩值,並且重新執行上述相同的步驟,以便重新計算第一簽章數據,直到其數值不為零為止。
第二運算單元127電性連接資料匯流排128,用以在接收到伺服端130的第二乘積值時,再次執行轉換函式,並且以第二乘積值取代初次執行轉換函式時所使用的伺服端130的遮罩值以計算出西格瑪值,以及根據隨機值、西格瑪值、第一簽章數據及交易訊息的雜湊值計算出簽章值並傳送至伺服端130,以供伺服端130計算第二簽章數據,並且將第一簽章數據與第二簽章數據一併作為對應此交易訊息的簽章訊息。在實際實施上,再次執行轉換函式與初次執行轉換函式的差異僅在於再次執行轉換函式時,使用第二乘積值取代原先使用的伺服端130的遮罩值,例如:第「j」個運算裝置會計算自己的私鑰共享單元「Sd
j」與伯克霍夫係數的乘積得到第二乘積值「Sw
j」,並且將此第二乘積值「Sw
j」取代前述乘法轉加法運算中的遮罩值「a
i」,以便與第「i」個運算裝置的隨機值「k
i」進行相同的乘法轉加法運算,進而得到如同上述「α
i,j」及「β
i,j」的二個數值(例如:「μ
i,j」及「ω
i,j」),接著,第「i」個運算裝置會將自己的「k
i」和「Sw
i」的乘積、所有運算裝置的「μ
i,j」的總和及所有運算裝置的「ω
i,j」的總合相加以計算出相應的西格瑪值「σ
i」。也就是說,原本計算出「α
i,j」及「β
i,j」且得到「δ
i」的流程,在使用第「i」個運算裝置的隨機值「k
i」與第「j」個運算裝置的第二乘積值「Sw
j」進行相同計算後,會得到「μ
i,j」、「ω
i,j」及「σ
i」等數值。另外,在實際實施上,所述伯克霍夫係數為根據所有運算裝置的私鑰共享單元的X座標及層級值計算生成,其可由伺服端130計算後提供給其它硬體錢包裝置120,或是由各硬體錢包裝置120根據這次參與的所有運算裝置的私鑰共享單元的X座標及層級值來計算出伯克霍夫係數。接著,第「i」個運算裝置能夠根據隨機值「k
i」、西格瑪值「σ
i」、第一簽章數據「r」及交易訊息的雜湊值「e」計算出相應的簽章值「S
i」(即:「S
i= σ
i* r + k
i* e」)。特別要說明的是,所述交易訊息的雜湊值是指對符合區塊鏈資料格式的交易訊息,使用安全雜湊演算法(Secure Hash Algorithm, SHA),如:SHA3、SHA256或其相似演算法,用以計算出相應的雜湊值,所述交易訊息的雜湊值將由伺服端130傳送給硬體錢包裝置120計算西格瑪值之用。
上述主要是針對硬體錢包裝置120進行說明,而針對伺服端130的部分,由於硬體錢包裝置120及伺服端130均為執行秘密共享簽章的運算裝置,所以伺服端130與硬體錢包裝置120執行的運算大同小異,兩者主要差異在於伺服端130會產生初始化訊息及計算完整的簽章訊息。其中,在產生初始化訊息的部分,伺服端130在接收到來自客戶端110的私鑰建立請求時,將產生對應此私鑰建立請求的多個初始化訊息,每一初始化訊息皆包含共享數量、門檻值、索引值及層級值。舉例來說,假設是「(3, 5)秘密共享」,代表共享數量為數值「5」、門檻值為數值「3」、各初始化訊息的索引值分別為數值「1」至「5」(實際上亦可分別為隨機生成的非零且相異的整數)、層級值可設為數值「0」代表多項式不會被微分;設為數值「1」代表多項式被微分一次,並以此類推,其中,層級值為非負整數且小於門檻值,以此例而言,層級值在數值「0」至「2」的範圍。換句話說,初始化訊息的層級值是用來控制產生的私鑰共享單元的等級大小,而層級值的大小與私鑰共享單元的等級高低為負相關,層級值的數值越大代表私鑰共享單元的等級越低,以上述層級值在數值「0」至「2」的範圍為例,層級值為數值「0」代表私鑰共享單元的等級最高,層級值為數值「2」則代表私鑰共享單元的等級最低。接著,在計算簽章訊息的部分,伺服端130除了計算第一簽章數據之外,還會加總接收到的簽章值以生成第二簽章數據,並且與第一簽章數據一併作為對應交易訊息的簽章訊息。在實際實施上,由於各硬體錢包裝置120均會傳送各自計算出的簽章值「s
i,j」至伺服端130,所以伺服端130會將這些簽章值加總以計算出第二簽章數據「s」(即:
),其中,「i」及「 j」用以區分不同的硬體錢包裝置120及其多項式的微分次數。接著,再將第一簽章數據「r」與第二簽章數據「s」一併作為對應交易訊息的簽章訊息「(r, s)」。特別要說明的是,假設第二簽章數據「s」為數值零,那麼,所述伺服端130會要求硬體錢包裝置120重新選擇新的隨機值及遮罩值,直到計算出的第一簽章數據「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圖」至「第2C圖」,「第2A圖」至「第2C圖」為本發明具分級機制的數位簽章方法的方法流程圖,其步驟包括:提供伺服端130及硬體錢包裝置120,所述硬體錢包裝置120電性連接相應的客戶端110,使客戶端110轉送伺服端130及硬體錢包裝置120之間或每一硬體錢包裝置120之間的封包及運算結果(步驟200);伺服端130在接收到來自客戶端110的私鑰建立請求時,產生對應此私鑰建立請求的M個初始化訊息,當硬體錢包裝置120的數量為一個時,將初始化訊息其中之一傳送至硬體錢包裝置120,當硬體錢包裝置120的數量為N個時,將其中N個初始化訊息分別傳送至不同的N個硬體錢包裝置120,每一初始化訊息皆包含門檻值、索引值、層級值及共享數量,其中,M及N皆為正整數且M>N>1(步驟210);伺服端130及硬體錢包裝置120根據各自的初始化訊息及預設的係數陣列分別產生相應的多項式,此多項式的常數項為各自隨機產生的密文,並且先根據微分J次的多項式及所有索引值計算出符合共享數量的多個多項式值,以及執行安全多方運算以交換所述多項式值,再根據交換結果分別生成相應的私鑰共享單元,其中,J為與多項式對應的初始化訊息之層級值(步驟220);在執行區塊鏈交易時,硬體錢包裝置120顯示交易訊息,並且在偵測到以按壓功能鍵或觸控方式確認此交易訊息後,透過客戶端110將交易訊息傳送至伺服端130以請求簽章(步驟230);伺服端130及硬體錢包裝置120隨機產生相應此交易訊息的遮罩值及隨機值,並且接收對方產生的遮罩值以執行轉換函式,此轉換函式包含隨機產生第一數值、將第一數值的負數儲存為貝塔值,以及根據對方的遮罩值、自身的隨機值及第一數值計算出第二數值以進行傳送,提供對方將此第二數值儲存為阿爾法值(步驟240);當伺服端130及硬體錢包裝置120參與簽章的數量滿足門檻值時,伺服端130及硬體錢包裝置120根據阿爾法值的總和、貝塔值的總和、遮罩值與隨機值的乘積,用以計算出德爾塔值,以及將遮罩值和基點的乘積作為第一乘積值,其中,所述硬體錢包裝置120計算出的德爾塔值及第一乘積值皆傳送至伺服端130(步驟250);伺服端130加總所有的德爾塔值以作為第三數值,以及加總所有的第一乘積值以作為第四數值,並且將第三數值的倒數與第四數值相乘以計算出曲線點座標,再將曲線點座標的X座標作為第一簽章數據(步驟260);伺服端130根據所有硬體錢包裝置120的私鑰共享單元的X座標及層級值計算伯克霍夫係數,並且根據此伯克霍夫係數及所有私鑰共享單元計算第二乘積值,以及將伯克霍夫係數及第一簽章數據傳送至所有硬體錢包裝置120(步驟270);所述硬體錢包裝置120再次執行所述轉換函式,並且以來自伺服端130的第二乘積值取代初次執行轉換函式時所使用的伺服端130的遮罩值以計算出西格瑪值,以及根據隨機值、西格瑪值、第一簽章數據及交易訊息的雜湊值計算出簽章值並傳送至伺服端130(步驟280);當伺服端130接收到所有參與簽章的硬體錢包裝置120的簽章值時,加總所有簽章值以作為第二簽章數據,並且將第一簽章數據與第二簽章數據一併作為對應此交易訊息的簽章訊息(步驟290)。透過上述步驟,即可透過伺服端130產生初始化訊息,並且使伺服端130及硬體錢包裝置120獲得不同的初始化訊息以產生相應的多項式,以及將初始化訊息中的層級值作為多項式的微分次數,以便計算出符合共享數量的多項式值,再執行安全多方運算交換多項式值以生成具有等級的私鑰共享單元,當執行簽章運算時,需要滿足門檻值及具有足夠等級的私鑰共享單元才能計算出正確的簽章訊息。
以下配合「第3圖」及「第4圖」以實施例的方式進行如下說明,請先參閱「第3圖」,「第3圖」為應用本發明的硬體錢包裝置之示意圖。在實際實施上,硬體錢包裝置300和客戶端110可以利用各種連線方式,例如:USB或藍牙等等相互連接。所述硬體錢包裝置300具有顯示元件310用以顯示功能選單及各種互動資訊,例如:功能選單可包含數位貨幣種類選擇、設定選單等等。當需要簽章時,也需要在顯示元件310顯示目的地地址、金額等資訊以供使用者確認。其中,進行確認的方式可透過所述硬體錢包裝置300的輸入元件320,如:向上選擇按鍵、向下選擇按鍵、確認按鍵及取消按鍵,以便進行確認交易訊息及互動的操作。另外,硬體錢包裝置300可提供應用程式介面(Application Programming Interface, API),用以允許客戶端110呼叫,並且在呼叫後使硬體錢包裝置120執行後續動作,舉例來說,針對產生私鑰的部分,硬體錢包裝置120可以提供如下API:
1.「initializeJRSS(threshold, index, rank, share_count)」用以初始化私鑰產生流程,如:帶入門檻值、索引值、層級值及共享數量並儲存;隨機產生密文(d_r)並儲存;根據門檻值隨機產生多項式的各項係數並儲存。
2.「getJRSS(index)」用以在執行JRSS演算法的過程中,透過安全多方運算將多項式值「f_i(j)」用P2P方式傳送給索引值為「j」的一方(也可視為傳給編號「j」的人)。其中,「i」是自己的索引值;「j」是自己以外的其它方索引值;「f_i()」是指自己所選取的多項式。所以「f_i(i)」是指自己的索引值帶入自己的多項式取值所得到的多項式值,這個多項式值只需保留,不需要傳送給其它方。簡單來說,所述JRSS演算法的邏輯是每一方會分別根據不同的索引值(「i」及「j」)及各自的多項式「f_i()」取值而得到多項式值「f_i(j)」及「f_i(i)」,接著將多項式值「f_i(j)」傳給對應的其它方(Party),同時將多項式值「f_i(i)」給自己,只是因為自己傳給自己等於不需要傳出。但是在運算上,「f_i(i)」仍然要計算,之後索引值「i」的一方在計算私鑰共享單元時,再將多項式值「f_i(i)」與從其它各方收到的多項式值「f_j(i)」的總和相加以得到私鑰共享單元。
3.「setJRSS(index, value)」,由於在執行JRSS演算法的過程中,需要其他方的多項式值「f_j(i)」,所以會儲存索引值「index (j)」以及他方的多項式值「f_j(i)」。當他方的多項式值「f_j(i)」都搜集完成後,把所有的多項式值(包含搜集到的「f_j(i)」及自己的「f_i(i)」)相加後即為自己的私鑰共享單元,並且將其儲存於「s_dr」。特別要說明的是,如果要避免過多的邏輯在硬體錢包裝置300,可以提供一個「calculateJRSS()」函式,用以計算自己的私鑰共享單元。
接著,針對計算公鑰的部分,硬體錢包裝置120可提供如下API:
1.「computeSharePoint (BK)」,傳入伯克霍夫係數(BK),並且回傳「BK * s_dr * G」。
2.「computeSecretPoint()」,用以回傳「d_r * G」。
另外,針對簽章的部分,硬體錢包裝置120可以提供如下API:
1.「initializeSignature()」,使硬體錢包裝置120隨機產生遮罩值(a_i)及隨機值(k_j)。
2.「getPublicKey(j)」,用以產生給「j」方的同態加密公鑰。
3.「getEncryptedA(j)」,使用第「j」個同態加密公鑰對遮罩值進行加密以獲得「E(a_i)」。
4.「getEncryptedResponseB(public key, encrypted_A_i)」,用以帶入伺服端130的公鑰及同態加密後的遮罩值「E(a_i)」,並且執行下列步驟:
A. 隨機產生第一數值(beta)。
B. 將第一數值的負數(-beta)儲存為貝塔值( Beta_i_j)。
C. 回傳「E(beta) * E(a_i) ^ k_j」,由於是同態加密,所以該值等於「E(a_i * k_j + beta)」。
5.「updateAlpha(j, data)」,使用「j」方的同態加密私鑰來解密同態加密密文,並且將解密後的數值儲存為阿爾法值(alpha_i_j)。其中,「j」為伺服端130的私鑰共享單元的索引值,「data」為來自伺服端130的數值。
6.「calculateDelta()」,用以計算德爾塔值(delta_i)。
7.「computeAPoint()」,用以回傳第一乘積值( a_i * G)。
8.「computeSValue()」,用以回傳「s_i」。
9. 「calculateSigma()」,用以計算西格瑪值(sigma_i)。
10.「computeP(R, e)」,用以回傳「 sigma_i * R + k_i * e」。
11.「getX()」,用以回傳私鑰共享單元的 X 座標。
12.「getRank()」,用以回傳層級值(rank)。
如「第4圖」所示意,「第4圖」為應用本發明的硬體錢包裝置之另一示意圖。當使用者在客戶端110進行區塊鏈交易時,可將交易訊息同步顯示在硬體錢包裝置400的觸控顯示元件410,提供使用者進行確認及簽章的操作。假設使用者欲確認交易訊息,可將手指接觸指紋感測器420或指靜脈感測器430,用以感測使用者的生物特徵,硬體錢包裝置400在感測完成後,會將感測到的生物特徵與預先儲存在儲存單元121的對比特徵進行比對,當比對不相符時,產生禁能信號以禁止透過按壓功能鍵或觸控方式確認交易訊息。換句話說,非授權的使用者,無法在硬體錢包裝置400確認交易訊息,反之,假設比對相符時,硬體錢包裝置400可透過客戶端110將確認的交易訊息傳送至伺服端130以請求簽章。
綜上所述,可知本發明與先前技術之間的差異在於透過伺服端產生初始化訊息,並且使伺服端及硬體錢包裝置獲得不同的初始化訊息以產生相應的多項式,以及將初始化訊息中的層級值作為多項式的微分次數,以便計算出符合共享數量的多項式值,再執行安全多方運算交換多項式值以生成具有等級的私鑰共享單元,當執行簽章運算時,需要滿足門檻值及具有足夠等級的私鑰共享單元才能計算出正確的簽章訊息,藉由此一技術手段可以解決先前技術所存在的問題,進而達成提高數位簽章的安全性之技術功效。
雖然本發明以前述之實施例揭露如上,然其並非用以限定本發明,任何熟習相像技藝者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之專利保護範圍須視本說明書所附之申請專利範圍所界定者為準。
110:客戶端
120:硬體錢包裝置
121:儲存單元
122:記憶體單元
123:輸入輸出單元
124:私鑰生成單元
125:轉換單元
126:第一運算單元
127:第二運算單元
128:資料匯流排
130:伺服端
140:網路
300、400:硬體錢包裝置
310:顯示元件
320:輸入元件
410:觸控顯示元件
420:指紋感測器
430:指靜脈感測器
步驟200:提供一伺服端及至少一硬體錢包裝置,所述硬體錢包裝置電性連接相應的一客戶端,使所述客戶端轉送該伺服端及所述硬體錢包裝置之間或每一硬體錢包裝置之間的封包及運算結果
步驟210:該伺服端在接收到來自該客戶端的一私鑰建立請求時,產生對應該私鑰建立請求的M個初始化訊息,當所述硬體錢包裝置的數量為一個時,將所述初始化訊息其中之一傳送至該硬體錢包裝置,當所述硬體錢包裝置的數量為N個時,將其中N個所述初始化訊息分別傳送至不同的N個所述硬體錢包裝置,每一初始化訊息皆包含一門檻值、一索引值、一層級值及一共享數量,其中,M及N皆為正整數且M>N>1
步驟220:該伺服端及所述硬體錢包裝置根據各自的所述初始化訊息及預設的一係數陣列分別產生相應的一多項式,該多項式的常數項為各自隨機產生的一密文,並且先根據微分J次的該多項式及所有該索引值計算出符合該共享數量的多個多項式值,以及執行安全多方運算以交換所述多項式值,再根據交換結果分別生成相應的一私鑰共享單元,其中,J為與該多項式對應的所述初始化訊息之該層級值
步驟230:在執行區塊鏈交易時,所述硬體錢包裝置顯示一交易訊息,並且在偵測到以按壓功能鍵或觸控方式確認該交易訊息後,透過該客戶端將該交易訊息傳送至該伺服端以請求簽章
步驟240:該伺服端及所述硬體錢包裝置隨機產生相應該交易訊息的一遮罩值及一隨機值,並且接收對方產生的該遮罩值以執行一轉換函式,該轉換函式包含隨機產生一第一數值、將該第一數值的負數儲存為一貝塔(Beta)值,以及根據對方的該遮罩值、自身的該隨機值及該第一數值計算出一第二數值以進行傳送,提供對方將該第二數值儲存為一阿爾法(Alpha)值
步驟250:當該伺服端及所述硬體錢包裝置參與簽章的數量滿足該門檻值時,該伺服端及所述硬體錢包裝置根據所述阿爾法值的總和、所述貝塔值的總和、該遮罩值與該隨機值的乘積,用以計算出一德爾塔(Delta)值,以及將該遮罩值和該基點的乘積作為一第一乘積值,其中,所述硬體錢包裝置計算出的該德爾塔值及該第一乘積值皆傳送至該伺服端
步驟260:該伺服端加總所有的該德爾塔值以作為一第三數值,以及加總所有的該第一乘積值以作為一第四數值,並且將該第三數值的倒數與該第四數值相乘以計算出一曲線點座標,再將該曲線點座標的X座標作為一第一簽章數據
步驟270:該伺服端根據所有硬體錢包裝置的所述私鑰共享單元的X座標及該層級值計算一伯克霍夫(Birkhoff) 係數,並且根據該伯克霍夫係數及所有私鑰共享單元計算一第二乘積值,以及將該伯克霍夫係數及該第一簽章數據傳送至所有硬體錢包裝置
步驟280:所述硬體錢包裝置再次執行該轉換函式,並且以來自該伺服端的該第二乘積值取代初次執行該轉換函式時所使用的該伺服端的該遮罩值以計算出一西格瑪(Sigma)值,以及根據該隨機值、該西格瑪值、該第一簽章數據及該交易訊息的雜湊值計算出一簽章值並傳送至該伺服端
步驟290:當該伺服端接收到所有參與簽章的所述硬體錢包裝置的該簽章值,加總所有該簽章值以作為一第二簽章數據,並且將該第一簽章數據與該第二簽章數據一併作為對應該交易訊息的一簽章訊息
第1圖為本發明適用於具分級機制的數位簽章之硬體錢包裝置的方塊圖。
第2A圖至第2C圖為本發明具分級機制的數位簽章方法之方法流程圖。
第3圖為應用本發明的硬體錢包裝置之示意圖。
第4圖為應用本發明的硬體錢包裝置之另一示意圖。
110:客戶端
120:硬體錢包裝置
121:儲存單元
122:記憶體單元
123:輸入輸出單元
124:私鑰生成單元
125:轉換單元
126:第一運算單元
127:第二運算單元
128:資料匯流排
130:伺服端
140:網路
Claims (10)
- 一種適用於具分級機制的數位簽章之硬體錢包裝置,其透過連接一客戶端以與一伺服端連線,或同時與該伺服端及其它該硬體錢包裝置連線,該硬體錢包裝置包含: 一儲存單元,電性連接一資料匯流排,用以儲存接收自該伺服端的一初始化訊息,以及儲存隨機產生的一密文、預設的一係數陣列及計算出的一私鑰共享單元,其中,該初始化訊息包含一共享數量、一門檻值、一索引值及一層級值; 一記憶體單元,電性連接該資料匯流排,用以儲存運算過程中產生的多個數據,所述數據包含多個多項式值、一遮罩值、一隨機值、至少一阿爾法(Alpha)值、至少一貝塔(Beta)值、一德爾塔(Delta)值、一西格瑪(Sigma)值及一伯克霍夫(Birkhoff) 係數; 一輸入輸出單元,電性連接該資料匯流排,用以在執行區塊鏈交易時顯示一交易訊息,並且允許透過按壓功能鍵或觸控方式確認該交易訊息,當確認該交易訊息後,隨機產生相應的該遮罩值及該隨機值,以及使該客戶端將該交易訊息傳送至該伺服端以請求簽章; 一私鑰生成單元,電性連接該資料匯流排,用以在該伺服端接受一私鑰建立請求後,根據該初始化訊息及該係數陣列產生相應的一多項式,並且將該密文設為該多項式的常數項,以及先根據微分J次的該多項式及所有該索引值計算出符合該共享數量的所述多項式值,並且執行安全多方運算以交換所述多項式值,再根據交換結果生成對應該初始化訊息的該私鑰共享單元,其中,J為該層級值; 一轉換單元,電性連接該資料匯流排,用以在該伺服端接受簽章請求後,所述硬體錢包裝置自該客戶端接收到該遮罩值時,該轉換單元執行一轉換函式,該轉換函式包含隨機產生一第一數值、將該第一數值的負數儲存為該貝塔值,以及根據接收到的該遮罩值、自身的該隨機值及該第一數值計算出一第二數值,並且將該第二數值傳送至接收到的該遮罩值之來源以供儲存為所述阿爾法值; 一第一運算單元,電性連接該資料匯流排,用以將自身的該遮罩值傳送至該伺服端,或傳送至該伺服端及其它該硬體錢包裝置,使其執行該轉換函式並且獲得其計算出的該第二數值以儲存為該阿爾法值,當該伺服端及所述硬體錢包裝置參與簽章的數量滿足該門檻值時,根據所述阿爾法值的總和、所述貝塔值的總和、該遮罩值與該隨機值的乘積,用以計算出該德爾塔值並傳送至該伺服端,以及將該遮罩值和一基點的乘積作為一第一乘積值並傳送至該伺服端,以供該伺服端計算出一第一簽章數據;以及 一第二運算單元,電性連接該資料匯流排,用以在接收到該伺服端的一第二乘積值時,再次執行該轉換函式,並且以該第二乘積值取代初次執行該轉換函式時所使用的該伺服端的該遮罩值以計算出該西格瑪值,以及根據該隨機值、該西格瑪值、該第一簽章數據及該交易訊息的雜湊值計算出一簽章值並傳送至該伺服端,以供該伺服端計算一第二簽章數據且將該第一簽章數據與該第二簽章數據一併作為對應該交易訊息的一簽章訊息。
- 根據申請專利範圍第1項之適用於具分級機制的數位簽章之硬體錢包裝置,其中該伺服端加總所有相應該交易訊息的該德爾塔值以作為一第三數值,以及加總所有相應該交易訊息的該第一乘積值以作為一第四數值,並且將該第一數值的倒數與該第二數值相乘以計算出一曲線點座標,再將該曲線點座標的X座標作為該第一簽章數據,以及加總所有相應該交易訊息的該簽章值以作為該第二簽章數據。
- 根據申請專利範圍第1項之適用於具分級機制的數位簽章之硬體錢包裝置,其中該伺服端及所述硬體錢包裝置在執行該轉換函式前,均各自預先產生一同態加密公鑰及一同態加密私鑰,並且相互交換各自的該同態加密公鑰,用以在執行該轉換函式時,根據該索引值選擇相應的該同態加密公鑰以對該遮罩值、該隨機值及該第二乘積值進行加密,以及以相應的該同態加密私鑰進行解密。
- 根據申請專利範圍第1項之適用於具分級機制的數位簽章之硬體錢包裝置,其中該伺服端允許同時具有多個不同的所述初始化訊息,並且分別根據不同的所述初始化訊息進行安全多方運算,用以根據運算結果產生相應的多個所述私鑰共享單元,所述初始化訊息的該層級值用以控制產生的所述私鑰共享單元的等級大小,該層級值的大小與所述私鑰共享單元的等級高低為負相關。
- 根據申請專利範圍第1項之適用於具分級機制的數位簽章之硬體錢包裝置,其中該硬體錢包裝置提供該私鑰共享單元的X座標及該層級值,以供該伺服端計算出該伯克霍夫係數且傳送至該硬體錢包裝置。
- 根據申請專利範圍第1項之適用於具分級機制的數位簽章之硬體錢包裝置,其中該輸入輸出單元電性連接至少一感測器,用以感測至少一生物特徵,並且將感測到的所述生物特徵與預先儲存在該儲存單元的至少一對比特徵進行比對,當比對不相符時,產生一禁能信號以禁止透過按壓功能鍵或觸控方式確認該交易訊息。
- 根據申請專利範圍第6項之適用於具分級機制的數位簽章之硬體錢包裝置,其中該禁能信號產生時,驅動該客戶端傳送一警示訊息至該伺服端,並且當再次比對所述生物特徵與所述對比特徵為相符時,致能該私鑰生成單元重新產生該多項式,用以再次執行安全多方運算以重新生成所述私鑰共享單元。
- 一種具分級機制的數位簽章方法,其步驟包括: 提供一伺服端及至少一硬體錢包裝置,所述硬體錢包裝置電性連接相應的一客戶端,使所述客戶端轉送該伺服端及所述硬體錢包裝置之間或每一硬體錢包裝置之間的封包及運算結果; 該伺服端在接收到來自該客戶端的一私鑰建立請求時,產生對應該私鑰建立請求的M個初始化訊息,當所述硬體錢包裝置的數量為一個時,將所述初始化訊息其中之一傳送至該硬體錢包裝置,當所述硬體錢包裝置的數量為N個時,將其中N個所述初始化訊息分別傳送至不同的N個所述硬體錢包裝置,每一初始化訊息皆包含一門檻值、一索引值、一層級值及一共享數量,其中,M及N皆為正整數且M>N>1; 該伺服端及所述硬體錢包裝置根據各自的所述初始化訊息及預設的一係數陣列分別產生相應的一多項式,該多項式的常數項為各自隨機產生的一密文,並且先根據微分J次的該多項式及所有該索引值計算出符合該共享數量的多個多項式值,以及執行安全多方運算以交換所述多項式值,再根據交換結果分別生成相應的一私鑰共享單元,其中,J為與該多項式對應的所述初始化訊息之該層級值; 在執行區塊鏈交易時,所述硬體錢包裝置顯示一交易訊息,並且在偵測到以按壓功能鍵或觸控方式確認該交易訊息後,透過該客戶端將該交易訊息傳送至該伺服端以請求簽章; 該伺服端及所述硬體錢包裝置隨機產生相應該交易訊息的一遮罩值及一隨機值,並且接收對方產生的該遮罩值以執行一轉換函式,該轉換函式包含隨機產生一第一數值、將該第一數值的負數儲存為一貝塔(Beta)值,以及根據對方的該遮罩值、自身的該隨機值及該第一數值計算出一第二數值以進行傳送,提供對方將該第二數值儲存為一阿爾法(Alpha)值; 當該伺服端及所述硬體錢包裝置參與簽章的數量滿足該門檻值時,該伺服端及所述硬體錢包裝置根據所述阿爾法值的總和、所述貝塔值的總和、該遮罩值與該隨機值的乘積,用以計算出一德爾塔(Delta)值,以及將該遮罩值和該基點的乘積作為一第一乘積值,其中,所述硬體錢包裝置計算出的該德爾塔值及該第一乘積值皆傳送至該伺服端; 該伺服端加總所有的該德爾塔值以作為一第三數值,以及加總所有的該第一乘積值以作為一第四數值,並且將該第三數值的倒數與該第四數值相乘以計算出一曲線點座標,再將該曲線點座標的X座標作為一第一簽章數據; 該伺服端根據所有硬體錢包裝置的所述私鑰共享單元的X座標及該層級值計算一伯克霍夫(Birkhoff) 係數,並且根據該伯克霍夫係數及所有私鑰共享單元計算一第二乘積值,以及將該伯克霍夫係數及該第一簽章數據傳送至所有硬體錢包裝置; 所述硬體錢包裝置再次執行該轉換函式,並且以來自該伺服端的該第二乘積值取代初次執行該轉換函式時所使用的該伺服端的該遮罩值以計算出一西格瑪(Sigma)值,以及根據該隨機值、該西格瑪值、該第一簽章數據及該交易訊息的雜湊值計算出一簽章值並傳送至該伺服端;以及 當該伺服端接收到所有參與簽章的所述硬體錢包裝置的該簽章值時,加總所有該簽章值以作為一第二簽章數據,並且將該第一簽章數據與該第二簽章數據一併作為對應該交易訊息的一簽章訊息。
- 根據申請專利範圍第8項之具分級機制的數位簽章方法,其中該伺服端及所述硬體錢包裝置在執行該轉換函式前,均各自預先產生一同態加密公鑰及一同態加密私鑰,並且相互交換各自的該同態加密公鑰,用以在執行該轉換函式時,根據該索引值選擇相應的該同態加密公鑰以對該遮罩值、該隨機值及該第二乘積值進行加密,以及以相應的該同態加密私鑰進行解密。
- 根據申請專利範圍第8項之具分級機制的數位簽章方法,其中該伺服端允許同時具有多個不同的所述初始化訊息,並且分別根據不同的所述初始化訊息進行安全多方運算,用以根據運算結果產生相應的多個所述私鑰共享單元,所述初始化訊息的該層級值用以控制產生的所述私鑰共享單元的等級大小,該層級值的大小與所述私鑰共享單元的等級高低為負相關。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108132973A TWI701931B (zh) | 2019-09-12 | 2019-09-12 | 具分級機制的數位簽章方法及適用該方法的硬體錢包裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108132973A TWI701931B (zh) | 2019-09-12 | 2019-09-12 | 具分級機制的數位簽章方法及適用該方法的硬體錢包裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI701931B true TWI701931B (zh) | 2020-08-11 |
TW202112098A TW202112098A (zh) | 2021-03-16 |
Family
ID=73003073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108132973A TWI701931B (zh) | 2019-09-12 | 2019-09-12 | 具分級機制的數位簽章方法及適用該方法的硬體錢包裝置 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI701931B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI782486B (zh) * | 2021-04-15 | 2022-11-01 | 英屬開曼群島商現代財富控股有限公司 | 門檻式簽章方案的門檻值與參與數量的調整系統及其調整方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1411203A (zh) * | 2001-09-28 | 2003-04-16 | 中国科学院研究生院 | 一种安全的数字签名方法与系统 |
US20080181408A1 (en) * | 2001-03-29 | 2008-07-31 | Arcot Systems, Inc. | Method And Apparatus For Secure Cryptographic Key Generation, Certification And Use |
WO2017145010A1 (en) * | 2016-02-23 | 2017-08-31 | nChain Holdings Limited | Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system |
-
2019
- 2019-09-12 TW TW108132973A patent/TWI701931B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080181408A1 (en) * | 2001-03-29 | 2008-07-31 | Arcot Systems, Inc. | Method And Apparatus For Secure Cryptographic Key Generation, Certification And Use |
CN1411203A (zh) * | 2001-09-28 | 2003-04-16 | 中国科学院研究生院 | 一种安全的数字签名方法与系统 |
WO2017145010A1 (en) * | 2016-02-23 | 2017-08-31 | nChain Holdings Limited | Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI782486B (zh) * | 2021-04-15 | 2022-11-01 | 英屬開曼群島商現代財富控股有限公司 | 門檻式簽章方案的門檻值與參與數量的調整系統及其調整方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202112098A (zh) | 2021-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6908700B2 (ja) | 情報保護のためのシステム及び方法 | |
CN108292402B (zh) | 用于信息的安全交换的公共秘密的确定和层级确定性密钥 | |
CN111034117B (zh) | 单节点多方加密 | |
JP6763378B2 (ja) | 暗号情報作成装置、暗号情報作成方法、暗号情報作成プログラム、及び、照合システム | |
RU2376651C2 (ru) | Использование изогений для разработки криптосистем | |
CN109728906B (zh) | 基于非对称密钥池的抗量子计算非对称加密方法和系统 | |
TWI813616B (zh) | 用以獲取數位簽署資料之電腦實行方法及系統 | |
US11979492B2 (en) | Computer-implemented system and method for distributing shares of digitally signed data | |
US20210036849A1 (en) | Methods and systems for encryption and homomorphic encryption systems using geometric algebra and hensel codes | |
CN106664205A (zh) | 用于安全弹性分布式生成具有主动安全性的基于椭圆曲线数字签名算法(ecdsa)的数字签名的方法 | |
CN109921905B (zh) | 基于私钥池的抗量子计算密钥协商方法和系统 | |
JP2021523620A (ja) | 秘密を通信する方法及びシステム | |
CN109936456B (zh) | 基于私钥池的抗量子计算数字签名方法和系统 | |
CN109905229B (zh) | 基于群组非对称密钥池的抗量子计算Elgamal加解密方法和系统 | |
WO2019110399A1 (en) | Two-party signature device and method | |
JP2021086158A (ja) | 格子ベースの暗号鍵生成方法及び電子署名方法 | |
CN109919610A (zh) | 基于p2p公钥池的抗量子计算区块链保密交易方法和系统 | |
TWI701931B (zh) | 具分級機制的數位簽章方法及適用該方法的硬體錢包裝置 | |
US20230259926A1 (en) | Address generation method, blockchain information processing method, and related device | |
KR20210066713A (ko) | 래티스를 기반으로 하는 암호키 생성 방법 및 전자서명 방법 | |
US8325913B2 (en) | System and method of authentication | |
CN110677253A (zh) | 基于非对称密钥池和ecc的抗量子计算rfid认证方法及系统 | |
Ogunleye et al. | Elliptic Curve Cryptography Performance Evaluation for Securing Multi-Factor Systems in a Cloud Computing Environment | |
TWI759138B (zh) | 基於輸入密碼的門檻式簽章系統及其方法 | |
US11424922B2 (en) | Hashing schemes for cryptographic private key generation |